Belajar yuk mengenai Linear Discriminant Analyst

By | July 30, 2024
2,504 Views

LDA menurut Wiki adalah

www.softcsients.com | “Linear discriminant analysis (LDA) and the related Fisher’s linear discriminant are methods used in statistics, pattern recognition and machine learning to find a linear combination of features which characterizes or separates two or more classes of objects or events. The resulting combination may be used as a linear classifier, or, more commonly, for dimensionality reduction before later classification”

Tugas LDA gampang koq, cuman mencari Diskriminan Linear dari suatu data yang diproyeksikan secara tegak lurus. Misalkan penulis mempunyai kumpulan 2 data seperti berikut dengan feature 2 dimensi yaitu x dan y

 

Tugas LDA adalah melakukan proyeksi linear agar proyeksi tersebut bisa memisahkan 2 kelas tersebut. Oke agar lebih mudah, saya akan proyeksikan masing-masing kelas tersebut kedalam sumbu Y. Istilah proyeksi disini yaitu membutuhkan sebuah garis lurus sebagai ‘sandaran’

Proyeksi terhadap sumbu Y

Kalau kita lihat bila diproyeksikan pada sumbu, maka akan terjadi overlapping. Kalian bisa melihat area warna hijau terjadi himpitan.

 

Proyeksi terhadap sumbu X

Kalau diproyeksikan ke sumbu Y terjadi himpitan, kita coba ke sumbu X saja, namun hasilnya pun sama saja terjadi himpitan, maka kita butuh sebuah persamaan garis lurus y=ax+b

Proyeksi terhadap y=mx+c

Kita butuh sebuah persamaan garis lurus y=mx+c, seperti garis berikut

Yup ternyata sempurna! Tidak terhadi himpitan! Itulah tugasnya sebuah LDA untuk mencari pemisah linear berdasarkan proyeksi. Daripada membayangkan persamaan matematikanya yang rumit, saya kasih contoh yang mudah

LDA dengan 2 Cluster

Biar mudah penjelasan mengenai linear discriminant analyst, kita buat dataset yang terdiri dari 2 cluster saja, seperti berikut

Kalian bisa melihat, bila kita proyeksikan ke sumbu X dan Y, maka sedikit terjadi himpitan, namun ketika kita buat LDA berikut ada 2 opsi pilihan yaitu LDA 1 dan 2

Tentu kalau dilihat, kita akan pilih LDA 1 (warna merah), namun agar lebih yakin kita butuh PDF yaitu probabilty densitas function

probabilty densitas function

Berikut hasil perhitungan PDF yang ditampilkan dalam bentuk grafik yang sangat terlihat untuk LDA 1 tidak ada himpitan, sedangkan LDA 2 terjadi overlapping

Tahapan Menghitung LDA

Bagaimana menghitung LDA? Sebenarnya cukup mudah untuk menghitung LDA, yuk mari kita hitung LDA, kita siapkan sebuah data

clc;clear all;close all;
x1 = [4,2;
    2,4;
    2,3;
    3,6;
    4,4];
x2 = [ 9,10;
    6,8;
    9,5;
    8,7;
    10,8
    ];

Langkah selanjutnya menghitung mean, over all mean, covarian, dan within-class scatter matrix

%%hitung masing - masing mean nya
mu1 = mean(x1)';
mu2 = mean(x2)';
 
%%hitung overall mean nya
mu = (mu1+mu2)/2;
 
%%hitung covarian matrix tiap class
s1 = cov(x1);
s2 = cov(x2);
 
%%hitung within-class scatter matrix
sw = s1+s2;
 
%%jumlah sample tiap class
n1 = size(x1,1);
n2 = size(x2,1);

Langkah selanjutnya menghitung between-class scatter matrix serta sampai dengan eigen vector

%%between-class scatter matrix
sb1 = n1.*(mu1-mu)*(mu1-mu)';
sb2 = n2.*(mu2-mu)*(mu2-mu)';
 
%%computing overall bw
sb = sb1+sb2;
 
%computing the LDA projection
inv_sw = inv(sw);
inv_sw_by_sb = inv_sw*sb;
 
%%getting the projection vectors
[v,d] = eig(inv_sw_by_sb);
 
w1 = v(:,1);
w2 = v(:,2);

Perhatikan variabel w1 dan w2 dengan nilai

>> w1

w1 =

    0.9088
    0.4173

>> w2

w2 =

   -0.5755
    0.8178

>>

Maka untuk menentukan proyeksi terbaik, cukup grand total kan w1 dan w2 melalui cara berikut ini, didapatkan bahwa w1 lebih tinggi dari w2

>> sum(w1)

ans =

    1.3260

>> sum(w2)

ans =

    0.2423

>>

Sehingga w1 merupakan garis proyeksi terbaik!

Discriminant

Untuk menghitung discriminant nya yaitu

%%discriminant
y1_w1 = w1'*x1';
y2_w1 = w1'*x2';
 
discriminant = mean([y1_w1;y2_w1]')

hasil

discriminant =

    4.3120   10.8050

Kalian bisa melihat discriminant untuk A=4.3210 dan B=10.8050

Data asing pada LDA

Bagaimana mengklasifikasi data asing setelah didapatkan LDA sebelumnya? Perhatikan objek C berikut

 

Sekilas akan masuk/lebih dekat dengan B, maka untuk menghitungnya  cukup hitung jarak euclid nya

x3 = [8,10]; %%sebagai testing
y_asing_w1 = w1'*x3'
jarak_kelas_A = norm(discriminant(1)-y_asing_w1)
jarak_kelas_B = norm(discriminant(2)-y_asing_w1)

hasil

y_asing_w1 =

   11.4429


jarak_kelas_A =

    7.1310


jarak_kelas_B =

    0.6379

Kalian bisa lihat jarak_kelas_B mempunyai nilai terkecil sehingga X3 masuk sebagai data B

Visualisasi

Hem.. pasti kalian penasarankan dengan teknik visualisasi diatas? Kita coba dengan data yang lebih banyak lagi

Plot PDF nya

Menarik bukan pembahasan LDA nya, lebih mudah kalau dengan visulasasi, silahkan bertanya kesini saja cara dapatkan visualisasi diatas setidaknya kalian sudah tahu cara mencari LDA nya