Penerapan Algoritma Apriori pada Data Pelanggaran Lalu Lintas

Amalia Rachmadana Ismail
12 min readJul 1, 2024

--

sumber

Hai Data Enthusiast!

Kali ini kita akan membahas salah satu project Ujian Tengah Semester mata kuliah Pengantar Data Mining tentang Association Rule dengan Algoritma Apriori menggunakan software RStudio.

Introduction

Algoritma apriori adalah salah satu algoritma paling populer dalam bidang data mining, khususnya dalam association rule. Algoritma apriori bertujuan untuk mengidentifikasi kumpulan item yang sering muncul bersama dalam dataset besar dan menggunakan itemset tersebut untuk membangun association rule yang relevan. Penting tidaknya suatu association rule dapat diketahui dengan melihat parameter support, confidence, dan lift. Support mengukur seberapa sering itemset muncul dalam dataset, sehingga dapat membantu menentukan apakah itemset cukup sering muncul untuk dianggap signifikan. Confidence mengukur seberapa sering item B muncuk dalam transaksi yang terisi item A, sehingga dapat membantu seberapa besar kemungkinan item B terjadi jika item A sudah terjadi. Lift mengukur seberapa sering item A dan B terjadi secara bersamaan.

Problem Statement

Pelanggaran lalu lintas merupakan salah satu isu yang sering dihadapi oleh seluruh negara di dunia. Ribuan pelanggaran lalu lintas terjadi di jalan raya setiap harinya, mulai dari pelanggaran kecepatan, menerobos lampu merah, hingga mengabaikan rambu lalu lintas yang ada. Pelanggaran-pelanggaran ini tidak hanya menyebabkan kemacetan, namun juga meningkatkan risiko terjadi kecelakaan, cedera, dan kematian. Salah satu metode yang dapat digunakan untuk mengatasi isu ini adalah Algoritma Apriori. Informasi yang diperoleh nantinya diharapkan dapat digunakan oleh penegak hukum dan pengambil kebijakan untuk merancang strategi pencegahan pelanggaran lalu lintas yang lebih efektif, dengan menjawab pertanyaan-pertanyaan berikut.

  1. Buatlah analisis deskriptif yang memudahkan bagi para pengambil kebijakan.
  2. Tentukan faktor-faktor yang memungkinkan terjadinya pelanggaran lalu lintas.
  3. Buatlah association rule dari beberapa faktor yang bisa didapatkan hubungan antar faktor tersebut dengan menentukan nilai support, confidence, dan lift rasionya.
  4. Apa insight yang didapatkan dari association rule yang diperoleh sebagai saran bagi pengambil kebijakan.

Dataset

Data pelanggaran lalu lintas diunduh pada website US Migrating disini. Dataset ini berisi informasi pelanggaran lalu lintas yang diambil dari semua pelanggaran lalu lintas elektronik yang dikeluarkan di suatu Daerah. Setiap baris dalam dataset berisi satu kasus pelanggaran lalu lintas dan mencakup berbagai detail lainnya seperti tanggal, waktu, lokasi, jenis pelanggaran, informasi kendaraan, dan detail demografis pengemudi.

SeqID : Kode unik untuk setiap rekam jejak kasus pelanggaran
Date Of Stop : Tanggal pelanggaran terjadi (format MM/DD/YYY)
Time Of Stop : Waktu pelanggaran terjadi (format HH:MM:SS)
Agency : Badan penegak hukum yang terlibat
SubAgency : Distrik atau unit khusus dalam Agency saat pelanggaran terjadi
Description : Jenis pelanggaran yang dilakukan
Location : Lokasi spesifik dimana pelanggaran terjadi
Latitude, Longitude : Koordinat geografis pelanggaran terjadi
Accident, Belts, Personal Injury, Property Damage, Fatal, Commercial License, HAZMAT, Commercial Vehicle, Alcohol, Work Zone : Indikator untuk pengecekan keadaan saat pelanggaran terjadi
Search Conducted, Search Disposition, Search Outcome, Search Reason, Search Reason for Stop, Search Type, Search Arrest Reason : Bidang terkait pencarian yang dilakukan selama pelanggaran terjadi dan detail terkait
State : Kode negara bagian
VehicleType, Year, Make, Model, Color : Detail tentang kendaraan yang digunakan saat pelanggaran terjadi
Violation Type, Charge, Article : Detail tentang pelanggaran yang dilakukan, pasal hukum yang dilanggar, dan artikel hukum yang releven
Contributed to Accident : Indikator jika pelanggaran yang dilakukan menyebabkan kecelakaan
Race, Gender, Driver City, Driver State, DL State : Informasi demografis tentang pengemudi
Arrest Type : Jenis penangkapan atau sanksi yang diberikan
Geolocation : Kombinasi lalitude dan longtitude

