線形回帰は線形モデルです。つまり、データが線形の形状をしている場合にうまく機能します。ただし、データの形状が非線形の場合、線形モデルは非線形の特徴をキャプチャできません。
したがって、この場合は、決定木を使用できます。これは、質問に応じてスペースを小さなサブスペースに分割することで、データの非線形性をキャプチャするのに適しています。
あなたが非常に優柔不断だとすると、映画を見たいときはいつでも、友人ウィローに、あなたがそれを気に入ってくれると思っているかどうか尋ねます。答えるために、ウィローは最初にあなたが好きな映画を見つける必要があるので、あなたは彼女にたくさんの映画を与えて、あなたがそれぞれが好きかどうかを彼女に伝えます(すなわち、あなたは彼女にラベル付けされたトレーニングセットを与えます)。次に、映画Xが好きかどうかを彼女に尋ねると、彼女はIMDBで20問のようなゲームをし、「Xはロマンチックな映画ですか?」、「Xにはジョニー・デップがスターですか?」などの質問をします。 、 等々。彼女はまず、より有益な質問をし(つまり、各質問の情報を最大限に活用します)、最後に「はい/いいえ」の答えを出します。
したがって、ウィローはあなたの映画の好みの決定木です。
しかし、ウィローは人間に過ぎないので、常にあなたの好みを非常にうまく一般化しているわけではありません(つまり、彼女はオーバーフィットしています)。より正確な推奨事項を取得するには、たくさんの友達に聞いて、彼らのほとんどがあなたが気に入ってくれると彼らが言った場合は映画Xを視聴したいと思います。つまり、Willowだけに質問するのではなく、Woody、Apple、およびCartmanにも質問して、彼らが映画が好きかどうか(つまり、アンサンブル分類子(この場合は森)を構築するかどうか)に投票したいとします。
これで、各友人に同じことをさせて同じ答えを与えたくないので、最初に少しずつ異なるデータをそれぞれに与えます。結局のところ、自分で自分の好みを完全に確信しているわけではありません。タイタニックが大好きだとウィローに言ったのですが、誕生日だったのでその日だけ幸せだったかもしれません。彼らの推薦をすることでタイタニックが好きだった。あるいは、シンデレラが大好きだと彼女に言ったかもしれませんが、実際にはは本当にそれを愛したので、あなたの友人の何人かはシンデレラにもっと重みを与えるべきです。そのため、Willowと同じデータを友達に提供する代わりに、少し混乱したバージョンを友達に提供します。好き/嫌いの決定は変更せず、映画を少し好き/嫌いだと言うだけです(友達のそれぞれに、元のトレーニングデータのブートストラップバージョンを与えます)。たとえば、ブラックスワンとハリーポッターが好きでアバターが嫌いだとウィローに言ったのに対し、ウッディはブラックスワンが2回見たのが好きだし、アバターが嫌いだと言って、ハリーポッターについてはまったく触れていません。
このアンサンブルを使用することにより、友達のそれぞれが多少特異な推奨事項を提供する一方で、Willowはあなたよりも吸血鬼映画が好きだと思っており、WoodyはPixar映画が好きだと思っており、Cartmanはすべてを嫌いだと思っています)、エラーはキャンセルされます大多数で。したがって、あなたの友達はあなたの映画の好みのバギングされた(ブートストラップ集約)フォレストを形成します。
ただし、データにはまだ1つの問題があります。あなたはタイタニックとインセプションの両方を愛していましたが、それはあなたがレオナルド・ディカプリオを主演する映画が好きだからではありませんでした。多分あなたは他の理由で両方の映画が好きだった。したがって、レオが映画に出演しているかどうかに基づいて友達にすべての推奨事項を提示してほしくない。したがって、各友達がIMDBに質問をするとき、可能な質問のランダムなサブセットのみが許可されます(つまり、意思決定ツリーを構築しているとき、各ノードで、ランダムに選択するなどして、分割する属性を選択する際にランダム性を使用します属性、またはランダムなサブセットから属性を選択する)。つまり、友達がいつでも映画に出演するかどうかを尋ねることはできません。したがって、以前はデータレベルでランダム性を注入したのに対し、
これで、友達がランダムフォレストを形成します。