• Daiki Akasaka

MIT Computational Thinking and Data Science のまとめ(Part 3)

MITの6.0002のIntroduction to Computational Thinking and Data Science、全15回の内容をoutputして行きます。


Youtube動画のplaylistはこちら

https://www.youtube.com/watch?v=C1lhuz6pZC0&list=PLUl4u3cNGP619EG1wp0kT-7rDE_Az5TNd


講義で使われていたスライドはこちらから入手できます。本ページの資料で注釈がないものは、こちらのスライドからの引用です。

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/lecture-slides-and-files/



講義内容

  • 第1回、第2回 : 最適化問題

  • 第3回 : グラフ理論

  • 第4回 : 確率論

  • 第5回 : ランダムウォーク

  • 第6回 : モンテカルロシュミレーション

  • 第7回 : 信頼区間

  • 第8回 : 標本と標準誤差

  • 第9回、第10回 : 実験データの理解

  • 第11回 : 機械学習の紹介

  • 第12回 : クラスタリング

  • 第13回 : クラス分類

  • 第14回 : 統計学の落とし穴

  • 第15回 : まとめ


回帰の問題

 実験から得られたDataに対して、そのDataにちょうどFitするような多項式を見つける。

多項式とは、

1次元であれば、y = ax+b

2次元であれば、y = ax^2 + bx + c

の式である。


 例えば、以下のような青い点が実験から得られたときに、そのDataにより正確にFitしているのは2次元の多項式(Quadratic Model)になる。

どれほど正確にFitできているのかを数学的に計算するのが、決定係数 R^2 と呼ばれるものである。


R^2 は、分母にyとyの平均との2乗誤差、分子にyと予測した値との2乗誤差をとって、それを1から引く。

 R^2=1 の場合は、分子が0になって、予測が正確に当たっている。

 R^2=0 の場合は、予測した値と実際のDataに関して、関係性がないということになる。

つまり、R^2の値が大きいほど、多項式が実験から得られたDataにより正確にFitしていることになる。


多項式の次元を増やせば増やすほど、R2の値が大きくなって、より正確にfitする関数を見つける事ができる。16次元まで増やすと、R^2 の値が0.96553 にもなる。


過学習

 上の例で書いたように、多項式の次元を増やしていくとR^2が大きくなって一見良さそうに見えるが、これは実験データに含まれるノイズにもfit してしまう過学習という問題を引き起こしてしまう。

 例えば、同じ実験から得られたDataSet1とDataSet2 という実験データがあったときに、DataSet1 から作成した多項式(Model1) を使って、DataSet2 の実験データのR^2を計算してみると、16次元よりも、2,4 次元のDataの方がよりDataSet2に対してはFitしているように見える。

 つまり、次元を増やせば増やすほど、特定のDataSetに対しては正確に表現できたとしても、汎用性がなくなってしまい、他のDataSetに対しては使えないモデルが出来上がってしまう。こういったモデルを作るときは、なるべく次元が低い方がノイズに強く汎用的に使えるモデルになる。


 過学習をより理解するために、意図的に、データに誤差を含めた場合を見てみる。

(0, 0), (1,1), (2,2), (3,3.1) として、x=3 のときにy=3ではなく、誤差を入れたy=3.1とする。そして、これを2次元の多項式でfit させると、以下のような式で表す事ができる。

 一見すると問題無いように見えるのだが、これをx=20まで大きくしてみてみると、2次元の方はどんどん実際の値と予測値が離れていってしまう。

 x=3の時に、y=3.1 にして意図的に加えた0.1 の誤差にもfit してしまったために、全く期待しない結果になってしまう。

 一方で、1次元の方は、ほとんと予測値と実測値が離れていないので、多少のノイズが入ったとしても、期待したモデルを作成していることができている。


交差検証(Cross Validation)

 過学習を避けるために交差検証という方法を用いる。モデルを作る時に使うDataを学習用と評価用に分割する。学習用のDataを使ってできたモデルが評価用のDataに対してもfitするのか検証する。

 k-分割交差検証 は与えられたDataSetをk個に分割して、そのうちの一つを評価用として、残り(k-1個)を学習用のDataとして学習させて評価を行う。これを評価用にするDataを変えていきながらk回繰り返す。


出典 : http://vertica-tech.ashisuto.co.jp/cross_validation/


 leave-one-out 交差検証 は学習に使えるDataのサンプル数が極端に少ない時に用いる方法で、k-分割交差検証法のkの値をサンプル数を同じにする。


Declarative Knowledge/Imperative Knowledge

 知識を獲得する方法はふたつ、

 一つはDeclarative Knowledge(宣言的知識)で、実際に起きたことや、事実を記憶していくということ。これは、観察できるDataの数やどれくらい知識を保存できるかによる。例えば、2の2乗を求めようとした時に、2の2乗は4とだけ記憶していること。計算方法を記憶すわけでは無いので、一般化はされてない状態。


 一方で、Imperative Knowledge(命令的知識) は、過去の出来事から推測されたことを、命令セットにして一般化した知識のこと。過去の出来事から、将来を予測することができるが、それは必ずしも正確ではない。例えば、天気予報は、気圧の配置や、気温、湿度などを過去のDataから一般化された計算式に従って、明日の天気を予想する。


