DS検定対策|データサイエンス力|ベクトル・内積・行列を勉強

DS検定の統計数理の基礎編を分かりやすく解説。DS19・20。ひよっこDS、りけーこっとん DS検定

※本記事はアフィリエイト広告を含んでいます


どーも、りけーこっとんです。

DS検定の勉強をしよう!と思ったは良いものの、こんな悩みはありませんか?

とある女の子
とある女の子

DS検定ってどうやって勉強すればいいの?

DS検定の勉強の仕方が分からない…

とある男の子
とある男の子

本で勉強するのは分かるけど、高いなぁ…

無料で単語解説されているサイトとかないかな?

ひよっこDS
ひよっこDS

DS検定は、始まったばかりの試験だから、対策法とか分からないよね。

じゃあ、このサイトで出題範囲の内容を押さえていこう~

DS検定の解説をすぐ見たいよ!という方は、以下から最初の解説に飛べます。

ひよっこDS
ひよっこDS

今回はスキルチェックリスト

「DS19:ベクトル内積計算ができ、線形式をベクトル内積で表現できる」から

「DS20:行列の計算ができ、複数の線形式を行列の積で表現できる」を解説していくよ~

本サイトでは超重要項目重要項目覚えておきたい項目と表記を分けますので、勉強時の参考にしてみてください。

DS検定って、そもそもどんな資格?という方は以下の記事をご覧くださいね。

試験範囲は以下の二つから出題されます。

スキルチェックリスト
数理、データサイエンス、AI(リテラシーレベル)モデルカリキュラム

本内容は以下の書籍を参考に作成しております。


なお、本サイトはDS検定の合格を保証するわけではありませんので、ご了承ください。

では早速、内容に入っていきましょう!

※「DS○○:」項目の文章は独自に短縮して表現しております

DS19:ベクトル内積計算ができ、線形式をベクトル内積で表現できる

この項目はベクトルの計算はできてくださいね、という項目。

ベクトルとは何か?という部分から、初心者にもわかりやすいように解説していきますね。

ベクトルとは?

物理を習っていた方は、「ベクトル」に聞き覚えがあるのではないでしょうか。

しかし物理での意味だと少し限定されてしまうので、数学的な「ベクトル」の意味を理解しておきましょう。

ベクトル
式の中での表現の仕方は\(\displaystyle \vec{a}, \boldsymbol{a}\)がある。
意味としては、以下の二つ。

1.複数の数値(スカラー)を1行または、1列に並べてまとめたもの。(数学)
「複数の数値」は何個でも可能で、ベクトルを構成する数値がn個あれば、n次元ベクトルという。

\(\displaystyle \vec{a} = \begin{pmatrix} a_1 \\ a_2 \end{pmatrix}\) ⇒ 2次元の列ベクトル
\(\displaystyle \vec{b} = (b_1, b_2, b_3, b_4, b_5)\) ⇒ 5次元の行ベクトル

2.「大きさ」と「向き」の両方を持ったもの。矢印のイメージ。(物理・数学)

ベクトルとは?ベクトルを分かりやすく解説

「2.「大きさ」と「向き」の両方を持ったもの。矢印のイメージ」をもう少し掘り下げます。

「向き」は矢印の向きなので、そのままのイメージで良いでしょう。

ベクトルの「大きさ」は、三平方の定理を使って計算します。

上の図を例にすると

$$\vec{A} = \sqrt{1^2 + 2^2} = \sqrt{5} \unicode{x2252} 2.24$$ $$\vec{B} = \sqrt{3^2 + 1^2} = \sqrt{10} \unicode{x2252} 3.16$$

という計算ができますね。

物理を習っていた方だと、2次元や3次元での「2.「大きさ」と「向き」の両方を持ったもの。矢印のイメージ」があると思います。

数学では、矢印以外に「複数の数値をまとめたもの」という意味もあるので、注意しましょう。

とある女の子
とある女の子

結局、ベクトルは機械学習とかデータサイエンスにどう関係があるの?

ひよっこDS
ひよっこDS

ベクトルを使うと便利な理由は以下の3つだよ~

・大量の数値をまとめて表現できるから、表記が楽

・まとめた数値をコンピュータで一気に計算することが可能