Load Data & Package

Diperlukan beberapa package untuk menerapkan algoritma apriori pada data yang telah diberikan. Kemudian dataset yang telah di unduh akan di input dalam bentuk data frame.

#Package
library(Matrix)
library(arules)
library(grid)
library(arulesViz)
library(dplyr)
library(ggplot2)
library(knitr)
library(kableExtra)

#Load Data
data<-read.csv(file.choose(), header = TRUE)

Analisis Deskriptif

Analisis deskriptif sangat penting dilakukan untuk memperoleh informasi atau wawasan yang penting tentang pola dan karateristik pelanggaran lalu lintas yang terjadi. Dengan analisis deskriptif, kita dapat mengidentifikasi pola, frekuensi, lokasi, waktu, serta profil pelanggar lalu lintas sehingga memungkinkan para penegak hukum maupun para pengambil kebijakan untuk mengembangkan strategi guna meminimalisir pelanggaran lalu lintas di masa depan.

#Tabel Frekuensi Data Kategorikal
freq_table <- data %>%
select(Accident, Belts, Personal.Injury, Property.Damage, Fatal,
Commercial.License, HAZMAT, Commercial.Vehicle, Alcohol,
Work.Zone, Search.Conducted, Race, Gender) %>%
summarytools::freq()
freq_table

#Menyimpan tabel distribusi frekuensi ke file HTML
summarytools::view(freq_table, file = "frequency_table.html")
sample output ringkasan statistik data kategorikal

Dibuat tabel frekuensi untuk seluruh variabel kategorikal pada data yang memuat informasi jumlah data, persentase, jumlah kumulatif, persentase kumulatif, serta data missing atau NA. Tabel frekuensi dapat membantu dalam memahami distribusi kategori dalam data untuk mengidentifikasi pola atau anomali dalam data kategorikal.

#Konversi tanggal dan waktu
data <- data %>%
mutate(Date.Of.Stop = as.Date(Date.Of.Stop, format="%m/%d/%Y"),
Time.Of.Stop = hms::as_hms(Time.Of.Stop))

#Pelanggaran berdasarkan waktu
violations_by_time <- data %>%
group_by(hour = hour(Time.Of.Stop)) %>%
summarise(count = n()) %>%
arrange(hour)

#Plot pelanggaran berdasarkan waktu
ggplot(violations_by_time, aes(x=factor(hour), y=count)) +
geom_bar(stat="identity", fill="lightblue") +
geom_text(aes(label=count), vjust=-0.5, color="black",size=3) +
labs(title="Jumlah Pelanggaran Berdasarkan Waktu (Jam)",
x="Jam", y="Jumlah Pelanggaran") +
theme_minimal()
output plot pelanggaran berdasarkan waktu (jam)

Data menunjukkan bahwa pelanggaran lalu lintas terjadi paling banyak terjadi pada malam hari mulai dari pukul 22:00–23:00. Hal ini dapat menunjukkan bahwa dalam rentang waktu tersebut, aktivitas lalu lintas cenderung tinggi, atau terdapat faktor-faktor tertentu seperti kepadatan lalu lintas, kurangnya pencahayaan, kondisi jalan yang buruk, atau kebiasaan pengemudi yang menyebabkan tingginya pelanggaran lalu lintas. Sedangkan jumlah pelanggaran terendah terjadi sekitar pukul 04:00–06:00 yang mungkin disebabkan karena kurangnya aktivitas lalu lintas pada waktu dini hari.

#Pelanggaran berdasarkan tahun
violations_by_date <- data %>%
group_by(Date.Of.Stop) %>%
summarise(count = n()) %>%
arrange(desc(Date.Of.Stop))

