プログラミング輪講
   機械学習

  @pika_shi
機械学習とは

l  ⼈人間が⾏行行うパターン認識則や経験則
    を,コンピュータで実現させる

l  サンプルデータ集合を対象に解析を
    ⾏行行い,そのデータから有⽤用な規則,
    ルールを抽出する




                          2
検索エンジンとの関係
l  ランキングの改良
  (例)どのページがユーザにとって好ましいかを,過去のクリックの履
     歴により分析


       Webページ
                     問い合わせ          クエリ
                              検索
                             エンジン
                                    クリック
  索引            DB
                             フィード
PageRank                      バック


                       ランキングされた検索結果



                                       3
機械学習の例
l  教師あり学習          l  教師なし学習


  決定⽊木
         ナイーブ・ベイズ     K-means

      SVM                    主成分分析


 パーセプトロン              強化学習




                                     4
SVM
SVMとは?
l  現在最も識別性能の⾼高い分類器の1つ
l  ⾼高次元でもうまく分類できるので,複雑な問題に適⽤用され
    ることが多い
  l  顔の表情の分類
  l  ⼿手書き⽂文字認識
  l  地震による被害規模の予測
  l  僕の研究
l  Pythonのライブラリ
  l  LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/
  l  SVM-Light http://svmlight.joachims.org/




                                                     6
SVMの学習
l  マージン最⼤大化により識別線を決定




                        7
カーネルトリック
l  訓練データを⾼高次元空間に写像し、その写像された空間上
    で線形分離を⾏行行う




                             8
LIBSVMを使う
>> from svm import *
>> from svmutil import *
>>
>> # 訓練データ
>> problem = svm_problem([1,-1], [[0,0], [1,1]])
>> # パラメータの設定 (カーネルの種類など)
>> # 多クラスSVMや,クロスバリデーションなども引数で設定可能
>> prameter = svm_parameter(‘-t 2 –h 0’)
>> # 訓練
>> m = svm_train(problem, parameter)
>> # 予測
>> predict = svm_predict([1,-1], [[-1, 0],[3, 3]], m)
>> predict[0]
[1.0, -1.0]




                                                        9
パーセプトロン
パーセプトロンとは?
l  ⼈人間の視覚・脳の機能をモデル化した分類器




                            11
パーセプトロンの学習能⼒力力
l  パーセプトロンは⾮非線形分離が不可能
    l AND,OR,XORのうち不可能なのは?



                        多層パーセプトロン
                            なら可能!




                               12
多層パーセプトロン
l  中間層(隠れ層)をもち,⾮非線形分離も可能に




                             13
バックプロパゲーション(誤差逆伝播法)
l  分類器の精度をより⾼高めるために,出⼒力力結果から重みを調
    整していく

l  ネットワーク内の重みを調整しながら,後ろに伝わってい
    く

l  今回の課題で実装してもらいます(クリックデータの学習)




                               14
過学習
l  学習しすぎて,逆に学習能⼒力力が低下
 l  中間層を多くしすぎた時などに⽣生じる




                          15
SVMとの⽐比較
l  パーセプトロンとSVMはどっちが汎化能⼒力力が⾼高い?




                                  16
決定⽊木
決定⽊木
l  意思決定を⾏行行うための学習モデル                        学年
                                       B4          M1
                                             B5
 学年   ⾃自宅 or 下宿   早起き     ソフト
                                  ⾃自宅or下宿    ⾏行行く ⾃自宅or下宿
 B4     下宿        得意      ⾏行行く
 B4     下宿        苦⼿手     ⾏行行く    下宿   ⾃自宅        下宿         ⾃自宅

 B4     ⾃自宅       苦⼿手    ⾏行行かない   ⾏行行く ⾏行行かない     ⾏行行く ⾏行行かない
 B5     下宿        苦⼿手     ⾏行行く
 M1     下宿        得意      ⾏行行く              ⾃自宅or下宿
 M1     ⾃自宅       得意     ⾏行行かない             下宿    ⾃自宅

                                            ⾏行行く ⾏行行かない




                                                        18
決定⽊木とは?
l  どっちの決定⽊木がよい?

                               学年
    ⾃自宅or下宿              B4          M1
                               B5
   下宿    ⾃自宅
                    ⾃自宅or下宿    ⾏行行く ⾃自宅or下宿
    ⾏行行く ⾏行行かない
                   下宿    ⾃自宅        下宿    ⾃自宅
  簡単なものほどよい         ⾏行行く ⾏行行かない     ⾏行行く ⾏行行かない
   (オッカムの剃⼑刀)


l  情報理論(エントロピー),ジニ係数などを⽤用いて簡単な決
    定⽊木を求めることができる


                                                  19
決定⽊木のライブラリ
l  Pythonのライブラリ
  l  scikit-learn
      http://scikit-learn.sourceforge.net/dev/modules/
      tree.html


l  多クラス分類はSVMより決定⽊木の⽅方がうまくいくことが多
    い
  l  逆に2クラス分類はやはりSVMには精度は及ばない




                                                    20
scikit-learnを使う
>> from sklearn import tree
>>
>> # 訓練データ
>> samples = [[0, 0], [1, 1]]
>> # クラス
>> values = [0, 1]
>> # 訓練
>> clf = tree.DecisionTreeClassifier()
>> clf = clf.fit(samples, values)
>> # 予測
>> clf.predict([2, 2])
array([1])




                                         21
ナイーブ・ベイズ
ナイーブ・ベイズとは?
l  確率モデルに基づいた分類器
 l  ⽂文書分類,診断などに⽤用いられることが多い

  通常メール          スパムメール

   飲み会              当選
          旅⾏行行         おめでとう
                 出会い

l  次のメールはスパム?
  l  最近出会いがなくて寂しい.誰か飲み会開いて!
  l  出会いがなくて寂しいそこのあなた!このサイトに登録すればモテ
      モテですよ.



                                 23
その他
l  不均衡データ問題 (imbalanced data)
  l  識別器の訓練データに⼤大きなクラスの偏りがある場合,⼤大きいクラ
      スに流されてしまう
  l  対策としては,⼤大きい⽅方のクラスサイズを⼩小さい⽅方に合わせる,ま
      たはその逆が⼀一般的


l  アンサンブル学習 (ensemble learning)
  l  識別器を複数組み合わせて,⾼高精度の識別器を作成
  l  うまく作成できれば,識別器の能⼒力力を120%引き出すことができる




                                     24
課題

機械学習