Loading...
墨滴

沙子

2021/05/23  阅读:40  主题:默认主题

机器学习中的数学知识

机器学习中的基本数学知识

注:本文的代码是使用Python 3写的。

线性代数(linear algebra)

第一公式

这是在机器学习中,最常见的公式。我把这个称为机器学习的第一公式,实际上就是线性分类函数(linear classifier)。 训练分类器的目标就是求出 .

其中:

是一个一行矩阵

是一个一行矩阵

的维度相同

是一个数

,称为点积(dot product).

有时,我们也会见到这个公式表示为类似下面的样子,它们的基本含义都是一样的.

注:这里 表示为一个一维数组(或者向量、矢量(vector)) . 注:一维数组:在数学上,可以理解为向量,表示多维空间上的一个点。 注:由于在线性代数中,矩阵乘法 ,所以对于表达式 ,严格地说,要把矢量(向量)看做一列的矩阵(而不是一行的矩阵),才符合数学上的定义。 注:表达式 是正确的,因为 是矢量,这个符合矢量计算的定义。

矩阵的操作

由于,这篇文章是从数学的角度写的,所以我们先关注矩阵的操作。

转置(transpose)

矩阵的换位操作:将矩阵中的数按照对角线交换。 数学公式: 代码示例:

# Matrix Transpose
m = numpy.mat([[12], [34]])
print("Matrix.Transpose:")
print(m.T)
''' Output:
Matrix.Transpose:
[[1 3]
 [2 4]]

矩阵乘法

矩阵相乘的含义 如果一斤苹果10元,5斤苹果多少元?答案是: 如果一斤苹果10元,一斤梨20元,5斤苹果2斤梨一共多少元?

答案是:

我们可以看出矩阵相乘的约束:乘数1的列数要和乘数2的行数相等

  • 矩阵乘法不满足交换律

我们再看看交换乘数后,计算的结果:

比如:数2020的含义是2斤苹果多少钱。

举例说明它们的不同之处:

  • 计算公式 矩阵相乘是:用矩阵1的每一行和矩阵2的每一列的点积,得到一个矩阵。 的矩阵乘以 的矩阵,形成一个 的矩阵。
  • 代码演示:

    # Matrix Multiplication
    print("Matrix Multiplication")
    a = numpy.mat([12])
    b = numpy.mat([[10], [20]])
    print(a * b)
    print(a.T * b.T)

    a = numpy.mat([[12], [34]])
    b = numpy.mat([[1020], [3040]])
    print(a * b)

    ''' Output:
    [[50]]
    [[10 20]
     [20 40]]
    [[ 70 100]
     [150 220]]
    '''

矩阵的各种乘积

操作 数学符号 Python Demo
点积(dot product) a.dot(b) numpy.dot(a, b)
内积(inner product) $a⋅b, $ numpy.inner(a, b)
外积(outer product) numpy.outer(a, b)
元素积(element-wise product, point-wise product, Hadamard product ) numpy.multiply(a, b)

注:Python中,矩阵数据可以表示为matrix和ndarray两种类型。 这两种类型的操作非常接近,但是有细微的不同。 ndarray * operation :element-wise product. matrix * operation :dot product. numpy.multiply for ndarray :element-wise product. same. numpy.multiply for matrix :element-wise product. same. numpy.dot for ndarray : inner product. 1-d array. numpy.dot for matrix :dot product. shape determined by values. numpy.inner for ndarray :inner product. 1-d array. numpy.inner for matrix :inner product. shape determined by values. numpy.outer for ndarray :outer product. same. numpy.outer for matrix :outer product. same.

内积

英文: inner product, scalar product。 矢量的降维运算,变成一个数。 矩阵的内积是每行每列的内积的矩阵。

x = numpy.array([12])
y = numpy.array([1020])
print("Array inner:")
print(numpy.inner(x, y))
''' Output:
Array inner:
50
'''


x = numpy.mat([[12], [34]])
y = numpy.mat([1020])
print("Matrix inner:")
print(numpy.inner(x, y))
''' Output:
Matrix inner:
[[ 50]
 [110]]
'''

外积

矢量的升维运算, 维矢量和 维矢量的外积是 维矩阵。 矩阵的并集运算, 维矢量和 维矩阵的外积是(a1∗a2)∗(b1∗b2)(a1∗a2)∗(b1∗b2)维矩阵。

x = numpy.array([13])
y = numpy.array([1020])
print("Array outer:")
print(numpy.outer(x, y))
''' Output:
Array outer:
[[10 20]
 [30 60]]
'''


x = numpy.mat([[12], [34]])
y = numpy.mat([1020])
print("Matrix outer:")
print(numpy.outer(x, y))
''' Output:
Matrix outer:
[[10 20]
 [20 40]
 [30 60]
 [40 80]]