#Plot pelanggaran berdasarkan tahun
ggplot(violations_by_date, aes(x = Date.Of.Stop, y = count,
group = 1, color = count)) +
geom_line() +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
labs(title = "Pelanggaran Berdasarkan Tanggal", x = "Tanggal",
y = "Jumlah Pelanggaran") +
scale_color_gradient(low = "blue", high = "red")
plot pelanggaran berdasarkan waktu (tahun)

Data menunjukkan selama tahun 2012–2016 jumlah pelanggaran lalu lintas menunjukkan pola fluktuasi terlihat konstan sehingga menunjukkan faktor-faktor yang mempengaruhi pelanggaran lalu lintas relatif stabil. Namun masuk ke pertengahan 2016, terjadi sedikit penuruan pelanggaran lalu lintas dan terus fluktuasi secara konstan hingga akhir 2019. Hal ini mungkin terjadi karena adanya upaya yang berhasil mengurangi terjadinya pelanggaran, seperti kampanye kesadaran atau penegakan hukum yang lebih ketat. Masuk ke tahun 2020, tingkat pelanggaran mengalami penurunan drastis dan pola nya naik turun secara konstan hingga pertengahan 2023. Penurunan ini disebabkan karena adanya pandemi COVID-19 yang mengakibatkan keterbatasan pergerakan, lockdown, dan pengurangan aktivitas sosial sehingga mengurangi jumlah pengemudi di jalan. Namun jumlah pelanggaran mengalami kenaikan sangat drastis mulai pertengahan 2023 sampai sekarang dikarenakan pelonggaran pembatasan pandemi dan kembalinya aktivitas normal.

#Pelanggaran berdasarkan tipe kendaraan
violations_by_vehicle <- data %>%
group_by(VehicleType) %>%
summarise(count = n()) %>%
arrange(desc(count))

#Plot pelanggaran berdasarkan tipe kendaraan
ggplot(violations_by_vehicle, aes(x=reorder(VehicleType,-count), y=count))+
geom_bar(stat="identity", fill="lightblue") +
geom_text(aes(label=count), vjust=-0.5,size=3) +
theme(axis.text.x = element_text(angle=90, hjust=1)) +
labs(title="Pelanggaran Berdasarkan Tipe Kendaraan",
x="Tipe Kendaraan", y="Jumlah Pelanggaran")

Data menunjukkan bahwa jumlah pelanggaran lalu lintas didominasi oleh tipe kendaraan 02 — Automobile dengan jumlah 306.058 pelanggaran. Hal tersebut mungkin disebabkan karena tipe 02 — Automobiles merupakan tipe kendaraan yang sering digunakan dalam kehidupan sehari-hari seperti bekerja, liburan, dan kegiatan lainnya, sehingga paling banyak digunakan dan beredar di jalan raya.

#Pelanggaran berdasarkan ras pengemudi
violations_by_race <- data %>%
group_by(Race) %>%
summarise(count = n()) %>%
arrange(desc(count))

#Plot pelanggaran berdasarkan ras pengemudi
ggplot(violations_by_race, aes(x="", y=count, fill=Race)) +
geom_bar(width=1, stat="identity") +
coord_polar("y") +
labs(title="Pelanggaran Berdasarkan Ras Pengemudi", x="", y="") +
geom_text(aes(label = count), size=3.5,
position = position_stack(vjust = 0.5))
output plot pelanggaran berdasarkan ras

Data menunjukkan bahwa jumlah pelanggaran lalu lintas didominasi oleh ras black dan white dengan jumlah pelanggaran melebihi 100.000 kasus pelanggaran. Hal tersebut mungkin disebabkan oleh faktor demografis yaitu distribusi jumlah populasi ras yang tinggi di wilayah tersebut.

#Pelanggaran berdasarkan jenis kelamin pengemudi
violations_by_gender <- data %>%
group_by(Gender) %>%
summarise(count = n()) %>%
arrange(desc(count))

