randomForestと変数の重要性のバグ?


10

MeanDecreaseAccuracy列のrfobject$importanceとの違いがimportance(rfobject)わかりません。

例:

> data("iris")
> fit <- randomForest(Species~., data=iris, importance=TRUE)
> fit$importance
                  setosa  versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.027078501 0.019418330 0.040497602           0.02898837         9.173648
Sepal.Width  0.008553449 0.001962036 0.006951771           0.00575489         2.472105
Petal.Length 0.313303381 0.291818815 0.280981959           0.29216790        41.284869
Petal.Width  0.349686983 0.318527008 0.270975757           0.31054451        46.323415
> importance(fit)
               setosa versicolor virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 1.277324   1.632586  1.758101            1.2233029         9.173648
Sepal.Width  1.007943   0.252736  1.014141            0.6293145         2.472105
Petal.Length 3.685513   4.434083  4.133621            2.5139980        41.284869
Petal.Width  3.896375   4.421567  4.385642            2.5371353        46.323415
> 

MeanDecreaseAccuracyの値は異なりますが、重要度変数(と同様)の順序は同じfit$importanceですimportance(fit)

  1. 花びらの幅

  2. 花びらの長さ

  3. Sepal.Length

  4. Sepal.Width

しかし、他のデータセットでは、ときどき異なる注文を取得します。誰かがここで何が起こっているのか説明できますか?これはおそらくバグですか?


編集Martin O'Learyへの対応)

ありがとうございます!他のことに気づきました。

rfcv()関数を見て、次の行に気づきました:

impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]

この行では、最初の列を選択します。その最初の列は、精度の平均減少のみとして計算されall.rf$importanceたクラス固有の(最初の因数)メジャーの順序を示します。これは、すべてのクラスでの平均精度の低下と常に同じ順序であるとは限りません(MeanDecreaseAccuracy)。MeanDecreaseAccuracyまたはMeanDecreaseGini列のいずれかを選択するかimportance()、スケーリングされた値に-functionを使用する方が良いのではないでしょうか。したがって、変数の重要度(すべてのクラス)でランク付けされ、最初のクラスの変数の重要度だけでランク付けされるのではなく、連続して減少する数の予測子があります。

回答:


13

いいえ、これはバグではありません。で与えられた値fit$importanceはスケーリングされていimportance(fit)ませんが、で与えられた値は標準偏差(で与えられたものfit$importanceSD)で表されています。これは通常、より意味のある測定です。「生の」値が必要な場合は、を使用できますimportance(fit, scale=FALSE)

一般に、抽出関数が提供されている場合、フィットオブジェクトの内部の詳細に依存することは非常に悪い考えです。の内容については保証はありませんfit$importance-予告なしにバージョン間で大幅に変更される可能性があります。提供されている場合は、常に抽出機能を使用する必要があります。


編集:はい、その行はrfcv()バグのように見えます、または少なくとも意図しない動作です。これは、のようなものの内容に依存すべきではない理由の実に良い例ですfit$importance。近似が回帰フォレストの場合、の最初の列はでfit$importanceあり%IncMSE、と同等importance(fit, type=1)です。ただし、これは、各因子レベルに追加の列がある分類の場合には当てはまりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.