1. ホーム
  2. r

Rでランダムフォレストを欠損値で使用するには?

2023-10-27 16:13:03

質問

library(randomForest)
rf.model <- randomForest(WIN ~ ., data = learn)

ランダムフォレストモデルを当てはめたいのですが、こんなエラーが出ます。

Error in na.fail.default(list(WIN = c(2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L,  : 
missing values in object

16個の数値属性からなるデータフレームlearnがあり、WINはレベル0 1の因子である。

どのように解決するのですか?

この質問に対する私の最初の反応は、ランダムフォレストが予測変数の欠損値を扱えないことを誰もが知っているので、あまり研究努力を示していない、というものでした。しかし、確認したところ ?randomForest を確認したところ、これについてはもっと明示的であるべきだということを告白しなければなりません。

(とはいえ、Breimanの PDF でリンクされている Breiman のドキュメントでは、欠損値は単にまったく処理されないと明示されています)。

私が見ることができた公式ドキュメントの唯一の明白な手がかりは、デフォルト値が na.action パラメータのデフォルト値が na.fail であり、新しいユーザーにとってはあまりに不可解かもしれません。

いずれにせよ、予測変数が欠損値を持つ場合、(基本的に)2つの選択肢があります。

  1. 別のツールを使用する ( rpart は欠損値をうまく処理します)。
  2. 欠損値をインプットする

驚くことではありませんが randomForest パッケージには、ちょうどこれを行うための関数があります。 rfImpute . のドキュメントでは ?rfImpute で、その基本的な使用例を見ることができます。

欠損値を持つケースが少数である場合、このような場合にも na.action = na.omit を設定して、それらのケースを単純に削除することもできます。

そしてもちろん、この回答は、あなたの問題が本当に単に欠損値を持っていることであるということを少し推測しています。