Ad Code

Ticker

6/recent/ticker-posts

Perceptron Classifier Series - Part 3: Mengukur Kinerja Classifier dengan Error Function

Pada bagian ini, kita akan belajar bagaimana cara membuat error function yang efektif untuk mengukur seberapa bagus pengklasifikasi yang telah kita bangun. Sebelumnya, mari kita lihat gambar di bawah ini untuk pemanasan. Gambar di bawah menunjukkan dua pengklasifikasi yang berbeda pada dataset yang sama. Pengklasifikasi direpresentasikan sebagai garis dengan dua sisi yang terdefinisi dengan baik, senang dan sedih. Kita dapat melihat dengan jelas bahwa gambar di sisi kiri adalah pengklasifikasi yang buruk dan yang di sisi kanan adalah pengklasifikasi yang baik. Dapatkah kita mengukur seberapa bagus mereka?


Error Function 1: Jumlah Error

Cara paling sederhana untuk mengevaluasi pengklasifikasi yang telah kita buat adalah dengan menghitung jumlah kesalahan yang dibuat. Dengan kata lain, menghitung jumlah data yang diklasifikasikan dengan salah.

Dalam kasus ini, pengklasifikasi pada sisi kiri memiliki kesalahan sebanyak 8 buah, sedangkan pengklasifikasi yang di sebelah kanan memiliki kesalahan sebanyak 3 buah sebagaimana terlihat pada gambar berikut.


Ini adalah contoh error function yang baik, tapi ya nggak hebat-hebat amat. Mengapa? Mari kita lihat ilustrasi di bawah. Kedua pengklasifikasi di bawah sama-sama melakukan kesalahan, akan tetapi dengan metode yang saat ini kita gunakan, kita tidak dapat mengukur "seberapa parah" kesalahannya.


Mengapa kita perlu mengukur seberapa buruk kesalahan itu? Jika teman-teman ingat pada pembahasan di series sebelumnya, kita telah belajar tentang gradient descent yang digunakan untuk memperkecil skor kesalahan sedikit demi sedikit. Dalam algoritma linear regression, kita memutar-mutar garis untuk mencari skor kesalahan yang lebih kecil. Jika error kita dihitung dengan menghitung jumlah titik yang diklasifikasikan dengan salah, maka nilai error ini hanya berupa bilangan bulat. Jika kita memutar atau memindahkan garis sedikit, error-nya mungkin tidak berkurang sama sekali dan kita tidak tahu ke arah mana harus bergerak. Tujuan gradient descent adalah untuk meminimalkan skor kesalahan dengan mengambil langkah-langkah kecil ke arah di mana error akan berkurang. Untuk itu, kita membutuhkan fungsi yang dapat mengukur besarnya kesalahan. Semakin jauh data dengan kelas yang seharusnya, maka skor kesalahannya harus semakin tinggi.

Error Function 2: Jarak

Metode ini dilakukan dengan cara menghitung jarak antara titik dan garis. Perhatikan gambar di bawah ini. Pengklasifikasi di sebelah kiri memiliki jarak yang kecil, sedangkan pengklasifikasi di sisi kanan memiliki jarak yang lebih besar.


Metode kedua ini jauh lebih efektif dibanding yang pertama. Metode ini bekerja dengan cara sebagai berikut:

  • Titik yang diklasifikasikan dengan benar, memiliki error 0.
  • Titik yang diklasifikasikan dengan salah, memiliki skor error yang sama dengan jarak antara titik tersebut dengan garis.

Selanjutnya, untuk mendapatkan nilai akhir dari error adalah dengan menambahkan semua skor error yang ada. Pengklasifikasi yang buruk memiliki skor error yang besar, dan pengklasifikasi yang baik memiliki skor error yang kecil.


Akan tetapi, kita tidak akan menggunakan metode ini untuk percepton classifier yang telah kita bangun. Mengapa? Karena jarak dari suatu titik ke garis adalah rumus yang rumit. Kita perlu menggunakan akar kuadrat, karena kita menghitungnya menggunakan teorema Pythagoras. Akar kuadrat memiliki turunan yang rumit, dan akan menambah kompleksitas yang tidak perlu saat kita menerapkan algoritma gradient descent. 

Untuk itu, kita akan berusaha mengindari komplikasi ini. Kita dapat membuat error function yang lebih mudah dihitung namun masih berhasil menangkap esensi dari error function itu sendiri. Caranya adalah mengembalikan kesalahan untuk titik-titik yang diklasifikasikan dengan salah dan memvariasikan besarnya berdasarkan seberapa jauh titik yang salah diklasifikasikan dari batas. Apa maksudnya? Mari kita lanjutkan dulu ke metode berikutnya.

Error Function 3: Skor

Baiklah, bagaimana metode ketiga ini bekerja?

  • Error function dari titik data yang diklasifikasikan dengan benar adalah 0.
  • Error function dari titik data yang diklasifikasikan dengan salah adalah sebuah bilangan positif (absolut);
    • Untuk titik yang letaknya dekat dengan garis, error functionnya kecil
    • Untuk titik yang letaknya jauh dengan garis, errornya functionnya besar

Ingatlah di ujung pembahasan pada Part 1 series ini, kita menggunakan label 1 untuk titik di zona positif dan label 0 untuk titik di zona negatif. Oleh karena itu, titik yang salah diklasifikasikan adalah titik dengan label 0 di zona positif, atau titik dengan label 1 di zona negatif.

