≪ Today I learned. RSS購読
公開日
タグ
Mathematics
著者
ダーシノ(@bc_rikko)

ベクトルと内積

妥協しないデータ分析のための 微積分+線形代数入門で微積分・線形代数の学び直しをしている。その中で学んだことを忘れないように自分の言葉でまとめたい。

ベクトルとは

ベクトル(Vector)とは、値が並んでいるものを指す。そして、その値の個数が次元と呼ばれる。

v=[v1v2v3vn]v = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \end{bmatrix}

上記の場合、v1, v2, ..., vn ∈ Rのように書く。

ベクトルの内積

ベクトルの内積とは、2つの値の積の和を指す。

vw=v1w1+v2w2++vnwn\mathbf{v} \cdot \mathbf{w} = v_1 w_1 + v_2 w_2 + \dots + v_n w_n

主に以下の2つの用途で用いられる。

類似度

ベクトルの内積は、2つのベクトルの類似度を計算できる。

BoW(Bag-of-Words)ベクトルとは、文章に含まれる単語の出現回数を数えてベクトルで表現したもの。これはベクトルの和として表現できる。

WORD明日明日吹くBoWベクトル
明日10100002
01000001
00010001
00001001
00000101
吹く00000011
明日=[100000]=[010000]明日=[100000]=[001000]明日 = \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \quad は = \begin{bmatrix} 0 \\ 1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \quad 明日 = \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \quad の = \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} =[000100]=[000010]吹く=[000001]風 = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \\ 0 \\ 0 \end{bmatrix} \quad が = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 0 \end{bmatrix} \quad 吹く = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} BoW=明日++明日++++吹く=[211111]BoW = 明日 + は + 明日 + の + 風 + が + 吹く = \begin{bmatrix} 2 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \end{bmatrix}

同じような文章の場合、同じ単語が頻出するため、ベクトルの内積が大きくなる。逆に、異なる単語が頻出する場合、ベクトルの内積が小さくなる。

たとえば、以下のテストの結果からテストの平均点を算出するために内積が使える。

生徒国語数学理科英語化学
Aさん8070906050
Bさん7080609080
Cさん9060708090
Dさん6090807060
A平均点=15A=[1515151515][8070906050]=1580+1570+1590+1560+1550=70A_{\text{平均点}} = \frac{1}{5} \cdot \vec{A} = \begin{bmatrix} \frac{1}{5} \\ \frac{1}{5} \\ \frac{1}{5} \\ \frac{1}{5} \\ \frac{1}{5} \end{bmatrix} \cdot \begin{bmatrix} 80 \\ 70 \\ 90 \\ 60 \\ 50 \end{bmatrix} = \frac{1}{5} \cdot 80 + \frac{1}{5} \cdot 70 + \frac{1}{5} \cdot 90 + \frac{1}{5} \cdot 60 + \frac{1}{5} \cdot 50 = 70

また、文系・理系科目のそれぞれの平均点数を計算する場合は、重みをつけたベクトルを使って計算する。

文系=[1200120]理系=[01313013]科目_{\text{文系}} = \begin{bmatrix} \frac{1}{2} \\ 0 \\ 0 \\ \frac{1}{2} \\ 0 \end{bmatrix} \quad 科目_{\text{理系}} = \begin{bmatrix} 0 \\ \frac{1}{3} \\ \frac{1}{3} \\ 0 \\ \frac{1}{3} \end{bmatrix} 平均文系=文系A=[1200120][8070906050]=1280+1290=85平均点_{\text{文系}} = 科目_{\text{文系}} \cdot \vec{A} = \begin{bmatrix} \frac{1}{2} \\ 0 \\ 0 \\ \frac{1}{2} \\ 0 \end{bmatrix} \cdot \begin{bmatrix} 80 \\ 70 \\ 90 \\ 60 \\ 50 \end{bmatrix} = \frac{1}{2} \cdot 80 + \frac{1}{2} \cdot 90 = 85 平均理系=理系A=[01313013][8070906050]=1370+1360+1380=70平均点_{\text{理系}} = 科目_{\text{理系}} \cdot \vec{A} = \begin{bmatrix} 0 \\ \frac{1}{3} \\ \frac{1}{3} \\ 0 \\ \frac{1}{3} \end{bmatrix} \cdot \begin{bmatrix} 80 \\ 70 \\ 90 \\ 60 \\ 50 \end{bmatrix} = \frac{1}{3} \cdot 70 + \frac{1}{3} \cdot 60 + \frac{1}{3} \cdot 80 = 70

幾何(長さと角度)

内積を用いることで、ベクトルの長さや角度を計算できる。

vv=v2\mathbf{v} \cdot \mathbf{v} = |\mathbf{v}|^2 vw=vwcosθ\mathbf{v} \cdot \mathbf{w} = |\mathbf{v}| |\mathbf{w}| \cos \theta

ベクトルvを基準にしたとき、ベクトルwの長さは|w|cosθで表される。そのため、v・w|v||w|cosθとなる。

また、ベクトルvとwが同じ値の場合、cos0°=1となるため、v・v = |v|^2となる。