Ad Code

Ticker

6/recent/ticker-posts

Pengantar Machine Learning: Intuisi Dibalik Pembuatan Model untuk Mendeteksi Email Spam

Disclaimer: Postingan ini berisi penjelasan konsep bagaimana model Machine Learning dibuat dengan bahasa yang lebih sederhana dan bukan merupakan real project. Tidak ada coding-codingan, Oke? 👍🏻

Perkembangan AI yang terlampau cepat secara tidak langsung juga membuat kita belajar dengan terburu-buru. Buru-buru ingin khatam, buru-buru ingin jago. Akhirnya banyak hal fundamental yang terlewatkan. Berbekal dengan nonton video tutorial di internet, mengetikkan code yang sama persis baris demi baris, namun tidak terlalu paham maksudnya apa. Kalau ada error bingung, diminta mengembangkan project lain malah jadi hahehoh. Oke, tak apa. Kita mundur sedikit, bahkan banyak juga tidak mengapa, demi masa depan yang gemilang. Mwehehe 🙈


Sebelum ke inti pembahasannya, ada beberapa istilah yang perlu kita ketahui (bagi yang belum tau, yang sudah tau mari kita ulas sedikit)

Pertama, apa itu Machine Learning?

Machine Learning adalah sekumpulan tugas dimana komputer dapat menyelesaikan masalah atau membuat keputusan berdasarkan data.

Selayaknya manusia belajar melalui pengalaman, maka bagi komputer, pengalaman itu adalah data. Jadi, kalau ada program komputer yang dibuat untuk menyelesaikan suatu masalah tanpa menggunakan data-data historis, maka itu bukan machine learning. Mungkin di antara kalian ada yang bertanya-tanya, bagaimana terkait reinforcement learning yang tidak diberikan data untuk pelatihan? Konsep reinforcement learning sebenarnya memang agak abstrak dan berbeda dengan bidang-bidang machine learning lainnya. Meskipun demikian, reinforcement learning sebenarnya tetap belajar dari data historis yang ia ciptakan sendiri. Data tersebut adalah skor atau reward. Komputer mengingat riwayat skor yang didapatkan, dia belajar dari pengalaman dan akan terus mencari skor yang lebih baik dari sebelumnya. Lebih lanjut tentang Reinforement Learning, silahkan berkunjung di postingan berikut: Apa Itu Reinforcement Learning

Bagaimana cara komputer belajar melalui data?

Ketika kita sebagai manusia diminta untuk membuat keputusan berdasarkan pengalaman yang ada, biasanya kita akan melalui tahapan-tahapan sebagai berikut:

  1. Kita ingat (remember) situasi masa lalu yang serupa
  2. Kita merumuskan (formulate) sebuah pola atau aturan umum
  3. Kemudian, dengan pola tersebut, kita mencoba untuk memprediksi (predict) apa yang mungkin akan terjadi di masa depan.

Inilah yang disebut framework remember-formulate-predict. Tujuan machine learning adalah mengajarkan komputer cara berpikir dengan metode yang sama, menggunakan framework remember-formulate-predict.

Model, Fitur, Algoritma. Apa bedanya?

Ketiga hal ini merupakan istilah dasar yang wajib kita pahami.

Model adalah seperangkat aturan yang merepresentasikan data dan dapat digunakan untuk membuat prediksi.

Anggap saja model ini adalah sebuah representasi realita menggunakan seperangkat aturan dengan meniru data yang ada semirip mungkin.

Fitur adalah properti atau karakteristik data yang dapat digunakan untuk membuat prediksi.

Pada data yang berbentuk tabel, fitur-fiturnya adalah kolom tabel itu sendiri. Misalnya, pada data hewan, fitur-fiturnya dapat berupa ukuran, nama, jenis, berat, atau warna.

Perlu diingat, ada juga fitur yang “istimewa”, yaitu Label. Jika kita ingin memprediksi value dari sebuah fitur, berdasarkan fitur-fitur yang lain, maka fitur tersebut adalah label. Jika kita ingin memprediksi jenis bunga (misal: mawar atau melati) berdasarkan data karakteristik yang ada, maka labelnya adalah jenis bunga (mawar atau melati). Jika kita ingin memprediksi penyakit pada tanaman berdasarkan gejala atau informasi lainnya, maka labelnya adalah jenis penyakit pada tamanan (misal: jamur berbulu, bintik hitam, virus mosaik)

Algoritma adalah prosedur atau serangkaian langkah yang digunakan untuk memecahkan masalah atau melakukan perhitungan.

Dalam hal ini, tujuan dari algoritma adalah untuk membangun model.

Singkatnya, model adalah apa yang kita gunakan untuk membuat prediksi, dan algoritma adalah apa yang kita gunakan untuk membangun model. 

Definisi-definisi tersebut terkadang membingungkan dan sering tertukar. Oleh sebab itu, untuk memperjelasnya, kita akan gunakan studi kasus deteksi email spam.


