Rで学ぶデータサイエンス #05 ロジスティック回帰 2012/04/28 TwitterID:sleipnir002
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章 集団学習 第15章 2値判別から多値判別へ
さぁ、今すぐAmazonでクリック!!
面白ネタ募集中!
これまでのあらすじ
• 前回は第4回としてK近傍法とLVQを学んだよ!
テストデータ
3近傍のトレーニングデータ
訓練データ
K近傍法 LVQ
今回の目的
• ロジスティック回帰
• ロジスティック回帰の弱点
• 非線形ロジスティック回帰
• ニューラルネットワーク
ロジスティック回帰とその仲間についての大枠を理解
関数の細かい使用法などは 後でBlogにまとめます。
※今日は話を2値判別に絞ります。
ロジスティック回帰
• クラスの事後確率オッズ比の対数(ロジット)が特徴量の線形和で表現されているモデル(A)
• 事後確率はシグモイド関数(B)であらわされる。
質的変数を線形に回帰するためのアルゴリズム。
e.g.2値判別の場合
xxY
xY T
)|1Pr(1
)|1Pr(log(A)
(B)
回帰ってなんすか?
モデル式
回帰分析
例:
ワインの値段~畑の温度+土壌のミネラル+・・・
幸福度~年収+周りとの年収比+・・・
説明される(従属)変数を説明(独立)変数の式で当てはめる。予測、変数の効果の調査に用いる。
nnxxxy 2211
独立変数 独立変数 独立変数 従属変数 従属変数 従属変数 係数
既にあるデータ
nnpn
p
y
y
Y
xx
xx
X
1
1
111
1 2
課題
質的変数はそのままでは回帰できない。
質的変数を回帰する上での問題
• 判別したいクラスにそれぞれ-1とか1とか数字を割り当てる。
• 30や-1はどういう意味がある?
離散型の変数を連続変数で予測しても意味がない。
e.g.SPAM判別問題
X
Y=1→No
Y=-1→ Yes
Y=0→?
Y=30→?
nnxxxy 2211
無理やり2値判別問題に 線形回帰を適用すると、、、
ためしにやってみると
2値判別問題として、ラベルに1と2を割り当てて Irisデータを対象に回帰分析を行った結果
ロジスティック回帰
• クラスの事後確率の比の対数(ロジット)が特徴量の線形和で表現されているモデル(A)
• 事後確率はシグモイド関数(B)であらわされる。
質的変数を線形に回帰するためのアルゴリズム。
e.g.2値判別の場合
xxY
xY T
)|1Pr(1
)|1Pr(log(A)
(B)
モデル構築 glm( family=binominal)
判別 predict()
モデル=パラメータ
ラベル付きデータ
ロジスティック回帰で判別する
モデル構築:対数尤度の最大化 判別:事後確率の最大化→ ならY=1
事後確率 xT
exY
1
1)|1(Pr
}2,1{ 1
)|Pr(log)(j
n
i
iij xjYyL
対数尤度
を最大化
テストデータ x
予測結果 y
nnpn
p
y
y
Y
xx
xx
X
1
1
111
0xT
参考:ロジットから事後確率までの流れ
xxY
xY T
)|1Pr(1
)|1Pr(log
xT
exY
xY
)|1Pr(1
)|1Pr(
))|1Pr(1()|1Pr( xYexY xT
xx TT
exYe )|1Pr()1(
)1()|1Pr(
x
x
T
T
e
exY
)1(
1)|1Pr(
xT
exY
)1(
1)|1Pr(
xT
exY
ロジスティック回帰をRで実行する
その前に
データの前処理について
IRISデータ
花の種類×萼片(幅・長さ)×花弁(幅・長さ)
sepal petal
setosa virginia versicolor
Setosaだけ形が異なる?
Set
Vir+Ver
2値判別問題にするための処理
setosaとvirginica+versicolorに分けて2値判別を行う。
3群 2群
線形分離可能なデータであることに注目
実行してみる
ロジスティック回帰で判別する。
*デモ、http://www.kyoritsu-pub.co.jp/service/service.html#019256を基に一部改変
GLMのモデルを 返す。Binominalで ロジスティック判別
判別結果
予測値と事後確率 予測値と残差
判別の精度はほぼ完ぺき!
ロジスティック回帰の弱点
通常の回帰と同じ
ロジスティック回帰の弱点
• 入力空間のデータより、超平面を構成、1次元に落とし込む。
• 非線形に回帰したい。
入力データに対して超平面を構成する→ 線形分離不可能なデータに弱い
20
10
)(
cx
cx
RRxy
T
T
nT
0xT
超平面(線形)
超平面(非線形)
),,(),(..
)()(
212121 xxxxxxge
RRxy kT
0xT
0xT
2値判別問題にするための処理
Setosa+virginiaとversicolorに分ける
Set+Vir
Ver
3群 2群
線形分離不可能?なデータであることに注目
線形で判別してみる
(さっきと一緒)
判別結果
予測値と事後確率 予測値と残差
判別の精度が著しく落ちている。
非線形に判別してみる。
e.g. 一次式ではなく二次式で判別する。
nnnnnn
nn
xxxxxxxy
xxxy
1121122211
2211
Rで書くとこんなかんじ
e.g. 一次式ではなく二次式で判別する。
glm(Species~.,iris[index,],family=binomial)
glm(Species~.*.,iris[index,],family=binomial)
非線形で判別してみる
判別結果
予測値と事後確率 予測値と残差
線形分離不可能?なデータでも判別の精度が高い
ニューラルネットワーク
ニューラルネットワーク
生物の脳の情報処理構造を模した情報処理装置
• 多層パーセプトロン
• 自己組織化マップ
• RBFネットワーク
• 学習ベクトル量子化
単純パーセプトロン= ロジスティック回帰
ロジスティック回帰と 多層パーセプトロン
複数の階層を設けることで、非線形の効果を得ることが 出来る。
ロジスティック回帰
x1
x2
x3
x4
f(y)
)exp(1
1:
Yf
input output 多層パーセプトロン
x1
x2
x3
x4
h2
input hidden
h1
h3
j2
j1
j3
f(y1)
f(y2)
output
・・・
w1
w2
w3
w4
誤差逆伝播法で 重みを学習
W W この本を チェック!
ニューラルネットで判別する。
*デモ、http://www.kyoritsu-pub.co.jp/service/service.html#019256を基に一部改変
入力の一次式の未使用
モデル構築:nnet(Species~, X, size) 予測:predict(res, X, type=“class”)
データが1次式でもモデルが複雑なので、非線形ロジスティック回帰のように判別可能である。
結果
まとめ
• ロジスティック回帰は質的変数の判別に用いる回帰モデル
• データが線形判別不可能な場合は非線形ロジスティック回帰を用いる。
• さらに複雑なモデル構築を行うとニューラルネットワークとなる。