LoginSignup
9
1

More than 1 year has passed since last update.

scikit-learnを使った基本となる機械学習手法

Last updated at Posted at 2021-12-17

Scikit-learnとは

Scikit-learn公式HPにはScikit-learnはオープンソース教師あり、教師あり両方の機械学習用ライブラリであり、モデルフィッティング、データ前処理、モデルの選択や評価、ほかの多くのツールを提供している。とあり、pythonの機械学習を行うときに便利なライブラリです本記事ではscikit-learnの基本的なモデルを調べまとめてみました詳細、厳密な解説は参考にさせていただいたページを見るとわかりやすいと思います。

1.SGD(stochastic gradient descent 確率的勾配降下法)

 パラメーターを最適化するために勾配が最も大きい方向に進み損失関数を小さくさせる手法(降下法)のうちの1つで、降下法はイメージ的には山でとりあえず坂を上にのぼれば頂上に着くようなものに近いと思います。(実際に山で遭難したときにはこの方法では確実につく方法ではないので来た道をたどってください)。
イメージ的には参考にしたこのページ画像が分かりやすいと思います
 降下法の中でも代表的なものとして、最急降下法とSDGがあり、最急降下法はすべてのパラメータを変え関数を計算し損失関数を考えるのに対し、SGDはランダムに決めた1つのパラメータを変え損失関数を計算します。SDGの特徴として、この方法によって最小の損失でない点にとどまることがかなり少なくなるようです。(詳しくはここの記事で詳しく記載されています)
 この方法でscikit-learnのSGDClassifierでクラス分けする超平面のパラメータやSGDRegressorの損失関数を決定しています。

2.SVC(サポートベクターマシーン)

分類に使える手法であり、境界線に近いデータ(サポートベクトル)と境界線の差(マージン)が最小になるように境界線を引き、更新する手法です。
参考ページのこの画像がイメージがつきやすくわかりやすいと思います
直線の境界線はLinearSVCを、非線形の境界線を書きたいときはSVCを使います。

3.KMeans(K平均法)

データをk個に分割する手法で、クラスタリング(データのグループ分け)に使える手法です、まずデータにランダムなグループ番号を割り振り、一つのデータ番号を重心が近いデータ番号に変え、更新し続けることで似た特徴を持つデータを集めることができます。
参考にしたページのこの画像が分かりやすいと思います

4.Kneighber(k-最近近傍法)

今回紹介した手法の中では最も単純な方法で、予測したいデータと近い(ユークリッド距離などで)特徴量を持つk個のデータから多数決で決められた結果を予測結果として出力します分類問題に利用できます、一般にkが大きいほどノイズに強く、小さいほどにノイズに弱い特徴を持ち、シンプルで分かりやすいですが、高次元のデータを扱うには不向きです。

参考

ディープラーニング(深層学習)を理解してみる(勾配降下法:最急降下法と確率的勾配法)https://yaju3d.hatenablog.jp/entry/2017/08/27/233459
確率的勾配降下法のメリットについて考えてみた https://qiita.com/koshian2/items/028c457880c0ec576e27
SVM(サポートベクターマシン)とは https://aiacademy.jp/media/?p=248
k-最近傍法 – クラス分類 http://taustation.com/sklearn-knn-classifier/
scikit-learnHP https://scikit-learn.org/stable/index.html

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1