2030 年を見据えたイノベーションと未来を考える会 ......3 アクセンチュアが発足した「2030年を見据えたイノベーションと未来を考える会―イノベーション・エグゼ
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会...
-
Upload
kenichi-matsui -
Category
Data & Analytics
-
view
38.856 -
download
3
Transcript of 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会...
線形代数が見えると 統計学も見える内積
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位に なりました!(>∀<人)
今日のアジェンダ・内積をグラフィカルに理解する ・分散と標準偏差の話 ・相関係数の話 ・回帰分析の話 ・主成分分析の話 (ここまで行けないかも・・・)
本発表の内容は個人の見解であり、所属する組織・団体の公式見解ではありません。
また、本発表では理解のしやすさを 優先し、一部厳密な説明となって いない部分がありますが、 ご了承ください。
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
aibin n
1 1
・
a
b
ベクトルからスカラに変換する 何らかの掛け算的な操作であることは わかるが、それ以上よくわからない
ベクトルa = (a1, a2, · · · , an)T,
の長さ(ノルム)は、
のように、自身との内積のルートとして 表せます
a
kak2
kak =pa1 · a1 + · · ·+ an · an
=
vuutnX
i=1
a2i =pa · 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 ✓ =
kckkrkcosθの定義は です。
) krk cos ✓ = kck
cos ✓ =
kckkrk
と、変形できるので、 ||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平均
= s
2 =1
n
nX
i=1
(xi � x)2分散
標準偏差 = s =
vuut 1
n
nX
i=1
(xi � x)2
偏差
標準偏差 = s =
vuut 1
n
nX
i=1
(xi � x)2
carsデータセット (speedデータ)
= x =1
n
nX
i=1
xi平均
= s
2 =1
n
nX
i=1
(xi � x)2分散 各データ平均からの差をそれぞれ2乗して和をとったもの。散らばり具合の指標
偏差
分散・標準偏差の視覚的イメージ
2
= s
2 =1
n
nX
i=1
(xi � x)2
偏差は、単純に足してしまうと、釣り合っているので0になる
→ 偏差2乗しているオレンジの正方形の面積を平均したもの。下記では中心をずらしているが、最小となるのが平均( )の位置
x
2乗する
https://goo.gl/6DROOAアニメーション:
分散・標準偏差の視覚的イメージ分散のままだと、単位が面積になので元のデータの単位と合わない。なので、ルートをとって元の単位に戻したものが標準偏差。
= s =
vuut 1
n
nX
i=1
(xi � x)2
分散・標準偏差のもう一つのイメージ
x = (x1, · · · , xn)
x
0 = (x1 � x, · · · , xn � x)
データをn次元ベクトル として見てみる。x
平均 からの偏差のベクトルをx
とすると、その時、 の長さ はx
0 kx0k
kx0k =
vuutnX
i=1
(xi � x)2
で、表される。
分散・標準偏差のもう一つのイメージよって
= s =
vuut 1
n
nX
i=1
(xi � x)2
=
r1
n
vuutnX
i=1
(xi � x)2 =
r1
n
kx0k
となり、標準偏差はベクトル の長さの一種と考えられる。
x
0
kx0k =
vuutnX
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 =
r1
n
vuutnX
i=1
(xi � x)2 =
r1
n
kx0k
x
0 = (x1 � x, · · · , xn � x)
このようにすると標準偏差は、
のようにベクトルの長さの一種と捉えることができる。
相関係数について
相関係数Xの値が増加すると、Yの値も増加する → 正の相関があるXの値が増加すると、Yの値が減少する → 負の相関がある ⇒ これを数値化したものに「相関係数」がある。
r =
P(xi � x)(yi � y)pP
(xi � x)2pP
(yi � y)2相関係数 =
相関係数
相関係数: 1 は 完全に横軸と縦軸が
依存関係にあり、一方が増えると もう一方も増えている。
相関係数
相関係数: -1 は やはり、完全に横軸と縦軸が 依存関係にあり、一方が増えると
もう一方が減っている。
相関係数
相関係数: 0 は 横軸と縦軸が全くなく 一方が増えてももう一方は
それとは関係なく値が決まる。
相関係数
相関係数
r =
P(xi � x)(yi � y)pP
(xi � x)2pP
(yi � y)2相関係数 =
式をよく見てみると、
=x
0 · y0
kx0kky0k あれ、これって?
相関係数
r =
P(xi � x)(yi � y)pP
(xi � x)2pP
(yi � y)2相関係数 =
式をよく見てみると、
=x
0 · y0
kx0kky0k
= cos ✓ 内積の定義からcosθだ!
あれ、これって?
θx’
y’
データ数nのとき、n次元の 高次元空間の2本のベクトル と見なす(平均を引いて中心を揃えてあることに注意)
相関係数よって、データ数n次元空間上の2本のベクトルの間の 角度であると考えられる!
https://goo.gl/bXgHncアニメーション:
=x
0 · y0
kx0kky0k = cos ✓
この節のまとめ
この節のまとめ
r =
P(xi � x)(yi � y)pP
(xi � x)2pP
(yi � y)2相関係数 =
=x
0 · y0
kx0kky0k = cos ✓
2つのデータ間の相関関係を表す「相関係数」は データをベクトルとして捉えると、n次元空間上の 2本のベクトルの間の角度と捉えることができた。
θx’
y’
回帰分析について
回帰分析 (単回帰分析) : carデータセット→ スピードと距離の間に直線的な関係がありそうに みえる。
距離 = + × スピード↵ �
→ スピードと距離の間に直線的な関係がありそうに みえる。
回帰分析
一番良い線を選ぶ基準として点と線の間の長さを全部足し合わせたものを最小することを考える。
残差
yi = ↵+ �xi + ei これを i について和をとる
回帰分析
yi = ↵+ �xi + ei
ei = yi � (↵+ �xi)→
minS(↵,�) = minnX
i=1
e
2i = min
nX
i=1
{yi � (↵+ �xi)}2
よって、下記の最小化問題となる。(最小二乗法)
↵+ �xi
yiei
回帰分析→ 黒い線(残差)が最小になるようにα、βを調整する
αを変えてみる βを変えてみる
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
=x
0 · y0
kx0k2内積と、ベクトルの長さで 表現できる!
回帰分析
� =x
0 · y0
kx0k2 =x
0
kx0k2 · y0
この2つのベクトルの内積と 考えられる。
x’
y’
θ= x
0/kx0k
�
=1
kx0kx
0
kx0k · y0
長さ 1
はベクトルx’をかけると射影と同じ長さのベクトル
ˆ�x = ky0k cos ✓/kx0k x
=
ky0kkx0k cos ✓
スカラ ベクトル
この節のまとめ
この節のまとめ2つのデータの間に線形関係を当てはめてみる分析手法
yi = ↵+ �xi + ei
上記のモデルに対して、残差eiを最小にするα、βを 最小二乗法で求めた。
傾きに相当する はベクトル x’に掛けあわせると ベクトル y’ の射影の長さと同じベクトルになる、と 捉えることができた。
この節のまとめ
x’
y’
θ= x
0/kx0k
�
ˆ�x = ky0k cos ✓/kx0k 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
長さ: kxik c
o
s
✓θ
z (1)
a
内積!
主成分としての1つ目の軸を とすると、 に対する 主成分は と表せる。 ( )
z(1) xiz(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の共分散
siisij
z(1)
z(1)
= a21s11 + 2a1a2s12 + a22s22
この赤い点の分散を求める。
主成分分析の仕組み (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の共分散
siisij
z(1)
z(1)
分散を最大にするaの角度 つまり
これを最大にするa1, a2 を求める
= a21s11 + 2a1a2s12 + a22s22
主成分分析の仕組み (2次元の例)
= a2i s11 + 2a1a2s12 + a22s22
ただし、
は、ベクトル が長くなればなるほど大きくなるので、 長さは1
a
kak2 = 1
という制約をつける。
以上より・・・
主成分分析の仕組み (2次元の例)
主成分分析は以下の条件つき最大化問題として解く。
s.t. kak2 = 1
max a21s11 + 2a1a2s12 + a22s22
条件つき最適化問題 ⇒ 「ラグランジュの未定乗数法」で解く
s.t. kak2 = 1
max a21s11 + 2a1a2s12 + a22s22
主成分分析の仕組み (2次元の例)
F (a1, a2,�) = a21s11 + 2a1a2s12 + a22s22 � �(a21 + a22 � 1)
@F
@a1= 2a1s11 + 2a2s12 � 2�a1 = 0
@F
@a2= 2a2s22 + 2a1s12 � 2�a2 = 0
@F
@�= a21 + a22 � 1 = 0
微分して0と置く
主成分分析の仕組み (2次元の例)
前ページの式を整理すると、s11 s12s12 s22
� a1a2
�= �
a1a2
�
分散共分散行列の固有値問題となっている!
分散共分散行列の固有値問題?
(※ よりこれが言える)
分散共分散行列の固有値問題?
S =
s11 s12s12 s22
�=
2.0 s12s12 5.0
�例) 分散が、横軸 2.0、縦軸 5.0の場合
また、分散と共分散の関係から、共分散の上下限は それぞれの標準偏差を掛けたものとなる。
|sij | psiisjj
|a · b| = |kakkbk cos ✓| kakkbk
上記の数値例の場合、 上下限は±13.1622
分散共分散行列の固有値問題?例) 分散が、横軸 2.0、縦軸 5.0の、共分散0の場合
S =
s11 s12s12 s22
�=
2.0 00 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 s12s12 s22
�=
2.0 1.01.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 01 4.9 3.0 1.4 0.2 02 4.7 3.2 1.3 0.2 03 4.6 3.1 1.5 0.2 04 5.0 3.6 1.4 0.2 05 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