[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
線形代数が見えると
統計学も見える
内積
2015/11/21
第5回 プログラマのための数学勉強会 発表資料
Ken ichi Matsui (@kenmatsu4)
自己紹介: @kenmatsu4
・Facebookページ
  https://www.facebook.com/matsukenbook
・Twitterアカウント
  @kenmatsu4
・Qiitaでブログを書いています(統計、機械学習、Python等)
   http://qiita.com/kenmatsu4
   (4100 contributionを超えました!)
・趣味
   - バンドでベースを弾いたりしています。
   - 主に東南アジアへバックパック旅行に行ったりします
   (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc)
旅行の写真 : http://matsu-ken.jimdo.com
Twitterアイコン
Pythonタグで1位に
なりました!(> <人)
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
今日のアジェンダ
・内積をグラフィカルに理解する
・分散と標準偏差の話
・相関係数の話
・回帰分析の話
・主成分分析の話 (ここまで行けないかも・・・)
本発表の内容は個人の見解で
あり、所属する組織・団体の
公式見解ではありません。
また、本発表では理解のしやすさを
優先し、一部厳密な説明となって
いない部分がありますが、
ご了承ください。
MASAKARI Come On! щ(゜ロ゜щ)
みんなで勉強しましょう
https://twitter.com/_inundata/status/616658949761302528
まずは、内積の話から。
とすると、内積とは
ベクトル を n次元ベクトル
定義 1
a = (a1, a2, · · · , an)T
,
b = (b1, b2, · · · , bn)T
a, b
a · b = a1b1 + · · · + anbn =
nX
i=1
aibi
a
b
とすると、内積とは
ベクトル を n次元ベクトル
定義 1
a = (a1, a2, · · · , an)T
,
b = (b1, b2, · · · , bn)T
a, b
a · b = a1b1 + · · · + anbn =
nX
i=1
aibi
n n
1 1
・
a
b
ベクトルからスカラに変換する
何らかの掛け算的な操作であることは
わかるが、それ以上よくわからない
ベクトル
a = (a1, a2, · · · , an)T
,
の長さ(ノルム)は、
のように、自身との内積のルートとして
表せます
a
kak2
kak =
p
a1 · a1 + · · · + an · an
=
v
u
u
t
nX
i=1
a2
i =
p
a · a
ここで余弦定理を思い出します。
kb ak2
= kak2
+ kbk2
2kakkbk cos ✓
ここで余弦定理を思い出します。
kb ak2
= kak2
+ kbk2
2kakkbk cos ✓
kb ak2
= (b a) · (b a) = a · a + b · b 2a · b
= kak2
+ kbk2
2a · b
左辺を展開すると・・・
ここで余弦定理を思い出します。
kb ak2
= kak2
+ kbk2
2kakkbk cos ✓
kb ak2
= (b a) · (b a) = a · a + b · b 2a · b
= kak2
+ kbk2
2a · b
左辺を展開すると・・・
同じなので、
ここで余弦定理を思い出します。
kb ak2
= kak2
+ kbk2
2kakkbk cos ✓
kb ak2
= (b a) · (b a) = a · a + b · b 2a · b
= kak2
+ kbk2
2a · b
左辺を展開すると・・・
消去可能!
2a · b = 2kakkbk cos ✓
) a · b = kakkbk cos ✓
ここで余弦定理を思い出します。
kb ak2
= kak2
+ kbk2
2kakkbk cos ✓
kb ak2
= (b a) · (b a) = a · a + b · b 2a · b
= kak2
+ kbk2
2a · b
左辺を展開すると・・・
2a · b = 2kakkbk cos ✓
) a · b = kakkbk cos ✓
a · b = kakkbk cos ✓
a · b = kakkbk cos ✓
定義2
よって、もう一つの内積の定義、
と同値であることがわかりました。
ここで角度 θ とは
これですね。
a · b = kakkbk cos ✓
をもうちょっと見える形で考えます。
cos ✓ =
kck
krk
cosθの定義は です。
) krk cos ✓ = kck
cos ✓ =
kck
krk
と、変形できるので、
 ¦¦c¦¦は半径の長さにcosθをかけたもの
