閃 き

閃き- blog

きらびやかに、美しく、痛烈に.

正則行列と正規行列(ムーア・ペンローズ逆行列, エルミート行列, ユニタリー行列)

https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Linear_subspaces_with_shading.svg/1200px-Linear_subspaces_with_shading.svg.png


N×Nの正方行列:  {\bf A}=\left(
    \begin{array}{cccc}
      a_{11} & a_{12} & \ldots & a_{1N} \\
      a_{21} & a_{22} & \ldots & a_{2N} \\
      \vdots & \vdots & \ddots & \vdots \\
      a_{N1} & a_{N2} & \ldots & a_{NN}
    \end{array}
  \right) について考える。


1. 正則行列


以下の命題は同値である。

 f_{A}({\bf x})={\bf Ax} を満たす写像  f_{A}:{{\mathbb{R}}^{N}}~{\to}~{{\mathbb{R}}^{N}}を、 \mathrm{N} 次行列  {\bf A}に対応する1次変換とする。

  • 行列 {\bf A} に対して、  {\bf A}{\bf A^{-1}}~=~{\bf I} を満たす逆行列  {\bf A^{-1}}が存在する
  • 行列 {\bf A} に対して、行列式  |{\bf A}|~{\neq}~0 である。
  • 行列 {\bf A} に対して、 rank({\bf A})~=~{\mathrm{N}} である。
  • 行列 {\bf A} に対して、すべての固有値 0 ではない。
  • 行列 {\bf A} に対して、連立1次方程式「 {\bf Ax}={\bf b}」が唯一解をもつ。
  • 行列 {\bf A} に対して、連立1次方程式「 {\bf Ax}={\bf 0}」の解は  {\bf x}~=~{\bf 0} のみ。
  • 行列 {\bf A} に対して、 {\bf A} の列ベクトル  ({\bf a_{1}},~{\bf a_{2}},~{\cdots},~{\bf a_{N}}) は一次独立。
  • 行列 {\bf A} に対して、 f_{A}は 「全単射」である。
  • 行列 {\bf A} に対して、 f_{A} Imf_{A}={\mathbb{R}}^{N}をみたす。
  • 行列 {\bf A} に対して、 f_{A} Kerf_{A}=\{ {\bf 0} \}をみたす。

2. ムーア・ペンローズ逆行列


以下の性質(1)〜(4)を満たす行列 {\bf A^{+}}を、「行列 \bf Aに対するムーア・ペンローズ逆行列」という。

(1) {\bf A}{\bf A^{+}}{\bf A}~=~{\bf A}

(2) {\bf A^{+}}{\bf A}{\bf A^{+}}~=~{\bf A^{+}}

(3) {({{\bf A^{+}}{\bf A}})}^{\mathrm{T}}~=~{\bf A^{+}}{\bf A}

(4) {({{\bf A}{\bf A^{+}}})}^{\mathrm{T}}~=~{\bf A}{\bf A^{+}}


ある行列 \bf Aに対して、(1)を満たす行列 \bf A^{+}は複数あり、これを「一般逆行列」という。
ある行列 \bf Aに対して、(1)〜(4)を満たす行列 \bf A^{+}はただ1つに定まり、これを「ムーア・ペンローズ逆行列」という。

また、 {{\bf A^{+}}{\bf A}} {{\bf A}{\bf A^{+}}}はエルミート行列である。

3. 正規行列

以下の命題は同値である。

  • 行列 {\bf A} は正規行列である。
  • 行列 {\bf A} に対して、  {\bf A^{\mathrm{*}}}{\bf A}={\bf A}{\bf A^{\mathrm{*}}}が成り立つ。
  • 行列 {\bf A} に対して、 {\bf A} は対角化可能である。


※ 随伴行列 {\bf A}^{*}

一般に、行列 {\bf A} の随伴行列 {\bf A}^{*}は、 {\bf A}の「転置行列」を各成分において「複素共軛(実部はそのままで虚部の符号を反転する)」したものとして定義される。

なお、 {\bf A} が複素行列である場合、以下の等式が成り立つ。

    {\bf A}^{*}=\overline{{\bf A}^{-1}}

さらに、 {\bf A} が実行列である場合、以下の等式が成り立つ。

    {\bf A}^{*}={\bf A}^{-1}


4. エルミート行列とユニタリー行列(複素行列への拡張)

N×Nの複素正方行列:  {\bf A}に対して、以下の呼び名が定義される。

  1. 行列 {\bf A} が「対称行列」である。     ~{\Leftrightarrow}~~~{\bf A}={\bf A^{\mathrm{T}}}
  2. 行列 {\bf A} が「直交行列」である。     ~{\Leftrightarrow}~~~{\bf A}{\bf A^{\mathrm{T}}}={\bf I}
  3. 行列 {\bf A} が「エルミート行列」である。  ~{\Leftrightarrow}~~~{\bf A}={\bf A^{\mathrm{*}}}
  4. 行列 {\bf A} が「ユニタリー行列」である。  ~{\Leftrightarrow}~~~{\bf A}{\bf A^{\mathrm{*}}}={\bf I}


