決定木回帰

Machine LearningMachine LearningBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、追加のノイズ付き観測値を持つサインカーブに対して決定木回帰アルゴリズムを使用する方法を学びます。決定木は、サインカーブを近似する局所的な線形回帰を学習するために使用されます。木の最大深さを設定が高すぎる場合、決定木は訓練データの細かすぎる詳細を学習し、ノイズから学習してしまい、つまり過学習してしまうことがわかります。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/tree("Decision Trees") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49323{{"決定木回帰"}} ml/sklearn -.-> lab-49323{{"決定木回帰"}} end

必要なライブラリをインポートする

numpy、matplotlib、およびDecisionTreeRegressorを含む必要なライブラリとモジュールをインポートします。

import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

ランダムなデータセットを作成する

NumPyを使ってランダムなデータセットを作成し、それにいくらかのノイズを加えます。

rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

回帰モデルを適合させる

2つの異なる最大深さ:2と5を持つ回帰モデルを適合させます。

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

予測する

0から5までの値の範囲で予測を行うためにモデルを使用します。

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

結果をプロットする

モデルがデータにどのように適合するかを視覚化するために結果をプロットします。

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

まとめ

この実験では、追加のノイズ付きの観測値を持つサインカーブに対して決定木回帰アルゴリズムをどのように使用するかを学びました。木の最大深さを設定が高すぎる場合、決定木は訓練データの細かすぎる詳細を学び、ノイズから学習してしまい、つまり過学習してしまうことがわかりました。また、モデルがデータにどのように適合するかを視覚化するために結果をプロットする方法も学びました。