4

對於我的一個AI作業任務,我們負責創建Widrow Hoff delta規則的感知器學習實現。我編寫在Java中此實現:感知器學習 - 最重要的功能

以下github上的鏈接包含項目:那我有 https://github.com/dmcquillan314/CS440-Homework/tree/master/CS440-HW2-1

的問題是不是與創造感知的。這工作正常。

在訓練後的感知器中,我然後將一個未分類的數據集應用到感知器,然後學習每個輸入向量的分類。這也很好。

我的問題屬於學習輸入的哪個特徵是最重要的。例如,如果每個輸入矢量中的特徵集是彩色,汽車模型和汽車,我們想分類哪個特徵是最重要的。如何去做這件事。

我最初的理解讓我相信,計算相關係數是每個輸入的特徵值和所產生的分類向量。然而,這竟然是一個錯誤的假設。

有沒有其他方法可以學習最重要的功能?

EDIT

樣品重量矢量:

(-752,4771,17714,762,如圖6所示,676,3060,-2004,5459,9591.299,3832,14963,20912)

樣品輸入向量:

(55,1,2,130,262,0,0,155,0,0,1,0,3,0)

(59,1,3, 126,218,1,0 (45,1,2,128,308,0,2,170,0,0,1,0,3,0)

(59,1,4,110,239,0,2,142,1,1.2,2,1,7,1)

最後一個元素是分類。

我會在找到答案時在此發佈答案。到目前爲止,我相信教練給出的答案是不準確的。

+0

看來你知道了很多關於感知,你有關於[這個問題](http://stackoverflow.com/questions/28577662/application-of-delta-rule-to-feature-vectors-任何見解感知器) –

回答

1

事實證明,這比我原先想象的要簡單得多。答案/過程如下:

給定一組輸入向量,如下所示:

[1,0,1,0],[0,1,0,1]

數據已被約束在0和1之間以最小化方差。然而,在我的數據的情況下,我有更多的東西像下面這樣:

[0,145,0,132],[0,176,0,140]

這會導致一些輸入要素的變化要大得多,你會因此不能使用權重向量作爲特徵重要性的指標。因此,爲了使權重向量成爲重要性的指標,我們首先通過除以特徵最大值來標準化數據。

對於上述集將是:[0,176,0,140]

這將導致一組均勻的特徵向量,並且也將導致權重向量是的特徵的重要性的指示。

3

通過計算學習模型取決於特徵的多少來捕獲特徵的重要性f

感知器是一個簡單的前饋神經網絡,以及用於神經網絡(其是實值的非線性函數),依賴對應於輸出功能的相對於偏導˚F

特徵的相對重要性與訓練感知器上的平均絕對權重成正比。一般情況下,神經網絡並非總是如此。例如,這不一定適用於多層感知器。

有關詳細信息(在這裏輸入精確公式將是一個符號表示一塌糊塗),看看sections 2 and 3 of this paper。我相信方程(8)(在第3節)是你正在尋找的。

在那裏,得分總和在多個學習者。如果是一個單層感知器,學習的功能是單個權重向量

瓦特 =(W1 W2,... WN

然後,平均絕對重量我在開頭提到的只是絕對重量| wi |的第 - 功能。這看起來太簡單了,無法排列功能的重要性,對嗎?但是...如果你仔細想想,n維輸入X被轉化爲W¯¯x(矢量點產品)。即,個權重無線充分控制沿矢量空間的一個維度的輸入改變多少。

順便說一句,在大多數(如果不是全部)的分類,特點是重量本身它的重要性的措施。只是對於大多數其他分類器而言,權重是以更復雜的方式計算的。

+0

看過這篇論文後,似乎沒有發現最重要的特徵。它似乎允許使用每個功能的重要性。你能詳細說明這是不正確的嗎? – dmcqu314

+0

他們使用特徵重要性來偏置其多層感知器的第一層中的初始權重。但就你而言,你已經有了一個學過的單層感知器。因此,你有權重。使用這些權重,您可以計算這些值。由於感知器中沒有更多層,所以沒有更多的工作要做。 –

+0

我已將從培訓中產生的權重向量添加到帖子中。我試圖理解這個等式的部分是什麼。我知道w顯然是權重向量,但它說L是學習者,在這種情況下只有一個學習者。因此,我相信只會有一個總和,其實質上是權重向量。這是如何顯示最重要的功能?我認爲這是我有點失落的地方。 – dmcqu314