ここで、「対称行列」「直交行列」「エルミート行列」「ユニタリー行列」はいずれも正規行列であり、対角化可能となる。
エルミート行列は、対称位置にある成分が互いに複素共役になっている。

https://mathwords.net/wp-content/uploads/2016/09/erumiito-300x163.png

5. まとめ


◯「逆行列」  (→正方行列である前提を拡張すると...) 「ムーア・ペンローズ逆行列

◯「対称行列」 (→実行列である前提を拡張すると...)  「エルミート行列」
 
◯「直交行列」 (→実行列である前提を拡張すると...)  「ユニタリー行列」

多変量ガウス分布についてのベイズ推定(周辺分布, 条件付き分布)

http://www.labtimes.org/labtimes/method/methods/img/2011_04b.jpg


1. ガウス分布の定義式


ガウス分布(1次元 or 基底が1コ)

\begin{align}
\mathcal{N}(x~|~\mu,~\sigma^2)={\frac{1}{(2\pi\sigma^2)^{\frac{1}{2}}} {\exp\{-\frac{1}{2 {{\sigma}^2}} (x-\mu)^2\}}}
\end{align}


◯多変量ガウス分布(D次元 or 基底がDコ)

\begin{align}
\mathcal{N}({\bf x}~|~{\bf \mu},~{\bf \Sigma})={\frac{1}{(2\pi)^{\frac{D}{2}} {|{\bf \Sigma}|}^{\frac{1}{2}}} {\exp\{-{\frac{1}{2}} {({\bf x}-{\bf \mu})^{\mathrm{T}}} {{\bf \Sigma}^{-1}}{({\bf x}-{\bf \mu})}\}}}
\end{align}


 \bf \mu : D次元の平均ベクトル
 \bf \Sigma : D×Dの共分散行列
 \bf |\Sigma| \bf \Sigma行列式

2.ガウス分布の共役性とベイズ推定


◯多変量ガウス分布の周辺分布と条件付き分布

(2a.)  {\bf x}の周辺分布   :  p({\bf x})~~~~~ = ~ \mathcal{N}({\bf x}~|~{\bf \mu},~~{\bf \Lambda}^{-1})
(2b.)  {\bf y}の条件つき分布 :  p({\bf y}~|~{\bf x}) = ~ \mathcal{N}({\bf y}~|~{\bf Ax+b},~~{\bf L}^{-1})
(2c.)  {\bf y}の周辺分布   :  p({\bf y})~~~~~ = ~ \mathcal{N}({\bf y}~|~{\bf Ax+b},~~{\bf L}^{-1}+{\bf A{\Lambda}^{-1}A^{\mathrm{T}}})
(2d.)  {\bf x}の条件付き分布 :  p({\bf x}~|~{\bf y}) = ~ \mathcal{N}({\bf x}~|~{\bf \Sigma\{{A}^{-1}L(y-b)+\Lambda\mu\}},~~{\bf \Sigma})

   ※  p({\bf x}~|~{\bf y})の共分散行列  \Sigmaについて、 \bf \Sigma~=~(\Lambda+A^{T}LA)^{-1}である。


ここで、ベイズの定理によって(2a.)~(2d.)をまとめると、

   {\lceil}~~p({\bf x}~|~{\bf y})=\frac{\large p({\bf y}~|~{\bf x})~p({\bf x})}{\large p({\bf y})}~~{\rfloor}~~~~{\longleftrightarrow}~~~~~{\lceil}~~(2d.)=\frac{\large (2b.)(2a.)}{\large (2c.)}~~{\rfloor}

より以下の式を得られる。


 \mathcal{N}\left( {\bf x}~|~{\bf \Sigma\{{A}^{-1}L(y-b)+\Lambda\mu\}},~~{\bf \Sigma} \right)~~=~~\frac{\Large \mathcal{N}({\bf y}~|~{\bf Ax+b},~~{\bf L}^{-1})~\mathcal{N}({\bf x}~|~{\bf \mu},~~{\bf \Lambda}^{-1})}{\Large \mathcal{N}({\bf y}~|~{\bf Ax+b},~~{\bf L}^{-1}+{\bf A{\Lambda}^{-1}A^{\mathrm{T}}})}



3. 線形基底関数モデル

3.1 モデルの一般式

