機械学習

PythonのNumpyライブラリを用いて行列の計算をしてみた

PythonのNumpyライブラリを利用すると、機械学習で大量のデータを扱う際に必要な、行列の計算を簡単に行うことができる。

今回は、行列の加算/減算/乗算といった行列の計算や、逆行列や転置行列の算出を行ってみたので、そのサンプルプログラムを共有する。

やってみたこと

  1. 行列同士の加算/減算
  2. 行列の定数倍
  3. 行列同士の乗算
  4. 逆行列
  5. 転置行列

行列同士の加算/減算

行列同士の加算/減算は、行と列の数が同じ行列の場合のみ、対応する成分同士を加算/減算することで計算できる。実際に計算した結果は、以下の通り。
\[
\begin{eqnarray}
\begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix} &+&
\begin{pmatrix} 1 & 3 \\ 2 & 1 \end{pmatrix} &=&
\begin{pmatrix} 1+1 & 2+3 \\ 4+2 & 5+1 \end{pmatrix} &=&
\begin{pmatrix} 2 & 5 \\ 6 & 6 \end{pmatrix} \\  
\begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix} &-&
\begin{pmatrix} 1 & 3 \\ 2 & 1 \end{pmatrix} &=&
\begin{pmatrix} 1-1 & 2-3 \\ 4-2 & 5-1 \end{pmatrix} &=&
\begin{pmatrix} 0 & -1 \\ 2 & 4 \end{pmatrix}
\end{eqnarray}
\]

行列同士の加算/減算_1

\[
\begin{eqnarray}
\begin{pmatrix} 6 & 5 & 4 \\ 4 & 5 & 6 \end{pmatrix} &+&
\begin{pmatrix} 1 & 2 & 3 \\ 3 & 2 & 1 \end{pmatrix} &=&
\begin{pmatrix} 6+1 & 5+2 & 4+3 \\ 4+3 & 5+2 & 6+1 \end{pmatrix} &=&
\begin{pmatrix} 7 & 7 & 7 \\ 7 & 7 & 7 \end{pmatrix} \\  
\begin{pmatrix} 6 & 5 & 4 \\ 4 & 5 & 6 \end{pmatrix} &-&
\begin{pmatrix} 1 & 2 & 3 \\ 3 & 2 & 1 \end{pmatrix} &=&
\begin{pmatrix} 6-1 & 5-2 & 4-3 \\ 4-3 & 5-2 & 6-1 \end{pmatrix} &=&
\begin{pmatrix} 5 & 3 & 1 \\ 1 & 3 & 5 \end{pmatrix}
\end{eqnarray}
\]

行列同士の加算/減算_2



「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

行列の定数倍

行列の定数倍は、行列のそれぞれの成分に、指定された定数を掛けることで計算できる。実際に計算した結果は、以下の通り。
\[
\begin{eqnarray}
3\begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix} &=&
\begin{pmatrix} 3 \times 1 & 3 \times 2 \\ 3 \times 4 & 3 \times 5 \end{pmatrix} =
\begin{pmatrix} 3 & 6 \\ 12 & 15 \end{pmatrix} \\  
-2\begin{pmatrix} 6 & 5 & 4 \\ 4 & 5 & 6 \end{pmatrix} &=&
\begin{pmatrix} -2 \times 6 & -2 \times 5 & -2 \times 4 \\ -2 \times 4 & -2 \times 5 & -2 \times 6 \end{pmatrix} =
\begin{pmatrix} -12 & -10 & -8 \\ -8 & -10 & -12 \end{pmatrix}
\end{eqnarray}
\]

行列の定数倍

行列同士の乗算

行列同士の乗算は、左の行列をA、右の行列をBとした場合、行列Aの列数と行列Bの行数が一致している場合のみ、計算できる。

行列同士の乗算の公式は、以下のサイトを参照のこと。
https://lab-brains.as-1.co.jp/enjoy-learn/2023/07/50258/

