技術日誌

DB,Java,セキュリティ,機械学習など。興味のあることを雑多に学ぶ

Coursera Machine Learning week1 その3

行列とは

大括弧に閉じられた数字の配列のこと


  A = \left[
    \begin{array}{rrr}
      -1 & 20  \\
      42 & -5  \\
      7 & 8 
    \end{array}
  \right]

上の例は3*2の行列。(行数*列数で表現する)

\mathbb{R^{3*2}}と表すこともある。


各要素への参照はA_{ij}

  • i:行
  • j:列

で表す。



例) A_{21}=42

ベクトルとは

行列の特殊な形にすぎない。
n × 1の行列のこと。


  y = \left[
    \begin{array}{rrr}
      -1   \\
      42   \\
      7  
    \end{array}
  \right]


上記の例は3次元のベクトル。
\mathbb{R^3}と表すこともある。

y_{i}で上からi番目の要素を参照する
プログラミングとの兼ね合いでiが0始まりの場合と1始まりの場合の2パターンがあるが、この講義では基本的に1始まりとしている。

行列の足し算

同じ位置にある数値を足し合わせるだけ。同じ次元の行列しか足せない。


   \left[
    \begin{array}{rrr}
      -1 & 20  \\
      42 & -5  \\
      7 & 8 
    \end{array}
  \right] + 
   \left[
    \begin{array}{rrr}
      12& 3  \\
      4 & 1  \\
      3 & 2 
    \end{array}
  \right] = 
   \left[ 
    \begin{array}{rrr}
      11& 23  \\
      46 & -4  \\
      10 & 10 
    \end{array}
  \right]

行列の掛け算

行列の各要素に実数をかけるだけ。

  2 \times \left[
    \begin{array}{rrr}
      -1 & 20  \\
      42 & -5  \\
      7 & 8 
    \end{array}
  \right] = 
  \left[
    \begin{array}{rrr}
      -2 & 40  \\
      84 & -10  \\
      14 & 16 
    \end{array}
  \right]

行列とベクトルの積

ベクトルの要素数と行列の列数が一致していないと掛け算はできない。


  \left[
    \begin{array}{rrr}
      -1 & 20  \\
      42 & -5  \\
      7 & 8 
    \end{array}
  \right] \times
  \left[
    \begin{array}{rrr}
      -2   \\
      3  \\
    \end{array}
  \right]
 =   \left[
    \begin{array}{rrr}
      (-1 \times-2)+ (20 \times 3)   \\
      (42 \times -2) + (-5 \times 3)  \\
      (7 \times -2) + (8 \times 3)  \\
    \end{array}
  \right]
= \left[
    \begin{array}{rrr}
      62 \\
      99 \\
      10
    \end{array}
  \right]

この行列計算をoctaveでかくとこんな感じ

octave:1> y = [-1,20;42,-5;7,8]
y =

   -1   20
   42   -5
    7    8


octave:2> y2 = [-2;3]
y2 =

  -2
   3

octave:3> y * y2
ans =

   62
  -99
   10

行列と行列の掛け算

m行n列の行列 とn行o列の行列のみが積算が可能である
結果の行列の形はm行o列の行列になる。

[m × n] × [n × o] = [m × o]

片方の列と片方の行の数が一致しないと掛け算不可。



\begin{bmatrix} a & b \newline c & d \newline e & f \end{bmatrix} \times \begin{bmatrix} w & x \newline y & z \newline \end{bmatrix} =\begin{bmatrix} a\times  w + b\times y & a\times x + b\times z \newline c\times w + d\times y & c\times x + d\times z \newline e\times w + f\times y & e\times x + f\times z\end{bmatrix}

行列の掛け算には可換性がないことに注意(not commutative)

A \times B \neq B \times A

行列の掛け算にはスカラ(実数)の場合と同じく、結合法則が成り立つ

スカラ: (3 × 5 ) × 2 = 3 ×(5×2)
行列: A \times B \times C =

単位行列(Identity Matrix)

A * I = I * A = A が成り立つIのこと

2行2列の場合
 \left[
    \begin{array}{rrr}
      1 & 0  \\
      0 & 1  
    \end{array}
  \right]

3行3列の場合
 \left[
    \begin{array}{rrr}
      1 & 0 & 0  \\
      0 & 1  & 0  \\
      0 & 0 & 1
    \end{array}
  \right]

逆行列

Aに対して

 AA^{-1} = A^{-1}A = I

が成り立つA^{-1}のこと

(補足:I単位行列)

逆行列は以下のようにoctaveではpinv関数で求められる

octave:8> a = [3,4;2,16]
a =

    3    4
    2   16

octave:9> pinv(a)
ans =

   0.400000  -0.100000
  -0.050000   0.075000

octave:10> 

逆行列は正方行列(行数と列数が一致する行列)にのみ存在し
また全ての正方行列が逆行列を持つとは限らない。
逆行列を持たない正方行列のことを特異行列(singular)や縮退行列(degenerate)と行ったりする。

行列の転置(transposition)

ある行列Aに対して
B_{ij}=A_{ji}となるようなBを作ることを行列の転置と呼ぶ

またこのようなBをA^Tとも表現する

感想

はてなblogは編集がmarkdownモードだとtexの行列が表示できないようだ。
なので行列が登場するweek1-3のみはてな記法モードで書いた。
markdownというスマートなフォーマットがあるのになぜこのような記法を作るのかよくわからない。
というよりmarkdownの標準化がうまくされて、数式の記法なども統一されればこういうことは起こらないと思う。