DAY27
12906 ワード
ランダムツリー
ランダムツリーモデルは、複数の決定ツリーを「並列」として学習することによって、各結果値(多数に分類され、平均に回帰)を統計し、最終予測値を返します.
画像ソース
コンビネーションメソッド
1つのデータを使用して複数のマシン学習モデル(弱いベース学習者、基本モデル)を作成し、これらのモデルの予測結果を多数または平均値で予測する方法.
ランダム森林の基本モデルを作成するにはどうすればいいですか?
の組合せで使用される小さなモデルは、Bootstrappingというサンプリングプロセスによって得られるBootstrappingセットを用いて学習される.
-抽出されていないサンプルはOut-Of-bafサンプル=test sets
n−1n\displaystyle\frac {n-1}{n}nn−1
n回の回復抽出を行う場合、そのサンプルが抽出されない確率
(n−1n)n\displaystyle\left({\frac {n-1}{n}}\right)^{n}(nn−1)n
n無限大時
limn→∞(1−1n)n=e−1=0.368\displaystyle\lim _{{n\to\infty }}\left({1 -\frac {1}{n}}\right)^{n} = e^{-1} = 0.368n→∞lim(1−n1)n=e−1=0.368
ランダムツリーは、ベースモデルツリーを作成するときにランダムに選択したプロパティセットを使用します.
画像ソース1
画像ソース2
基本モデル(弱い学習者、小さなモデルたち)はどのように組み合わせていますか?
ガイドバーセットによって作成された基本モデルをマージするプロセスを集約と呼びます.
パイプラインへのランダムエンベロープ
from category_encoders import OneHotEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(
OneHotEncoder(use_cat_names=True),
SimpleImputer(),
RandomForestClassifier(n_jobs=-1, random_state=10, oob_score=True)
)
pipe.fit(X_train, y_train)
print('검증 정확도: ', pipe.score(X_val, y_val))
OOB精度pipe.named_steps['randomforestclassifier'].oob_score_
oob score vs validation set score
正式な書類
ソース
ツリーコンビネーションモデルが決定ツリーモデルよりも適しているのはなぜですか?(2種)
決定ツリーは、特定のデータと一致する傾向があります.
異なるサンプリングデータを用いて過剰なツリーを作成し,平均範囲で結果を用いたモデルはランダムツリーであり,パフォーマンスを低減し維持できることを知った.
bootstrap = true
)、各基本ツリーで使用するデータ各ツリーは、ブランチを実行するためにランダムに選択された特性を有する(
max_features = auto
).シーヶンスコーディング
シーケンスエンコーディング数値をカテゴリにマッピング
例)[a,b,cの3つのカテゴリがある場合は->[1,2,3]として符号化する.
正式な書類
一次熱符号化vsシーケンス符号化
ツリー構造では、重要なプロパティが最初に親ノードで分割されます.
したがって,カテゴリタイプマルチ(高基数)の特性は,1つの熱符号化により親ノード上で選択される機会が少ない.
数値特性は元の熱符号化の影響を受けず、親ノードを占有する機会が増加し、全体的なパフォーマンスが低下します.
パン、ご飯=>パン-1、ご飯-2
比較基準森林属性の重要性(onehot vs ordinal)
# 특성 중요도(onehot)
rf = pipe.named_steps['randomforestclassifier']
colnames = pipe.named_steps['onehotencoder'].get_feature_names()
importances = pd.Series(rf.feature_importances_, colnames)
# 특성 중요도(ordinal)
rf_ord = pipe_ord.named_steps['randomforestclassifier']
importances_ord = pd.Series(rf_ord.feature_importances_, X_train.columns)
結果N223
GridSearchCV()
from sklearn.model_selection import GridSearchCV
params = { 'n_estimators' : [10, 100],
'max_depth' : [6, 8, 10, 12],
'min_samples_leaf' : [8, 12, 18],
'min_samples_split' : [8, 16, 20]
}
# RandomForestClassifier 객체 생성 후 GridSearchCV 수행
pipe = RandomForestClassifier(random_state = 10, n_jobs = -1, oob_score=True)
grid_cv = GridSearchCV(pipe, param_grid = params, cv = 3, n_jobs = -1)
grid_cv.fit(X_train_imputed, y_train)
print('최적 하이퍼 파라미터: ', grid_cv.best_params_)
print('최고 예측 정확도: {:.4f}'.format(grid_cv.best_score_))
ソース Count Encoding
ソース
Reference
この問題について(DAY27), 我々は、より多くの情報をここで見つけました https://velog.io/@ayi4067/DAY27テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol