PyInv

プログラミングのメモ、海外投資のメモ

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についてはこちらも参照)

 

singapp.hatenablog.com

 

 

 

モデルにデータを学習させる

  • 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)

Support Vector Machine

クラス分類において、被説明変数の次元を増やす

ことによって非線形な境界線をつくる。

Kernelの選択によりRadial Basis Function等、次元の増やし方を選択できる。

 

多クラス分類の場合にはOneVsResetCallsifierと組み合わせて使うことが可能。

 

 

Parameter: C 

コストパラメーター、誤分類をどの程度許容するのか、

  • Lower:誤分類を許容する
  • Larger:誤分類を許容しない

Gamma

直感的にはKearnel の半径や広さを調整する

  • Lower: 単純なboundaries
  • Larger: 複雑なboundaried