・ベクトルとほぼ同じ書き方で、プログラミングができる

ベクトルの内積計算

この章では、ベクトルの内積に限らず、基本計算を解説していきますね。


ベクトルのそれぞれの要素同士を足し合わせる。
※要素数が一致していないと、計算できない。

$$(1, 2, 3) + (4, 5, 6) = (1+4, 2+5, 3+6) = (5, 7, 9)$$


ベクトルのそれぞれの要素同士を引く。
※要素数が一致していないと、計算できない。

$$(1, 2, 3) – (4, 5, 6) = (1-4, 2-5, 3-6) = (-3, -3, -3)$$

スカラー倍
スカラー倍する値をそれぞれの要素に掛ける。

$$4\times (1, 2, 3)= (4\times 1, 4\times 2, 4\times 3) = (4, 8, 12)$$

内積
ベクトルのそれぞれの要素同士を掛けた後、全てを足し合わせる。
\(\displaystyle \vec{a} \cdot \vec{b}\)のように表記する。
※要素数が一致していないと、計算できない。
※最終的な値は1つ。

$$(1, 2, 3) \cdot (4, 5, 6) = (1\times 4) + (2\times 5) + (3\times 6) = 32$$
とある女の子
とある女の子

ベクトルのそれぞれの要素同士を掛け算する方法はないの?

内積が「掛け算」だと思ったけど、なんか違和感がある…

ひよっこDS
ひよっこDS

あるにはあるけど、有名ではないね~

「アダマール積」っていうんだけど、DS検定の範囲を超えるから今回は解説しないよ~

では、ベクトルの計算がどのようにデータサイエンスと関係しているか、具体例で見ていきましょう。

商品A~Cがあります。それぞれの情報は以下の通り。

商品A:単価300円、売上個数6個
商品B:単価100円、売上個数10個
商品C:単価500円、売上個数2個

このとき「単価平均」「売上個数平均」「総売上」はいくらでしょうか。

これらは単価を\(\displaystyle \vec{a} = (300, 100, 500)\)、売上個数を\(\displaystyle \vec{b} = (6, 10, 2)\)と考えることで、ベクトルとして計算可能です。

単価平均は次のように求められます。

$$\begin{align} \frac{1}{3}\times \vec{1} \cdot \vec{a} & = \frac{1}{3}\times (1, 1, 1)\cdot (300, 100, 500) \\ & = \frac{1}{3}\times ((1\times 300) + (1\times 100) + (1\times 500)) \\ & = \frac{1}{3}\times 900 \\ & = 300 \end{align}$$

売上個数平均も同様。

$$\begin{align} \frac{1}{3}\times \vec{1} \cdot \vec{b} & = \frac{1}{3}\times (1, 1, 1)\cdot (6, 10, 2) \\ & = \frac{1}{3}\times ((1\times 6) + (1\times 10) + (1\times 2)) \\ & = \frac{1}{3}\times 18 \\ & = 6 \end{align}$$

総売上は内積で求められますね。

$$\vec{a} \cdot \vec{b} = 300\times 6 + 100\times 10 + 500\times 2 = 3800$$

本来のデータはもっと大量ですよね。

その時に、プログラミングで上記のようなベクトル計算を高速で行ってくれれば、非常に便利ということが実感できたでしょうか。

DS20:行列の計算ができ、複数の線形式を行列の積で表現できる

この項目は行列の計算はできるようにしましょう、という項目。

行列とは何か?という部分から、初心者にもわかりやすいように解説していきますね。

行列とは?

行列
複数の数値を四角形の形に並べたもの。
mを行の数、nを列の数とする以下のような行列はm×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)$$

また、\(\displaystyle a_{11}\)のように行列を構成する数値を要素(成分)といいます。

前章のベクトルは、次のように考えることも可能です。

・横ベクトルが1×n行列 $$\vec{b} = (b_1, b_2, b_3, b_4, b_5) ⇒ 1×5行列$$

・縦ベクトルがm×1行列 $$\vec{a} = \begin{pmatrix} a_1 \\ a_2 \end{pmatrix} ⇒ 2×1行列$$

ベクトルよりも行列の方が、たくさんの数値をコンパクトに表現できますね。

