Rで学ぶデータサイエンス
 #05 ロジスティック回帰

     2012/04/28
 TwitterID:sleipnir002
自己紹介

Twitter ID:@sleipnir002
みかどのひと@悪の枢軸
•Tokyo.Rでパターン認識の発表をシリーズで
やっています。
•職業:BIコンサル
•IT業界からBIを駆逐して、統計をやろうぜとい
う運動を起こしたい。
•おみやげを置いておきます。
•AKB48だと、こじはるが好きです。
R一人勉強会のご紹介
                       Rで学ぶデータサイエンス 5パターン認識
                       (著)金森 敬文, 竹之内 高志, 村田 昇, 金 明哲
                       共立出版
                       今ならデモスクリプトがダウンロードできる!
                       http://www.kyoritsu-
                       pub.co.jp/service/service.html#019256


第1章 判別能力の評価 Done
第2章 k-平均法 Done
第3章 階層的クラスタリング
第4章 混合正規分布モデル Done
第5章 判別分析                               面白ネタ募集中!
第6章 ロジスティック回帰 ←イマココ!
第7章 密度推定
第8章 k-近傍法 Done
第9章 学習ベクトル量子化 Done
第10章 決定木
第11章 サポートベクターマシン
第12章 正則化とパス追跡アルゴリズム
第13章 ミニマックス確率マシン
第14章 集団学習                      さぁ、今すぐAmazonでクリック!!
第15章 2値判別から多値判別へ
これまでのあらすじ
• 前回は第4回としてK近傍法とLVQを学んだ
  よ!
     K近傍法           LVQ




   テストデータ




 3近傍のトレーニングデータ



     訓練データ
今回の目的
    ロジスティック回帰とその仲間についての大枠を理解

•   ロジスティック回帰
•   ロジスティック回帰の弱点
•   非線形ロジスティック回帰
•   ニューラルネットワーク

    関数の細かい使用法などは
     後でBlogにまとめます。
※今日は話を2値判別に絞ります。
ロジスティック回帰
   質的変数を線形に回帰するためのアルゴリズム。

                          e.g.2値判別の場合
• クラスの事後確率オッズ比
  の対数(ロジット)が特徴量             Pr(Y  1 | x)
                  (A) log                    Tx
  の線形和で表現されている            1  Pr(Y  1 | x)
  モデル(A)
• 事後確率はシグモイド関数
  (B)であらわされる。

                  (B)
回帰ってなんすか?
回帰分析
説明される(従属)変数を説明(独立)変数の式で当てはめる。
      予測、変数の効果の調査に用いる。
            モデル式                         既にあるデータ

従属変数    従属変数
         係数             独立変数              x11  x1 p   y1 
                                                       
                                      X      Y   
                                         x  x        y 
   y  1 x1   2 x2     n xn        n1     np    n




              1               2             
例:
ワインの値段~畑の温度+土壌のミネラル+・・・
幸福度~年収+周りとの年収比+・・・
課題
質的変数はそのままでは回帰できない。
質的変数を回帰する上での問題
   離散型の変数を連続変数で予測しても意味がない。

                               e.g.SPAM判別問題
• 判別したいクラスにそれぞ     Y=30→?
  れ-1とか1とか数字を割り当
  てる。
                   Y=1→No       y  1 x1   2 x2     n xn
• 30や-1はどういう意味があ
  る?                                         X

                    Y=0→?


 無理やり2値判別問題に
線形回帰を適用すると、、、      Y=-1→ Yes
ためしにやってみると
2値判別問題として、ラベルに1と2を割り当てて
  Irisデータを対象に回帰分析を行った結果
ロジスティック回帰
   質的変数を線形に回帰するためのアルゴリズム。

                          e.g.2値判別の場合
• クラスの事後確率の比の対
  数(ロジット)が特徴量の線             Pr(Y  1 | x)
                  (A) log                    Tx
  形和で表現されているモデ            1  Pr(Y  1 | x)
  ル(A)
• 事後確率はシグモイド関数
  (B)であらわされる。

                  (B)
ロジスティック回帰で判別する
               モデル構築:対数尤度の最大化
            判別:事後確率の最大化→  T x  0 ならY=1
判別
                                                                              モデル構築
predict() テストデータ                      ラベル付きデータ
                x                                                  glm( family=binominal)
                                         x11  x1 p   y1 
                                                      
                                     X      Y   
                                        x  x        y 
                                         n1     np    n
           事後確率
                                                                       対数尤度
                             1
    Pr ( Y  1 | x ) 
                                                                                  n
                                                            L(  )       y log Pr(Y  j | x )
                                                                                        j   i   i


                         1  e x
                                 T                                     j {1, 2} i 1

                                                                       を最大化

                                                  
            予測結果                       モデル=パラメータ
                 y