と理解できます。
以上から、ベクトルcは、x軸に垂直方向に上から
ライトを当てた時の半径ベクトル rの影になる
部分と解釈ができます。
これを「射影」
と言ったりします。
この時、射影の長さ
は
です。
) krk cos ✓ = kck
a · b = kakkbk cos ✓
以上の議論をふまえて、内積を理解する
ベクトル の長さc
ベクトル の長さa
a
b
θ
c = kbk cos ✓
a
b
θ
c = kbk cos ✓
以上の議論をふまえて、内積を理解する
a · b = kakkbk cos ✓
ベクトル の長さc
ベクトル の長さ
つまり、同じ方向を向く
成分にあわせてあげて、
その方向の長さを
掛け算したもの!
a
a
b
θ
c = kbk cos ✓
この絵の場合、aの方向にあわせている
以上の議論をふまえて、内積を理解する
a · b = kakkbk cos ✓
ベクトル の長さc
ベクトル の長さa
つまり、同じ方向を向く
成分にあわせてあげて、
その方向の長さを
掛け算したもの!
なので、角度が垂直だと、射影した の長さ
が0になってしまうので、内積も 0 になる。
c
 逆も然り。
 内積が0だと垂直と言える。
2つのベクトル , の
   長さが1だった場合
a b
a · b = kakkbk cos ✓ = cos ✓
= 1 = 1
a · b = kakkbk cos ✓ = cos ✓
= 1 = 1
内積はcosθ
となる。
この節のまとめ
この節のまとめ
a · b = a1b1 + · · · + anbn =
nX
i=1
aibi
a · b = kakkbk cos ✓
a
b
θ
c = kbk cos ✓
内積には2つの定義があり、
射影される側のベクトルの長さが1の時は、内積は
cosθである。
計算するならこちら
意味がわかるのはこちら
ここで次に統計学の話を
carsデータセット
→ 車が走る速度と、ブレーキを踏んだ時に止まる
ことができるまでの距離のデータ(ちょっと古いです)
ヒストグラム 散布図
分散、標準偏差とは?
散らばり:小
分散  :小
散らばり:大
分散  :大
分散とは、データの
散らばりの指標。
上のグラフは散らば
りが少なく、
下のグラフは散らば
りが大きい。
xは大体20∼40の範囲
xは大体5∼55の範囲
これを、数値的な
指標で表す。
carsデータセット (speedデータ)
= ¯x =
1
n
nX
i=1
xi平均
= s2
=
1
n
nX
i=1
(xi ¯x)2
分散
標準偏差 = s =
v
u
u
t 1
n
nX
i=1
(xi ¯x)2
偏差
標準偏差 = s =
v
u
u
t 1
n
nX
i=1
(xi ¯x)2
carsデータセット (speedデータ)
= ¯x =
1
n
nX
i=1
xi平均
= s2
=
1
n
nX
i=1
(xi ¯x)2
分散 各データ平均からの差をそ
れぞれ2乗して和をとった
もの。散らばり具合の指標
偏差
分散・標準偏差の視覚的イメージ
2
= s2
=
1
n
nX
i=1
(xi ¯x)2
偏差は、単純に足し
てしまうと、釣り合っ
ているので0になる
→ 偏差2乗しているオレンジの正方形の面積を平均した
もの。下記では中心をずらしているが、最小となるのが
平均( )の位置¯x
2乗する
https://goo.gl/6DROOA
アニメーション:
分散・標準偏差の視覚的イメージ
分散のままだと、単位が面積になので元のデータの単位
と合わない。なので、ルートをとって元の単位に戻した
ものが標準偏差。
= s =
v
u
u
t 1
n
nX
i=1
(xi ¯x)2
分散・標準偏差のもう一つのイメージ
x = (x1, · · · , xn)
x0
= (x1 ¯x, · · · , xn ¯x)
データをn次元ベクトル として見てみる。x
平均 からの偏差のベクトルを¯x
とすると、その時、 の長さ はx0 kx0
k
kx0
k =
v
u
u
t
nX
i=1
(xi ¯x)2
で、表される。
分散・標準偏差のもう一つのイメージ
よって
= s =
v
u
u
t 1
n
nX
i=1
(xi ¯x)2
=
r
1
n
v
u
u
t
nX
i=1
(xi ¯x)2 =
r
1
n
kx0
k
となり、標準偏差はベクトル の長さの
一種と考えられる。
x0
kx0
k =
v
u
u
t
nX
i=1
(xi ¯x)2
x’
kx
0 k
ちなみに、
Ex: 偏差値
名前  数学  偏差 標準偏差
何個分? ← 10倍 ← + 50
田中 96 15 1.27 12.74 62.74
高橋 63 -18 -1.53 -15.29 34.71
鈴木 85 4 0.34 3.40 53.40
渡辺 66 -15 -1.27 -12.74 37.26
清水 91 10 0.85 8.50 58.50
木村 89 8 0.68 6.80 56.80
山本 77 -4 -0.34 -3.40 46.60
平均 81.00 標準偏差 11.77
これが「偏差値」
この節のまとめ
この節のまとめ
データをn次元上の1本のベクトル として見てみる。
また、平均からの偏差ベクトルを下記のように定義した
x
s =
r
1
n
v
u
u
t
nX
i=1
(xi ¯x)2 =
r
1
n
kx0
k
x0
= (x1 ¯x, · · · , xn ¯x)
このようにすると標準偏差は、
のようにベクトルの長さの一種と捉えることができる。
相関係数について
相関係数
Xの値が増加すると、Yの値も増加する → 正の相関がある
Xの値が増加すると、Yの値が減少する → 負の相関がある
これを数値化したものに「相関係数」がある。
r =
P
(xi ¯x)(yi ¯y)
pP
(xi ¯x)2
pP
(yi ¯y)2
相関係数 =
相関係数
相関係数: 1 は
完全に横軸と縦軸が
依存関係にあり、一方が増えると
もう一方も増えている。
相関係数
相関係数: -1 は
やはり、完全に横軸と縦軸が
依存関係にあり、一方が増えると
もう一方が減っている。
相関係数
相関係数: 0 は
横軸と縦軸が全くなく
一方が増えてももう一方は
それとは関係なく値が決まる。
相関係数
相関係数
r =
P
(xi ¯x)(yi ¯y)
pP
(xi ¯x)2
pP
(yi ¯y)2
相関係数 =
式をよく見てみると、
=
x0
· y0
kx0
kky0
k
あれ、これって?
相関係数
r =
P
(xi ¯x)(yi ¯y)
pP
(xi ¯x)2
pP
(yi ¯y)2
相関係数 =
式をよく見てみると、
=
x0
· y0
kx0
kky0
k
= cos ✓ 内積の定義から
cosθだ!
あれ、これって?
θ
x’
y’
データ数nのとき、n次元の
高次元空間の2本のベクトル
と見なす(平均を引いて中心を揃えてあることに注意)
相関係数
よって、データ数n次元空間上の2本のベクトルの間の
角度であると考えられる!
https://goo.gl/bXgHnc
アニメーション:
=
x0
· y0
kx0
kky0
k
= cos ✓
この節のまとめ
この節のまとめ
r =
P
(xi ¯x)(yi ¯y)
pP
(xi ¯x)2
pP
(yi ¯y)2
相関係数 =
=
x0
· y0
kx0
kky0
k
= cos ✓
2つのデータ間の相関関係を表す「相関係数」は
データをベクトルとして捉えると、n次元空間上の
2本のベクトルの間の角度と捉えることができた。
θ
x’
y’
回帰分析について
回帰分析 (単回帰分析) : carデータセット
→ スピードと距離の間に直線的な関係がありそうに
  みえる。
