2016-03-06 15 views
1

在一個單詞包上實現線性迴歸模型時,python返回了非常大/很小的值。 train_data_features包含所有在訓練數據中的詞。訓練數據包含約400條評論,每條評論少於500個字符,排名介於0和5之間。之後,我爲每個文檔創建了一個單詞袋。當試圖對所有單詞的矩陣執行線性迴歸時,結果似乎是非常奇怪的(僅是4000的3的一個示例)。它顯示了爲這些單詞創建的迴歸函數的因素。線性模型的係數太大/太低

btw -0.297473967075 
land 54662731702.0 
landesrekord -483965045.253 

我很困惑,因爲目標變量介於0和5之間,但因素是如此不同。他們中的大多數都有非常高/低的數字,我期待的值只有btw

你有什麼想法,爲什麼結果像他們一樣?

回答

1

這可能是因爲您的模型過度擬合數據,因爲它試圖完全匹配輸出。你是擔心和懷疑是對的,因爲這意味着你的模型可能過度適合你的數據,並且不會很好地適用於新數據。你可以嘗試以下兩種情況之一:

  • 運行LinearRegression(normalize=True),看看它是否與係數的幫助。但這只是一個臨時解決方案。
  • 改爲使用Ridge regression。它基本上是做線性迴歸,除了因係數過大而增加懲罰。
+0

我剛試過。似乎,第一個選項並沒有太大的改變。第二個給出每個單詞的好和小值。這似乎是一個好主意。但我必須詳細檢查一下嶺迴歸在做什麼,以瞭解差異。謝謝你的幫助。 –

+0

重新格式化train_data_features我正在使用軟件包re。只要我將德語變音符''作爲大寫字母添加到允許的字符集中,該模型就會過度適應結果。所有其他Umlaute(不知道)都不會導致同樣的問題。在後臺發生了什麼? –

+0

你爲什麼要重新格式化'train_data_features'?當你使用'RidgeRegression'時,你也可能需要用'C'值來玩,而不是過度使用。 – mprat