線形基底関数モデル」の一般形は以下の式で表現できる。

 y({\bf x},~{\bf w})線形基底関数と呼び、これは入力変数 {\bf x}、基底関数 \phi{(\bf x)}、重みパラメータ {\bf w}によって表現される。

   y({\bf x},~{\bf w})~=~{\bf w}^{\mathrm{T}}\phi({\bf x})~=~\sum_{j=0}^{M-1} {w_j}{\phi_j({\bf x})}~=(w_0,~w_1,~{\cdots},w_{M-1})~\left(\begin{array}{ccc}\phi_0({x_0}) \\\phi_1({x_1})\\\vdots\\\phi_{M-1}({x_{M-1}})\end{array}\right)

   {\bf x},~~\phi{(\bf x)},~~{\bf w}はベクトルであり、各要素を以下のように表す。


   入力変数{\bf x} = \left(
   \begin{array}{ccc}
      x_0 \\
      x_1\\
      \vdots\\
      x_{D-1}
    \end{array}
  \right)
,~~~基底関数{\phi}({\bf x}) = \left(
   \begin{array}{ccc}
      \phi_0({x}) \\
      \phi_1({x})\\
      \vdots\\
      \phi_{M-1}({x})
    \end{array}
  \right)
,~~~パラメータ{\bf w} = \left(
   \begin{array}{ccc}
      {w_0} \\
      {w_1}\\
      \vdots\\
      {w_{M-1}}
    \end{array}
  \right)


3.2 基底関数  \phi_j(x)線形基底関数 y({\bf x},~{\bf w})

(1)線形基底

  基底関数: \phi_j({\bf x})~=~x_j~~~{\scriptsize (j~=~0,~1,~...,~M-1)}


  よって、線形基底を用いた線形基底関数 y({\bf x},~{\bf w})について、

   {\lceil}~y({\bf x},~{\bf w})~=~{\bf w}^{\mathrm{T}}\phi({\bf x})~=~\sum_{j=0}^{M-1} {w_j}{\phi_j({\bf x})}~{\rfloor} に、 \phi_j({\bf x})を代入すると次式を得る。

   y({\bf x},~{\bf w})~=~\sum_{j=0}^{M-1} {w_j}{x_j}~=(w_0,~w_1,~{\cdots},w_{M-1})~\left(\begin{array}{ccc}{x_0}\\{x_1}\\\vdots\\{x_{M-1}}\end{array}\right)


(2)多項式基底

  基底関数: \phi_j(x)~=~{x}^{j}~~~{\scriptsize (j~=~0,~1,~...,~M-1)}


  よって、多項式基底を用いた線形基底関数 y({\bf x},~{\bf w})について、

   {\lceil}~y({\bf x},~{\bf w})~=~{\bf w}^{\mathrm{T}}\phi({\bf x})~=~\sum_{j=0}^{M-1} {w_j}{\phi_j({\bf x})}~{\rfloor} に、 \phi_j({\bf x})を代入すると次式を得る。

   y({\bf x},~{\bf w})~=~\sum_{j=0}^{M-1} {w_j}{x^j}~=(w_0,~w_1,~{\cdots},w_{M-1})~\left(\begin{array}{ccc}{1}\\{x^1}\\\vdots\\{x^{M-1}}\end{array}\right)