#Plot pelanggaran berdasarkan jenis kelamin pengemudi
ggplot(violations_by_gender, aes(x=Gender, y=count, fill=Gender)) +
geom_bar(stat="identity") +
labs(title="Pelanggaran Berdasarkan Jenis Kelamin Pengemudi",
x="Jenis Kelamin", y="Jumlah Pelanggaran") +
geom_text(aes(label=count), vjust=-0.7, color="black", size=3.5) +
theme_minimal()
output plot pelanggaran berdasarkan gender

Data menunjukkan bahwa jumlah pelanggaran lalu lintas didominasi oleh gender M (male) dengan jumlah pelanggaran mencapai 237.792 kasus pelanggaran. Hal tersebut mungkin disebabkan oleh beberapa faktor seperti faktor sosial dan kultural yang dapat mempengaruhi perilaku mengemudi, dimana stereotip bahwa laki-laki cenderung lebih agresif saat mengemudi dibandingkan perempuan.

#Jenis pelanggaran lalu lintas
trans<- as(split(data[,"Description"],data[,"SeqID"]),
"transactions")

#Jumlah pelanggaran terjadi
tabel <- crossTable(trans, sort=TRUE)
summary(trans)
output summary

Berdasarkan hasil summary, banyaknya pelanggaran lalu lintas mencapai 176.014 kasus dari 5.983 jenis pelanggaran lalu lintas. Dimana pelanggaran paling tinggi adalah driver failure to obey properly placed traffic control device instructions atau pengemudi tidak mematuhi papan instruksi lalu lintas dengan total pelanggaran sebanyak 18.635 kasus, dan seterusnya.

data %>%
dplyr::select(SubAgency) %>%
dplyr::count(SubAgency) %>%
ggplot(aes(lalu.lintas, y=n, x=SubAgency,fill=SubAgency)) +
geom_bar(position="dodge", stat="identity") +
geom_text(aes(label=n), position=position_dodge(width=0.9),
vjust=-0.5, color="black", size=3.5)+
xlab("SubAgency") +
ylab("Frequency") +
labs(title="Traffic Violations by SubAgency") +
theme_light()
output plot pelanggaran lalu lintas berdasarkan subagency

Berdasarkan subAgency atau distrik data, pelaporan kasus pelanggaran lalu lintas yang masuk dalam kantor polisi dari tiap distrik, jumlah pelaporan tertinggi kasus pelanggaran lalu lintas diperoleh oleh kantor polisi dari 4th District, Wheaton dengan total kasus pelanggaran sebanyak 69.780.

Desc_Sub <- data %>%
dplyr::select(Description,SubAgency) %>%
dplyr::count(Description,SubAgency)
arrange(Desc_Sub, desc(n))
top 20 jenis pelanggaran lalu lintas berdasarkan subagency

Berdasarkan jenis pelanggaran dan subagency, kasus pelanggaran lalu lintas tertinggi terletak di 2nd District, Bethesda sebanyak 4783 kasus dengan jenis pelanggaran driver failure to obey properly placed traffic control device instructions.

Loc <- data %>%
dplyr::select(Location) %>%
dplyr::count(Location)
arrange(Loc, desc(n), topN=5)
top 5 lokasi pelanggaran lalu linta

Berdasarkan lokasi, terdapat 78.510 lokasi spesifik terjadinya pelanggaran lalu lintas. Lokasi dengan total kasus pelanggaran lalu lintas terbanyak terletak di Connecticut Ave @ Dean RD 443 dengan total 443 kasus.

Desc_Loc <- data %>%
dplyr::select(Description,Location) %>%
dplyr::count(Description,Location)
arrange(Desc_Loc, desc(n))
top 10 jenis pelanggaran lalu lintas berdasarkan lokasi

Berdasarkan variabel lokasi dan jenis pelanggaran lalu lintas, diperoleh pelanggaran lalu lintas terbanyak yaitu exceeding maximum speed: 39 mph in a posted 30 mph zone di lokasi 10901 westlake drive sebanyak 297 kasus.

Faktor Terjadi Pelanggaran Lalu Lintas

  • Karateristik Personal : gender dan driver city memungkinkan perilaku pengemudi dari jenis kelamin dan asal daerah dapat mempengaruhi terjadinya pelanggaran
  • Kondisi Pengemudi : accident, belts, alcohol, work zone memungkinkan kondisi driver saat mengemudi dapat mempengaruhi terjadinya pelanggaran
  • Geografi dan Lingkungan : location, state, geolocation memungkinkan kondisi jalan atau kondisi lalu lintas dapat berperan dalam terjadinya pelanggaran

