Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2018年度 化学工学特論2 第10回

2018年度 化学工学特論2 第10回

前回の達成目標
今回の達成目標
データセットの可視化
とりあえず今日は実行できれば OK としよう!
主成分分析 (PCA) とは?
PCAの図解
PCAで できること
データセットの表し方
PCAの前に
2変数のときのPCA (3変数以上への拡張も簡単)
主成分とローディング
行列で表すと・・・
第1主成分を考える
ローディングの規格化条件
主成分の分散を最大化
Sを最大化するローディングを求める
Lagrangeの未定乗数法
Gを偏微分して 0
行列で表す
固有値問題へ
寄与率
累積寄与率
PCA を実行してみよう!
t-SNE とは?
t-SNE のイメージ
文字の定義
データの前処理
t-SNEでは何をしているか?
p(x(i), x(j)) って何?
p(x(j) | x(i)) って何?
x(i) と x(j) の距離と p(x(i), x(j)) の関係
p(x(i) | x(j)) の σi はどうする?
p(z(i), z(j)) って何?
p(z(i), z(j)) の式
目的関数 C の最小化
z(i) の初期値
perplexity をどう決めるか?

Hiromasa Kaneko

January 27, 2019
Tweet

More Decks by Hiromasa Kaneko

Other Decks in Technology

