2017-04-25 48 views
0

我是一名機器學習初學者,我非常感謝您的幫助。在fastICA(Matlab)中提取特徵

我正在嘗試使用FastICA MATLAB工具箱,以及史詩般的Google搜索量和閱讀文檔後,我越來越困惑。

我使用的是Car Data Set,我使用的是1000個100x40的圖像(500個汽車,500個汽車)。我正在使用fastica來查找獨立組件(我將在稍後使用它們來構建汽車檢測系統)。

我正在我的訓練數據集下面的代碼:

[icasig, A, W] = fastica(Training_Set); 

A和W爲1000×1000的矩陣和icasig是1000x4000矩陣,按我的理解icasig的行包含獨立的組件,A是混合矩陣。

如何繪製獨立組件?有人能用簡單的英語向我解釋什麼是W?

另外還有一件令我困惑的事情是,如果我在icasig中刪除了一些行並獲得例如300x4000矩陣,我在做功能壓縮嗎?

如果我使用分類算法(例如SVM),如何改變我用來訓練它的獨立組件的數量?我認爲rica是完美的,但不幸的是我沒有統計和機器學習工具箱。

回答

1

有人可以用簡單的英語向我解釋什麼是W?

w在ICA中通常代表分離矩陣。給定混合圖像X,可以通過計算wX來獲得獨立組件。結果S通常將是另一個矩陣,其大小與X相同。每行S包含表示一個獨立組件的數據。

使用ICA算法的主要目的之一是找到分離矩陣w。如果您對此不瞭解,我會建議您在繼續閱讀之前閱讀更多文獻。即使fast ICA's Wikipedia頁面告訴你關於w

如何繪製獨立組件?

如果icasig小號,你可以嘗試以下方法:

icasig = abs(icasig) % take the absolute 

% you can add a for loop here to plot all components 
component=icasig(1,:) % take the first component 
im = reshape(component,[h,w,3]); % h being the height of the image of the component and w being the width 
im=uint8 (round(im)); 
figure; imshow(im); 
% end of the for loop. Be prepared to have a lot of pictures poping up. 

如果我刪除icasig某些行,並得到例如300x4000矩陣我在做特徵壓縮?

如果刪除一些單獨的組件意味着功能壓縮,那麼是的。

+0

謝謝你的回答,但我仍然感到困惑。我試圖使用從ICA獲得的功能來構建分類器,但我不確定我是否以正確的方式進行分類。 svmtran中的輸入是icasig?我應該如何投影測試集? [icasig,A,W] = fastica(Training_Set); SVMStruct = svmtrain(icasig,train_label,'kernel_function','quadratic') Group = svmclassify(SVMStruct,Test_Set) – Jane

+0

@Jane我不熟悉svm,但看起來你在這裏做的是正確的事情。我不確定你猜測測試集是什麼意思。我建議你打開一個新的問題或編輯你的原始問題,以包括svm的問題。 – Anthony