為 SVM 分類選擇屬性?
假設我將每個交易日分類為 1 或 0。確切的分類無關緊要,但為了這個問題,假設我正在預測價格變化的方向。因此,對於像 GOOG 這樣的特定股票:
對於第 N 天:
1:關閉第 N+1 天 > 關閉第 N 天
0:關閉第 N+1 天 <= 關閉第 N 天
對於每一天 N,我想預測它是 1 還是 0。
現在讓我們假設,作為輸入,我想使用一個時間序列(前 10 天):
- 收盤價
- EMA收盤價
- 日內波動
這將為我提供 30 個屬性作為輸入。我的問題是什麼更有意義:
- 生成三個不同的分類模型(上述每個屬性類型一個)。然後執行最後一個分類,這將給我一個最終預測,它將每個模型的預測類作為輸入。IE 這個最終分類將包含三個屬性作為輸入,比如
$$ 1,0,1 $$或者$$ 1,1,1 $$等等
- 執行一個將所有 30 個屬性作為輸入的分類。
使用單個模型中的所有屬性。
如果您建構三個單獨的模型,您將丟棄所有可能包含在不同特徵組合中的所有資訊。
因此,例如,如果今天的收盤價高於 EMA 並且波動率很高,那麼明天價格更有可能上漲,但如果波動率很低,則更有可能以相同的價格走勢下跌。單個模型無法捕捉到這種相關性,因為沒有單個 SVM 能夠看到所有需要的數據,但是具有所有屬性的單個 SVM 可以檢測到它(使用非線性核心)。
您在這裡遇到了常見的“自下而上”或“自上而下”的問題。
我認為您的問題沒有最終答案,因為這兩種方法各有利弊。
對於“自下而上”,您首先對每個特徵進行分類,然後再次分類。這使您能夠通過將決策分為 2 個步驟來更好地理解算法的決策。但是,正如 Marc Shivers 在他的回答中解釋的那樣,一旦您完成了第一步,您將失去該方法可能具有的部分精度,因此您的算法可能不太精確。
對於“自上而下”,您可以直接在完整的參數集上執行 SVM。第一個優點是它更簡單,並且是應用算法的普通方法。一個問題是算法可能會過度擬合數據,即給你一個“太精確”的解決方案,因此是錯誤的。
在欠擬合或過擬合之間進行選擇非常困難。您應該嘗試這兩種方法,並真正評估哪些方法在您考慮的條件下表現最好。實際上,一種方法的性能可能會根據您擁有的數據量和其他難以先驗猜測的特徵而有所不同。Andrew Ng 在 coursera 上提供了一個很棒的線上課程,您可以在第 10 章中看到評估算法的不同方法。