Metode dengan menggunakan skor ini memiliki beberapa aturan seperti berikut:

  1. Titik-titik yang berada pada garis memiliki skor 0.
  2. Titik-titik yang berada pada zona positif memiliki skor positif.
  3. Titik-titik yang berada pada zona negatif memiliki skor negatif.
  4. Titik-titik yang dekat dengan batas akan memiliki skor dengan magnitudo rendah (nilai absolut yang rendah).
  5. Titik-titik yang jauh dari garis (baik di zona positif atau negatif) akan memiliki skor dengan magnitudo tinggi (nilai absolut yang tinggi).

Jika kalian bingung dengan poin 4 dan 5, itu adalah sifat dasar dari skor dalam model seperti perceptron. Nilai absolut skor selalu tinggi untuk poin yang jauh dari garis dan rendah untuk poin yang dekat dengan garis. Dengan demikian, kita dapat mendefinisikan error sebagai nilai absolut skor untuk poin yang diklasifikasikan dengan salah.

Lebih khusus lagi, pertimbangkan pengklasifikasi yang memberikan bobot a dan b pada kata beep dan boop, dan memiliki bias c. Pengklasifikasi ini membuat prediksi ŷ = step(axbeep + bxboop + c ke kalimat dengan xbeep adalah jumlah kemunculan kata beep dan xboop adalah jumlah kemunculan kata boop. Kesalahan perceptron didefinisikan sebagai berikut:

Kesalahan perceptron untuk sebuah kalimat

  • Jika kalimat diklasifikasikan dengan benar, kesalahannya adalah 0.
  • Jika kalimat diklasifikasikan dengan salah, kesalahannya adalah |axboop + bxbeep + c|

Dalam skenario yang lebih umum, di mana notasi didefinisikan seperti di bagian "Apa yang terjadi jika alien berbicara dengan lebih dari dua kata?," Berikut ini adalah definisi kesalahan perceptron:

Kesalahan perceptron untuk sebuah titik (umum)

  • Jika titik diklasifikasikan dengan benar, kesalahannya adalah 0.
  • Jika intinya salah diklasifikasikan, kesalahannya adalah  |w1 x1 +w2 x2 + … +wnxn + b|


Cara menghitung error dari seluruh dataset

Untuk menghitung error perceptron untuk seluruh dataset, kita dapat menggunakan rata-rata semua error yang sesuai dengan semua titik. Untuk mengilustrasikannya, mari kita lihat contoh berikut

Kita akan membuat dua model classifier berdasarkan dataset di atas.

Classifier 1

Bobot
  • Boop: a = 1 point
  • Beep: b = 2 point
Bias: c = –4

Skor setiap kalimat: 1xboop + 2xbeep – 4

Prediksi: ŷ = step(1xboop + 2xbeep – 4

Classifier 2

Bobot
  • Boop: a = –1 point
  • Beep: b = 1 point
Bias: c = 0

Skor setiap kalimat: xboop + xbeep

Prediksi: ŷ = step(–xboop + xbeep

Kedua classifier di atas dapat diilustrasikan pada gambar di bawah. 


Jika dilihat sekilas, classifier kedua tampak lebih baik karena mengklasifikasikan seluruh titik dengan benar dan pada classifier pertama terdapat titik yang diklasifikasikan dengan salah. Sekarang mari kita hitung kesalahan dan pastikan bahwa classifier 1 memiliki kesalahan yang lebih tinggi daripada classifier 2. Ringkasan perhitungan ini ditunjukkan pada tabel di bawah.



Kita telah mengetahui bagaimana cara membandingkan kinerja antar model classifier. Lalu bagaimana cara kita menemukan pengklasifikasi yang baik? Secara garis besar, caranya hampir sama dengan regresi linier yang telah kita pelajari sebelumnya. Ingatlah bahwa tujuan regresi linier adalah untuk menyesuaikan garis sedekat mungkin dengan sekumpulan titik. kita memulai melatih model regresi linier dengan garis acak dan mengambil langkah-langkah kecil untuk semakin dekat dan lebih dekat ke titik. Kita kemudian menggunakan analogi turun dari gunung (Gunung Errorest) dengan mengambil langkah-langkah kecil ke arah bawah. Ketinggian di setiap titik di gunung adalah rerata fungsi kesalahan perceptron, yang kita definisikan sebagai kesalahan absolut atau kesalahan kuadrat. Oleh karena itu, turun dari gunung sama dengan meminimalkan kesalahan, yang setara dengan menemukan garis terbaik. Kita menyebut proses ini dengan istilah gradient descent.

Dalam blog series ini, hal yang sama terjadi. Namun perbedaannya adalah kita tidak ingin menyesuaikan garis sedekat mungkin dengan serangkaian titik. Sebaliknya, kita ingin menggambar garis yang memisahkan dua set titik dengan cara terbaik. Algoritma perceptron adalah proses yang dimulai dengan garis acak, dan perlahan-lahan memindahkannya selangkah demi selangkah untuk membangun pemisah yang lebih baik. Analogi turun dari gunung juga berlaku di sini. Satu-satunya perbedaan adalah bahwa di gunung ini, ketinggian di setiap titik adalah rerata kesalahan perceptron yang telah kita bahas di atas. Ringkasnya, yang membedakan adalah persamaan atau rumus untuk menghitung error function-nya.