30

您是否有一些建議或閱讀如何設計機器學習任務的功能? 即使是神經網絡,良好的輸入特徵也很重要。選擇的特徵將影響所需的隱藏神經元數量和所需的訓練實例數量。如何設計機器學習功能

以下是一個示例問題,但我一般對功能工程感興趣。

動機例如: 看着一個難題(例如,15-puzzleSokoban)時,這將是一個良好的輸入?是否有可能認識到哪兩個國家更接近目標?

回答

46

良好的特徵工程涉及兩個組件。首先是理解您試圖解決的任務的屬性,以及它們如何與您使用的分類器的優點和侷限性相互作用。第二個是實驗性工作,你將測試你的期望,並找出實際工作和不工作。

這可以反覆做:你自上而下問題的理解激勵實驗,然後你學習這些實驗的自下而上信息可幫助您更好地瞭解這個問題。對問題的更深入的理解可以推動更多的實驗。

擬合功能,以您的分類

比方說,你正在使用像logistic-regression或一個簡單的線性分類與線性內核SVM。如果您認爲可以測量各種屬性並將其作爲輸入提供給分類器,那麼您需要手動構建並提供捕獲這些交互的功能。但是,如果您使用的是具有多項式或高斯內核的SVM,則輸入變量之間的交互作用已經被模型結構捕獲。同樣,如果某些輸入變量的值比其他值大得多(例如,大多數特徵的值爲0或1,但一個特徵的值在-1000和1000之間),則SVM可能表現不佳, 。因此,當您爲SVM進行特徵工程時,您可能需要先將特徵的值標準化,然後再將它們提供給分類器。但是,如果您使用的是decision treesrandom forests,則此類歸一化不是必需的,因爲這些分類器對各種功能值之間的幅度差異具有魯棒性。特別是在解謎

如果你正在尋找解決問題的一個複雜的狀態空間

注意,你可能想使用reinforcement learning辦法像Q-learning。這有助於結構學習任務,涉及通過系統的一系列中間步驟實現某個目標。

+0

對書中提到的屬性之間的相互作用的認識是什麼?如何識別輸入中缺少的內容? – 2010-04-21 20:22:41

+0

交互應該在大多數統計教科書中提及。但是,維基百科有一個很好的概述:http://en.wikipedia.org/wiki/Interaction_%28statistics%29。 – dmcer 2010-04-21 23:36:27

+6

至於從輸入中缺少的東西,我假設你的意思是'我怎麼知道我是否擁有足夠的正確功能'。如果您爲分類器關閉正則化方法,並且訓練數據的性能仍然不佳,那麼您應該嘗試集體討論更多功能。但是,當您的訓練集性能良好但您的測試集性能不佳時,則表明您過度訓練集並且需要刪除某些功能和/或調整正規化。 – dmcer 2010-04-21 23:45:09