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

    ベクトルと内積

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

    ベクトルとは

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

    v=[v1v2v3⋮vn]v = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \end{bmatrix}

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

    ベクトルの内積

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

    v⋅w=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平均点=15⋅A⃗=[1515151515]⋅[8070906050]=15⋅80+15⋅70+15⋅90+15⋅60+15⋅50=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]=12⋅80+12⋅90=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]=13⋅70+13⋅60+13⋅80=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

    幾何(長さと角度)

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

    v⋅v=∣v∣2\mathbf{v} \cdot \mathbf{v} = |\mathbf{v}|^2 v⋅w=∣v∣∣w∣cos⁡θ\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となる。