Transcript

  1. データセットの可視化 あやめのデータ・・・150 サンプル(あやめ) × 4 変数 ⽔溶解度データ・・・ 1290サンプル(化合物) × 200

    変数 (記述⼦) 4 変数 や 200 変数 の中から 2 つ (3つ) を選んで、サンプルを プロットすることで確認はできる 4 変数以上になったとき、変数全体を考慮してサンプルの様⼦を 確認するには︖ 3 主成分分析 (Principal Component Analysis, PCA) t-distributed Stochastic Neighbor Embedding (t-SNE)
  2. 主成分分析 (PCA) とは︖ 主成分分析 (Principal Component Analysis, PCA) • ⾒える化

    (可視化) する手法 • 多変量 (多次元) のデータセットを低次元化する方法 • データセットのもつ情報量をなるべく失わないように 元の次元から より低い次元でデータセットを表現 ⁃ “より低い次元” を2次元にすれば可視化を達成 5
  3. PCAの図解 6 X1 : 身⻑ 例) 15⼈の身⻑・体重データ (多次元のデータ) X2 :

    体重 PCA 第1主成分軸 第2主成分軸 第1主成分だけでも、15⼈のだいたいの情報はおさえられる
  4. PCAで できること データセットのだいたいの様⼦を⾒る • いろいろな主成分同⼠のプロットを⾒る • それぞれの主成分の角度を⾒ることで、データセットがどんな方向に 分布しているか分かる ノイズを除く •

    第4成分以降をノイズとみなして、第1,2,3主成分のみ使う、とか データセットの中で外れているサンプルを探す • PCAをした後に主成分のプロットを⾒たとき、他のサンプルと 離れているサンプルは、PCA前のサンプル同⼠も必ず離れている 変数 (PCA後は成分) の間の相関を 0 にする • 回帰分析をしたときの回帰係数の値が安定になる 7
  5. データセットの表し方 8 (1) (1) (1) 1 2 (2) (2) (2)

    1 2 ( ) ( ) ( ) 1 2 d d n n n d x x x x x x x x x ⋯ ⋯ ⋮ ⋮ ⋯ ⋮ ⋯ ( ) k i x : k 個目のサンプルにおける、i 番目の変数(記述⼦) の値 d n : 変数(記述⼦) の数 : サンプルの数 変数(記述⼦) サンプル
  6. 2変数のときのPCA (3変数以上への拡張も簡単) 10 (1) (1) 1 2 (2) (2) 1

    2 ( ) ( ) 1 2 n n x x x x x x ⋮ ⋮ サンプル 変数(記述⼦) 1 2 x x
  7. 主成分とローディング 11 ( ) ( ) ( ) ( )

    1 1 1 1 1 2 2 2 2 2 1 1 2 2 t = x x t = x x p p p p + + t i : 第 i 主成分 ( ) j i p : 第 i 主成分に対応する、j 番目の変数(記述⼦) の重み (ローディング)
  8. ⾏列で表すと・・・ 12 ( ) ( ) ( ) ( )

    (1) (1) (1) (1) 1 2 1 2 1 2 (2) (2) (2) (2) 1 1 1 2 1 2 1 2 2 2 ( ) ( ) ( ) ( ) 1 2 1 2 n n n n t t x x p p t t x x p p t t x x               =                       ⋮ ⋮ ⋮ ⋮ ( ) k i x : k 個目のサンプルにおける、i 番目の変数(記述⼦) の値 ( ) j i p : 第 i 主成分に対応する、j 番目の変数(記述⼦) の重み (ローディング) : k 個目のサンプルにおける、第 i 主成分の値 ( ) k i t
  9. Sを最大化するローディングを求める 16 ( ) ( ) ( ) ( )

    ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2 ( ) 1 1 2 1 1 ( ) ( ) 1 1 2 2 1 2 2 2 2 1 1 1 1 ( ) ( ) ( ) ( ) 1 1 1 2 1 2 2 2 1 1 1 2 n i i n i i i n n n i i i i i i i S t x p x p p x p p x x p x = = = = = = = + = + +      ( ) ( ) ( ) ( ) 2 2 1 1 1 2 = 1 p p + ( ) ( ) 1 1 1 2 , p p が規格化条件 を満たしながら S を最大化する Lagrangeの未定乗数法
  10. Lagrangeの未定乗数法 17 ( ) ( ) ( ) ( )

    ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2 2 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 ( ) ( ) ( ) ( ) 1 1 1 2 1 2 2 2 1 2 1 1 1 - 1 2 1 n n n i i i i i i i G S p p p x p p x x p x p p λ λ = = =   = − +       = + + − + −        λ を未知の定数として下の G が最大となる λ , を求める ( ) ( ) 1 1 1 2 , p p G が最大 G が極大 G を λ , で偏微分して 0 ( ) ( ) 1 1 1 2 , p p
  11. Gを偏微分して 0 18 G が最大 G が極大 G を λ

    , で偏微分して 0 ( ) ( ) 1 1 1 2 , p p ( ) ( ) ( ) ( ) ( ) ( ) 2 1 1 ( ) ( ) ( ) 1 1 1 2 2 1 1 2 1 1 ( ) ( ) ( ) 1 2 1 2 2 1 1 0 0 n n i i i i i n n i i i i i x p x x p x x p x p λ λ = = = =     − + =             + − =             ( ) ( ) ( ) ( ) 2 ( ) ( ) ( ) 1 1 1 2 1 1 1 1 2 ( ) ( ) ( ) 2 1 2 2 1 1 0 n n i i i i i n n i i i i i x x x p p x x x λ λ = = = =   −       =         −         ⾏列で表現
  12. ⾏列で表す 19 ( ) ( ) ( ) ( )

    2 ( ) ( ) ( ) 1 1 1 2 1 1 1 1 2 ( ) ( ) ( ) 2 1 2 2 1 1 0 n n i i i i i n n i i i i i x x x p p x x x λ λ = = = =   −       =         −         ( ) ( ) 1 T 0 λ − = X X E p ( ) ( ) ( ) (1) (1) 1 2 1 (2) (2) 1 1 1 2 1 2 ( ) ( ) 1 2 1 0 , , 0 1 n n x x p x x p x x           = = =                   X E p ⋮ ⋮ ただし、
  13. 固有値問題へ 20 ( ) ( ) ( ) ( )

    2 ( ) ( ) ( ) 1 1 1 2 1 1 1 1 2 ( ) ( ) ( ) 2 1 2 2 1 1 0 n n i i i i i n n i i i i i x x x p p x x x λ λ = = = =   −       =         −         以外の解をもつためには、 ( ) ( ) 1 1 1 2 0 p p = = ( ) T λ − X X E の⾏列式が 0 である必要がある λ を固有値、 p(1) に加えて p(2) を固有ベクトルとする固有値問題 ( ) ( ) 1 T 0 λ − = X X E p これによって p(1) , p(2) を求め、対応する主成分を計算する
  14. 寄与率 21 第 i 主成分に対応する固有値 λi は、その主成分の二乗和に等しい つまり、 ( )2

    ( ) 1 n j i i j t λ = =  固有値 λi を第 i 主成分のもつ情報量と仮定する 全固有値の中の λi の割合を寄与率 ci として、 第 i 主成分のもつ情報量の割合として⽤いる 1 i i m j j c λ λ = =  m : すべての主成分の数
  15. t-SNE とは︖ t-distributed Stochastic Neighbor Embedding (t-SNE) 非線形の可視化手法の一つ 写像というよりは、サンプル全体が⾒やすいように二次元平面に サンプルを配置するイメージ

    元の空間におけるサンプル間の距離関係が二次元平面における サンプル間の距離関係として保持されるほど値が⼩さくなる目的関数を 準備して、それが⼩さくなるように二次元平面にサンプルを配置させる 24
  16. 文字の定義 元の空間におけるデータセットを X とする • 変数の数 : m • サンプルの数

    : n • つまり、X は n × m の⾏列 • i 番目のサンプルを x(i) を表す 低次元空間におけるデータセットを Z とする • 今回は二次元に低次元化するため、変数の数 : 2 • サンプルの数 : n • Z は n × 2 の⾏列 • i 番目のサンプルを z(i) を表す 26
  17. t-SNEでは何をしているか︖ 28 目的関数 C を最⼩化している ( ) ( ) (

    ) ( ) ( ) ( ) ( ) ( ) ( ) 1 1 , , log , i j n n i j i j i j p C p p = = =  x x x x z z ざっくりというと、C は x(i) と x(j) の距離関係と、z(i) と z(j) との 距離関係が似ているほど⼩さくなる 元の空間におけるサンプル間の距離関係と 二次元空間におけるサンプル間の距離関係とが 同じになるように、Z を作成できる︕ 詳しくは、次のページ以降
  18. p(x(i), x(j)) って何︖ 29 p(x(i), x(j)) は、x(i) と x(j) の同時確率分布

    x(i) と x(j) の “近さ” をあらわす つまり、x(i) と x(j) が似ている (距離が⼩さい) ほど、大きくなる t-SNE では下のように定義している ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) | | , 2 j i i j i j p p p + = x x x x x x
  19. p(x(j) | x(i)) って何︖ 30 ( ) ( ) (

    ) ( ) ( ) ( ) ( ) 2 2 2 2 1 exp 2 | exp 1 2 i j i j i i k n k i p σ σ =   −   −       =   −   − −        x x x x x x p(x(j) | x(i)) は、x(i) が与えられたときの x(j) の事後確率分布 t-SNE では正規分布を仮定して下のように定義している σi : i 番目のサンプルに対応する標準偏差 分⺟の -1 は、k = 1 から n まで和を取るときに、k = i が含まれてしまうため その分を引くためのもの
  20. x(i) と x(j) の距離と p(x(i), x(j)) の関係 31 x(i) と

    x(j) の距離が近い (似ている) p(x(j) | x(i)) や p(x(i) | x(j)) が大きくなる p(x(i), x(j)) が大きくなる また、 により、 x(i) と x(j) に対して対象になっている (x(i) と x(j) を入れ替えても同じ値) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) | | , 2 j i i j i j p p p + = x x x x x x
  21. p(x(i) | x(j)) の σi はどうする︖ 周辺にサンプルが密に存在しているサンプル x(i) にとっては、 σi

    は⼩さくあるべき 周辺にサンプルがあまりないサンプル x(i) にとっては、σi は大きくあるべき 32 x(i) に対応する確率密度分布 ( p(x(1) | x(i)), p(x(2) | x(i)),…, p(x(n) | x(i)) ) の情報エントロピー(シャノンエントロピー) H を 固定して、σi を決めよう︕ ( ) ( ) ( ) ( ) ( ) ( ) 2 1 | log | n j i j i j H p p = = − x x x x 2H perplexity = t-SNE では二分探索 [1] で σi を計算 (perplexity は σi に対して単調増加なのでOK) [1] https://ja.wikipedia.org/wiki/二分探索 perplexity は事前に設定する必要がある
  22. p(z(i), z(j)) って何︖ 33 ( ) ( ) ( )

    ( ) ( ) ( ) ( ) ( ) ( ) 1 1 , , log , i j n n i j i j i j p C p p = = =  x x x x z z 評価関数 について、 p(x(i), x(j)) は OK、次は p(z(i), z(j)) p(z(i), z(j)) は、z(i) と z(j) の同時確率分布 z(i) と z(j) の “近さ” をあらわす つまり、z(i) と z(j) が似ている (距離が⼩さい) ほど、大きくなる
  23. p(z(i), z(j)) の式 34 t-SNE では自由度1の (スチューデントの) t 分布 [1]

    を仮定して 下のように定義している [1] https://ja.wikipedia.org/wiki/T分布 ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2 2 1 1 1 1 , 1 1 i j i j n n k l k l p n = =         + −   =     −     + −    z z z z z z 分⺟の -n は、和を取るときに、k = l が含まれてしまうため その分を引くためのもの
  24. 目的関数 C の最⼩化 35 目的関数 C を z(i) で偏微分すると、 (

    ) ( ) ( ) ( ) ( ) ( ) ( ) { } ( ) ( ) ( ) ( ) ( ) 2 1 , , 4 1 i j i j i j n i i j j p p C = − − ∂ = ∂ + −  x x z z z z z z z 確率的勾配降下法 [1] で z(i) を更新していく [1] https://ja.wikipedia.org/wiki/確率的勾配降下法 t-SNE ではモメンタム法を利用
  25. perplexity をどう決めるか︖ ① 試⾏錯誤によって決める 目安は、5 〜 50 の間の値 ② k3n-error

    (k-Nearest Neighbor Normalized Error for visualization and reconstruction) [1] によって最適化する こちら https://github.com/hkaneko1985/tsne に k3n-error を用いた perplexity の最適化のデモがあります 37 [1] H. Kaneko, Chemom. Intell. Lab. Syst., 176, 22-33, 2018