Kali ini kita akan belajar melalui kisah Joko untuk mendeteksi email spam dan non-spam yang dikirim oleh kolega satu kantornya yang memang agak iseng, Anton. Berarti dalam kasus ini labelnya apa? Yap spam dan non-spam.



Skenario 1:

Joko sudah mulai frustasi dengan email-email yang dikirim oleh Anton, karena banyak diantaranya adalah spam. Saat ini adalah hari Sabtu, dan Joko baru saja menerima sebuah email baru dari Anton. Karena di sini kita ingin menerapkan konsep machine learning, dapatkah Joko menebak apakah email barusan spam atau non-spam tanpa harus membukanya terlebih dahulu?

Kita akan menggunakan sebuah framework yang telah dijelaskan sebelumnya, remember-formulate-predict. Katakanlah data yang dimiliki Joko adalah 10 email terkahir dari Anton.

Pertama, Joko ingat (remember), dari 10 email tersebut, 6 di antaranya adalah spam, dan 4 lainnya adalah non-spam. Dari informasi ini, Joko dapat merumuskan (formulate) model berikut.

Model 1 → 6 dari setiap 10 email yang dikirim Anton kepada Joko adalah spam.

Model tersebut akan menjadi aturan Joko untuk mendeteksi email baru. Sebagai catatan, model atau aturan tersebut tidak harus benar. Bisa saja sangat salah. Tetapi berbekal dengan informasi yang ada, maka itu adalah model terbaik yang dapat dihasilkan oleh Joko. Nanti akan ada bagian tersendiri di postingan lain untuk kita belajar bagaimana mengevaluasi model dan memperbaikinya.

Sekarang Joko sudah berhasil merumuskan sebuah model. Selanjutnya, Joko dapat membuat prediksi (predict) menggunakan model tersebut. Jika 6 dari 10 email Anton adalah spam, maka Joko dapat mengamsusikan bahwa email baru ini 60% kemungkinan besar adalah spam, dan 40% kemungkinan non-spam. Agaknya lebih aman untuk berpikir bahwa email tersebut adalah spam.

Ingat, prediksi Joko mungkin salah. banget. Tapi Joko telah membuat prediksi dengan pengetahuan terbaiknya. Inilah inti dari machine learning.

Skenario 2:

Bisakah Joko membuat model yang lebih baik lagi? Bukankah masih banyak informasi lain dapat membantu? Baiklah, Joko juga menyadari hal tersebut. Selanjutnya, Joko mencoba untuk melihat kapan Anton mengirim email, adakah pola baru yang akan didapatkan? Mari kita lihat datanya. Berikut adalah 10 email terakhir dengan hari pengiriman dan informasi apakah email tersebut spam atau non-spam.

  • Senin: Non-spam
  • Selasa: Non-spam
  • Sabtu: Spam
  • Minggu: Spam
  • Minggu: Spam
  • Rabu: Non-spam
  • Jumat: Non-spam
  • Sabtu: Spam
  • Selasa: Non-spam
  • Kamis: Non-spam

Joko melihat pola baru. Tampaknya email yang dikirim Anton pada hari kerja adalah non-spam, dan email yang dikirim pada akhir pekan adalah spam. Lumayan masuk akal, mengingat mereka rekan satu kantor, karena jika hari kerja Anton mengirim email perihal pekerjaan, sementara itu di akhir pekan Anton memiliki waktu senggang untuk mengusili temannya. Wow. Joko dapat merumuskan (formulate) model baru yang lebih keren sekarang.

Model 2 → Setiap email yang dikirim Anton pada hari kerja adalah non-spam, dan email yang dia kirim pada akhir pekan adalah spam.

Sekarang mari kita lihat, ini hari apa? Jika ini adalah hari Minggu dan Joko baru saja mendapat notifikasi email baru dari Anton, maka Joko akan memprediksi (predict) dengan sangat yakin bahwa email yang Anton kirim adalah spam. Joko langsung membuang email tersebut ke kotak spam tanpa membuka dan membacanya terlebih dahulu, lalu melanjutkan akhir pekannya dengan tenang.

Skenario 3:

Suatu hari, Joko bertemu dengan Anton di lobby kantor. Anton bertanya, “Kenapa kamu nggak datang ke pesta ulang tahunku?” Joko bingung apa maksudnya, karena merasa tidak pernah menerima undangan ulang tahun dari Anton. Usut punya usut, ternyata hari Minggu lalu Anton mengirim undangan ulang tahun melalui email, dan Joko melewatkannya. Kenapa? Karena Anton mengirimkan email tersebut pada akhir pekan, dan Joko berasumsi bahwa email tersebut adalah spam. Hmm, sepertinya Joko membutuhkan model yang lebih baik lagi. Joko kembali melihat daftar email dari Anton, ini adalah langkah ingat (remember) dari framework kita. Mari kita lihat, adakah pola baru?

  • 1 KB: Non-spam
  • 2 KB: Non-spam
  • 16 KB: Spam
  • 20 KB: Spam
  • 18 KB: Spam
  • 3 KB: Non-spam
  • 5 KB: Non-spam
  • 25 KB: Spam
  • 1 KB: Non-spam
  • 3 KB: Non-spam