実際に計算した結果は、以下の通り。
\[
\begin{eqnarray}
\begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix}
\begin{pmatrix} 1 & 3 \\ 2 & 1 \end{pmatrix} &=&
\begin{pmatrix} 1 \times 1 + 2 \times 2 & 1 \times 3 + 2 \times 1 \\ 4 \times 1 + 5 \times 2 & 4 \times 3 + 5 \times 1 \end{pmatrix} =
\begin{pmatrix} 1 + 4 & 3 + 2 \\ 4 + 10 & 12 + 5 \end{pmatrix} =
\begin{pmatrix} 5 & 5 \\ 14 & 17 \end{pmatrix} \\
\begin{pmatrix} 1 & 3 \\ 2 & 1 \end{pmatrix}
\begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix} &=&
\begin{pmatrix} 1 \times 1 + 3 \times 4 & 1 \times 2 + 3 \times 5 \\ 2 \times 1 + 1 \times 4 & 2 \times 2 + 1 \times 5 \end{pmatrix} =
\begin{pmatrix} 1 + 12 & 2 + 15 \\ 2 + 4 & 4 + 5 \end{pmatrix} =
\begin{pmatrix} 13 & 17 \\ 6 & 9 \end{pmatrix} \\
\begin{pmatrix} 1 & 2 & 3 \\ 3 & 2 & 1 \end{pmatrix}
\begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 1 & 2 \end{pmatrix} &=&
\begin{pmatrix} 1 \times 1 + 2 \times 3 + 3 \times 1 & 1 \times 2 + 2 \times 4 + 3 \times 2 \\ 3 \times 1 + 2 \times 3 + 1 \times 1 & 3 \times 2 + 2 \times 4 + 1 \times 2 \end{pmatrix} =
\begin{pmatrix} 1 + 6 + 3 & 2 + 8 + 6 \\ 3 + 6 + 1 & 6 + 8 + 2 \end{pmatrix} =
\begin{pmatrix} 10 & 16 \\ 10 & 16 \end{pmatrix}
\end{eqnarray}
\]

行列同士の乗算_1

行列同士の乗算_2



「DroidKit」はAndroid端末のデータ復元や画面ロック解除等が行える便利なツールだった「DroidKit」は、画面ロック解除、FRPバイパス、データ復元、システム修復、および4つのより効果的なツールを含んでいて、ほぼすべて...

逆行列

正方行列\(A\)に対して、\(AA^{-1}=A^{-1}A=I\)が成立するような正方行列\(A^{-1}\)が存在するとき、\(A^{-1}\)を\(A\)の逆行列という。ただし、\(I\)は\(A\)と同じサイズの単位行列とする。

逆行列の詳細と公式は、以下のサイトを参照のこと。
https://manabitimes.jp/math/1153

例えば、\(A=\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}\)の場合、逆行列を計算した結果は、以下の通り。
\[
\begin{eqnarray}
A^{-1}=\frac{1}{1 \times 4 – 2 \times 3}\begin{pmatrix} 4 & -2 \\ -3 & 1 \end{pmatrix}=-\frac{1}{2}\begin{pmatrix} 4 & -2 \\ -3 & 1 \end{pmatrix}
=\begin{pmatrix} -2 & 1 \\ 1.5 & -0.5 \end{pmatrix}
\end{eqnarray}
\]

逆行列の計算

転置行列

\(m \times n\)行列である\(A=\left(
\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n} \\
a_{21} & a_{22} & \ldots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \ldots & a_{mn}
\end{array}
\right)\)に対し、その行と列を入れ替えた
\(n \times m\)行列である\({}^t \! A=\left(
\begin{array}{cccc}
a_{11} & a_{21} & \ldots & a_{m1} \\
a_{12} & a_{22} & \ldots & a_{m2} \\
\vdots & \vdots & \ddots & \vdots \\
a_{1n} & a_{2n} & \ldots & a_{mn}
\end{array}
\right)\)を\(A\)の転置行列という。

転置行列

要点まとめ

  • PythonのNumpyライブラリを利用すると、行列の加算/減算/乗算といった行列の計算や、逆行列や転置行列の算出を簡単に行うことができる。