Negatif olmayan Matris Ayrışımı
Negatif olmayan matris ayrışımı yapay öğrenmede sıklıkla kullanılan $A$ matrisinin $W$ ve $H$ çarpanlarına ayrıştırıldığı yöntemdir. Öyle ki hem $A$ matrisi, hem de çarpanları negatif olmayan değerler içerir. Problem genellikle tam olarak çözülemediği için nümerik yaklaşımlar uygulanır.
MATLAB'de bu görevi istatistik araçkutusunda bulunan nnmf
fonksiyonu görür. Gelin birlikte bu fonksiyonun kullanımına bakalım.
[W,H] = nnmf(A,k)
negatif olmayan n x m'lik A
matrisini negatif olmayan W (n x k'lik) ve H (k x m'lik) çarpanlarına ayırır. Ayrışım kesin değildir, W*H
, A
'nın bir yaklaşımıdır. W
ve H
, A
ile W*H
arasındaki D
farkı enküçüklenecek şekilde seçilir.
D = sqrt(norm(A-W*H,'fro')/(N*M))
Fonksiyonun ayrıntılı kullanımı için buraya bakabilirsiniz.
Dokümantasyondaki örneğe bakalım. Öncelikle iki tane çarpanı kendimiz oluşturalım ve alttaki seçenekler ile nnmf
'i çağıralım.
X = rand(100,20)*rand(20,50); opt = statset('MaxIter',5,'Display','final'); % En çok 5 döngü olsun, son değer görünsün [W0,H0] = nnmf(X,5,'replicates',10,... 'options',opt,... 'algorithm','mult');
rep iteration rms resid |delta x| 1 5 0.594972 0.0498092 2 5 0.619223 0.0415817 3 5 0.621558 0.0380814 4 5 0.63019 0.0332496 5 5 0.617562 0.0366863 6 5 0.646219 0.0353345 7 5 0.590388 0.0332183 8 5 0.590777 0.0268213 9 5 0.622133 0.024451 10 5 0.655387 0.034738 Final root mean square residual = 0.590388
Sonra bulduğumuz sonuçları als
(alternating least squares) algoritmasına girdi olarak verelim.
opt = statset('Maxiter',1000,'Display','final'); [W,H] = nnmf(X,5,'w0',W0,'h0',H0,... 'options',opt,... 'algorithm','als');
rep iteration rms resid |delta x| 1 28 0.266558 0.00385439 Final root mean square residual = 0.266558