【機械学習】ランダムフォレスト(RF)について簡単に解説!Pythonで使ってみよう

こんにちは!

皆さんは、ランダムフォレスト(RF)という機械学習アルゴリズムをご存知ですか?

Python初心者
森みたいな名前だね!

ランダムフォレストは、決定木(Decision Tree)を複数作成してそれらを組み合わせることで、高い精度での予測が可能な機械学習手法の一つです。

特に、分類(Classification)や回帰(Regression)問題において、良い結果を出すことができることで知られています。

今回の記事では、Pythonを用いたランダムフォレストの基礎的な使い方について、以下の内容をご紹介します。

  • ランダムフォレストについて
  • Python でのランダムフォレストの使い方

ランダムフォレストとは

ランダムフォレストは、複数の決定木を組み合わせたアンサンブル学習法の一つです。

Python初心者
木が沢山あるからフォレストなんだね!
それではまず、決定木について簡単に見てみましょう。

決定木とは

決定木とは、ある入力データに対して、一連の質問を行い、その回答に基づいてクラス分類や回帰を行う機械学習アルゴリズムです。決定木は直感的で解釈がしやすく、説明変数の重要度も可視化することができるため、機械学習において広く使われています。

決定木の詳細については後ほど、記事を公開する予定です。

ランダムフォレストの概要

ランダムフォレストは、複数の決定木を独立に作成し、それらの結果を多数決や平均化することで、高い精度での予測が可能な機械学習アルゴリズムです。

Python初心者
決定木の予測結果を沢山合わせたのがランダムフォレストになるんだね!

これにより、ランダムフォレストは、高次元かつ複雑なデータに対しても堅牢性が高く、過学習を回避しつつ高い汎化性能を発揮することができます。

ランダムフォレストの概要図

Pythonでランダムフォレストを使ってみる

では早速、Pythonでランダムフォレストを使ってみましょう。

ライブラリのインポート

Pythonでランダムフォレスト使うには、scikit-learnライブラリが必要です。

scikit-learnのインストールがまだの方は以下の記事を参考にインストールしておきましょう。

・scikit-learnのインストール方法

Pythonでランダムフォレストを実行するには、scikit-learnのensembleモジュールからRandomForestClassifierクラスをインポートする必要があります。以下のように、必要なライブラリをインポートします。

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

データの読み込み

ランダムフォレストを使う前に、データを読み込みます。今回は、Irisデータセットを使用します。

from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target

データの前処理

ランダムフォレストを実行する前に、データを分割する必要があります。

ここでは、データをトレーニングセットとテストセットに分割します。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

rf = RandomForestClassifier(n_estimators=10)
rf.fit(X_train, y_train)

y_pred = rf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

モデルの構築

次に、ランダムフォレストのモデルを構築します。

ここでは、ツリーの数を10とし、その他のパラメータはデフォルトの値を使用します。

n_estimators=10とすることで、決定木を10個作成し、その結果を統合することで予測を行います。

rf = RandomForestClassifier(n_estimators=10)
rf.fit(X_train, y_train)

モデルの評価

モデルを構築したら、その性能を評価する必要があります。ここでは、テストセットを使用してモデルの精度を計算します。

y_pred = rf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

#Accuracy: 1.0
Python初心者
Accuracyが1.0ということは、完璧に予測が行えたんだね!

まとめ

今回の記事では、以下の内容について紹介しました。

  • ランダムフォレストについて
    →複数の決定木を独立に作成することで、高い精度での予測が可能な機械学習アルゴリズム
  • Pythonでランダムフォレストを使ってみた
    →簡単に高性能な分類ができた!

ランダムフォレストは、決定木のアンサンブル学習モデルであり、非常に高い精度で予測を行うことができます。

Python初心者
使い方も簡単だったね!

非常に使い方も簡単で、高性能な機械学習モデルを作成することができるので、ぜひ皆さんも試してみてはどうでしょうか?

広告