(3)ガウス基底(ガウス関数

  基底関数: \phi_j(x)~=~\exp{\large \{-\frac{{({x_j}-\mu_j)}^2}{2{s_j}^2}\}}~~~{\scriptsize (j~=~0,~1,~...,~M-1)}


  よって、ガウス基底を用いた線形基底関数 y({\bf x},~{\bf w})について、

   {\lceil}~y({\bf x},~{\bf w})~=~{\bf w}^{\mathrm{T}}\phi({\bf x})~=~\sum_{j=0}^{M-1} {w_j}{\phi_j({\bf x})}~{\rfloor} に、 \phi_j({\bf x})を代入すると次式を得る。

   y({\bf x},~{\bf w})~=~\sum_{j=0}^{M-1} {w_j}{\exp{\{-\frac{{({x_j}-\mu_j)}^2}{2{s}^2}\}}}~=~(w_0,~w_1,~{\cdots},w_{M-1})~\left(\begin{array}{ccc}{\exp{\{-\frac{{({x_0}-\mu_0)}^2}{2{s_0}^2}\}}}\\{\exp{\{-\frac{{({x_1}-\mu_1)}^2}{2{s_1}^2}\}}}\\\vdots\\{\exp{\{-\frac{{({x_{M-1}}-\mu_{M-1})}^2}{2{s_{M-1}}^2}\}}}\end{array}\right)


(4)ロジスティック基底(シグモイド関数

  基底関数: \phi_j(x)~=~\sigma(\large \frac{{x_j}-\mu_j}{s_j})~=~{\large \frac{1}{1~+~\exp(-\frac{{x_j}-\mu_j}{s_j})}}~~~{\scriptsize (j~=~0,~1,~...,~M-1)}


  よって、ロジスティック基底を用いた線形基底関数 y({\bf x},~{\bf w})について、

   {\lceil}~y({\bf x},~{\bf w})~=~{\bf w}^{\mathrm{T}}\phi({\bf x})~=~\sum_{j=0}^{M-1} {w_j}{\phi_j({\bf x})}~{\rfloor} に、 \phi_j({\bf x})を代入すると次式を得る。

  
   y({\bf x},~{\bf w})~=~\sum_{j=0}^{M-1} {w_j}{\sigma({\large \frac{{x_j}-\mu_j}{s_j}})}~=~(w_0,~w_1,~{\cdots},w_{M-1})~\left(\begin{array}{ccc}{\sigma(\large \frac{{x_0}-\mu_0}{s_0})}\\{\sigma(\large \frac{{x_1}-\mu_1}{s_1})}\\\vdots\\{\sigma(\large \frac{{x_{M-1}}-\mu_{M-1}}{s_{M-1}})}\end{array}\right)

    ※ シグモイド関数 \sigma(a)の一般形: \sigma(a)~=~{\large \frac{1}{1+\exp(-a)}}


(5)フーリエ基底

  基底関数: \phi_j(x)~=~\exp(i{\omega}jx)~=~\exp({\frac{2{\pi}i}{T}}jx)~~~{\scriptsize (j~=~0,~1,~...,~M-1)}



(6)ウェーブレット基底

  基底関数: \phi_j(x)~=~{{\psi_k}^{j}(x)}~=~\psi({\large \frac{x}{2^{j}}}-k)~~~{\scriptsize (j~=~0,~1,~...,~M-1)}


4. ガウスノイズを仮定した回帰問題

4.1 前提

◯回帰問題の目的
「与えられた D次元の入力変数  \bf x_jから,  1次元の目標変数  t_jの値を予測する」

 ~~~「入力データ」:({\bf x_1},~{\bf x_2},~{\cdots},~{\bf x_N})~~~{\longleftrightarrow}~~~「目標データ」:({t_1},~{t_2},~{\cdots},~{t_N})


◯問題設定
入力変数 {\bf x_j}~{\small( j=0...M)}に対応する目標変数  t_n~{\small(n=0...N)}は、線形回帰モデル  y({\bf x},~{\bf w})によって求める。

ここで、ベイズの定理によって、 t, w, xの関係を整理する。

 ~~~「入力データ」:{\bf x}~~~{\longleftrightarrow}~~~「目標データ」:t

 {\lceil}~~p({\bf w}~|~{t})=\frac{\large p({t}~|~{\bf w})~p({\bf w})}{\large p({\bf t})}~~{\rfloor}

4.2 頻度主義的な回帰

回帰モデルには、線形基底関数 y({\bf x},~{\bf w})を用いる。

   y({\bf x},~{\bf w})=\sum_{j=0}^{M-1}  {w_j}\phi_j(\bf x)~=~{{\bf w}^{\mathrm{T}}}\phi({\bf x})

   t=y({\bf x},~{\bf w})+\epsilon

ここで、 \epsilonの確率分布が(平均 0, 精度 \beta^{-1})のガウス分布に従うと仮定する。(加法性ガウスノイズ)
すると、

   p(t~|~{\bf x},~{\bf w},~{\beta})~=~N(t~|~y({\bf x},~{\bf w}),~~{\beta^{-1}})~=~N(t~|~{{\bf w}^{\mathrm{T}}}\phi({\bf x}),~~{\beta^{-1}})





4.3 ベイズジアン風の回帰

 {\lceil}~~p({\bf w}~|~{t})=\frac{\large p({t}~|~{\bf w})~p({\bf w})}{\large p({\bf t})}~~{\rfloor}~~~~{\longleftrightarrow}~~~~~{\lceil}~~({\bf w}の事後分布)=\frac{\large (tの尤度)(wの事前分布)}{\large (tの予測分布)}~~~~~~~~{\rfloor}

(3a.)  {\bf w}の事前確率  :  p({\bf w}~|~{\alpha})~~~~~~~~~~~~~~~~=~N({\bf w}~|~{\bf 0},~~{{\alpha}^{-1}}{\bf I})
(3b.)  {t}の尤度    :  p({\bf t}~|~{\bf w},~~{\bf x},~~{\beta})~~~~~=~N({t}~|~{y({\bf x},~{\bf w})},~~{\beta}^{-1})
(3c.)  {t}の予測分布  :  p({t}~|~{x},~~{\bf t},~~\alpha,~~\beta)~~=~N({t}~|~{\bf m_N}^{\mathrm{T}}\phi({\bf x}),~~{{\beta}^{-1}+{{\phi}(\bf x)}^{\mathrm{T}}}{\bf S_N}{\phi}({\bf x}))
(3d.)  {\bf w}の事後確率  :  p({\bf w}~|~{\bf t},~~\alpha,~~\beta)~~~~~~=~N({\bf w}~|~{\beta}~{\bf S_N{\Phi}^{\mathrm{T}}t},~~{\bf S_N})

群論入門・写像〜群の定義まで

https://cdn-ak.f.st-hatena.com/images/fotolife/Z/Zellij/20121211/20121211230653.png

群論、難しい...。
頭の中でルービックキューブやあみだくじを想像して、なんとか概念を理解したい。

1.写像

1.1 写像に関する諸概念

写像
集合X, Yに対して、集合Xの各元をそれぞれ集合Yの1つの元に対応させる。
この操作を「XからYへの写像」といい、以下のように書く。
\begin{align}
f: X→Y
\end{align}

Xの元aYの元bに対応しているとき、bを「fによるa写像」といい、以下のように書く。
\begin{align}
b=f(a)
\end{align}

fの定義域・終域・値域
写像f: X→Yに対して、集合X, Yを「fの定義域」「fの終域」といい、Yの部分集合f(x)を「fの値域」といい「f(x)」と書く。
\begin{align}
f: X→Y\\
(fの定義域)=X\\
(fの終域)=Y\\
(fの値域)=\{f(x) ~|~ x~{\in}~X\}
\end{align}

fの像
Xの部分集合Aに対して、以下で示すYの集合を「fによるAの像」といいf(A)と書く。
\begin{align}
集合:f(A)~=~\{f(x)~|~x~{\in}~A\}
\end{align}
また、Xの元aに対して、以下で示すYの元を「fによるaの像」といい、f(a)と書く。
\begin{align}
元:f(a)~=~\{f(x)~|~x~=~a\}
\end{align}

fの逆像
Yの部分集合Bに対して、以下で示すXの集合を「fによるBの逆像」といいf^{-1}(B)と書く。
\begin{align}
集合:f^{-1}(B)~=~\{x~{\in}~X~|~f(x)~{\in}~B\}
\end{align}
また、Yの元bに対して、以下で示すXの集合\{x{\in}X\}を「fによるbの逆像」といい、f^{-1}(b)と書く。
\begin{align}
集合:f^{-1}(b)~=~\{x~{\in}~X~|~f(x)=b\}
\end{align}

1.2. 単射全射全単射

単射
集合Xから集合Yへの写像f: X→Yに対して、X上の任意の2つの元a{\neq}bにおいて、fの像がf(a){\neq}f(b)が成り立つとき、写像fを「XからYへの単射」という。
\begin{align}
f: X→Y\\
a~{\neq}~b~{\Rightarrow}~f(a)~{\neq}~f(b)
\end{align}

全射
集合Xから集合Yへの写像f: X→Yに対して、fの値域がYと一致する時、写像fを「XからYへの全射」という。
\begin{align}
f: X→Y\\
\{f(x)~|~x~{\in}~X\}~{\equiv}~Y
\end{align}

全単射
集合Xから集合Yへの写像f: X→Yに対して、fが「全射かつ単射」である時、写像fを「XからYへの全単射」という。
\begin{align}
f: X→Y\\
a~{\neq}~b~{\Rightarrow}~f(a)~{\neq}~f(b)~かつ~\{f(x) ~|~ x~{\in}~X\}~{\equiv}~Y
\end{align}

2.置換

2.1 置換(および互換)に関する諸概念

◯ 集合X上の置換
集合Xから集合Yへの全単射のうち、とくにX=Yであるものを「集合X上の置換」という。
n個の元\{a_1, ... a_n\}をもつ有限集合\Omegaの置換は以下のように書ける。
\begin{align}
\left(
\begin{array}{ccc}
a_1 & a_2 & a_3 & ... & a_n \\
f(a_1) & f(a_2) & f(a_3) & ... & f(a_n)
\end{array}
\right)
\end{align}


◯ 集合X上の互換
集合X上の置換のうち、とくにX上の異なる2つの元a, bの取り替え(=交換)になっているものを「集合X上の互換」といい「(\alpha~~\beta)」と書く。
有限集合\Omegaの互換は以下のように書ける。
\begin{align}
\left(
\begin{array}{ccc}
\alpha & \beta \\
\beta & \alpha
\end{array}
\right)
\end{align}


◯ 恒等置換e(恒等写像ともいう)
集合Xの任意の元xを集合Xxへ対応させる写像も、集合X上の置換であるが、これを特に「集合X上の恒等置換」といい「e」で表す。


◯巡回置換
→略


◯偶置換と奇置換
定理1:集合\Omega上の任意の置換f, gに対して、fgの合成f{\circ}g\Omega上の置換となる。
定理2:集合{\Omega}=\{1,2,3,..., n\}上の任意の置換fは、次の互換のうち、いくつかの重複を含めた合成によって表される。
\begin{align}
(1~~2), (2~~3), (3~~4), ..., (n-1~~n)
\end{align}
定理3:集合{\Omega}=\{1,2,3,..., n\}上の任意の置換fは、いくつかの互換h_1, h_2, ..., h_lの合成置換h_1{\circ}h_2{\circ} ..., {\circ}h_lとして表され、「lが偶数であるか奇数であるか」は置換fに対して一意に定まる。

よって、定理3より、「偶置換」と「奇置換」を以下のように定義する。
ー偶置換 f:「 f~=~h_1{\circ}h_2{\circ} ..., {\circ}h_l」とすると、lが偶数。
ー奇置換 f:「 f~=~h_1{\circ}h_2{\circ} ..., {\circ}h_l」とすると、lが奇数。

2.2 置換群

n個の元を持つ任意の有限集合\Omegaに対して、「置換」操作を行うとさまざまな集合が得られる。これらの集合は「n次置換群」「n次対称群」「n次交換群」に整理・分類することができる。

◯ n次対称群 S_nの定義
n個の元を持つ任意の有限集合\Omegaに対して、\Omega上の置換全体からなる集合を「n次対称群」といいS_nで表す。S_nは次の性質を満たす。
(S1)S_nの任意の元 f, gに対して、f{\circ}gS_nの元である
(S2)S_nの任意の元f, g, hに対して、結合法則が成り立つ。
    (f{\circ}g){\circ}h=f{\circ}(g{\circ}h)
(S3)S_nにある元eがあって、S_nの任意の元fに対して、次の式を満たす。
    f{\circ}e=e{\circ}f=f
(S4)S_nの任意の元fに対して、次の式を満たすS_nの元gがある。
    f{\circ}g=g{\circ}f=f


◯ n次交代群  A_nの定義
n個の元を持つ任意の有限集合\Omegaに対して、\Omega上の偶置換全体からなる集合を「n次交代群」といいA_nで表す。n次交代群A_nはn次対称群S_nの部分集合であるから以下の性質を満たす。
(A1)A_nの任意の元 f, gに対して、f{\circ}gS_nの元である
(A2)A_nの任意の元f, g, hに対して、結合法則が成り立つ。
    (f{\circ}g){\circ}h=f{\circ}(g{\circ}h)
(A3)A_nにある元eがあって、A_nの任意の元fに対して、次の式を満たす。
    f{\circ}e=e{\circ}f=f
(A4)A_nの任意の元fに対して、次の式を満たすA_nの元gがある。
    f{\circ}g=g{\circ}f=f


◯ n次置換群 Gの定義
一般に、n次対称群S_nの部分集合を「n次置換群」といいGで表す。
(G1)Gの任意の元 f, gに対して、f{\circ}gGの元である
(G2)Gの任意の元f, g, hに対して、結合法則が成り立つ。
    (f{\circ}g){\circ}h=f{\circ}(g{\circ}h)
(G3)Gにある元eがあって、Gの任意の元fに対して、次の式を満たす。
    f{\circ}e=e{\circ}f=f
(G4)Gの任意の元fに対して、次の式を満たすGの元gがある。
    f{\circ}g=g{\circ}f=f

3. 群

3.1 群の定義

以下の性質(1)〜(3)を満たす集合を「演算子✳︎に対する群」という。
以下の性質(1)〜(4)を満たす集合を「演算子✳︎に対するアーベル群」という。

(1)演算✳︎に対して「結合法則」が成立。すなわち、集合Gの任意の元a, b, cに対して、
\begin{align}
(a~✳︎~b)~✳︎~c~=~a~✳︎~(b~✳︎~c)
\end{align}
(2)演算✳︎に対して「単位元」が存在する。すなわち、集合Gにある元eがあって、集合Gの任意の元aに対して、
\begin{align}
a~✳︎~e~=~e~✳︎~a~=~a
\end{align}
(3)演算✳︎に対して任意の元(=a)の「逆元」(=b)が存在する。すなわち、集合Gの任意の元aに対して、
\begin{align}
a~✳︎~b~=~b~✳︎~a~=~e
\end{align}
(4)演算✳︎に対して「交換法則」が成立。すなわち、集合Gの任意の元a, bに対して、
\begin{align}
a~✳︎~b~=~b~✳︎~a
\end{align}

http://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Symmetric_group_4%3B_permutohedron_3D%3B_l-e_factorial_numbers.svg/600px-Symmetric_group_4%3B_permutohedron_3D%3B_l-e_factorial_numbers.svg.png

http://hooktail.sub.jp/algebra/BraidGroup/Joh-Braid8.gif

coming soon...

備忘・numpy.reshapeまとめ

よく忘れるのでメモしておく。


まず、テスト用の配列z(numpy.ndarray)を用意する。
zの形式は、3行4列。

import numpy as np
z = np.array([[1, 2, 3, 4],
            [5, 6, 7, 8],
            [9, 10, 11, 12]])

##-- IN --##
z.shape

##-- OUT --##
(3, 4)


1. 「reshape(1, -1)」

##-- IN --##
z.reshape(1, -1)
#or, 
np.reshape(z, (1, -1))

##-- OUT --##
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])

