我正在使用LIBLINEAR訓練一個簡單的邏輯迴歸分類器。只有3個功能,標籤是二進制0-1。liblinear L1與L2邏輯迴歸性能差異
樣品輸入文件:
1 1:355.55660999775586 2:-3.401379785 3:5
1 1:252.43759050148728 2:-3.96044759307 3:9
1 1:294.15085871437088 2:-13.1649273486 3:14
1 1:432.10492221032933 2:-2.72636786196 3:9
0 1:753.80863694081768 2:-12.4841741178 3:14
1 1:376.54927850355756 2:-6.9494008935 3:7
現在,如果我使用 「-S 6」,這是 「L1-正規化logistic迴歸」,則10倍交叉驗證的精度是70%左右,每一秒都能完成。 但是,如果我使用「-s 7」,即「L2-正則化邏輯迴歸(雙重)」,則訓練迭代超過1000,而10倍精度僅爲60%。
有沒有人看過這種奇怪的行爲?根據我的理解,L1和L2之間的唯一區別是正則化術語是使用abs(x)還是pow(x,2)。
感謝您的回覆!我有大約30萬個訓練實例,其中64%是正面訓練實例。你覺得這足夠嗎? – menphix
順便說一句,非常有幫助的文章! – menphix
快樂文章幫助! 哦,這應該是綽綽有餘,而且這個歪斜不應該大到足以讓這個差別變得更大。你是否嘗試過標準化的東西,比如正規化輸入數據?你能將誤差作爲訓練迭代的函數來繪製嗎?也許它不會收斂? – ABC