ゆるいブログ

毎日おもったことや、やったことをただただ書いていくブログです

scikit-learnの勉強あまり進まず

子供を病院に連れていったりジムに行ったり図書館で本を読んだりしていたら勉強があまり進まず。ついでに普段使っているThinkPadも起動時に「Fan Error」が出るようになったので修理依頼中。

思い返してみると、そりゃ勉強進んでないや。

図書館で借りた本

 

レシピを見ないで作れるようになりましょう。

レシピを見ないで作れるようになりましょう。

 
  • 野菜炒めで野菜が焦げるのは水分不足だから
  • 野菜は自分の出した蒸気で甘くなる
  • もやしのひげ根は古い水分がついているのでくさみになる
  • にんにくはみじん切りより潰した方が楽
  • 青菜は根の方に栄養があるので捨てるのはもったいない。十字傷を根のところに入れると食べやすくなる
  • オイル蒸しは炒めると蒸すの中間でおいしい
  • 野菜との炒め合わせで肉のかわりに油揚げも良い
  • 中華鍋の上にお湯をわかし、塩とごま油かオリーブオイルをたらすとお湯単体よりも高温になります、そこに野菜を湯通したものを野菜炒めすると、個々の野菜の状態に気を使わずに野菜炒めができます
  • ごぼうの皮は栄養になるので削ぐ必要はない
  • サラダは野菜を洗った後でサラダスピナーで水気を切る
  • 上等なものではない鶏肉や豚肉は塩をすり込んで一日置くと水分が抜けておいしくなる
  • 鶏肉は筋肉のかたまりなので筋膜に切れ目を入れてから焼かないと肉が縮んでしまう。
  • 魚は塩をふることでうまみが凝縮される

scikit-learnの勉強中

まだ最初の教師あり機械学習について勉強中です。

k-最近近傍法 

ja.wikipedia.org

最も近いk個の点を元に分類するという非常に単純なクラス分類法

k-近傍回帰

k-近傍法のアルゴリズムを使い、回帰分析を行う。

回帰分析というのはある点をクラス分類するのではなく、適切なモデルに当てはめることです。

k-近傍回帰は最も近いk個の点の属性値の平均を取るということ。

k-近傍法の欠点

多数の特徴量を扱うことはできない。

線形回帰(最小二乗法)

誤差の二乗が最小限になるようにパラメータを求める。

ja.wikipedia.org

リッジ回帰

回帰分析の際に特徴量とかけあわせるための係数をなるべく0に近づけることにより、各種の特徴量の影響を抑えた形で学習させる。これにより過剰適合んを防ぐことができる。

モデルの簡潔さ(≒汎化性能)と訓練セットに対する性能がトレードオフになるのでパラメータalphaで調整をする。

shogo82148.github.io

Lasso

Ridgeと同様に係数に制約をかけるが、こちらはいくつかの係数を完全に0にする。係数が0になるということはその特徴量が無視されるということなので、モデルにとってどの特徴量が重要なのかがわかる。

重要な特徴量がわずかしかないとあらかじめわかっている場合にはリッジ回帰よりLassoの方が向いている

ロジスティック回帰と線形サポートベクターマシン

名前でまぎらわしいが線形回帰ではなく線形クラス分類アルゴリズムとなる

正則化の強度を決定するパラメータCがあり、Cが大きくなると正則化は弱くなり訓練パラメータへの適合度が上がる、パラメータを小さくすると係数ベクトルを0に近づけることを重視する。

線形モデルによる多クラス分類

2クラス分類アルゴリズムを各クラスごとに実行することにより、多クラス分類を行うことができる。

ナイーブベイズクラス分類器

高速だが汎化性能はLogisticRegressionやLinearSVCよりもわずかに劣ることが多い。

scikit-learnにはGaussianNB、BernoulliNB、MultinomialNBが実装されている。

BernoulliNBは2値データを仮定しており、MultinomialNBはカウントデータを仮定している。

ランダムフォレスト

決定木は訓練データに対して過剰適合してしまう恐れがある。ランダムフォレストはこの問題に対応する方法の一つで、少しずつ異なる決定木をたくさん集めたものです。

勾配ブースティング回帰木

勾配ブースティングでは、一つ前の決定木の誤りを次の決定木が修正するようにして決定木を作っていきます。浅い学習機(Weak Learner)を多数組み合わせて決定木を作ります。

ランダムフォレストに比べるとパラメータ設定の影響を受けやすいですが、パラメータが正しく設定されていればこちらの方が性能が良いです。

また、訓練に時間がかかるという短所もあります。

カーネル法を用いたサポートベクターマシン

非線形の特徴量をデータ表現に加えることで線形モデルでも非線形のデータが扱えるという話です。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