機械学習,scikit-learn,kaggle

アンサンブル学習

突然kaggleにはまったので、はやりの手法をメモ。とりあえず特徴量抽出(t-SNEとか)とアンサンブル学習(stacking,bugging,boosting)を頑張ればいいっぽい。アンサンブル学習とは複数のモデルを組み合わせて多数決なり平均をとるなりで予測を返す手法。buggingは並列、boostingは直列、stackingは両方なイメージ。

buggingのscikit-learnによる実装

bugging.py
from sklearn.ensemble import BaggingClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

bagging = BaggingClassifier(KNeighborsClassifier(),max_samples=0.5,max_features=0.5,n_estimators=12)

cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
    cancer.data, cancer.target, stratify = cancer.target, random_state=36)

clf = bagging
clf.fit(X_train,y_train)
print('train: ',clf.score(X_train,y_train))
print('test: ',clf.score(X_test,y_test))

簡単に言うと、データと特徴量を復元抽出して複数のモデルを訓練し、それらのモデルを集約して予測を返している。モデルの種類、抽出するデータの割合、抽出する特徴量の割合、作成するモデルの数を指定できる。

参考

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html