exercises in computer-aided problem solving 11. 統計学...情報数理学演習 exercises in...

24
情報数理学演習 Exercises in Computer-Aided Problem Solving 東北大学 大学院工学研究科 嶋田 慶太 [email protected] 11. 統計学 II 2019722日更新

Upload: others

Post on 17-Feb-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

  • 情報数理学演習

    Exercises in Computer-Aided Problem Solving

    東北大学 大学院工学研究科

    嶋田 慶太[email protected]

    11. 統計学II

    2019年7月22日更新

  • 情報数理学演習

    目次2

    • 復習

    • 共分散と相関係数

    • 共分散行列/相関係数行列

    • 共分散行列の固有値・固有ベクトル

    • 課題

    今週も

    MATLAB Grader を使います.

  • 情報数理学演習

    この授業での列ベクトルと行列の表現など(復習)

  • 情報数理学演習

    この授業での行列・列ベクトルの表現

    xi i=[1, n]

    x1⋮xn

    𝐴 =

    𝑎11 ⋯ 𝑎1𝑛⋮ ⋱ ⋮

    𝑎𝑚1 ⋯ 𝑎𝑚𝑛

    ▶ 波括弧{}で表現列ベクトル

    xi縮記 縮記

    行列 ▶大文字もしくは角括弧[]で表現

    xi yi

    誤解がない場合は

    例えば

    は i行の成分がxi, yiの n×2 行列

    例えば

    1

    は全要素が1,0の列ベクトル

    0

    * 行ベクトルは{xi}Tのように列ベクトルの転置で表す

    *世界的にこれがスタンダードというわけではないのでもし別の機会で使おうと思ったら,ルールを書いてください.

    * xのように太字もよく使う.

  • 情報数理学演習

    Octaveの統計関数(復習)5

    平均: mean▶

    分散: var▶ 不偏分散と呼ばれる

    標準偏差: std▶

    𝑥 =1

    n

    𝑖=1

    𝑛

    xi =1 𝑇 xi

    n

    V =1

    n − 1

    𝑖=1

    n

    xi− μ2 =

    xi − μ𝑇 xi − μ

    n− 1

    σ = V

  • 情報数理学演習

    csv ファイルの読み込み(Octave用)6

    >> data=csvread('cars.csv');

    >> data =

    0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

    0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

    0.00000 18.00000 8.00000 307.00000 130.00000 3504.00000 12.00000 70.00000 0.00000

    0.00000 15.00000 8.00000 350.00000 165.00000 3693.00000 11.50000 70.00000 0.00000

    0.00000 18.00000 8.00000 318.00000 150.00000 3436.00000 11.00000 70.00000 0.00000

    (pounds) (seconds for 0–60 mph (0–97 km/h))* The file copied from https://perso.telecom-paristech.fr/eagan/class/igr204/datasets

    CSVファイル読み込み: csvread▶ *CSV: Comma Separated Valueカンマ区切り

    授業のページからcars.csvをダウンロードし,変数に読み込む

    これは単なる変数名(AでもXでもよい)

    406車種に関する数値データ※csvreadは数値データしか読めず,文字列は0と置かれる

    Excel等で開いた場合

  • 情報数理学演習

    今回の授業での csv の読み込み7

    CSVファイル読み込み: csvread▶

    data=csvread('cars.csv',2,2)

  • 情報数理学演習

    共分散と相関係数

  • 情報数理学演習

    共分散と相関係数9

    Horsepower

    Weig

    ht

    (pound)

    >> plot(data(3:408,5),data(3:408,6),'o')

    Horsepower vs Weightの散布図(scatter plot)

    共分散(Covariance)▶相関(Correlation)▶

    2つの変数の間の線形関係の程度を表す似た概念

    線形的な相関性が見える.▶ 線形近似したい場合は第5回参照

    どのくらい線形相関性があるかを示す指標

  • 情報数理学演習

    共分散(Covariance of two variables)10

    negative covariance (nearly) zero positive

    定義▶

    分散との関係: ▶ 自身との共分散が分散cov▶ 共分散を求める組込み関数

    cov xi , yi =1

    n − 1

    𝑖=1

    𝑛

    xi− 𝑥 yi − 𝑦 =yi − 𝑦

    𝑇 xi − 𝑥

    n − 1

  • 情報数理学演習

    相関係数(Correlation coefficient)11

    標準偏差

    >> corr(data(3:408,5),data(3:408,6))

    ans = 0.84081

    定義▶ ピアソンの相関係数共分散を標準偏差で規格化

    corr▶

    相関係数は[-1,1] の値を取る

    正の相関 負の相関相関なし

    相関係数を求める組込み関数

    r xi , yi =yi − y

    𝑇 xi − x

    yi− y xi− x◀ 分子・分母の(n-1)がキャンセルされベクトルの方向余弦

  • 情報数理学演習

    相関に関する注意12

    相関関係は因果関係にあらず▶例: ノーベル賞とチョコレートの消費量には相関はあっても因果があるとは言えない.▶ チョコレートは嗜好品なので,チョコレートを食べられるほど「豊か」である「かもしれない」▶ 主食をチョコレートに切り替えてもノーベル賞は多分取れない.

    依存関係は相関関係も混同されがち▶

    相関係数は線形的関係しか扱えない▶

    これらの相関係数は0 である.

  • 情報数理学演習

    共分散行列と相関係数行列

    内積で共分散が求まるのだから,行列を転置して掛合せれば一発で全部求まる

  • 情報数理学演習

    共分散行列・相関行列14

    “car.csv” には 7変数 406種類のデータがある

    共分散および相関に関して,自身とを含め,7×7の行列を作れる.

    x1,1x2,1・・・

    x406,1

    x1,2x2,2・・・

    x406,2

    x1,7x2,7・・・

    x406,7

    x1 x2 x7

    xi,j = xi,j− xj列ベクトル平均

    X =

    x1,1 − x1x2,1 − x1・・・

    x406,1 − x1

    X =x1,2 − x2x2,2 − x2・・・

    x406,2 − x2

    x1,7 − x7x2,7 − x7・・・

    x406,7− x7

    cov X = X𝑇 X

  • 情報数理学演習

    共分散行列・相関行列15

    >> X=data(3:408,2:8);

    >> size(X)

    ans =

    406 7

    >> cov(X)

    ans =

    7.0590e+01 -1.0581e+01 -6.7374e+02 -2.4739e+02 -5.6042e+03 9.9981e+00 1.8464e+01

    -1.0581e+01 2.9315e+00 1.7098e+02 5.7130e+01 1.2983e+03 -2.5077e+00 -2.3155e+00

    -6.7374e+02 1.7098e+02 1.1009e+04 3.7148e+03 8.2869e+04 -1.6412e+02 -1.5014e+02

    -2.4739e+02 5.7130e+01 3.7148e+03 1.6419e+03 2.8858e+04 -7.7476e+01 -6.3788e+01

    -5.6042e+03 1.2983e+03 8.2869e+04 2.8858e+04 7.1742e+05 -1.0212e+03 -1.0014e+03

    9.9981e+00 -2.5077e+00 -1.6412e+02 -7.7476e+01 -1.0212e+03 7.8588e+00 3.1737e+00

    1.8464e+01 -2.3155e+00 -1.5014e+02 -6.3788e+01 -1.0014e+03 3.1737e+00 1.4053e+01

    >> corr(X)

    ans =

    1.00000 -0.73556 -0.76428 -0.72667 -0.78751 0.42449 0.58623

    -0.73556 1.00000 0.95179 0.82347 0.89522 -0.52245 -0.36076

    -0.76428 0.95179 1.00000 0.87376 0.93247 -0.55798 -0.38171

    -0.72667 0.82347 0.87376 1.00000 0.84081 -0.68205 -0.41993

    -0.78751 0.89522 0.93247 0.84081 1.00000 -0.43009 -0.31539

    0.42449 -0.52245 -0.55798 -0.68205 -0.43009 1.00000 0.30199

    0.58623 -0.36076 -0.38171 -0.41993 -0.31539 0.30199 1.00000

    先に計算したhorsepower-weight correlation

    cov と corr▶引数に行列を与えると,各列ベクトルを変数とする共分散行列,相関行列を計算する

    どちらも対称行列

  • 情報数理学演習

    共分散行列の固有値・固有ベクトル

  • 情報数理学演習

    分散共分散行列の固有値・固有ベクトル17

    >> load('3d_ptdata.m')

    >> size(X)

    ans =

    10000 3

    >> plot3(X(:,1),X(:,2),X(:,3),'.');

    >> axis equal;

    データセットの準備▶ e11files.zipをダウンロード▶ 解凍して作業ディレクトリに置く

    XYZ空間内で傾いた方向にプロットが集中

    3d_ptdata.m の中身

    2行目: name: X ▶ 変数名がX3行目: type: matrix ▶ 行列形式4行目: rows: 10000 ▶ 10000行5行目: columns: 3 ▶ 3列のデータであることが分かる.

  • 情報数理学演習

    分散共分散行列の固有値・固有ベクトル18

    >> [V,W]=eig(cov(X))

    V =

    0.867213 -0.208827 -0.452032

    0.496518 0.431157 0.753375

    0.037571 -0.877778 0.477591

    W =

    Diagonal Matrix

    0.98420 0 0

    0 9.05693 0

    0 0 103.15470

    >> Y=(X-mean(X))*V;

    >> plot3(Y(:,1),Y(:,2),Y(:,3),'.');

    >> axis equal;

    分散共分散行列 cov(X)を固有分解する

    固有値▶ばらつく幅▶ 大きいほど特徴が出る(この例では新しいZ軸方向)

    ▶ cov(X): 対称行列(A = AT)▶ 直交行列(A-1 = AT)で対角化可能

    W = V𝑇 X𝑇 XV新しい座標系

    Y = XVと座標変換すると,

    主成分分析(PCA)という

  • 情報数理学演習

    課題

    1

    9

  • 情報数理学演習

    主成分分析 (Exercises 11.1の準備)22

    >> imshow(reshape(X(100,:),[112,92])/255)

    例100番目の画像の表示:

    reshape: 行列を変形させる関数

    この場合Xの100列目を112×92行列に変形

    112行×92列にしimshowで表示

    load_faces

    for i = 1:10

    subplot(2,5,i); imshow(reshape(X(i,:),[112,92])/255)

    endfor

    スクリプト例: 1-10の写真を並べる

    X

    各列に0~255の値のデータが格納されている.

    imshow:画像表示の関数

    (0~1の値で扱う)

    imshowで扱えるよう,

    データを規格化

    1~112が1列目113~224が2列目…(転置して格納されている)

    ▼i番目の写真の場所

  • 情報数理学演習

    主成分分析 (Exercises 11.1の準備 )23

    >> [U,W,V]=svds(X-mean(X),20);

    svds▶ 指定した個数の特異値とベクトルを大きい方から求める

    先述の X行列

    最初の数個の特異値(すなわち,固有値の平方根):大

    他の特異値:小

    データは

    低次元の部分空間に存在

    共分散行列Xの最初の20個の固有値を求めよう.

    各顔データ点 ▶各画像(92×112 = 10304)次元

    顔データ個数:400個 ▶ cov(X)の計算 4002×103042回の掛け算を要する.▲

    一要素のための計算▲10304×10304行列

    そのまま >> cov(X) してはいけない!…こともないのだが,今回はやめよう.

    !

    各人から平均を引いたもの ▶個性・特徴が残る(?)

    平均顔(?

    各顔のピクセル平均

    X

  • 情報数理学演習

    今回の特異値分解の解釈24

    400×400 10304×10304400×10304

    400人×10304 pixel U W VT

    個性行列

    固有顔行列

    重み行列対角成分をw1, w2, … とする

    .......

    v1T

    v2T

    v3T

    ▲k 番目の顔を復元する場合

    .......

    Uの k 行目を取り出し,W と VT を順次掛ける

    uk1w1v1T + uk2w2v2

    T + uk3w3v3T…

    u: 個人の「個性」に依存する重みw: ベクトルの重み(重要度ともいえる)v: 固有顔

    固有顔viに個性の重みを付け,どんどん重ね合わせる「版画」のイメージ

    X分解

  • 情報数理学演習

    今回の特異値分解の解釈25

    mean+uk1w1v1T + uk2w2v2

    T + uk3w3v3T… +uk400w400v400

    T

    元の顔に戻る 400個の顔版画(V)に分解しており,個性(U)と版の重要性(W)に応じ重ねると元に戻せる,というようなイメージ

  • 情報数理学演習

    Exercise1126

    face=V(:,1);

    imshow(reshape(face,[112,92]),[min(face),max(face)])

    1. 前述の特異値分解に基づき,20個の固有値をプロットせよ.

    2. V(固有顔)の上位4個のパターンを表示せよ.

    3. 31番目の顔写真を特異値分解から得られた20個の固有顔を用いて復元し,元の画像と並べて表示せよ.

    白黒の濃度の調整について

    絵に含まれる最大値と最小値に合わせて白黒を割り振る場合

    ◀ 扱いやすいように適当な変数に入れ替え

    imshow の引数として白黒の上限,下限値を入れられる.