参考:ロジットから事後確率までの
       流れ
                                                                       T x
      Pr(Y  1 | x)                                                e
log                    x
                        T
                                            Pr(Y  1 | x)               T x
    1  Pr(Y  1 | x)                                         (1  e )
    Pr(Y  1 | x)      T x                                             1
                    e                      Pr(Y  1 | x) 
  1  Pr(Y  1 | x)                                           (e    T x
                                                                               1)
                 T x
 Pr(Y  1 | x)  e (1  Pr(Y  1 | x))                                  1
                                            Pr(Y  1 | x)          T x
        T x                         T x
                                                              (e               1)
 (1  e ) Pr(Y  1 | x)  e
ロジスティック回帰をRで実行する
その前に
データの前処理について
IRISデータ
   花の種類×萼片(幅・長さ)×花弁(幅・長さ)

setosa          versicolor           virginia




             sepal           petal

         Setosaだけ形が異なる?
2値判別問題にするための処理

setosaとvirginica+versicolorに分けて2値判別を行う。

                                          Set




                                      Vir+Ver



 3群                     2群


線形分離可能なデータであることに注目
実行してみる
ロジスティック回帰で判別する。

                                                       GLMのモデルを
                                                      返す。Binominalで
                                                      ロジスティック判別




*デモ、http://www.kyoritsu-pub.co.jp/service/service.html#019256を基に一部改変
判別結果
予測値と事後確率          予測値と残差




     判別の精度はほぼ完ぺき!
ロジスティック回帰の弱点
ロジスティック回帰の弱点
              入力データに対して超平面を構成する→
                線形分離不可能なデータに弱い

• 入力空間のデータより、超平
  面を構成、1次元に落とし込む。                               通常の回帰と同じ

                                                超平面(線形)
      y   x( R  R)
              T     n


        T x  0  c  1
       T                
        x  0  c  2
                                   超平面(非線形)              T x  0

• 非線形に回帰したい。
 y   T  ( x) ( R k  R)
                                                              T x  0
 e.g.  1 , x2 )  ( x1 , x2 , x1  x2 )
     (x                                             x0
                                                    T
2値判別問題にするための処理

       Setosa+virginiaとversicolorに分ける

                                        Set+Vir




  3群                      2群             Ver


線形分離不可能?なデータであることに注目
線形で判別してみる
 (さっきと一緒)
判別結果
予測値と事後確率          予測値と残差




    判別の精度が著しく落ちている。
非線形に判別してみる。

         e.g. 一次式ではなく二次式で判別する。




y  1 x1   2 x2     n xn



y  1 x1   2 x2     n xn  12 x1 x2    n 1n xn 1 xn
Rで書くとこんなかんじ

       e.g. 一次式ではなく二次式で判別する。




glm(Species~.,iris[index,],family=binomial)

glm(Species~.*.,iris[index,],family=binomial)
非線形で判別してみる
判別結果
予測値と事後確率          予測値と残差




線形分離不可能?なデータでも判別の精度が高い
ニューラルネットワーク
ニューラルネットワーク

     生物の脳の情報処理構造を模した情報処理装置


•   多層パーセプトロン
•   自己組織化マップ
•   RBFネットワーク
•   学習ベクトル量子化

      単純パーセプトロン=
       ロジスティック回帰
ロジスティック回帰と
                       多層パーセプトロン
      複数の階層を設けることで、非線形の効果を得ることが
                出来る。

ロジスティック回帰                               多層パーセプトロン
input output                input         hidden output
                                    W                    W
                                                                     この本を
 x1                          x1
       w1                                h1         j1               チェック!
 x2   w2                     x2                              f(y1)

      w3
                   f(y)                  h2   ・・・   j2
 x3                          x3                              f(y2)
      w4
                 1                       h3         j3
 x4   f:                     x4
           1  exp(  Y )

                                        誤差逆伝播法で
                                         重みを学習
ニューラルネットで判別する。
                モデル構築:nnet(Species~, X, size)
                予測:predict(res, X, type=“class”)




                                                     入力の一次式の
                                                       未使用




                                データが1次式でもモデルが複雑なので、非線
                                形ロジスティック回帰のように判別可能である。
   結果
*デモ、http://www.kyoritsu-pub.co.jp/service/service.html#019256を基に一部改変
まとめ
• ロジスティック回帰は質的変数の判別に用い
  る回帰モデル
• データが線形判別不可能な場合は非線形ロ
  ジスティック回帰を用いる。
• さらに複雑なモデル構築を行うとニューラル
  ネットワークとなる。

パターン認識 05 ロジスティック回帰