これは、以下の変形と同じ。

##-- IN --##
z.reshape(1, 12)
#or, 
np.reshape(z, (1, 12))

##-- OUT --##
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])


2. 「reshape(-1, 1)」

##-- IN --##
z.reshape(-1, 1)
#or, 
np.reshape(z, (-1, 1))

##-- OUT --##
array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11],
       [12]])

これは、以下の変形と同じ。

##-- IN --##
z.reshape(12, -1)
#or, 
np.reshape(z, (12, -1))

##-- OUT --##
array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11],
       [12]])


3. 「reshape(1, -1)」

##-- IN --##
z.reshape(-1)
#or, 
np.reshape(z, (-1))

##-- OUT --##
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])


参考:
stackoverflow.com

scikit-learn : pythonで重回帰分析をやってみた


f:id:yumaloop:20180425131518p:plain:w600
multiple-regression

1. 重回帰分析についての所感

1.1. 用語など

  • 英語だと, Multiple Regression.
  • 変数の呼び方は色々ある.
    {説明変数or予測変数or独立変数} vs {被説明変数or応答変数or目的変数}
  • いわゆる一般化線形モデル群(GLM)の一角.単回帰/重回帰/多項式回帰は線形モデル(LM)だが,ロジスティック回帰は狭義の線形モデル(LM)ではない.
  • "線形(Linear)"という語は,「説明変数→目的変数」ではなく「説明変数の係数(パラメータ)→目的変数」という写像の性質を指している.
  • 説明変数どうしの関係に対して,モデルは固定効果 or 変量効果を仮定する.両方の効果を仮定するものは「混合モデル」と呼ばれる.
  • 誤差項が「正規分布に従う」と仮定するモデルは「一般線形モデル」,誤差が「任意の分布に従う」と仮定するモデルは,「一般化線形モデル」という.