距離 = + スピード↵
→ スピードと距離の間に直線的な関係がありそうに
  みえる。
回帰分析
一番良い線を選ぶ基準として
点と線の間の長さを全部足し
合わせたものを最小すること
を考える。
残差
yi = ↵ + xi + ei これをiについて
和をとる
回帰分析
yi = ↵ + xi + ei
ei = yi (↵ + xi)→
min S(↵, ) = min
nX
i=1
e2
i = min
nX
i=1
{yi (↵ + xi)}2
よって、下記の最小化問題となる。(最小二乗法)
↵ + xi
yi
ei
回帰分析
→ 黒い線(残差)が最小になるようにα、βを調整する
αを変えてみる βを変えてみる
https://goo.gl/BDtIU0 https://goo.gl/jmrk07
アニメーション:アニメーション:
回帰分析
@S(↵, )
@↵
= 0
@S(↵, )
@
= 0
を解くことで、Sが最小となる
αとβを求められる。
回帰分析
前ページの計算を解くと、
ˆ↵ = ¯y ˆ¯x
となる。
ˆ =
P
(xi ¯x)(yi ¯y)
P
(xi ¯x)2
を深掘りしてみるˆ
回帰分析
前述のように、偏差をプライムで表すと、
ˆ =
P
(xi ¯x)(yi ¯y)
P
(xi ¯x)2
=
x0
· y0
kx0
k2
内積と、ベクトルの長さで
表現できる!
回帰分析
ˆ =
x0
· y0
kx0
k2
=
x0
kx0
k2
· y0
この2つのベクトルの内積と
考えられる。
x’
y’
θ
= x0
/kx0
k
ˆ
=
1
kx0k
x0
kx0k
· y0
長さ 1
はベクトルx’をかけると
射影と同じ長さのベクトル
ˆx = ky0
k cos ✓/kx0
k x
=
ky0
k
kx0k
cos ✓
スカラ ベクトル
この節のまとめ
この節のまとめ
2つのデータの間に線形関係を当てはめてみる分析手法
yi = ↵ + xi + ei
上記のモデルに対して、残差eiを最小にするα、βを
最小二乗法で求めた。
傾きに相当する はベクトル x’に掛けあわせると
ベクトル y’ の射影の長さと同じベクトルになる、と
捉えることができた。
この節のまとめ
x’
y’
θ
= x0
/kx0
k
ˆ
ˆx = ky0
k cos ✓/kx0
k x
スカラ ベクトル
主成分分析について
例:Iris(アヤメ)データセット
→ データ分析界のHello World的なデータです
ID sepal_length sepal_width petal_length petal_width target
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
5 5.4 3.9 1.7 0.4 0
6 4.6 3.4 1.4 0.3 0
7 5.0 3.4 1.5 0.2 0
8 4.4 2.9 1.4 0.2 0
9 4.9 3.1 1.5 0.1 0
…
http://blog.kaggle.com/2015/04/22/scikit-learn-video-3-machine-learning-first-steps-with-the-iris-dataset/
 アヤメの種別
