Python Machine Laerning Models
Machine Learning の基礎
Supervised Learning
全体の流れ
データを学習用とテスト用に分割する
- X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
- from sklearn.model_selection import train_test_split
学習モデルのオブジェクトを作る
- knn = KNeighborsClassifier(n_neighbors = 5)
- from sklearn.neighbors import KNeighborsRegressor3
(データの分割とModelのHyper Parametersについてはこちらも参照)
モデルにデータを学習させる
- knn.fit(X_train, y_train)
テストデータを使ってモデルの各種評価値を計算する
- knn.score(X_test, y_test)
モデルの種類
大きく分けて
- Classifier
- Regression
の2種類
K-nearest neighbor classifier
対象から近いk個の点からの重みづけで予測する
Parameter: k
上記のとおり、重みづけの起点となるサンプルの個数
- Lower: Jagged boundaries, Higher Variance, High model complexity -> overfitting
- Larger: Sommth boundaries, Lower Variance, Lower model complexity
Ridge Regression
Regression Model (Least Square等)にペナルティαをつけたもの, L2 Penalty
Parameter: Alpha (deafualt as 1.0)
Regularization terms、モデル全体に対する各変数間の重みを標準化することで、overfitting, model cpmplexityを低下させる。各係数の和。
- Lower: less regularization, more complex model -> overfitting
- Larger: more regularization, simpler model
Lasso Regression
Regression Model (Least Square等)にペナルティαをつけたもの、重みの小さな変数は係数ゼロにされる, L1 penalty
Parameter: Alpha (default as1.0)
Regularization terms、モデル全体に対する各変数間の重みを標準化することで、overfitting, model cpmplexityを低下させる。各係数の絶対値の和。
Lasso vs Ridge
- 小から中程度の重みを多くの変数がもつ場合:Ridge
- 重みの中程度から大きい少数の変数がある場合:Lasso
SVM(RBF)
クラス分類において、被説明変数の次元を増やす
ことによって非線形な境界線をつくる。
Kernelの選択によりRadial Basis Function等、次元の増やし方を選択できる。
多クラス分類の場合にはOneVsResetCallsifierと組み合わせて使うことが可能。
Parameter: C
コストパラメーター、誤分類をどの程度許容するのか、
- Lower:誤分類を許容する
- Larger:誤分類を許容しない
Gamma
直感的にはKearnel の半径や広さを調整する
- Lower: 単純なboundaries
- Larger: 複雑なboundaried