1.2. モデル評価:「モデル」の性能を学習結果から評価する

  • 決定係数R^2の他にも、MAE(平均絶対誤差), MSE(平均二乗誤差)など色々ある.だいたい似たような結果になる.詳細はこちら
  • 自由度調整済みR^2は, scikit-learnにないらしく,自分で定義する必要あり.
  • 帰無仮説 : 偏回帰係数が0」でn元配置分散分析(F検定)をするのが通説.scikit-learn だと簡単にできない(?).
  • R^2・MAE・MSEの値や仮説検定の結果に加えて、残差分析(プロット)などの可視化による検証が有効.

1.3. モデル選択:「モデルの適用」に対する妥当性を検証する

  • 「外れ値」はないか?→欠損処理
  • 「系列相関」はないか?→ダービン・ワトソン検定
  • 「データが独立同分布からなる」という仮定は妥当か?→残差分析、残差プロット
  • 「誤差項が独立同分布からなる」という仮定は妥当か?→残差分析、残差プロット
  • 「誤差項は正規分布に従う」という仮定は妥当か?→F検定や信頼区間を見直し
  • 「説明変数が互いに独立」という仮定は妥当か?→交互作用、多重線形性の検証
  • 「データに対する残差の等分散性」という仮定は妥当か?→重み付き2乗法
  • 「変数選択」は妥当か?→自由度調整済みR^2、マローズのCp規準、AIC
  • 「Overfit、予測能力、汎化能力」は妥当か?→AIC、WAIC、Cross validation
  • 「尤もらしさ、データへの表現力」は妥当か?→BIC、Bayse factor

