2012-11-28 87 views
0

如果我有一個功能卡路里和另一個功能人數,爲什麼每個人添加功能卡路里或添加功能卡路里/ 10有助於改進測試?我看不出如何在兩個功能上執行簡單的算術會獲得更多信息。將屬性添加到訓練集

感謝

+0

我對這個問題感到困惑。你使用什麼算法?/你在做什麼? –

+0

這只是一個普遍的問題。與Kaggle比賽一樣,頂級得分隊伍對他們的數據進行預處理並做類似的事情。 – user1698555

回答

0

考慮您使用的是分類/迴歸機制是線性(或對數線性)的特徵空間。如果您的實例x具有功能X_I,然後是線性意味着分數是一樣的東西:

Y_I = \ sum_i X_I * w_i

現在考慮您認爲有功能之間的一些重要的互動---也許你認爲x_i只有在x_j具有相似的值時才重要,或者它們的總和比個別值更重要,或者其他任何值。將這一信息的一種方式是具有算法明確模型橫產物,例如:

Y_I = [\ sum_i X_I * w_i] + [\ sum_i,J X_I * x_j * w_ij]

然而,線性算法是無處不在且易於使用的,因此,將類似交互的術語放入標準線性分類器/迴歸機制中的一種方法是增加特徵空間,因此對於每對x_i,x_j您可以創建形式爲[x_i * x_j]或[x_i/x_j]或其他。現在,您可以建模不同功能之間的交互,而無需使用非線性算法。

0

執行該類型的算術可以讓您在未明確考慮變量非線性組合的模型中使用該信息。一些分類器試圖找到最能解釋/預測訓練數據的特徵,並且通常最佳特徵可能是非線性的。

使用你的數據,假設你想預測一羣人平均會增加體重。假設「正確的」答案是,如果該組中的人每天平均消耗3,000卡路里,那麼該組將會增加體重。如果你的輸入是group_sizegroup_calories,你將需要使用這兩個變量來做出準確的預測。但是,如果您還提供group_avg_calories(這只是group_calories/group_size),您可以使用該單一功能進行預測。即使前兩個特徵添加了一些附加信息,如果要將這3個特徵提供給決策樹分類器,它幾乎肯定會選擇group_avg_calories作爲根節點,並且最終會得到更簡單的樹結構。在你的模型中添加大量的任意非線性特徵組合也是一個缺點,那就是它可以顯着增加分類器的訓練時間。

關於calories/10,目前尚不清楚爲什麼你會這樣做,但是規範化輸入特徵可以提高一些分類器(例如人工神經網絡)的收斂速度,並且還可以爲聚類算法提供更好的性能,因爲輸入特徵將會全部在相同的範圍內(即,沿着不同特徵軸的距離是可比的)。