0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonではじめる機械学習(5刷)に学ぶ

Last updated at Posted at 2019-06-23

#目次
##1章はじめに
 機械学習、pythonについての説明。scikit-learnをなぜ使うかの説明。
 開発環境、実行環境について説明。
 自分は、Jupyter notebookを使うために、Anacondaをインストール。
 spyderで趣味程度のプログラミングをしたが、今回の学習においては、テキストにのっとってJupyter notebookを使うことに。

  • 以下が実行環境。
  • matplotliv version:3.0.3
  • Numpy version:1.16.2
  • SciPy version;1.2.1
  • IPython version7.4.0
  • scikit-learn version:0.20.3

 pythonについては、昔Javaをしたことがあるので、コーディングについては何とかわかる。
 数学(行列、統計)についても、少し学生のときにかじったことがあるので、なんとかついていけそう。

#メモ
##p11 1.4.5 pandas In[6]:
display(data_pandas)
とコーディングしても、表が表示されない。

from IPython import display
display(data_pandas)

上記では、Ipython.display(data_pandas)として呼び出そうとしているが、これが間違っているみたい。正しくは、Ipython.display.display(data_pandas)なので、

import pandas as pd
from IPython.display import display
\# create a simple dataset of people
data = {'Name': ["John", "Anna", "Peter", "Linda"],
        'Location' : ["New York", "Paris", "Berlin", "London"],
        'Age' : [24, 13, 53, 33]
       }

data_pandas = pd.DataFrame(data)
display(data_pandas)

これで表示できる。

##p17 1.7.2 成功度合いの測定:訓練データとテストデータ
 ・モデルを構築するのに使ったデータを、モデルの評価に使うことはできない。
  モデルの性能を評価するには、ラベル(答え)を持つ新しいデータを使う必要がある。
  モデルを構築するためのデータを訓練データ、評価するためのデータをテストデータという。
  これらはデータセットから関数(train_test_split)から生成できる。
  
##p20 1.7.4 最初のモデル「k-最近傍法」
データの一番近くにある点を、正解とするモデル。
kは、固定されたk個の近傍点(複数可)を用いることができる。

モデルの評価には、テストデータによる正解率(テスト精度)とモデルを作ったデータによる正解率(訓練精度)があり、この二つの精度が適当となるモデルが最適と判断される。

##2.1 クラス分類と回帰
 教師あり機械学習問題は以下の2つに分けられる。
 クラス分類(2つないしはそれ以上のクラスに分離)
 回帰(連続地の予測)

##p44 2.3.2.3 k-近傍回帰
Out[21]のコメントに「テストセットに対する精度」とあるが、正しくは「テストセットに対するターゲット」ではないか。

##p46 線形モデル
回帰モデルを「予測されるレスポンスは、入力特徴量の重み付き和とバイアスの和」とするもの。
(複数の特徴量にそれぞれ重みをかけてその和(+バイアス)が、レスポンスとなる)

##p50 2.3.3.3 リッジ回帰
線形モデルによる回帰の一つ。
係数(ω)の要素をなるべく小さくする。(特徴量が出力に与える影響をなるべく小さくしたい)boston_housingデータセットを用いる、とある。

X,y=mglearn.datasets.load_extended_boston()

Ridgeモデルのalphaパラメータで、特徴量の影響を調整できる。
alphaが大きいほど、制約が大きくなる(係数はゼロに近くなる)、
alphaが小さいほど、制約が小さくなる(係数への制約が小さくなり、係数は大きくなる)(alphaが0の時、線形モデルと同じ)

alphaの値と係数の大きさを比較すると、なるほどalphaが大きいほどそれぞれの要素に対する係数はゼロに近くなり、汎化が進む(可能性がある)。
alphaが小さいほど係数は大きくなる(ニアリー、線形モデル)⇒複雑なモデルに適合

今回のテストデータにおいては、(たまたま)alphaが小さいほうがモデルの精度は高い。
#モデルによって、適切なalphaを求める(モデルを決める)ことが重要

##p53. 2.3.3.4 Lasso
Ridgeに代わる線形回帰。リック回帰と似ているが、いくつか複数の係数が完全にゼロになる
⇒モデルのいくつかが完全に無視される⇒モデルが簡略化される。

##p56 2.3.3.5 クラス分類のための線形モデル
線形の2クラス分類器は、2つのクラスを直線や平面、超平面で分割する。
線形モデルは、以下の2つのアルゴリズムに区別される
-係数と切片の特定の組み合わせと訓練データの適合度を測る尺度
-正規化を行うか。行うならどの方法か。

一般的な線形クラス分類アルゴリズムは以下の2つ
-ロジスティック回帰
-線形サポートベクタマシン

上記の正規化の強度を決定するパラメータをCとすると、Cが大きくなると正規化が弱くなる(個々のデータに反応する)、Cが小さくなると正規化が強くなる(全体のデータを見る)

回帰の場合と同様に、線形モデルによるクラス分類は、低次元空間においては制約が強すぎるかもしれないが、高次元の場合には過剰適合を回避する方法が重要である。(Cをいい塩梅にする必要がある!?)

#取り組み
##6/10
Pythonをjupyter notebookで開始。1.4章まで写経完了。

##6/23
2.3.3.2 線形回帰まで完了
訓練データとテストデータとの違いや意味が分かってきた。モデル構築などをAPIに任せて、人間は最適な特徴や重みを見つけることが重要なのかな。

##6/30
p53. 2.3.3.4 Lasso
線形

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?