大量の数値を扱う機械学習やディープラーニングでは、行列の計算が使われます。

データサイエンティストやAIに携わる方は、必須の知識と言えるでしょう。

行列の基本計算

続いて、行列の基本計算の解説をしますね。


行列のそれぞれの要素同士を足し合わせる。
※要素数が一致していないと、計算できない。

$$\begin{align} & \left( \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right) + \left( \begin{array}{ccc} 3 & 5 & 9 \\ 6 & 1 & 4 \\ 8 & 2 & 7 \end{array} \right) \\ & = \left( \begin{array}{ccc} 1+3 & 2+5 & 3+9 \\ 4+6 & 5+1 & 6+4 \\ 7+8 & 8+2 & 9+7 \end{array} \right) \\ & = \left( \begin{array}{ccc} 4 & 7 & 12 \\ 10 & 6 & 10 \\ 15 & 10 & 16 \end{array} \right) \end{align}$$


行列のそれぞれの要素同士を引く。
※要素数が一致していないと、計算できない。

$$\begin{align} & \left( \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right) + \left( \begin{array}{ccc} 3 & 5 & 9 \\ 6 & 1 & 4 \\ 8 & 2 & 7 \end{array} \right) \\ & = \left( \begin{array}{ccc} 1-3 & 2-5 & 3-9 \\ 4-6 & 5-1 & 6-4 \\ 7-8 & 8-2 & 9-7 \end{array} \right) \\ & = \left( \begin{array}{ccc} -2 & -3 & -6 \\ -2 & 4 & 2 \\ -1 & 6 & 2 \end{array} \right) \end{align}$$

スカラー倍
スカラー倍する値をそれぞれの行列の要素に掛ける。

$$\begin{align} 5 \times \left( \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right) & = \left( \begin{array}{ccc} 5 \times 1 & 5 \times 2 & 5 \times 3 \\ 5 \times 4 & 5 \times 5 & 5 \times 6 \\ 5 \times 7 & 5 \times 8 & 5 \times 9 \end{array} \right) \\ & = \left( \begin{array}{ccc} 5 & 10 & 15 \\ 20 & 25 & 30 \\ 35 & 40 & 45 \end{array} \right) \end{align}$$

行列同士の掛け算は少し特殊なので、次で詳しく解説させてください。

行列同士の掛け算

行列同士の掛け算は、ちょっと特殊です。

行列の掛け算
数値の掛け算は掛ける順番は関係ないが、行列では掛ける順番が重要になる。
数式では以下のように表せる。
※左の行列の「列数」と右の行列の「行数」が一致していないと計算できない。

例1 $$\begin{align} \left( \begin{array}{cc} 1 & 2 \\ 4 & 5 \end{array} \right) \times \left( \begin{array}{cc} 3 & 8\\ 6 & 7 \end{array} \right) & = \left( \begin{array}{cc} 1\times 3 + 2\times 6 & 1\times 8 + 2\times 7 \\ 4\times 3 + 5\times 6 & 4\times 8 + 5\times 7 \end{array} \right) \\ & = \left( \begin{array}{cc} 15 & 22 \\ 42 & 67 \end{array} \right) \end{align}$$ 例2 $$\begin{align} &\left( \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array} \right) \times \left( \begin{array}{cc} 9 & 5 \\ 7 & 1 \\ 8 & 2 \end{array} \right) \\ & = \left( \begin{array}{cc} 1\times 9 + 2\times 7 + 3\times 8 & 1\times 5 + 2\times 1 + 3\times 2 \\ 4\times 9 + 5\times 7 + 6\times 8 & 4\times 5 + 5\times 1 + 6\times 2 \end{array} \right) \\ & = \left( \begin{array}{cc} 47 & 13 \\ 119 & 37 \end{array} \right) \end{align}$$

掛ける順番としては以下の通り。
左の行列は行方向に左から順に、
右の行列は列方向に上から順に掛けます。