0: setosa, 1: versicolor, 2: virginica
花弁
萼片
散布図を描くには、2次元にしなくてはならない。
右図は、各列の組
み合わせごとに、
散布図を書いた例
例:Iris(アヤメ)データセット
sepal_length
sepal_width
petal_length
petal_width
z1
z2
4つの特徴から、
なるべく情報を
損なわないように
2つに減らした。
z2
z1
「主成分分析」という
explained: 0.9776
例:Iris(アヤメ)データセット
情報の約98%がキープできている
3次元から2次元に落とした時のイメージ
4次元は 、もう想像できない世界だが、これと同様なことを
行って、4次元から2次元に落としたのが前ページの例
次元を落とす
面より上の点が黒
面より下の点がグレー
データ点 xi
平面に垂直に落とす
sepal_length
sepal_width
petal_length
petal_width
z1
z2
4つの特徴から、
なるべく情報を
損なわないように
2つに減らした。
z2
z1
「主成分分析」という
explained: 0.9776
主成分分析
多くの特性を持つ多変量データを、少ない個数で
総合的に特徴を表す量にまとめることを行う分析
例:Iris(アヤメ)データセット
主成分分析の仕組み (もう少し単純なデータで)
ID Math Japanese
1 20 9
2 4 2
3 12 15
4 5 10
5 10 6
6 8 11
7 1 4
8 15 9
9 5 6
数学・国語の2教科の成績データから総合的な学力の
指標を算出してみます。 2次元データを1次元に落とす
主成分分析の仕組み (2次元の例)
赤い線(長さ1のベクトル)を延長したものに垂直に
線を落としたところを、そのデータの特性値とする。
主成分分析の仕組み (2次元の例)
https://goo.gl/lAqbz5
アニメーション:
線上に落ちた点(赤い点)の分散が一番大きくなるような
角度を選ぶ。← その角度のとき、一番データを説明できている
と言える。
xi = (xi1, xi2)
1
1
長さ: kxikcos✓θ
z(1)
a
内積!
主成分としての1つ目の軸を とすると、 に対する
主成分は と表せる。 ( )
z(1) xi
z(1)i = (a · xi)a
主成分分析の仕組み (2次元の例)
=
z(1)i
=
a · xi
a = (a1, a2)T
情報損失量
この赤い点の分散を求める。
主成分分析の仕組み (2次元の例)
V(z(1)) =
1
n
nX
i=1
(z(1)i ¯z(1))2
分散
=
1
n
nX
i=1
{(a · xi) (a · ¯x)}2
中略
は軸1の分散
は軸1,2の共分散
sii
sij
¯z(1)
z(1)
= a2
1s11 + 2a1a2s12 + a2
2s22
この赤い点の分散を求める。
主成分分析の仕組み (2次元の例)
V(z(1)) =
1
n
nX
i=1
(z(1)i ¯z(1))2
分散
=
1
n
nX
i=1
{(a · xi) (a · ¯x)}2
中略
は軸1の分散
は軸1,2の共分散
sii
sij
¯z(1)
z(1)
分散を最大にするaの角度
つまり
これを最大にするa1, a2 を求める
= a2
1s11 + 2a1a2s12 + a2
2s22
主成分分析の仕組み (2次元の例)
= a2
i s11 + 2a1a2s12 + a2
2s22
ただし、
は、ベクトル が長くなればなるほど大きくなるので、
長さは1
a
kak2
= 1
という制約をつける。
以上より・・・
主成分分析の仕組み (2次元の例)
主成分分析は以下の条件つき最大化問題として解く。
s.t. kak2
= 1
max a2
1s11 + 2a1a2s12 + a2
2s22
条件つき最適化問題
「ラグランジュの未定乗数法」で解く
s.t. kak2
= 1
max a2
1s11 + 2a1a2s12 + a2
2s22
主成分分析の仕組み (2次元の例)
F(a1, a2, ) = a2
1s11 + 2a1a2s12 + a2
2s22 (a2
1 + a2
2 1)
@F
@a1
= 2a1s11 + 2a2s12 2 a1 = 0
@F
@a2
= 2a2s22 + 2a1s12 2 a2 = 0
@F
@
= a2
1 + a2
2 1 = 0
微分して0と置く
主成分分析の仕組み (2次元の例)
前ページの式を整理すると、