Pola apa yang terlihat? Tampaknya email dengan ukuran yang lebih besar cenderung spam, sedangkan yang lebih kecil cenderung non-spam. Dengan demikian, Joko merumuskan (formulate) model baru seperti berikut:

Model 3 → Setiap email dengan ukuran 10 KB atau lebih adalah spam. Dan email apapun yang berukuran kurang dari 10 KB dalah non-spam.

Sekarang mari kita lihat email yang dikirim Anton kepada Joko pada hari ini untuk membuat prediksi (predict). Joko melihat email yang dikirim Anton pada hari ini memiliki ukuran 17 KB. Jadi, Joko menyimpulkan bahwa email tersebut adalah spam.

Sebelumnya kita sudah belajar tentang fitur. Dari contoh-contoh di atas, nama-nama hari dalam seminggu dan ukuran email adalah contoh dari fitur.

Skenario 4:

Pada kasus-kasus di atas, Joko hanya mengguakan satu fitur saja untuk membuat prediksi. Bisakah kita menggunakan lebih banyak fitur dan menggunakannya secara bersamaan? Tentu. Berikut adalah beberapa model baru yang dapat Joko rumuskan.

Model 4 → Jika email lebih besar dari 10 KB atau dikirim pada akhir pekan, maka itu diklasifikasikan sebagai spam. Kalau tidak, itu diklasifikasikan sebagai non-spam.

Model 5 → Jika email dikirim pada hari kerja, maka email harus lebih besar dari 15 KB untuk diklasifikasikan sebagai spam. Jika dikirim pada akhir pekan, maka harus lebih besar dari 5 KB untuk diklasifikasikan sebagai spam. Kalau tidak, email diklasifikasikan sebagai non-spam.

Bahkan Joko dapat membuat model yang lebih rumit lagi. Menggunakan indeks hari. Senin: 0, Selasa: 1, Rabu: 2, Kamis: 3, Jumat: 4, Sabtu: 5, dan Minggu: 6

Model 6 → Jika kita menambahkan indeks hari dan ukuran email (dalam KB), dan hasilnya adalah 12 atau lebih, maka email tersebut diklasifikasikan sebagai spam. Kalau tidak, email diklasifikasikan sebagai non-spam.

Semua model yang telah dirumuskan di atas adalah valid. Joko dapat membuat model lebih banyak lagi dengan menambahkan lapisan kompleksitas atau dengan melihat lebih banyak fitur. Sekarang pertanyaannya adalah, model mana yang terbaik? Di sinilah Joko mulai membutuhkan bantuan komputer.

Sama seperti kita, komputer juga akan menggunakan framewrok remeber-formulate-predict.

Remember: Lihatlah tabel data yang sangat besar yang berisi data historis di masa lalu.

Formulate: Buat model dengan menggunakan banyak aturan dan rumus, periksa model mana yang paling sesuai dengan data.

Predict: Gunakan model untuk memprediksi data baru di masa depan.

Bedanya kita dengan komputer adalah dari segi kecepatan dan ketangkasan dalam berhitung, ehe. Komputer dapat membangun model dengan cepat menggunakan banyak rumus dan kombinasi aturan sampai menemukan satu yang paling sesuai dengan data. Sedangkan otak kita, mungkin akan dwaarr.

Misalnya, kita dapat membuat pengklasifikasi spam dengan fitur-fitur seperti pengirim, tanggal dan waktu, jumlah kata, jumlah kesalahan ejaan, dan jumlah kemunculan kata-kata tertentu seperti beli atau menang (email togel wkwkwk). Sebuah model dapat dengan mudah terlihat seperti pernyataan logis berikut:

Model 7 → 

  • Jika email memiliki dua atau lebih kesalahan ejaan, maka email tersebut diklasifikasikan sebagai spam.
  • Jika memiliki lampiran yang lebih besar dari 10 KB, maka diklasifikasikan sebagai spam.
  • Jika pengirim tidak ada dalam daftar kontak, maka diklasifikasikan sebagai spam.
  • Jika memiliki kata beli dan menang, maka diklasifikasikan sebagai spam.
  • Kalau tidak, maka diklasifikasikan sebagai non-spam.

Bisa juga model dirumuskan sebagai berikut:

Model 8 → Jika (ukuran) + 10 (jumlah kesalahan ejaan) — (jumlah kemunculan kata “ibu”) + 4 (jumlah kemunculan kata “beli”) > 10, maka diklasifikasikan sebagai spam. Kalau tidak, diklasifikasikan sebagai non-spam.

Pada akhirnya, kita mungkin berakhir dengan model yang rumit, tetapi komputer dapat merumuskannya dan menggunakannya untuk membuat prediksi dengan cepat. Pertanyaan kita selanjutnya adalah, bagaimana kita membangun model terbaik? Insyaa Allah akan dibahas pada postingan-postingan berikutnya.

See you~

Referensi