5つの独立変数を持つデータセットでOLS回帰モデルを実行しました。独立変数と従属変数は両方とも連続的であり、線形に関連しています。Rスクエアは約99.3%です。しかし、Rでランダムフォレストを使用して同じことを実行すると、結果は「%Var説明:88.42」になります。なぜランダムフォレストの結果は、回帰に比べてそれほど劣るのでしょうか?私の仮定では、ランダムフォレストは少なくともOLS回帰と同じくらい良いだろうということでした。
5つの独立変数を持つデータセットでOLS回帰モデルを実行しました。独立変数と従属変数は両方とも連続的であり、線形に関連しています。Rスクエアは約99.3%です。しかし、Rでランダムフォレストを使用して同じことを実行すると、結果は「%Var説明:88.42」になります。なぜランダムフォレストの結果は、回帰に比べてそれほど劣るのでしょうか?私の仮定では、ランダムフォレストは少なくともOLS回帰と同じくらい良いだろうということでした。
回答:
あなたが何をしたのか正確にはわからないので、あなたのソースコードは私がより少なく推測するのに役立ちます。
多くのランダムフォレストは、基本的には平均がシステムを表すと想定されるウィンドウです。過剰に装飾されたCARツリーです。
2葉のCARツリーがあるとしましょう。データは2つの山に分割されます。各パイルの(一定の)出力はその平均になります。
ここで、データのランダムなサブセットで1000回実行してみましょう。平均値である出力を持つ不連続な領域がまだあります。RFの勝者が最も頻繁に結果になります。カテゴリ間の境界を「ファジー」にするだけです。
CARTツリーの区分的線形出力の例:
たとえば、関数がy = 0.5 * x + 2であるとしましょう。そのプロットは次のようになります。
2つのリーフのみを持つ単一の分類ツリーを使用してこれをモデル化する場合、最初に最適な分割ポイントを見つけ、そのポイントで分割し、次に各リーフでの関数出力をリーフ全体の平均出力として近似します。
CARTツリーのリーフを増やしてこれを再度行うと、次のようになります。
なぜCARフォレストなのか?
無限の葉の制限では、CARTツリーが許容可能な近似値になることがわかります。
問題は、実世界がうるさいということです。私たちは手段で考えるのが好きですが、世界は中心傾向(平均)と変動傾向(std dev)の両方が好きです。ノイズがあります。
CARツリーに大きな強さ、不連続性を処理する能力を与えるのと同じことが、ノイズが信号であるかのようにモデリングノイズに対して脆弱になります。
そのため、Leo Breimannはシンプルだが強力な命題を作成しました。Ensembleメソッドを使用して、分類木と回帰木を堅牢にします。彼はランダムなサブセット(ブートストラップのリサンプリングの従兄弟)を取得し、それらを使用してCARツリーのフォレストをトレーニングします。森の質問をすると、森全体が話し、最も一般的な答えが出力として取得されます。数値データを処理している場合は、期待値を出力として見ると便利です。
したがって、2番目のプロットでは、ランダムフォレストを使用したモデリングについて考えます。各ツリーには、データのランダムなサブセットがあります。つまり、「最適な」分割ポイントの場所はツリーごとに異なります。不連続フォレストに近づいたときにランダムフォレストの出力のプロットを作成する場合、最初のいくつかの分岐はジャンプを示し、その後多くの分岐が示されます。その領域の平均値は、滑らかなシグモイドパスを通過します。ブートストラップはガウスと畳み込みであり、そのステップ関数のガウスぼかしはシグモイドになります。
ボトムライン:
非常に線形な関数を適切に近似するには、ツリーごとに多くの分岐が必要です。
答えに影響を与えるために変更できる「ダイアル」は数多くあり、それらをすべて適切な値に設定した可能性は低いです。
参照:
これは古い質問であることに気づきましたが、さらに追加する必要があると思います。@Manoel Galdinoがコメントで述べたように、通常は目に見えないデータの予測に興味があります。しかし、この質問はトレーニングデータのパフォーマンスに関するものであり、問題はランダムフォレストがトレーニングデータのパフォーマンスを低下させる理由です。答えは、しばしば私に問題を引き起こしたバギングされた分類器に関する興味深い問題を強調しています:平均への回帰
問題は、データセットからブートストラップサンプルを取得することで作成されるランダムフォレストのようなバギングされた分類器が、極端にパフォーマンスが低下する傾向があることです。極端なデータはそれほど多くないため、平滑化される傾向があります。
より詳細には、回帰のランダムフォレストが多数の分類子の予測を平均化することを思い出してください。他から遠く離れた単一のポイントがある場合、分類器の多くはそれを認識せず、これらは本質的にサンプル外の予測を行いますが、これはあまり良くないかもしれません。実際、これらのサンプル外の予測は、データポイントの予測を全体の平均に引き寄せる傾向があります。
単一の決定木を使用する場合、極端な値で同じ問題は発生しませんが、近似回帰も非常に線形ではありません。
Rの図を次に示しますy
。5つのx
変数の完全なライナーの組み合わせであるデータが生成されます。次に、線形モデルとランダムフォレストを使用して予測が行われます。次に、y
トレーニングデータの値が予測に対してプロットされます。値が非常に大きいまたは非常に小さいデータポイントy
はまれであるため、ランダムフォレストが極端に悪い結果を出していることがはっきりとわかります。
ランダムフォレストが回帰に使用されている場合、非表示データの予測に同じパターンが表示されます。私はそれを避ける方法がわかりません。randomForest
R の関数には、バイアスにcorr.bias
線形回帰を使用する粗いバイアス補正オプションがありますが、実際には機能しません。
提案を歓迎します!
beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")
ランダムフォレストは、多数のフィーチャと多数のデータポイントからローカリティを見つけようとします。特徴が少ないため、全体的な結果はロジスティック回帰ほど良くないので、特徴を分割して異なるツリーに与えます。ランダムフォレストは数値変数とカテゴリ変数を処理できますが、欠損値の処理は得意ではありません。
基本的には、回帰は連続変数に対して良好に機能し、ランダム変数は離散変数に対して良好に機能します。
より具体的にするには、問題と変数の性質に関する詳細を提供する必要があります...