s11 s12
s12 s22

a1
a2
=

a1
a2
分散共分散行列の固有値問題となっている!
分散共分散行列の固有値問題?
(※ よりこれが言える)
分散共分散行列の固有値問題?
S =

s11 s12
s12 s22
=

2.0 s12
s12 5.0
例) 分散が、横軸 2.0、縦軸 5.0の場合
また、分散と共分散の関係から、共分散の上下限は
それぞれの標準偏差を掛けたものとなる。
|sij| 
p
siisjj
|a · b| = |kakkbk cos ✓|  kakkbk
上記の数値例の場合、
上下限は 13.1622
分散共分散行列の固有値問題?
例) 分散が、横軸 2.0、縦軸 5.0の、共分散0の場合
S =

s11 s12
s12 s22
=

2.0 0
0 5.0
(1, 0)
(0, 1)
(2, 0)
(0, 5)
分散共分散行列の固有値問題?
例) 分散が、横軸 2.0、縦軸 5.0の、共分散1.0の場合
(1, 0)
(0, 1) (2, 1)
(1, 5)
S =

s11 s12
s12 s22
=

2.0 1.0
1.0 5.0
分散共分散行列の固有値問題?
共分散の上下限の範囲でアニメーションしてみる。
円周上の青い点に
分散共分散行列を
掛けて線形変換した
ものが赤い点
分散共分散行列
緑と黒の線が、
固有ベクトル
https://goo.gl/WGWXWr
アニメーション:
分散共分散行列の固有値問題?
共分散の上下限の範囲でアニメーションしてみる。
分散共分散行列
https://goo.gl/rIzRCA
アニメーション:
円周上の青い点に
分散共分散行列を
掛けて線形変換した
ものが赤い点
緑と黒の線が、
固有ベクトル
分散共分散行列の固有値問題?
分散共分散行列をベクトルにかけると、ベクトルが回転と
引き延ばしされる。
固有ベクトルは、下記の楕円の場合、長い方のベクトルは長軸方向
短い方のベクトルは短軸方向を指すようになっている。
共分散=0 共分散=0.666 共分散=3.162
(上限)
分散共分散行列の固有値問題?
分散共分散行列をベクトルにかけると、ベクトルが回転と
引き延ばしされる。
固有ベクトルは、下記の楕円の場合、長い方のベクトルは長軸方向
短い方のベクトルは短軸方向を指すようになっている。
共分散=0 共分散=0.666 共分散=3.162
(上限)
固有値問題を解いて、軸の方向がわかると
ベクトル a の向きが決定できる。
主成分分析の仕組み (2次元の例)
ベクトル a の向きが決まったので、その軸上にデータ
を落として指標としたり、分類を実行したりする。
この節のまとめ
この節のまとめ
次元を削減する手法の1つとして主成分分析を紹介し、
その求め方には、内積を理解すると何をしている処理
であるか、イメージをつけやすいことを説明した。
ID sepal_length sepal_width petal_length petal_width target
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
5 5.4 3.9 1.7 0.4 0
4次元から
2次元へ
参考
・【統計学】初めての「標準偏差」(統計学に挫折しないために)
(Qiita)
http://qiita.com/kenmatsu4/items/e6c6acb289c02609e619
・【数学】固有値・固有ベクトルとは何かを可視化してみる(Qiita)
http://qiita.com/kenmatsu4/items/2a8573e3c878fc2da306
・主成分分析
  http://www.e.okayama-u.ac.jp/ nagahata/bstat/rta5syo.pdf
・今日のPythonコード on GitHub
https://github.com/matsuken92/Qiita_Contents/blob/master/
math_for_programmer/demo_math_stats_004.ipynb

More Related Content

「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料