Association Rule

Selanjutnya membentuk association rule pada data pelanggaran lalu lintas untuk menemukan pola atau hubungan antara deskripsi/jenis pelanggaran lalu lintas dengan nilai minimal support 0.01 dan nilai confidence 0.2. Dimana support menunjukkan seberapa sering aturan tersebut terjadi dalam dataset, confidence menunjukkan seberapa sering prediksi dari aturan tersebut benar. Hasil association rule akan diurutkan berdasarkan nilai lift untuk melihat pola pelanggaran lalu lintas yang paling signifikan.

Kenapa diurutkan berdasarkan nilai lift ?

  • Nilai lift yang tinggi, menunjukkan bahwa pola pelanggaran lalu lintas tersebut sering terjadi bersama-sama
  • Nilai lift lebih dari 1, menunjukkan bahwa kejadian pelanggaran lalu lintas tersebut masih bisa mengangkat terjadinya antar pelanggaran secara bersamaan
#Membuat data pelanggaran lalu lintas
trans<- as(split(data[,"Description"],data[,"SeqID"]),
"transactions")

rules <- apriori(trans, parameter = list(supp = 0.01, conf = 0.2))
rules_sort <- sort(rules,by="lift")
rules_fix <- as(rules_sort, "data.frame")

#Simpan rules dalam bentuk HTML
html_table <- kable(rules_fix, format = "html") %>%
kable_styling(full_width = F)

save_kable(html_table, file = "association_rules.html")
output proses rules

Diperoleh 32 rules yang memenuhi kriteria nilai support dan confidence yang telah ditentukan. Rules ini menunjukkan pola atau hubungan yang kuat antara jenis pelanggaran lalu lintas tertentu, dimana jika dua jenis pelanggaran sering muncul bersamaan maka rules ini dapat membantu dalam mengidentifikasi faktor yang menyebabkan pelanggaran tersebut terjadi bersamaan.

top 5 output rules

Mensortir 35 rules, diperoleh rules dengan nilai lift tertinggi yaitu driving vehicle while under the influence of alcohol, driving while impaired by alcohol => driving under the influence of alcohol per se dengan penjelasan sebagai berikut.

  • Nilai support 1.87% menunjukkan proporsi kasus pelanggaran terjadi bersamaan, yang berarti 1.87% dari semua kasus pelanggaran dalam dataset memiliki kombinasi pelanggaran tersebut.
  • Nilai confidence 64.44% menunjukkan seberapa sering pelanggaran driving vehicle while under the influence of alcohol, driving while impaired by alcohol terjadi ketika pelanggaran driving under the influence of alcohol per se terjadi, yang berarti sebesar 64.44% jika seseorang mengemudi dalam keadaan di bawah pengaruh alkohol dan terganggu oleh alkohol, mereka juga akan ditemukan mengemudi dalam keadaan mabuk menurut hukum.
  • Nilai coverage 2.91% menunjukkan jumlah kasus pelanggaran yang mengandung pelanggaran di bagian kiri rule, yang berarti sebesar 2.91% dari kasus pelanggaran mengandung pelanggaran iving vehicle while under the influence of alcohol, driving while impaired by alcohol.
  • Nilai lift 30.34 menunjukkan seberapa sering pelanggaran di kanan terjadi bersamaan dengan pelanggaran di kiri dibandingkan pelanggaran itu sendiri, yang berarti sebesar 30.34% pelanggaran driving under the influence of alcohol per se jauh lebih mungkin terjadi jika pelanggaran di sebelah kiri terjadi sehingga menunjukkan hubungan yang sangat kuat antara pelanggaran tersebut.
  • Nilai count 3296 menunjukkan terdapat 3296 kasus pelanggaran di mana pelanggaran tersebut terjadi secara bersamaan.

Secara keseluruhan, rule ini menunjukkan bahwa terdapat hubungan yang kuat antara pengemudi yang ditemukan mengemudi dalam keadaan mabuk dan terganggu oleh alkohol dengan pelanggaran mengemudi dalam keadaan mabuk.

