Klasifikasi Season 2 Nearest Neighbor Pengenalan Pola Materi
Klasifikasi (Season 2) Nearest Neighbor Pengenalan Pola Materi 3 Eko Prasetyo Teknik Informatika UPN “Veteran” Jawa Timur 2012
K-NEAREST NEIGHBOR (K-NN) 2
K-Nearest Neighbor � Algoritma yang melakukan klasifikasi berdasarkan kedekatan lokasi (jarak) suatu data dengan data yang lain. � Prinsip sederhana yang diadopsi oleh algoritma KNN adalah: “Jika suatu hewan berjalan seperti bebek, bersuara kwek-kwek seperti bebek, dan penampilannya seperti bebek, maka hewan itu mungkin bebek”. � Pada algoritma K-NN, data berdimensi q, dapat dihitung jarak dari data tersebut ke data yang lain, ◦ Nilai jarak ini yang digunakan sebagai nilai kedekatan/kemiripan antara data uji dengan data latih. 3
K-Nearest Neighbor 1 tetangga terdekat (1 -NN) 2 tetangga terdekat (2 -NN) 3 tetangga terdekat (3 -NN) 7 tetangga terdekat (7 -NN) 4
Algoritma K-NN �z = (x’, y’), adalah data uji dengan vektor x’ dan label kelas y’ yang belum diketahui �Hitung jarak d(x’, x), jarak diantara data uji z ke setiap vektor data latih, simpan dalam D �Pilih Dz D, yaitu K tetangga terdekat dari z 5
Contoh Data uji adalah data (3, 4), fitur X=3, Y=4. Akan dilakukan prediksi, masuk dalam kelas yang manakah seharusnya ? Gunakan jarak Euclidean ! Data latih Data 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 X 1 2 3 3 7 1 2 5 4 6 1 4 5 2 4 Y 1 1 1 2 2 3 3 3 4 4 5 5 6 6 6 7 7 Kelas 1 1 2 2 2 1 2 2 6
Prediksi dengan K-NN Jarak data uji (3, 4) ke 17 data latih Nomor data 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 x y 1 2 3 3 7 1 2 5 4 6 1 4 5 2 4 1 1 1 2 2 3 3 3 4 4 5 5 6 6 6 7 7 Kelas asli 1 1 2 2 2 1 2 2 Jarak data uji 1 -NN 3 -NN 7 -NN ke data latih 3. 6055 ------3. 1622 ------3 ------2 --NN NN 4. 4721 ------2. 2360 ----NN 1. 4142 --NN NN 2. 2360 ----NN 1 NN NN NN 3 ------2. 2360 ----NN 3. 1622 ------2. 8284 ------2. 2360 ----NN 2. 8284 ------3. 1622 ------- 7
Prediksi dengan K-NN Jarak data uji (3, 4) ke 17 data latih Nomor data x y 9 7 4 6 8 11 14 13 15 3 10 2 12 16 17 1 5 4 2 3 1 5 1 4 1 5 3 6 2 4 1 7 4 3 2 3 3 5 6 6 6 1 4 1 5 7 7 1 2 Kelas Jarak data uji ke 1 -NN 3 -NN 7 -NN asli data latih 2 1 1 1 2 1 2 1 2 2 2 1 1. 414 2 2. 236 2. 828 3 3 3. 162 3. 606 4. 472 NN ----------------- NN NN NN NN ----------- 8
Prediksi dengan K-NN Untuk K=1 Data latih yang terdekat adalah data nomor 9 (4, 4) dengan kelas 1, maka data uji (3, 4) diprediksi masuk kelas 1. Untuk K=3 Data latih yang terdekat adalah data nomor 9 (4, 4) dengan kelas 1, data nomor 7 (2, 3) dan data nomor 4 (3, 2) dengan kelas 0, karena kelas 1 berjumlah 1 dan kelas 0 berjumlah 2 (lebih banyak kelas 0 daripada kelas 1) maka data uji (3, 4) diprediksi masuk kelas 0. Untuk K=7 Data latih yang terdekat adalah data nomor 8 (5, 3), 9 (4, 4), 14 (4, 6) dengan kelas 1, data nomor 4 (3, 2), 6 (1, 3), 7 (2, 3), dan 11 (1, 5) dengan kelas 0, karena kelas 1 berjumlah 3 dan kelas 0 berjumlah 4 (lebih banyak kelas 0 daripada kelas 1) maka data uji (3, 4) diprediksi masuk kelas 0. 9
K-NN di matlab � Parameter Sample Class = knnclassify(Sample, Training, Group, k, distance, rule) Group Keterangan Matrik dimana baris merupakan data, kolom merupakan fitur. Sample merupakan data uji yang akan diklasifikasikan kedalam kelas. Matrik Sample harus mempunyai jumlah kolom (fitur) yang sama dengan matrik Training. Matrik yang digunakan untuk mengelompokkan baris didalam matrik Sample. Matrik Traning harus mempunyai jumlah kolom yang sama dengan Sample. Setiap baris dalam matrik Training mempunyai relasi kelas pada baris yang sama pada matrik Group. Vektor (matrik 1 kolom) yang setiap barisnya menyatakan kelas dari baris yang sama dalam matrik Training. k distance Jumlah tetangga terdekat yang digunakan untuk klasifikasi. Nilai defaultnya adalah 1. String yang menyatakan metrik jarak yang digunakan untuk mencari tetangga terdekat, pilihannya: Training ‘euclidean’, jarak Euclidean (default) ‘cityblock’, jarak Manhattan atau jumlah absolut perbedaan nilai antar fitur ‘cosine’, jarak 1 – cos(sudut antara 2 titik) ‘correlation’, jarak 1 – korelasi diantara titik (nilai sekuen) rule ‘hamming’, jarak prosentase bit yang berbeda (cocok untuk data biner) String untuk menetapkan aturan dalam memutuskan bagaimana mengklasifikasikan Sample, pilihannya: ‘nearest’, aturan mayoritas pada titik terdekat (default); ‘random’, aturan mayoritas pada titik secara acak; ‘consensus’, aturan kesepakatan 10
%Nama file: dataset_buatan. m data = [ %x 123371253461614524 %y 111223334445566677 0. 1 0. 2 0. 1 0. 4 0. 9 0. 8 %kelas 1111211212222 ]; data = data'; %Nama file: contoh_knn. m dataset_buatan idx_latih = [1: 8 10: 18]; idx_uji = [9]; data_latih = data(idx_latih, 1: 2); data_uji = data(idx_uji, 1: 2); kelas_latih = data(idx_latih, 3); K = 1; kelas_uji = knnclassify(data_uji, data_latih, kelas_latih, K) >> contoh_knn kelas_uji = 2 11
Evaluasi K-NN � Algoritma yang menggunakan seluruh data latih untuk melakukan proses klasifikasi (complete storage). ◦ Mengakibatkan untuk data dalam jumlah yang sangat besar, proses prediksi menjadi sangat lama. � Tidak membedakan setiap fitur dengan suatu bobot ◦ Pada ANN (Artificial Neural Network) yang berusaha menekan fitur yang tidak punya kontribusi terhadapklasifikasi menjadi 0 pada bagian bobot, ◦ NN tidak ada bobot untuk masing-masing fitur. � Menyimpan sebagian atau semua data dan hampir tidak ada proses pelatihan, ◦ maka K-NN sangat cepat dalam proses training (karena memang tidak ada) tetapi sangat lambat dalam proses prediksi. Hal yang rumit adalah menentukan nilai K yang paling sesuai � K-NN pada prinsipnya memilih tetangga terdekat, � ◦ Parameter jarak juga penting untuk dipertimbangkan sesuai dengan kasus datanya. Euclidean sangat cocok untuk menggunakan jarak terdekat (lurus) antara dua data, tetapi Manhattan sangat robust untuk mendeteksi outlier dalam data. 12
FUZZY K-NEAREST NEIGHBOR IN EVERY CLASS (FK-NNC) 13
Framework FK-NNC Diperkenalkan oleh Prasetyo (2012). � FK-NNC menggunakan sejumlah K tetangga terdekat pada setiap kelas dari sebuah data uji, bukan K tetangga terdekat seperti pada KNN dan FK-NN. � FK-NNC menggunakan FK-NN sebagai basis kerangka kerja, dimana sebuah data uji mempunyai nilai keanggotaan pada setiap kelas dalam interval [0. 1]. � Tanda dot hitam (solid) adalah data uji ◦ Jumlah nilai keanggotaan sebuah data pada semua kelas sama dengan 1 Tiga tetangga dikelas + dan tiga tetangga dikelas x
Framework FK-NNC – Cont’d � Jarak data uji xi ke semua K tetangga dari setiap kelas ke-j dijumlahkan, formula yang digunakan: (4) � Nilai m disini merupakan pangkat bobot (weight exponent) seperti pada FK-NN, nilai m > 1. � akumulasi jarak data uji xi ke setiap kelas digabungkan, disimbolkan D, formula yang digunakan: (5) � Untuk mendapatkan nilai keanggotaan data uji xi pada setiap kelas ke-j (ada C kelas), menggunakan formula: (6) � Untuk menentukan kelas hasil prediksi data uji xi, dipilih kelas dengan nilai keanggotaan terbesar dari data xi. Formula yang digunakan: (7)
Algoritma FK-NNC � Cari K tetangga terdekat pada setiap kelas, menggunakan formula � Hitung S sebagai akumulasi jarak K tetangga pada setiap kelas, menggunakan formula (4) � Hitung J sebagai akumulasi semua jarak dari C K tetangga, menggunakan formula (5) � Hitung u sebagai nilai keanggotaan data pada setiap kelas, menggunakan formula (6) � Pilih nilai keanggotaan terbesar menggunakan formula (7), kelas dengan nilai keanggotaan terbesar menjadi kelas hasil prediksi untuk data uji tersebut.
Data latih Contoh Data uji adalah data (3, 4), fitur X=3, Y=4. Akan dilakukan prediksi, masuk dalam kelas yang manakah seharusnya ? Gunakan m=2, dan jarak Euclidean ! Data 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 X 1 2 3 3 7 1 2 5 4 6 1 4 5 2 4 Y 1 1 1 2 2 3 3 3 4 4 5 5 6 6 6 7 7 Kelas 1 1 2 2 2 17
Prediksi dengan K-NN Jarak data uji (3, 4) ke 17 data latih Nomor data 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 x y 1 2 3 3 7 1 2 5 4 6 1 4 5 2 4 1 1 1 2 2 3 3 3 4 4 5 5 6 6 6 7 7 Kelas asli 1 1 2 2 2 1 2 2 Jarak data uji ke data latih 3. 6055 3. 1622 3 2 4. 4721 2. 2360 1. 4142 2. 2360 1 3 2. 2360 3. 1622 2. 8284 2. 2360 2. 8284 3. 1622 Setelah diurutkan Nomor data 7 4 6 11 13 3 2 1 9 8 14 15 10 12 16 17 5 x y 2 3 1 1 1 3 2 1 4 5 6 6 2 4 7 3 2 3 5 6 1 1 1 4 3 6 6 4 5 7 7 2 Kelas Jarak data uji asli ke data latih 1 1. 414 1 2. 236 1 2. 828 1 3. 162 1 3. 606 2 1 2 2. 236 2 2. 828 2 3. 162 2 4. 472 18
Perhitungan jarak FK-NNC pada data latih d K=1 d-2 K=3 d-2 K=5 d-2 K=7 d-2 3 Kelas asli 0 1. 414 NN 0. 5002 3 2 0 2 - NN 0. 2500 6 1 3 0 2. 236 - NN 0. 2000 11 1 5 0 2. 236 - - NN 0. 2000 13 1 6 0 2. 828 0. 1250 1 0 3 0. 1250 - NN 3 - NN 0. 1111 2 2 1 0 3. 162 - - - NN 1 1 1 0 3. 606 - - - 0. 1000 - 9 4 4 1 1 8 5 3 1 14 4 6 15 5 10 No. data x y 7 2 4 1. 0000 NN 1. 0000 2. 236 - NN 0. 2000 1 2. 236 - NN NN 0. 2000 6 1 2. 828 - 0. 2000 - NN 0. 1250 6 4 1 3 - - NN NN 0. 1111 12 6 5 1 3. 162 - - 0. 1111 - NN 0. 1000 16 2 7 1 3. 162 - - - NN 17 4 7 1 3. 162 - - - 0. 1000 - 5 7 2 1 4. 472 - - S 0 0. 5002 0. 9502 1. 2752 1. 4863 S 1 1. 0000 1. 4000 1. 6362 1. 8362 D 1. 5002 2. 3502 2. 9114 3. 3226 NN 19
, Hasil peritungan nilai keanggotaan pada kedua kelas sebagai berikut: Untuk K=1: Karena u 1 > u 0, maka data uji diprediksi masuk ke kelas 1 , Untuk K=3: Karena u 1 > u 0, maka data uji diprediksi masuk ke kelas 1 , Untuk K=5: Karena u 1 > u 0, maka data uji diprediksi masuk ke kelas 1 Untuk K=7: , Karena u 1 > u 0, maka data uji diprediksi masuk ke kelas 1 20
FK-NNC di matlab � [prediksi, keanggotaan] Parameter data labels test K prediksi keanggotaan = fknnc(data, labels, test, K) Keterangan Matrik data latih yang digunakan, berukuran M N, dimana M adalah jumlah data latih, N adalah dimensi data. Baris menyatakan data, kolom menyatakan fitur. Matrik berukuran M 1 yang menyatakan kelas data latih. Setiap barisnya menyatakan kelas pada baris matrik data. Nilai untuk label kelas adalah (1, 2, …, C) untuk setiap data. Tidak diperbolehkan kelas dengan label 0. Matrik S N yang menyatakan data uji. S adalah jumlah data uji. Jumlah kolom (fitur) yaitu N harus sama dengan jumlah fitur (kolom matrik data. Jumlah tetangga terdekat. Matrik S 1 yang menyatakan kelas hasil prediksi untuk setiap data uji dalam matrik test. Matrik S C yang menyatakan nilai keanggotaan matrik data uji ke setiap kelas. C adalah jumlah kelas. 21
Contoh %Nama file: contoh_fknnc. m dataset_buatan idx_latih = [1: 8 10: 18]; idx_uji = [9]; data_latih = data(idx_latih, 1: 3); data_uji = data(idx_uji, 1: 3); kelas_latih = data(idx_latih, 4); kelas_uji_asli = data(idx_uji, 4); K = 3; [y, memberships] = fknnc(data_latih, kelas_latih, data_uji, K); display('Kelas hasil prediksi'); y display('Nilai keanggotaan'); display('Kelas 1 | Kelas 2'); memberships >> contoh_fknnc Kelas hasil prediksi y= 2 Nilai keanggotaan Kelas 1 | Kelas 2 memberships = 0. 4043 0. 5957 22
To Be Continued … Klasifikasi (Season 3) ANY QUESTION ? 23
- Slides: 23