[機械学習]機械学習教科書Ch 03-(3)

2452 ワード

学習決定ツリー


decision tree分類器は重要な説明に非常に有用なモデルである.
決定ツリーは、トレーニングデータの特性に基づいてサンプルのカテゴリラベルを推定できる一連の問題を学習する.
決定アルゴリズムは,ツリーのルートからデータを情報利得が最大の特性に分ける.リーフノードが純粋になるまで分割操作を繰り返します.
各ノードのすべてのトレーニングサンプルは同じクラスに属します.通常は、ツリーの最大深さをトリムすることを制限します.
🤣
ツリーアルゴリズムのターゲット関数を最適化するには、各分割で情報利得を最大化します.
バイナリ決定ツリーで広く用いられる3つの不純度指標または分割条件は、キニー不純度、エントロピー、分類誤差である.
😃
決定ツリーは属性空間を矩形メッシュに分割するため、複雑な決定境界を作成できます.決定ツリーが深いほど、決定境界が複雑になり、誇張されやすいことに注意してください.

意思決定ツリーの作成

from sklearn.tree import DecisionTreeClassifier

tree_model = DecisionTreeClassifier(criterion='gini', 
                                    max_depth=4, 
                                    random_state=1)
tree_model.fit(X_train, y_train)

X_combined = np.vstack((X_train, X_test))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined, y_combined, 
                      classifier=tree_model,
                      test_idx=range(105, 150))

plt.xlabel('petal length [cm]')
plt.ylabel('petal width [cm]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('images/03_20.png', dpi=300)
plt.show()

あるいは,Sikit Runが提供する訓練終了の決定木モデル可視化関数plot tree()から見ると
from sklearn import tree

plt.figure(figsize=(10,10))
tree.plot_tree(tree_model)
plt.show()

😄 ランダムツリー接続複数の決定ツリー


ランダム森林は決定木の組合せと考えられる.ランダムforrestの場合、ideaは平均して複数の(深い)決定ツリーを生成します.各ツリーには分散性の問題がありますが、その組合せモデルは堅牢で、汎用性を向上させ、リスクを低減できます.
from sklearn.ensemble import RandomForestClassifier

forest = RandomForestClassifier(criterion='gini',
                                n_estimators=25, 
                                random_state=1,
                                n_jobs=2)
forest.fit(X_train, y_train)

😅 K-最近の隣人(KNN)


指導学習アルゴリズムではknnは典型的な怠惰学習器である.訓練データに判別関数を学習し、訓練データセットをメモリに格納するためである.
😆
親モデル:新しいデータポイント分類関数を学習するために、トレーニングデータセットからモデルパラメータを推定し、トレーニング終了後にデータを学習する必要はありません.
非自己変数モデル:固定個数のパラメータでは記述できず,訓練データが増加するにつれてパラメータ個数も増加する.
機械学習アルゴリズムを母関数非母関数に分ける場合,典型的な母関数モデルはPerceptron,Logistic回帰,線形svmである.非モデルは決定ツリー/ランダムツリーとカーネルsvm+knn
knnは非パラメータモデルに属し,インスタンスベースモデルと呼ばれる.インスタンスベースのモデルの特徴は、トレーニングデータセットをメモリに格納することです.