1.4. Pythonでの実装まわり

  • 重回帰分析に関しては,pythonよりRの方が早い説.Rのglm()が超優秀.
  • もちろん,scikit-learn以外のモジュールを使う方法もある.例:statsmodels

blog.datarobot.com


2. scikit-learnのサンプルデータセットで重回帰分析を試してみる

2.1. データ:skearn.datasets.load_boston
  データセットはscikit-learnにあるサンプルデータ「ボストン市の地域情報」を使う.今回は,以下の9つの特徴量を使う.
f:id:yumaloop:20190119155314p:plain:w600

  • target - 住宅価格
  • CRIM - 犯罪発生率
  • ZN - 住居区画の密集度
  • INDUS - 非小売業の土地割合
  • CHAS - チャールズ川 (1: 川の周辺, 0: それ以外)
  • NOX - NOx濃度
  • RM - 住居の平均部屋数
  • AGE - 1940年より前に建てられた物件割合
  • DIS - 5つのボストン市の雇用施設からの重み付き距離
  • RAD - 大きな道路へのアクセスしやすさ

  データの散布図行列*1はこんな感じ(↓).
  相関がありそうな説明変数のペアについては, 多重共線性を考えるべき.

f:id:yumaloop:20190119161256p:plain:w550


2.2. モデル:9次多項式でfitting
  ボストン市の住宅価格targetを目的変数にして重回帰モデルを作る.
  今回のモデルは,9次元空間から1次元空間への写像9元多項式で表現したもの.
   ※ 目的変数:target (1コ)
   ※ 説明変数:CRIM, ZN, INDUS, CHAS, NOX, RM, AGE, DIS, RAD (9コ)
   ※ 誤差項 :u (平均0, 正規分布に従う)

 y=\beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_9 x_9 + u

