ランダムフォレスト分類子:概要、仕組み、長所と短所
公開: 2021-06-18Netflixがあなたに推薦する映画をどのように選ぶのか疑問に思ったことはありませんか? または、Amazonがフィードに表示する商品をどのように選択するのでしょうか。
それらはすべて、ランダムフォレスト分類器を利用する技術であるレコメンデーションシステムを使用しています。
ランダムフォレスト分類器は、最も一般的な分類アルゴリズムの1つです。 今日は、この堅牢な機械学習アルゴリズムについて学び、それがどのように機能するかを見ていきます。 また、実際の問題でランダムフォレスト分類子を使用する方法についてのステップバイステップのチュートリアルを共有するため、その実装についても学習します。
以下のポイントで、ランダムフォレストsklearnの長所と短所などについて説明します。
目次
ランダムフォレスト分類子:はじめに
ランダムフォレスト分類器は、回帰および分類の問題に使用できる教師あり学習アルゴリズムです。 柔軟性が高く、実装が簡単なため、最も人気のある機械学習アルゴリズムの1つです。
ランダムフォレスト分類子がランダムフォレストと呼ばれるのはなぜですか?
これは、森に多くの木があるのと同じように、複数の決定木で構成されているためです。 その上、ランダム性を使用して精度を高め、過剰適合と戦うことができます。これは、このような高度なアルゴリズムにとって大きな問題になる可能性があります。 これらのアルゴリズムは、データサンプルのランダムな選択に基づいて決定木を作成し、すべてのツリーから予測を取得します。 その後、彼らは投票を通じて最良の実行可能な解決策を選択します。
機能セレクター、レコメンダーシステム、画像分類器など、私たちの日常生活に数多くのアプリケーションがあります。 その実際のアプリケーションには、不正の検出、ローンアプリケーションの分類、および病気の予測が含まれます。 これは、データセット内の重要な機能を選択するBorutaアルゴリズムの基礎を形成します。
それはどのように機能しますか?
データセットに「m」個の特徴があると仮定すると、ランダムフォレストはk<mである「k」個の特徴をランダムに選択します。 ここで、アルゴリズムは、情報ゲインが最も高いノードを選択することにより、k個の特徴の中からルートノードを計算します。
その後、アルゴリズムはノードを子ノードに分割し、このプロセスを「n」回繰り返します。 これで、n本の木がある森ができました。 最後に、ブートストラップを実行します。つまり、フォレストに存在するすべての決定木の結果を結合します。
決定木の機能に基づいて構築されているため、これは確かに最も洗練されたアルゴリズムの1つです。
技術的には、これはアンサンブルアルゴリズムです。 アルゴリズムは、属性選択表示を通じて個々の決定木を生成します。 すべてのツリーは、独立したランダムサンプルに依存しています。 分類問題では、すべてのツリーが投票し、最も人気のあるクラスが最終結果になります。 一方、回帰問題では、すべてのツリー出力の平均を計算し、それが最終結果になります。
ランダムフォレストPythonの実装は、分類問題に使用される他の非線形アルゴリズムよりもはるかに単純で堅牢です。
次の例は、日常生活でランダムフォレスト分類子をどのように使用するかを理解するのに役立ちます。
例
新しい車を購入したいと思っていて、親友のSupratikに彼の推薦を聞いたとします。 彼はあなたの好み、あなたの予算、そしてあなたの要件についてあなたに尋ね、そしてあなたに彼の過去の経験を彼の車と共有してあなたに推薦を与えるでしょう。
ここで、Supratikはディシジョンツリーメソッドを使用して、応答に基づいてフィードバックを提供しています。 彼の提案の後、あなたは彼のアドバイスについて危険を感じるので、あなたは彼の推奨についてアディティアに尋ね、彼はあなたの好みや他の要件についてもあなたに尋ねます。
このプロセスを繰り返し、「n」人の友達にこの質問をするとします。 これで、いくつかの車から選択できます。 あなたは友達からすべての票を集め、最も票数の多い車を購入することにしました。 これで、ランダムフォレスト方式を使用して、購入する車を選択しました。
ただし、このプロセスを繰り返すほど、過剰適合しやすくなります。 これは、デシジョンツリーのデータセットがより具体的になるためです。 ランダムフォレストは、ランダム性を使用してこの問題に対処します。
ランダムフォレスト分類子の長所と短所
すべての機械学習アルゴリズムには、長所と短所があります。 ランダムフォレスト分類アルゴリズムの長所と短所は次のとおりです。
利点
- ランダムフォレストアルゴリズムは、ほとんどの非線形分類器よりもはるかに正確です。
- このアルゴリズムは、複数の決定木を使用して結果に到達するため、非常に堅牢です。
- ランダムフォレスト分類器は、すべての予測の平均を取り、バイアスをキャンセルして過剰適合の問題を修正するため、過剰適合の問題に直面しません。
- このアルゴリズムは、回帰問題と分類問題の両方に使用できるため、非常に用途の広いアルゴリズムになります。
- ランダムフォレストでは、欠落した値が問題を引き起こすことはありません。 中央値を使用して連続変数を置き換えるか、欠落している値の近接加重平均を計算してこの問題を解決できます。
- このアルゴリズムは、分類器に最も貢献する特徴を簡単に選択できるようにする相対的な特徴の重要性を提供します。
短所
- このアルゴリズムは、複数の決定木を使用して予測を行うため、他の分類アルゴリズムよりも大幅に低速です。 ランダムフォレスト分類子が予測を行う場合、フォレスト内のすべてのツリーは、同じ入力に対して予測を行い、同じものに投票する必要があります。 このプロセスには非常に時間がかかる場合があります。
- ペースが遅いため、ランダムフォレスト分類子はリアルタイムの予測には適さない場合があります。
- ツリーのパスをたどって選択できるため、モデルは決定木と比較して解釈が非常に難しい場合があります。 ただし、ランダムフォレストには複数の決定木があるため、これは不可能です。
ランダムフォレストとディシジョンツリーの違い
デシジョンツリーは、その名前が示すように、ブランチとノードを持つツリーのようなフローチャートです。 アルゴリズムは、すべてのノードで入力フィーチャに基づいてデータを分割し、出力として複数のブランチを生成します。 これは反復プロセスであり、作成されるブランチ(出力)の数とデータの差別化を増やします。 このプロセスは、ほとんどすべてのデータが同じクラスに属し、それ以上の分岐または分割が不可能なノードが作成されるまで繰り返されます。
一方、ランダムフォレストは複数の決定木を使用するため、「フォレスト」という名前が付けられています。 必要な予測を行うために使用したさまざまな決定木から投票を収集します。
したがって、ランダムフォレスト分類子と決定木の主な違いは、前者が後者のコレクションを使用することです。 2つの間のいくつかの追加の違いは次のとおりです。
- 決定木は過剰適合の問題に直面しますが、ランダムフォレストはそうではありません。 これは、ランダムフォレスト分類子がこの問題に対処するためにランダムサブセットを使用するためです。
- 決定木はランダムフォレストよりも高速です。 ランダムフォレストは複数の決定木を使用しますが、これには多くの計算能力が必要であり、したがってより多くの時間がかかります。
- 決定木はランダムフォレストよりも解釈が簡単で、ルールに従って前者を簡単に変換できますが、後者で同じことを行うのはかなり困難です。
アルゴリズムの構築(ランダムフォレストSklearn)
次の例では、scikit-learnライブラリを使用してランダムフォレストPythonの実装を実行しました。 このチュートリアルの手順に従って、独自のランダムフォレスト分類子を作成できます。
データサイエンスタスクの80%では、データの最適化が必要です。これには、データのクリーニング、クレンジング、欠落値の修正などが含まれます。 ただし、この例では、アルゴリズムの実装のみに焦点を当てます。
最初のステップ:ライブラリをインポートし、データセットをロードします
まず、必要なライブラリをインポートして、データセットをデータフレームにロードする必要があります。
入力:
#必要なライブラリのインポート
パンダをpdとしてインポートします
numpyをnpとしてインポートします
matplotlib.pyplotをpltとしてインポートします
#データセットのインポート
sklearn.datasetsからload_irisをインポートします
データセット=load_iris()
2番目のステップ:データセットをトレーニングセットとテストセットに分割します
必要なライブラリをインポートしてデータを読み込んだ後、データセットをトレーニングセットとテストセットに分割する必要があります。 トレーニングセットはモデルのトレーニングに役立ち、テストセットはモデルが実際にどれだけ正確であるかを判断するのに役立ちます。
入力:
#分類器をトレーニングセットに適合させる
sklearn.treeからインポートDecisionTreeClassifier
model = DecisionTreeClassifier(criterion ='エントロピー'、スプリッター='ベスト'、random_state = 0)
model.fit(X_train、y_train)
出力:
DecisionTreeClassifier(class_weight = None、criteria ='エントロピー'、max_depth = None、
max_features = None、max_leaf_nodes = None、
min_impurity_decrease = 0.0、min_impurity_split = None、
min_samples_leaf = 1、min_samples_split = 2、
min_weight_fraction_leaf = 0.0、presort = False、random_state = 0、
スプリッター='最高')
3番目のステップ:ランダムフォレスト分類子を作成する
次に、Pythonとscikit-learnを使用してランダムフォレスト分類子を作成します。
入力:
#分類器をトレーニングセットに適合させる
sklearn.ensembleからインポートRandomForestClassifier
model = RandomForestClassifier(n_estimators = 100、criteria-'entropy'、random_state = 0)
model.fit(X_train、y_train)
出力:
RandomForestClassifier(bootstrap = True、class_weight = None、criteria ='entropy'、
max_depth = None、max_features ='auto'、max_leaf_nodes = None、
min_impurity_decrease = 0.0、min_impurity_split = None、
min_samples_leaf = 1、min_sampes_split = 2、
min_weight_fraction_leaf = 0.0、n_estimators = 100、n_jobs = None、
oob_score = False、random_state = 0、verbose = 0、warm_start = False)
4番目のステップ:結果を予測して混同行列を作成します
分類器を作成したら、それをテストセットで使用して結果を予測し、混同行列を作成して、モデルの精度スコアを取得できます。 スコアが高いほど、モデルはより正確になります。
入力:
#テストセットの結果を予測する
y_pred = mode.predict(X_test)
#混同行列を作成する
sklearn.metricsからimportconfusion_matrix
cm = confusion_matrix(y_test、y_pred)
CM
出力:
配列([[16、0、0]
[0、17、1]
[0、0、11]])
入力:
#モデルのスコアを取得する
model.score(X_test、y_test)
出力:
0.977777777777777
結論
ランダムフォレスト分類器には多くの用途があります。 これらは最も堅牢な機械学習アルゴリズムの1つであり、AIおよびMLの専門家には必須です。
人工知能について詳しく知りたい場合は、機械学習とAIのIIIT-BとupGradのエグゼクティブPGプログラムをご覧ください。これは、働く専門家向けに設計されており、450時間以上の厳格なトレーニング、30以上のケーススタディと課題、IIITを提供します。 -B卒業生のステータス、5つ以上の実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。
機械学習におけるランダムフォレストとは何ですか?
ランダムフォレストは、他のほとんどの機械学習アルゴリズムよりも正確な予測を行うことができるアンサンブル学習方法です。 これは、決定木学習で一般的に使用されます。 フォレストは決定木を使用して作成され、各決定木はそれ自体が強力な分類子です。 これらの決定木は、強力な分類子のフォレストを作成するために使用されます。 この強力な分類子のフォレストは、決定木や他の機械学習アルゴリズムよりも優れた予測を提供します。
ランダムフォレストと決定木の違いは何ですか?
デシジョンツリーは、特定の問題の分析プロセスを説明するフローチャートです。 私たちは分類問題のためにそれらを最も頻繁に使用する傾向があります。 決定木は、分類を行うために必要な除去のプロセスを記述します。 デシジョンツリーとは対照的に、ランダムフォレストはツリーのアンサンブルに基づいており、多くの研究により、一般的なデシジョンツリーよりも強力であることが示されています。 さらに、ランダムフォレストは過剰適合に対してより耐性があり、データが欠落している場合はより安定します。
ランダムフォレストの欠点は何ですか?
ランダムフォレストは少し複雑なモデルです。 これはブラックボックスモデルではなく、結果を解釈するのは簡単ではありません。 他の機械学習モデルよりも低速です。 精度を上げるには、多数の機能が必要です。 ランダムフォレストは、バギング、ブースティング、スタッキングなどの他のアンサンブル手法と同様に、一種のアンサンブル学習手法です。 これらの方法は不安定になる傾向があります。つまり、トレーニングデータがわずかに変化すると、最終的なモデルが大幅に変化する可能性があります。