教師あり学習(supervised learning)

 教師あり学習とは事前に正解が分かっているData Setを使ってモデルを作成し、そのモデルを使って正解の分からないDataを予測する事である。

 今までの、プログラミングでは、入力にはDataとProgramがあって、それらを使って何らかの計算をして、出力が得られた。機械学習の場合は、入力にはDataと期待される結果があって、出力にProgram が得られる。そのProgramを使って未知のDataに対して予測を行う。

 最も代表的な教師あり学習はClasification(分類)がある。

アメリカンフットボールのポジションと身長/体重の関係を表したグラフがある。青がLinemanで、赤がReceiverである。このプロットから、青と赤の境目に線を引くことで、赤と青を分類することができる。そして、新しく入ったメンバーが黒い点で表されていて、これは赤に分類されるので、Receiver のポジションになる。

 このようにすでにLabel付けされたDataを使って、分類するルールを決めて、そのルールに沿って、新しいDataに対してもラベル付けを行う。


 分類で使われるいくつかの手法に関して紹介する。

一つは、k近傍法(K-nearest Neighbors)である。以下のように黒と赤でラベル付けされたDataがあった時に、新たなData X が黒なのか赤なのかを分類する。k近傍法では、最も近くにあるk個のDataの多数決で決める。k=1では、赤が最も近いので赤になる、k=3では、黒が2個、赤が1個なので、多数決で黒になる。どのようにしてkの値を決定するのかがポイントになる。kの値が大きいほど、全体を俯瞰した分類ができる一方で、境界にあるようなDataは間違って分類される可能性も出てきてしまう。



 もう一つは、ロジスティック回帰である。線形回帰では、関数をDataに対してfit させているが、ロジスティック回帰では分類問題で使われて、0 or 1 の2項に分類する。それぞれの特徴量の重みを決めて、予測する。


教師なし学習(Unsupervised learning)

 教師なし学習では、クラスタリングという手法が用いられる。これは、似たもの同士を一つのグループにしていって、各グループ内の分布が最小になるように考慮する最適化問題である。何個のグループに分けるかや、同じグループ内での最小の分布をどれくらいにするかなどの制約を考慮に入れながらグループ化する。


 一つ目の手法がヒエラルキークラスタリングである。これは、まずN個のサンプルがあった時に、それらをそのままN個にクラスタリングする。その中で、最も似たもの(特徴量の差が最も小さいもの同士)を一つにクラスタにして、N-1個にクラスタリングする。これを、希望のクラスタリング数になるまで繰り返す。

出典 : https://www.albert2005.co.jp/knowledge/data_mining/cluster/hierarchical_clustering


クラスタ内に複数サンプルがあった時には、クラスタ内で平均を取った重心で他のクラスタと比較するのか、クラスタ間で最初となるサンプルの距離を使って比較するのか複数の方法がある。


 二つ目の手法が、k-means 法である。まず、何個にグループ化するかを決める。k=4 であれば、4個のクラスタリングを行う。


1. k個のランダムな点(下図の★)を置く。

2. そのランダムな点(下図の★)から距離の近いものでグループ化する。

3. 今度は、そのグループ内の重心に下図の★を移動させる。

4. ★が移動しなくなるまで、2と3を繰り返す。

 k-means法は計算が早く簡単に実装できるのが利点だが、一方で、最初のランダムな点をどこに置くかによって、答えが変わってきてしまう。局所最適解しか求めることができない。

 また、どのようにkの値を選ぶかということも重要になってくる。分析しているDataがどういったものなのか、どういった目的でクラスタリングしたいのかによってkの値は決まってくる。


評価指標の話

 教師あり/なしに関わらず、学習した結果のモデルの正しさを評価するには様々な指標がある。

適合率(precision)は、陽性と予測した中で、実際に陽性であったかの割合

再現率(recall, sensitivity)は、実際に陽性だったうち、陽性と予測できた割合

特異度(specificity)は、実際に陰性だったうち、陰性と予測できた割合

正解率(accuracy)は、全体の中でどれだけ正解だったのかの割合



ROC曲線とAUC

 実際に学習したモデルからは0~1の間の少数の値を得ることができて、例えば、予測した値が0.5 より大きければ陽性、0.5 より小さければ陰性と判断する。しかし、実際には陰性と陽性の閾値を0.5にする場合は少ない。なぜならば、そもそも予測する項目によって、実際に起こり得る確率が違うからである。そこで、ROC曲線は、縦軸に真陽性率、横軸に偽陰性率をプロットし、陽性と判定する閾値を0~1の間で変えていくと、以下のようなグラフを作成することができる。青いグラフが、ROC曲線であり、ROC曲線の下の部分の面積がAUC の値になる。





3種類の嘘、うそ、大嘘、統計学

閲覧数:6回0件のコメント

最新記事

すべて表示