'''

注:有没有发现matrix outer 是vector outer的并集。

元素积(element-wise product/point-wise product/Hadamard product

x = numpy.array([13])
y = numpy.array([1020])
print("Array element-wise product:")
print(x * y)
''' Output:
Array element-wise product:
[10 60]
'''

x = numpy.mat([[12], [34]])
y = numpy.mat([[1020],[3040]])
print("Matrix Add :")
print(x + y)
''' Output:
Matrix Add :
[[11 22]
 [33 44]]
'''

初等数学

  • 求和公式
  • 求积公式

几何

范数(norm)

  • L1范数

    :L1范数,也就是各项元素绝对值的和

  • L2范数

or :L2范数,也就是各元素平方和的平方根

拉格朗日乘子法和KKT条件

如果方程式 有不等式约束条件,拉格朗日乘子法和KKT条件提供了一种方法,可以计算

关于拉格朗日乘子法和KKT条件,请看: 深入理解拉格朗日乘子法(Lagrange Multiplier)和KKT条件

信息论

香农熵(Shannon Entropy)

  • 熵的定义 在信息论中,熵是接收的每条消息中包含的信息的平均量,又被称为信息熵、信源熵、平均自信息量。 熵定义为信息的期望值。 熵实际是对随机变量的比特量和顺次发生概率相乘再总和的数学期望。 熵的单位通常为比特, bit 或者sh(annon) (基于2),但也用nat(基于自然对数)、Hart(基于10)计量,取决于定义用到对数的底。 熵的单位不重要。(因为是求对数,所以是等比的。不理解这句话也无所谓。) 熵值是一个>=0的值。 如果为0,则表明结果可以准确预测。从下面的公式可以看出,其概率为1.
  • 熵的特征
    • 发生概率越小的信息,熵值越大。
    • 常识的熵为0。
    • 从计算损失的角度来说:熵值越大,说明损失越大。
  • 期望值 在概率论和统计学中,一个离散性随机变量的期望值(或数学期望、或均值,亦简称期望,物理学中称为期待值)是试验中每次可能结果的概率乘以其结果的总和。 比如掷骰子, 其点数的期望值是3.5:
  • 通俗的理解 信息熵是:
    • 各个 (值的概率 * 值的长度) 的总和。
  • 数据集的信息熵的计算公式
  • 熵的作用
    • 计算损失(Loss function) 用于调整梯度递减的步长。(本次熵(损失)比上次熵(损失)大,说明步长太大了。)
    • 用于决策树 熵越大,说明特征(feature)的划分数据能力越强。

博弈论

  • 倾向关系(preference relation) 描述了玩家的倾向, 意味着“x至少和y一样好”。

不知道放到哪儿

  • 求最大化参数 数学表示 解释 可以用于返回一个可能性对大的分类。 返回当P(c)为最大值时c的值。

例如:

  • 返回最大值 数学表示 解释 在所有 的计算中,返回最大值P(a)P(a)。
  • 约束条件(Subject to) 数学表示 解释 当约束条件 ,成立时,有
  • 定义上相等 数学表示 解释 A的定义为B。
  • 2补数(2's complement) 一种使用2进制表示有符号数的方法。 第一位为符号位, 如果是0,则记做0; 如果为1,则记做 , n is the size of the number。 例如: 0010为2; 1010为-6。

附录

希腊字母的含义和发音

大写 小写 English 发音 中文 含义
1 Α α alpha a:lf 阿尔法
2 Β β beta bet 贝塔
3 Γ γ gamma ga:m 伽马
4 Δ δ delta delt 德尔塔 δ: delta value,偏差值
5 Ε ε epsilon ep'silon 伊普西龙
6 Ζ ζ zeta zat 截塔
7 Η η eta eit 艾塔
8 Θ θ thet θit 西塔
9 Ι ι iot aiot 约塔
10 Κ κ kappa kap 卡帕
11 λ lambda lambd 兰布达
12 Μ μ mu mju
13 Ν ν nu nju
14 Ξ ξ xi ksi 克西 ξ: slack variable,松弛变量
15 Ο ο omicron omik'ron 奥密克戎
16 π pi pai π: 圆周率
17 Ρ ρ rho rou
18 σ sigma 'sigma 西格马
19 Τ τ tau tau
20 Υ υ upsilon jup'silon 宇普西龙
21 Φ φ phi fai 佛爱
22 Χ χ chi phai
23 Ψ ψ psi psai 普西
24 Ω ω omega o'miga 欧米伽

松弛变量(slack variable):在SVM中,为了处理异常点(跑到另一个分类中的点),设定的容忍值。

数学符号的含义和发音

大写 小写 English 发音 中文 含义
1 ∂∂ partial - 偏分 偏分
1 ∞∞ infinity - 无穷 无穷

沙子

2021/05/23  阅读:40  主题:默认主题

作者介绍

沙子