概要
ランダムフォレスト(Random Forest)は、機械学習の分野で広く使用されるアンサンブル学習の手法の一つです。ランダムフォレストは、複数の決定木(Decision Tree)モデルを組み合わせて、より強力な予測モデルを構築します。
ランダムフォレストは、以下のような特徴を持っています:
- アンサンブル学習:ランダムフォレストは、複数の決定木モデルを組み合わせて予測を行います。それぞれの決定木は独立にトレーニングされ、最終的な予測は個々の決定木の結果の平均や多数決などで決定されます。
- ブートストラップサンプリング:ランダムフォレストでは、トレーニングデータからランダムにサンプリングを行い、各決定木のトレーニングデータを作成します。この過程をブートストラップサンプリングと呼びます。これにより、異なるトレーニングデータを使用して複数の決定木を作成し、バリエーションを持たせることができます。
- 特徴量のランダム性:各決定木の分割(特徴量の選択と閾値の決定)において、ランダムに一部の特徴量のみを考慮します。これにより、個々の決定木が特定の特徴量に偏ることを防ぎ、さまざまな特徴量を考慮したモデルを構築することができます。
- アンサンブル効果:複数の決定木を組み合わせることで、個々の決定木の欠点を相殺し、より強力な予測モデルを作成します。ランダムフォレストは、過学習への耐性が高く、一般的に良好な予測性能を示します。
ランダムフォレストは、分類(クラス分類)や回帰(数値予測)のタスクに使用されます。また、特徴量の重要度の評価や外れ値の検出にも活用されることがあります。
コード例
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# データの読み込み
iris = datasets.load_iris()
X = iris.data
y = iris.target
# データをトレーニングセットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ランダムフォレストモデルの作成
model = RandomForestClassifier(n_estimators=100, random_state=42)
# モデルのトレーニング
model.fit(X_train, y_train)
# テストデータの予測
y_pred = model.predict(X_test)
# 結果の評価
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
上記のコードでは、Irisデータセットを使用して、3つのクラス(Setosa、Versicolor、Virginica)の分類を行っています。データをトレーニングセットとテストセットに分割し、ランダムフォレストモデルを作成してトレーニングします。最後に、テストデータで予測を行い、結果を評価しています。
RandomForestClassifier
は、scikit-learnのクラスであり、ランダムフォレストモデルを構築するために使用されます。n_estimators
パラメータは、作成する決定木の数を指定します。この例では100本の決定木を使用しています。
結果として得られるaccuracy
は、テストデータに対する正確さ(精度)を示します。