前提
logical
型の目的変数をrandomForest()
(randomForestパッケージ
の)で予測したい。
regression
では無くclassification
がしたい訳だが、以下の警告がでる。
> nikkei225.rf <- randomForest(is_up~., data=train.rf, mtry = 184) 警告メッセージ: randomForest.default(m, y, ...) で: The response has five or fewer unique values. Are you sure you want to do regression?
「予測結果の値が5種類以下しか無いが、本当にregression
がしたいのか? ( classification
がしたいのでは? )」という意味だと思う。
つまり regression モード
で実行されている。(おそらく)
結論
目的変数がlogical型
になっていると、regression モード
になるっぽい。
目的変数をfactor型
に変換してあげればclassification モード
になる。
例:
> train.rf$is_up <- as.factor(train.rf$is_up) > nikkei225.rf <- randomForest(is_up~., data=train.rf, mtry = 184)
説明
全然勘だけど、Rにおけるlogical型
が数値のような振る舞いをする事に関係しているのではないか。
logical型
が数値のような振る舞いをする例:
> TRUE + TRUE [1] 2 > sum(c(TRUE, TRUE, TRUE)) [1] 3
感想
logical型
というのは、「物事が真であるか偽であるか」を表す型であるべきなのではないだろうか。
真が3つ連続したvector
と整数の3
が等価であるというのは概念的に全然自然では無いと思うけど、まぁ、TRUE/FALSEが1/0のエイリアスである言語すらあるので、そういう世界観なんだろう。