Decision Trees
Pipelines
複数のモデルを同じ前処理プロセスに接続する方法
from category_encoders import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(
OneHotEncoder(),
SimpleImputer(),
StandardScaler(),
LogisticRegression(n_jobs=-1)
)
pipe.fit(X_train, y_train) # 한번에 모델을 학습시킬 수 있음
pipe.score(X_val, y_val) # 검증세트의 정확도 점수
y_pred = pipe.predict(X_test) # 테스트세트를 통한 예측
けっていじゅモデル
特徴に基づいてサンプルを分類する
ノードノードノードに質問または下部の答えを送信
接続ノードの線をedgeに切り取る
𘅾▼決定ツリーモデルは1つのツリーしか使用しないため、1つのノードで発生するエラーは、下位ノードでも影響を及ぼし続ける特性がある
ツリーモデル学習アルゴリズム
Gini Impurity/Gini Index
IG(p)=∑i=1Jpi(1−pi)=1−∑i=1Jpi2{\displaystyle {I}{G}(p)=\sum _{i=1}^{J}p{i}(1-p_{i})=1-\sum {i=1}^{J}{p{i}}^{2}}IG(p)=i=1∑Jpi(1−pi)=1−∑i=1Jpi2
※不純度:各種カテゴリが混在している程度
ノードが重要であるほど、不一致は小さくなります.
a:bが45:55の試料は80:20の試料より不純度が低い
エントロピー
H(T)=IE(p1,p2,...,pJ)=−∑i=1Jpilog2pi{\displaystyle\mathrm {H} (T)=\operatorname {I} {E}\left(p{1},p_{2},...,p_{J}\right)=-\sum {i=1}^{J}{p{i}\log {2}p{i}}}H(T)=IE(p1,p2,...,pJ)=−∑i=1Jpilog2pi
スーパーパラメータ
▼▼▼▼設定が小さいほど分割ノードが多くなり、過負荷↑
⚠▼深さが深い場合に過負荷↑
※決定木モデルはリニアモデルと異なり、非線形、非単調、特性相互作用の特徴を持つデータの分析が容易
from sklearn.tree import DecisionTreeClassifier
pipe = make_pipeline(
OneHotEncoder(),
SimpleImputer(),
DecisionTreeClassifier(max_depth=5, min_samples_leaf=10, random_state=1)
)
⚠️ 과적합을 방지하기 위해 파라미터 조정을 잘해야한다
Reference
この問題について(Decision Trees), 我々は、より多くの情報をここで見つけました https://velog.io/@ssulee0206/Decision-Treesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol