机器学习中的基本数学知识
机器学习中的基本数学知识
注:本文的代码是使用Python 3写的。
线性代数(linear algebra)
第一公式
这是在机器学习中,最常见的公式。我把这个称为机器学习的第一公式,实际上就是线性分类函数(linear classifier)。
训练分类器的目标就是求出(w,b)(w,b)。
其中:
xx 是一个一行矩阵 [[x1,x2,...,xn]][[x1,x2,...,xn]]。
ww 是一个一行矩阵 [[w1,w2,...,wn]][[w1,w2,...,wn]]。
xx 和 ww 的维度相同。
bb 是一个数。
xwT=∑ni=1xiwixwT=∑i=1nxiwi,称为点积(dot product)。
有时,我们也会见到这个公式表示为类似下面的样子,它们的基本含义都是一样的。
f(x)=wx+bf(x)=wx+b
f(x)=wTx+bf(x)=wTx+b
f(x)=w⃗ ⋅x⃗ +bf(x)=w→⋅x→+b
注:这里ww表示为一个一维数组(或者向量、矢量(vector)) [x1,x2,...,xn][x1,x2,...,xn]。
注:一维数组:在数学上,可以理解为向量,表示多维空间上的一个点。
注:由于在线性代数中,矩阵乘法ab≠baab≠ba,所以对于表达式wTxwTx,严格地说,要把矢量(向量)看做一列的矩阵(而不是一行的矩阵),才符合数学上的定义。
注:表达式w⃗ ⋅x⃗ w→⋅x→和wxwx是正确的,因为ww和xx是矢量,这个符合矢量计算的定义。
矩阵的操作
由于,这篇文章是从数学的角度写的,所以我们先关注矩阵的操作。
换位(transpose)
矩阵的换位操作:将矩阵中的数按照对角线交换。
数学公式:wTwT
代码示例:
# Matrix Transpose
m = numpy.mat([[1, 2], [3, 4]])
print("Matrix.Transpose:")
print(m.T)
''' Output:
Matrix.Transpose:
[[1 3]
[2 4]]
'''
矩阵乘法
-
矩阵相乘的含义
如果一斤苹果10元,5斤苹果多少元?答案是:10∗5=5010∗5=50
如果一斤苹果10元,一斤梨20元,5斤苹果2斤梨一共多少元?
答案是:[1020][52]=10×5+20×2=90(2)(2)[1020][52]=10×5+20×2=90
我们可以看出矩阵相乘的约束:乘数1的列数要和乘数2的行数相等。 -
矩阵乘法不满足交换律
m1⋅m2≠m2⋅m1(3)(3)m1⋅m2≠m2⋅m1
我们再看看交换乘数后,计算的结果:
[1020][52]=[10×520×510×220×2]=[501002040](4)(4)[1020][52]=[10×510×220×520×2]=[502010040]
比如:数2020的含义是2斤苹果多少钱。
举例说明它们的不同之处:
m1⋅m2m1⋅m2的计算方法是:
m2⋅m1m2⋅m1的计算方法是:
- 计算公式
矩阵相乘是:用矩阵1的每一行和矩阵2的每一列的点积,得到一个矩阵。
l∗ml∗m 的矩阵乘以 m∗nm∗n 的矩阵,形成一个l∗nl∗n 的矩阵。