$$\begin{align} &\left( \begin{array}{ccc} \color{red}{a} & \color{red}{b} & \color{red}{c} \\ \color{blue}{d} & \color{blue}{e} & \color{blue}{f}  \end{array} \right) \times \left( \begin{array}{cc} \color{green}{g} & \color{gray}{h} \\ \color{green}{i} & \color{gray}{j} \\ \color{green}{k} & \color{gray}{l} \end{array} \right) \\ & = \left( \begin{array}{cc} \color{red}{a}\times \color{green}{g} + \color{red}{b}\times \color{green}{i} + \color{red}{c}\times \color{green}{k} & \color{red}{a}\times \color{gray}{h} + \color{red}{b}\times \color{gray}{j} + \color{red}{c}\times \color{gray}{l} \\ \color{blue}{d}\times \color{green}{g} + \color{blue}{e}\times \color{green}{i} + \color{blue}{f}\times \color{green}{k} & \color{blue}{d}\times \color{gray}{h} + \color{blue}{e}\times \color{gray}{j} + \color{blue}{f}\times \color{gray}{l} \end{array} \right) \end{align}$$

一般化したイメージは以下のようになる。

行列とは?行列の掛け算を分かりやすく解説

数値での掛け算って、掛ける順番を変えたところで、結果は変わらないですよね。

\(\displaystyle 5\times 1 = 5\)だし、\(\displaystyle 1\times 5 = 5\)です。

しかし、行列では順番を入れ替えると「答えが変わる」もしくは「計算できない」となってしまいます。

例として、上のcheckボックスの例1を入れ替えて計算してみましょう。

$$\begin{align} \left( \begin{array}{cc} 3 & 8 \\ 6 & 7 \end{array} \right) \times \left( \begin{array}{cc} 1 & 2\\ 4 & 5 \end{array} \right) & = \left( \begin{array}{cc} 3\times 1 + 8\times 4 & 3\times 2 + 8\times 5 \\ 6\times 1 + 7\times 4 & 6\times 2 + 7\times 5 \end{array} \right) \\ & = \left( \begin{array}{cc} 35 & 46 \\ 34 & 47 \end{array} \right) \end{align}$$

全然違う値になってしまいましたね。

行列では掛ける順番も重要になるので、注意が必要です。

複数の線形式を行列の積で表現できる

連立方程式があったとしましょう。

\begin{eqnarray}
\left\{
\begin{array}{l}
2x + y = 10 \\
x + 4y = 12
\end{array}
\right.
\end{eqnarray}

行列に変換する手順は以下の通り。
1.連立方程式の係数(2, 1, 1, 4)は、見た目の通りの順番で一番左の行列に数値を入れる
2.変数(x, y)は縦ベクトルにして、1の行列の右から掛ける
3.「=」右側の数値も、見た目と同じ順番で行列に数値を入れる

この手順で表現すると以下のようになります。

$$\left( \begin{array}{cc} 2 & 1 \\ 1 & 4 \end{array} \right) \times \left( \begin{array}{c} x\\ y \end{array} \right) = \left( \begin{array}{c} 10 \\ 12 \end{array} \right)$$

行列に直した式を行列の掛け算の法則に従って、掛け算してみてください。

ちなみに「=」を挟んだ行列は横(行)方向が一つの式とみなせます。

$$\left( \begin{array}{cc} 2 & 1 \\ 1 & 4 \end{array} \right) \times \left( \begin{array}{c} x\\ y \end{array} \right) = \left( \begin{array}{c} 10 \\ 12 \end{array} \right)$$ $$\begin{align} \left( \begin{array}{c} 2\times x + 1\times y \\ 1\times x + 4\times y \end{array} \right) = \left( \begin{array}{c} 10 \\ 12 \end{array} \right) \end{align}$$

すると、元の連立方程式の形になりますね。

まとめ

今回は「ベクトル・内積・行列」などを解説してきました。

以下の項目を説明・計算できるようになっているでしょうか?

・ベクトルとは
・ベクトルの基本計算
・内積
・行列とは
・行列の基本計算
・行列同士の掛け算

・複数の線形式を行列の積で表せる

DS検定は覚える内容が多いです。

一つ一つを細部まで見るというよりは、広く浅く見ていくことが重要かと思います。

DS検定を取得して、データサイエンティストやAI関連の仕事への道を開きましょう!

次回は「逆行列」「固有値」「固有ベクトル」などについて解説していきます。

ではまた~

DS検定の続きの解説は以下のページからどうぞ!

コメント

タイトルとURLをコピーしました