一些机器学习相关的数学知识(二)

本文介绍了矩阵论的一些基本概念,包括向量的点积,正交向量的定义,以及模的计算。点积的结果是一个标量,而两个正交向量的点积为0。此外,文章讨论了特征值和特征向量,它们在矩阵乘法中扮演重要角色。最后提到了奇异值分解(SVD),它是特征值分解的推广,对于任意矩阵都适用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矩阵论

点积

也称内积,两个向量做完点积,结果是一个标量。

令向量x为:
x=[x1x2...xn] x=[x_1 x_2 ... x_n] x=[x1x2...xn]

向量y为:
y=[y1y2...yn] y=[y_1 y_2 ... y_n] y=[y1y2...yn]

则点积为:
dot(x,y)=xyT=[x1y1x2y2...xnyn] dot(x,y)=xy^T=[x_1y_1\quad x_2y_2\quad ...\quad x_ny_n] dot(x,y)=xyT=[x1y1x2y2...xnyn]

点积的python代码样例:

import numpy as np
def test_dot():
    a = np.array([1, 3, 4])    
    b = np.array([2, 2, 3])
    #结果均为20
    print np.dot(a,b.T)
    print np.dot(a,b)

不管做不做转置,numpy算出的均为标量结果。

正交向量

两个向量的点积为0,则它们互为正交向量。

模是向量的长度。

向量
x=[x1x2...xn] x=[x_1 x_2 ... x_n] x=[x1x2...xn]

的模为:
∣x∣=x12+x22+...+xn2 |x|=\sqrt{x_1^2+x_2^2+...+x_n^2} x=x12+x22+...+xn2

标准正交基

内积空间的一组向量,满足:

  • 两两正交(即内积为0)
  • 每个向量的模为1

称为标准正交基。

正交矩阵

满足
AAT=I AA^T=I AAT=I

的矩阵A为正交矩阵,I为单位矩阵。

正交矩阵有如下性质:

  • A转置也是正交矩阵
  • A的各行是单位向量且两两正交
  • A的各列是单位向量且两两正交
  • |A|=1
  • A的逆为A的转置

特征值和特征向量

设A是n阶方阵,如果数λ和n维非零列向量x使关系式
Ax=λx Ax=\lambda{x} Ax=λx

成立,那么这样的数λ称为矩阵A的特征值(eigenvalue),非零向量x称为A对应于特征值λ的特征向量。

注意:λ是一个数值,而非向量!

一个矩阵可能有多个特征值。

python实现(使用linalg.eig方法):

import numpy as np
def test_eig():
    A = np.array([[1, -3, 3], [3, -5, 3], [6, -6, 4]])
    a,b = np.linalg.eig(A)
    print 'value:%s' % a[0]
    print 'vector:%s' % b
    
    # (A-λ)x = 0,此处结果应该是个0矩阵
    print np.dot(A - a[0] * np.identity(3), b[:,0])

特征分解

假设A为n*n矩阵,特征值为:
λ1λ2...λn \lambda_1 \lambda_2 ...\lambda_n λ1λ2...λn

特征向量为:
x1x2...xn x_1 x_2 ... x_n x1x2...xn

令特征向量构成的矩阵为Q,即:
Q=[x1x2...xn] Q=[x_1 x_2 ... x_n] Q=[x1x2...xn]

则有:

AQ=A[x1x2...xn]=[Ax1Ax2...Axn]=[λ1x1λ2x2...λnxn]=[x1λ1x2λ2...xnλn]=[x1x2...xn][λ10...00λ2...000...λn]=QΛ AQ=A[x_1 x_2 ... x_n]=[Ax_1\quad Ax_2 ... \quad A x_n]=[\lambda_1x_1\quad \lambda_2x_2 ... \quad \lambda_nx_n] \\=[x_1\lambda_1\quad x_2\lambda_2 ... \quad x_n\lambda_n]=[x_1 x_2 ... x_n]\left[ \begin{matrix} \lambda_1 & 0 & ... & 0 \\ 0 & \lambda_2 & ... & 0 \\ 0 & 0 & ... & \lambda_n \end{matrix} \right]\\=Q\Lambda AQ=A[x1x2...xn]=[Ax1Ax2...Axn]=[λ1x1λ2x2...λnxn]=[x1λ1x2λ2...xnλn]=[x1x2...xn]λ1000λ20.........00λn=QΛ

其中:

Λ=[λ10...00λ2...000...λn] \Lambda=\left[ \begin{matrix} \lambda_1 & 0 & ...& 0 \\ 0 & \lambda_2 & ...& 0 \\ 0 & 0 & ...& \lambda_n \end{matrix} \right] Λ=λ1000λ20.........00λn

则:
A=QΛQ−1(1) A=Q\Lambda Q^{-1} \tag{1} A=QΛQ1(1)

式(1)称之为矩阵A的特征值分解(Eigen decomposition ),也称为谱分解(Spectral decomposition )。

特别的,对于实对称矩阵(元素为实数,且转置为自身),其所有的特征向量是正交的,并做归一化,式(1)可变成:
A=QΛQT A=Q\Lambda Q^T A=QΛQT

python实现:

import numpy as np
def test_eig():
    A = np.array([[1, -3, 3], [3, -5, 3], [6, -6, 4]])
    a,q = np.linalg.eig(A)
    # 结果就为A
    print np.dot(np.dot(q, np.diag(a)), np.linalg.inv(q))

特征值的意义

可以把特征向量看做投影坐标,把特征值看做投影后的振幅,振幅越大,说明投影效果越好。

奇异值分解(SVD,Singular Value Decomposition)

奇异值分解是特征值分解在任意矩阵上的推广。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值