2.3. 前処理 : sklearn.model_selection.train_test_split
  train-testの分割では一番簡単なホールド・アウト法を使う.
  データの正規化や次元削減は省略した.



3. プログラム - Python3.x系

Pythonスクリプトをかく.

import numpy as np
import pandas as pd
from sklearn.datasets import load_boston

# make data samples
boston = load_boston()
data   = pd.DataFrame(boston.data, columns = boston.feature_names)
target = pd.DataFrame(boston.target, columns = ['target'])

df = pd.concat([target, data], axis = 1)
df = df.iloc[:, :10]

# set x to explanatory variable 
# set y to response variable
x = df.iloc[:, 1:]
y = df.loc[:, ['target']]

# split data by Hold-out-method
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 0)

# fitting train-data to the model
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x_train, y_train)

# predicting y of test-data by the model
y_test_pred = lr.predict(x_test)

# estimated value of params
print('\n[Estimated values of the params]')
print('  Intercept    :', lr.intercept_)
print('  Coefficient  :', lr.coef_)

# model evaluation
from sklearn.metrics import mean_absolute_error, mean_squared_error
print('\n[Model evaluation]')
print('  R^2 on train               : %.5f' % lr.score(x_train, y_train))
print('  R^2 on test                : %.5f' % lr.score(x_test, y_test))
print('  MAE  (Mean-Absolute-Error) :',  mean_absolute_error(y_test, y_test_pred))
print('  MSE  (Mean-Squared-Error)  :',  mean_squared_error(y_test, y_test_pred))
print('  RMSE (Rooted-MSE)          :',  np.sqrt(mean_squared_error(y_test, y_test_pred)))

以上を実行すると, 次のような結果を得られる. Oh, that's the overfitting! :D

[Estimated values of the params]
  Intercept    : [-1.83284178]
  Coefficient  : [ [-0.18424554  0.06424141 -0.22994428  4.17534912 -8.45210943  6.93761463
  -0.06944658 -1.81172533 -0.07995724] ]

[Model evaluation]
  R^2 on train               : 0.66568
  R^2 on test                : 0.54068
  MAE  (Mean-Absolute-Error) : 4.133489445028324
  MSE  (Mean-Squared-Error)  : 38.245841746617565
  RMSE (Rooted-MSE)          : 6.184322254428335

回帰問題でよく使う評価指標については,下記の記事にまとめたので,よければどうぞ.
yul.hatenablog.com


4. 参考文献

統計学入門 (基礎統計学Ⅰ)

統計学入門 (基礎統計学Ⅰ)

回帰分析 (統計ライブラリー)

回帰分析 (統計ライブラリー)

  • 作者:佐和 隆光
  • 出版社/メーカー: 朝倉書店
  • 発売日: 1979/04/01
  • メディア: 単行本

*1:関数seaborn.pairplot()を使う

メモ: CSに役立ちそうな数学

どんな分野であれ、最先端に進むためには数学に関するある程度の知識と教養が必要。
ということで 情報系をやる上で特に役立ちそうな分野をピックアップしてみます。

(パーフェクトに主観で語っているので、重大な思い違いがあるかもしれないです。)


Computer Scienceに役立ちそうな数学

   →これを修めないと何も始まらない。

  • 集合と位相

   →集合は言わずもがなとして、位相も理解すれば思考の抽象度が上がりそう

   →群と位相をきちんと理解できれば、色々役立ちそう

   →最適化やアルゴリズム, データ構造, 計算量などを基礎づけているぽい

   →高次元を定式化する時に必須. 線形代数を解析的に操作できる.

   →数学の作法で統計学を扱うなら、空間(位相, 集合)の概念も理解する方が良い

   →あらゆる工学で使われているし、電子/電気工学と相性がよい

  • 数値解析(変分法, 差分法, 近似法)

   →離散データの計測, 計算, 処理に不可欠.

   →暗号や符号理論の基礎. 離散数学と相性良い?

  • 数理論理学, 情報幾何, 計算代数幾何, 複雑性科学, 意味論

   →情報とは何か?計算とは何か?を真剣に議論する際に.