2017-08-29 133 views
0

我試圖解決輸入特徵集大小約爲54的迴歸問題。迴歸中的特徵選擇和預測準確性R中的森林

對單個預測變量'X1'使用OLS線性迴歸,我無法解釋Y中的變化 - 因此我試圖使用迴歸森林(即隨機森林迴歸)來查找其他重要特徵。後來發現選定的'X1'是最重要的特徵。

我的數據集有〜14500個條目。我已經將它按比例9:1分成了訓練和測試集。

我有以下問題:

  1. 試圖找到重要的功能時,我應該運行在整個數據集的迴歸森林,或只在訓練數據?

  2. 一旦發現重要特徵,應該使用少數幾個特徵重新構建模型,以查看特徵選擇是否以較小的成本加速計算以提高預測能力?

  3. 現在,我已經使用訓練集和所有功能構建了模型,並且我將它用於測試集上的預測。我正在計算訓練集的MSE和R平方。我在訓練數據上得到高MSE和低R2,並在測試數據上反轉(如下所示)。這是不尋常的嗎?

    森林< - 隨機森林(FMLA,dTraining,ntree = 501,重要性= T)

    平均值((dTraining $ Y - 預測(林,數據= dTraining))^ 2)

    0.9371891

    rSquared(dTraining $ Y,dTraining $ Y - 預測(林,數據= dTraining))

    0.7431078

    平均值((DTEST $ Y - 預測(林,newdata = DTEST))^ 2)

    0.009771256

    rSquared(DTEST $ Y,DTEST $ Ý - 預測(林,newdata = DTEST))

    0.9950448

請建議。 任何建議,如果R平方和MSE是這個問題的好指標,或者如果我需要查看一些其他指標來評估模型是否好?

回答

0

你也應該嘗試Cross Validatedhere

試圖找到重要的功能時,我應該對整個數據集運行迴歸森林,或只在訓練數據?

只限於培訓數據。你想防止過度配合,這就是爲什麼你首先做一個列車測試分裂。

一旦發現重要特徵,應該使用少數幾個特徵重新構建模型,以查看特徵選擇是否以較小的代價加快了預測能力的計算速度?

是的,但功能選擇的目的不一定是speed up computation。具有無限特徵,可以適應任何數據模式(即過度擬合)。藉助功能選擇,您只希望通過僅使用一些「強大」功能​​來防止過度配合。

現在,我已經使用訓練集和所有功能構建了模型,並且我將它用於測試集上的預測。我正在計算訓練集的MSE和R平方。我在訓練數據上得到高MSE和低R2,並在測試數據上反轉(如下所示)。這是不尋常的嗎?

是的,這是不尋常的。對於您的訓練測試數據,您需要較低的MSE和較高的R2值。 (我會仔細檢查你的計算結果。)如果你的訓練數據很高,MSE和R2很低,這意味着你的訓練很差,這是非常令人驚訝的。另外,我還沒有使用rSquared,但也許你想要rSquared(dTest$y, predict(forest, newdata=dTest))

+0

感謝您的意見。 rSquared是來自庫(miscTools)的模塊。它給出與使用公式相同的結果:1 - sum((dTest $ y - predict(fit,newdata = dTest))^ 2)/ sum((dTest $ y - mean(dTest $ y))^ 2) – Sree

+0

是需要檢查從訓練集中選擇的重要特徵是否也被發現在測試集中很重要? – Sree

+0

是*什麼*要求?不確定你指的是... – CPak

相關問題