output plot rules

Jenis pelanggaran yang memiliki nilai lift tinggi yaitu antara jenis pelanggaran driving while impaired by alcohol dan jenis pelanggaran driving vehicle while under the influence of alcohol.

Saran bagi pengambil kebijakan

Dari hasil analisis yang dilakukan dapat diketahui bahwa masih banyak pengendara yang tidak tertib lalu lintas sehingga terjadi berbagai jenis pelanggaran lalu lintas. Untuk meminimalisir pelanggaran lalu lintas yang terjadi dapat dilakukan beberapa hal diantaranya:

  • Meningkatkan pengawasan lalu lintas dan melakukan patroli selama pukul 21:00–00:00 ataupun mengembangkan program keselamatan berkendara yang lebih spesifik untuk malam hari. Kemudian perlu memperhatikan pencahayaan jalanan saat malam hari.
  • Semakin tingginya pelanggaran lalu lintas di tahun 2024, perlu ditingkatkan kampanye edukasi untuk meningkatkan kesadaran pengemudi tentang pentingnya mematuhi aturan lalu lintas. Kolaborasi antara departemen transportasi, kepolisian, dan organisasi keselamatan juga dapat memperkuat upaya penegakan hukum dan edukasi melalui program bersama untuk meningkatkan kesadaran keselamatan jalan raya.
  • Meningkatkan jumlah kamera pengawas lalu lintas dan patroli di daerah dengan lalu lintas tipe kendaraan 02 — Automobile terpadat. Kebijakan dan upaya penegakan hukum harus difokuskan pada edukasi dan pengawasan lebih ketat terhadap pengendaran tipe kendaraan 02 — Automobile.
  • Mengingat bahwa pelanggaran terbanyak terjadi pada pengemudi dengan ras black dan white, penegak hukum bisa mempertimbangkan untuk melakukan edukasi pada daerah dengan mayoritas penduduk dari ras black dan white. Tindakan penegakan hukum dilakukan secara adil dan tidak diskriminatif.
  • Meningkatkan edukasi dan sosialisasi kepada masyarakat tentang pentingnya mematuhi rambu-rambu lalu lintas serta melakukan audit dan perbaikan terhadap penempatan rambu lalu lintas agar mudah terlihat dan dipahami oleh pengemudi, khususnya di 2nd District, Bethesda dan 3rd District, Silver Spring.
  • Pengawasan dan penegakan hukum perlu diperketat, terutama terhadap pengemudi dengan lisensi atau registrasi yang ditangguhkan seperti menggunakan sistem pengenalan plat motor otomatis atau menyediakan program rehabilitasi untuk mencegah pelanggaran berulang.
  • Meningkatkan jumlah pengecekan dan operasi lalu lintas untuk memastikan adanya lisensi saat mengemudi, khususnya di 3rd District, Silver Spring dan 4th District, Wheaton. Memanfaatkan teknologi digital yang memungkinkan pengemudi untuk menyimpan dan menampilkan lisensi serta kartu registrasi secara elektronik (alternatif) fisik.
  • Memperketat pengawasan terhadap kendaraan yang registrasinya ditangguhkan melalui patroli rutin serta memberikan kemudahan dalam proses perpanjangan registrasi untuk meminimalisir kasus kendaraan yang beroperasi dengan registrasi yang ditangguhkan.
  • Memperkuat pengawasan kecepatan secara langsung atau menggunakan teknologi seperti kamera kecepatan otomatis dan radar pendeteksi kecepatan di lokasi dengan pelanggaran berulang yaitu 10901 Weslake Drive.
  • Meningkatkan patroli rutin di lokasi sekitar bar, café, restaurant yang menyediakan alkohol guna menghindari adanya pengendara yang membawa kendaraan saat berada di bawah pengaruh alkohol.

Demikian sedikit penjelasan mengenai Penerapan Algoritma Apriori pada Data Pelanggaran Lalu Lintas. Dengan algoritma apriori, kita dapat mengidentifikasi pola tertentu dalam data pelanggaran lalu lintas, sehingga memudahkan para pengambil kebijakan untuk meningkatkan strategi dalam meminimalisir kasus pelanggaran lalu lintas. Semoga bermanfaat!

--

--