这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

机器学习的数学基础

学习机器学习要先掌握数学基础。

回顾数学基础知识,包括线性代数、概率论、统计学、数值计算等。

  1. 线性代数
  • 矩阵和向量运算
  • 特征值和特征向量
  • 奇异值分解(SVD)
  • 主成分分析(PCA)
  • 统计学
  1. 概率论基础(概率分布、条件概率等)
  • 常见概率分布(高斯分布、多项分布等)
  • 抽样方法
  • 估计与假设检验
  • 贝叶斯统计
  • 微积分
  1. 导数和偏导数
  • 梯度
  • 矩阵微积分
  • 最优化方法(梯度下降、牛顿法等)
  • 算法和数据结构
  1. 基本数据结构(数组、链表、树、哈希表等)
  • 递归与动态规划
  • 算法复杂度分析
  • 信息论
  1. 熵及其意义
  • 数据压缩编码
  • 交叉熵与相对熵
  • 其他数据处理
  1. 缺失值处理
  • 数据规范化
  • 维数灾难
  • 特征工程

1 - 数学常识

P(y=1∣x)

P(y=1∣x)表示在给定x条件下,事件y=1发生的概率。这种写法是条件概率的一种表现形式,用于描述一个事件在另一个已知事件发生的情况下发生的概率。

条件概率的定义: 条件概率 P(A | B)定义为事件B发生的情况下,事件A发生的概率,记作P(A|B)。

条件概率的计算公式:P(A|B) = P(A∩B) / P(B)

其中 P(A∩B) 表示事件A和B同时发生的概率,P(B) 表示事件B发生的概率。

举例:
通常在逻辑回归模型中使用,在给定特征x的情况下,预测样本y=1的概率。

例如:在给定性别为男性的情况下,预测样本是否会购买产品的概率。

2 - 1. 线性代数

线性代数

线性代数

线性代数

线性代数学习大纲:

矩阵和向量

  • 矩阵和向量的定义
  • 矩阵和向量的基本运算(加法、数乘、转置等)
  • 矩阵乘法及其性质
  • 逆矩阵
  • 矩阵分解(LU分解等)

向量空间

  • 向量空间概念
  • 线性无关
  • 基和维数
  • 子空间
  • null空间和列空间

特征值和特征向量

  • 特征值和特征向量的定义
  • 对角化
  • 相似矩阵
  • 特征值分解
  • 矩阵的幂
  • 线性变换

奇异值分解(SVD)

  • 奇异值分解的定义
  • 计算SVD
  • SVD在降噪、压缩等应用
  • 伪逆

主成分分析(PCA)

  • PCA的动机

  • 协方差矩阵

  • 计算PCA

  • 降维

  • PCA在数据处理中的应用

  • 向量: 可以进行加减乘除操作的任意对象,如计算机中的数组

  • 标量:一个单独的数字,对向量进行缩放

  • 张量:向量和矩阵的另一种说法,向量是一阶张量,矩阵是二阶张量,图像是三阶张量(高度、宽度、颜色通道)

  • 线性组合:将向量按照一定的比例相加得到的新向量

  • 矩阵:一个二维数组,本质是对运动的描述

  • 单位矩阵: 任意向量与单位向量的乘积,等于什么都没做。

  • 秩: 经过线性变换后空间的维数,即该矩阵的线性无关的行列的最大数目。

  • 范数:向量的长度或大小,常用的是欧式距离。

  • 零向量:长度为零的向量。

  • 零矩阵:所有元素都为零的矩阵。

  • 行列式:矩阵的行列式的值,用来衡量矩阵的正负、奇偶性、逆矩阵的存在性。

  • 逆矩阵:矩阵的逆矩阵,即与矩阵相乘的结果为单位矩阵。

  • 特征分解:将矩阵分解为其特征向量和特征值。

在数学中,任意两个数在进行一种运算后,结果仍在这个集合中,那么这个集合对于这种运算是封闭的。 当初始拥有一定数量的向量后,进行假发和数乘运算,可能产生的整个向量集合是什么?这就引出了向量空间的概念。

线性组合

线性组合是指将一组向量按照一定的比例相加得到的新向量。

设有向量$a_1,a_2,…,a_n$,权重$w_1,w_2,…,w_n$,则$w_1a_1+w_2a_2+…+w_na_n$就是一个线性组合。

线性相关就是向量组中至少有一个向量都可以用向量组中的其他向量的线性组合来表示。换句话说,这个向量落在了其他向量所张成的空间中。

线性无关就是向量组中没有任一向量可以用其他向量的线性组合表示。向量组中的每一个向量都为向量组所张成的空间贡献了一个维度,每一个向量都缺一不可, 少了任何一个向量,都会改变向量组所张成的空间。

  • 一组向量要么是线性相关,要么是线性无关,没有第三种情况。
  • 如果一组向量中有至少一个零向量,或者有两个相同的向量,那么肯定线性相关。

基的定义

设$V$是向量空间$V$,$v_1,v_2,…,v_n$是$V$中的向量,$B$是$V$的一组基,如果$B$中的每一个向量都可以由$v_1,v_2,…,v_n$中的向量线性表示,那么$B$就是$V$的一组基。 简单点就是向量空间中的一组向量满足:互相线性无关,张成V,则它们是向量空间V的一组基。该空间的任意向量都能表达为基向量的线性组合。

基含有的向量的数量叫做维数(即该向量空间的维数,记作 dim(V))。同一个向量空间可以有不同的基,但同一个基的维数是相同的。

线性变换

如果一个变换同时具有以下2条性质,那么它就是线性变换:

  • 变换前后,所有的直线仍保持直线;
  • 变换前后,所原点保持不变

向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘机施加运动;矩阵的本质是运动的描述。

矩阵与基本运算

矩阵定义: m * n 个数字排成 m * n 列的二维数组就是矩阵,一般用大写字母表示。若 m = n , 则称为n阶方阵或者n阶矩阵。

矩阵的加法与数乘最简答:

  • 矩阵的加法:两个矩阵相加,对应元素相加。
  • 矩阵的数乘:矩阵与标量相乘,对应元素相乘。

矩阵的乘法:

公式: A 的行 * B 的列相加 。 C的大小为 A行 * B列。

eg:

A = [[1,2],[3,4]] B = [[2,0],[1,2]]

C = A * B

c11 = 1 * 2 + 2 * 1 = 4 c12 = 1 * 0 + 2 * 2 = 4 c21 = 3 * 2 + 4 * 1 = 10 c22 = 3 * 0 + 4 * 2 = 8

C = [[4,4],[10,8]]


def matrix_multiply(A, B):
    # 确认A的列数和B的行数相等
    if len(A[0]) != len(B):
        return None

    # 创建结果矩阵
    result = [[0 for _ in range(len(B[0]))] for _ in range(len(A))]

    # 计算乘积
    for i in range(len(A)):
        for j in range(len(B[0])):
            for k in range(len(B)):
                result[i][j] += A[i][k] * B[k][j]

    return result

A = [[1, 2],
     [3, 4]]

B = [[2, 0],
     [1, 2]]

print(matrix_multiply(A, B))

单位矩阵是指对角线上元素都为1,其他元素都为0的矩阵。任意向量与单位矩阵相乘,都不会改变得到自身。

行列式:

对于一个 n * n 的方阵A,行列式det(A)是一个数值,用来表示矩阵的一些特征。

对于一个 2*2 的矩阵 A=[[a,b],[c,d]] ,行列式det(A) = ad - bc

对于一个 3*3 的矩阵 A=[[a,b,c],[d,e,f],[g,h,i]] ,行列式det(A) = aei + bfg + cdh - ceg - bdi - afh

行列式的计算方法:

  • 对于 1*1 的矩阵,行列式为 A[0][0]
  • 对于 2*2 的矩阵,行列式为 ad - bc
  • 对于 3*3 的矩阵,行列式为 aei + bfg + cdh - ceg - bdi - afh
  • 对于 n*n 的矩阵,行列式的计算方法为:
    • 先将矩阵左上角的元素移到右下角,再将剩下的元素按顺时针方向填入,直到左下角的元素为止。
    • 对于填入的元素,如果该元素所在的行列号的和该元素所在的列号的差等于 n-1,则该元素为主元素,否则为次元素。
    • 主元素的乘积为该元素所在行列号的和,次元素的乘积为该元素所在行列号的差。
    • 最后,所有主元素的乘积相加,再减去所有次元素的乘积。

矩阵的转置:

矩阵的转置是指矩阵的行列互换。

对于一个 n * m 的矩阵 A,它的转置矩阵是 m * n 的矩阵,记作 A^T。

对于一个 2*2 的矩阵 A=[[a,b],[c,d]] ,它的转置矩阵是 [[a,c],[b,d]] 。

对于一个 3*3 的矩阵 A=[[a,b,c],[d,e,f],[g,h,i]] ,它的转置矩阵是 [[a,d,g],[b,e,h],[c,f,i]] 。

逆矩阵

一个方针A,如果存在一个矩阵B,使得 A * B 等于单位矩阵I,则称A是可逆的,B就是A的逆矩阵,记作 A ^ -1。

如果A可逆,则A的逆矩阵存在,且唯一。

矩阵的逆矩阵存在的充分必要条件是矩阵的行列式不为0

矩阵的逆矩阵的计算方法:

  • 首先,计算矩阵的行列式det(A)。
  • 然后,如果det(A)不等于0,则计算矩阵的adjugate矩阵adj(A)。
  • 最后,计算adj(A)的逆矩阵,即adj(A) * (1/det(A))。

矩阵的秩(rank)是指矩阵的行列式的绝对值,记作 rang(A)。

特征值和特征向量、特征分解与奇异值分解

特征值和特征向量

对于一个方阵A,如果存在一个数λ和一个非零向量v,使得Av = λv,则称λ为A的特征值,v为A的特征向量。 简单说就是,特征向量是将通过矩阵A变换后依然保持方向不变的矢量,特征值是在变换过程中缩放矢量的因子。

求解:

Av-λv = 0 (A-λI)v = 0 ,其中I是单位矩阵,要想这个方程有非零解,必须有: det(A-λI)=0

这个方程称为特征多项式,特征多项式的根即为矩阵A的特征值。

计算特征向量:对于每一个特征值λ,都可以找到一个对应的特征向量v,使得Av = λv。

  • 对于2*2的矩阵,特征值只有一个,特征向量就是矩阵的逆矩阵。
  • 对于3*3的矩阵,特征值只有3个,特征向量就是矩阵的主对角线上的元素。
  • 对于n*n的矩阵,特征值有n个,特征向量就是矩阵的n个主元对应的单位向量。

应用:

  • 图像压缩:将图像的像素值压缩到一个小的范围内,使得图像的质量不变,同时减少存储空间。
  • 数据降维:特征值和特征向量用于找到数据的主成分,从而实现降维。
  • 矩阵运算:特征值和特征向量用于进行矩阵运算,如PCA、SVD等。
  • 信号处理:信号的频谱可以分解为低频成分和高频成分,通过奇异值分解可以找到信号的主要成分。
  • 系统稳定性分析:特征值判断系统是否是稳定的,如果特征值全部为0,则系统是稳定的。
  • 模式识别:特征向量用于特征提取和数据表示。

特征分解

特征分解是指将矩阵A分解为其特征向量和特征值。 对于一个 n * n 的矩阵A,如果存在n个线性无关的特征向量,可以将A分解为: A = v Λ v^-1,其中v是特征向量组,Λ是特征值组。 其中,𝑉 是由特征向量作为列向量构成的矩阵,Λ 是一个对角矩阵,对角线上是对应的特征值。

奇异值分解(SVD)

奇异值分解(SVD)是指将矩阵A分解为三个矩阵U、Σ、V,其中U、V是正交矩阵,Σ是对角矩阵。

应用:

  • 数据压缩:svd 用于图像压缩,保留主要特征,减少存储空间。
  • 推荐系统: SVD 用于推荐系统,找到用户的兴趣偏好,推荐相关物品。
  • 图像处理:SVD 用于图像处理,提取图像的主要特征,并进行降维。
  • 矩阵运算:SVD 用于矩阵运算,如PCA、SVD等。
  • 信号处理:SVD 用于信号处理,提取信号的主要成分。

特征值和特征向量、特征分解与奇异值分解在数据分析、机器学习和各种科学与工程领域中都有重要的应用。通过理解这些概念和它们的计算方法,我们可以更好地分析和处理复杂的数据。

3 - 2. 概率论基础

概率论基础

概率论基础

概率论基础

概率论与统计学大纲

  • 基本概念
    • 概率与条件概率
    • 随机变量与分布(离散和连续)
    • 期望、方差和标准差
  • 主要分布
    • 二项分布与泊松分布
    • 正态分布与均匀分布
    • 指数分布与Gamma分布
  • 描述性统计
    • 均值、中位数和众数
    • 分位数与箱线图
    • 方差与标准差
  • 统计推断
    • 点估计与区间估计
    • 假设检验与p值
    • 置信区间
  • 贝叶斯统计
    • 贝叶斯定理
    • 先验和后验分布
    • 贝叶斯统计与推断

基本概念与分布情况

一个概率空间由三元组定义:

  • 状态空间/样本空间 : 一个试验所有可能出现的结果
  • 事件空间 : 试验的每一个单一结果为一个事件,它是状态空间的子集,而事件空间就是所有事件构成的集合。
  • 概率P(A) :描述发生的可能性,也称概率函数。

举个例子来理解上述三个概念。假如我们投掷一个6面骰子,那么样本空间 Ω = {1,2,3,4,5,6}。如果我们关注的事件是骰子点数是奇数还是偶数,那么事件空间就是 F = {∅,{1,3,5},{2,4,6}}

随机变量:

  • 定义:设 X 为一个试验,其结果为一个实数值,则 X 称为随机变量。
  • 随机变量的分布:随机变量 X 的分布是指随机变量 X 取各个值的概率。

根据状态空间不同,随机变量可以分为离散和连续的。

  • 能取有限的值,则该随机变量是离散的,离散随机变量的概率分布通过概率质量函数(PMF)表示,记作P(X=x)
  • 能取无限多个值,则该随机变量是连续的,连续随机变量的概率分布通过概率密度函数(PDF)表示,记作f(x)

分布:

  • 概率分布:随机变量取一个特定值的概率, P(X)

  • 边缘分布:一个随机变量对于其自身的概率分布。换句话说,就是在联合分布的情况下,边缘分布就是把另一个变量的所有可能取值相加。

  • 联合分布:由多余一个变量决定的概率分布,即多件事件同时发生的情况, P(X,Y)

  • 条件分布:已知某些事件已经发生的前提下,另一事件发生的概率的分布。P(X|Y)

  • 二项分布:在离散时间上,某事件发生的次数的分布。有两个参数,n,表示试验次数,p表示事件发生的概率。P(X=k) = C(n,k)p^k(1-p)^(n-k) ,其中C(n,k)是组合数,读作n选k,公式 n! / (k!(n-k)!) ,如 C(10,3) = 10!/(3! * 7!)

  • 泊松分布:在连续时间上,某事件发生的次数的分布。只有一个参数,λ,表示事件发生的次数。P(X=k) = e^(-λ)λ^k/k! ,e是自然对数的底,约等于2.71828

  • 正态分布/高斯分布:常见的连续概率分布,在连续时间上,一个随机变量的分布。有两个参数,μ表示分布的均值,σ^2表示方差。P(X=x) = (2πσ^2)^{-1/2}exp(-(x-μ)^2/2σ^2)

  • 多项分布:描述多个类别事件的离散概率分布。有两个参数,n,表示试验次数,p1,p2,…,pk表示各个类别事件发生的概率。次数n 和 每个类别的概率向量 p。公式 P(X1=x1,X2=x2,…,Xk=xk) = (n! / x1!x2!…xk!) * p1^x1 * p2^x2 * … * pk^xk

总结:

  1. 高斯分布 主要用于描述连续数据的概率分布,定义了均值和标准差。
  2. 多项分布 则用于描述多个类别的离散数据,在多个类别中统计每个类别出现的次数。

统计推断

从样本数据中获取信息并对总体进行预测和推断,主要设计两大部分:点估计和区间估计。

点估计:用一个单一的数值从样本数据中去估计总体参数。

  • 均值估计:用样本均值去估计总体均值
  • 方差估计:用样本方差去估计总体方差

如有一个样本数据集{x1,x2,…,xn},样本均值的点估计计算方法是:

x̄ = 1/n ∑(n,i=1) xi

区间估计:用一组数值从样本数据中去估计总体参数的置信区间。

置信区间:表示在一定的置信水平下,总体参数位于某个范围内。

置信水平:置信水平是指总体参数的真实值与估计值的差距所能容忍的最大值。

贝叶斯统计

贝叶斯统计是一种概率论的分支,它利用贝叶斯定理来更新概率估计,在获取新数据时动态调整对未知参数或事件的概率分布。与传统频率派统计不同,贝叶斯统计将概率解释为对某一事件的信心程度,而不仅仅是长期频率。

核心概念:

  • 先验概率:在考虑新数据之前,对位未知参数的初始估计。
  • 似然函数:根据现有数据计算出,表示数据在特定参数值下出现的概率。
  • 后验概率:更新后的概率,结合了先验概率和新数据,反映了在新数据下,参数的估计值。

贝叶斯定理:

  • 贝叶斯定理是关于概率的基本定理,它告诉我们如何利用已知的信息来更新不完整的概率分布。
  • 贝叶斯定理的基本思想是,已知某件事情发生的概率,可以根据已知的信息来计算另一件事情发生的概率。
  • 贝叶斯定理的公式为:P(A|B) = (P(B|A)P(A))/P(B)

例子说明:

Q: 假设我们做市场调查,想知道城市中有多少百分比的人喜欢某种饮料。

  1. 先验概率:我们不知道城市中有多少百分比的人喜欢某种饮料,根据其他城市的经验估计有20%的人会喜欢。
  2. 收集数据:我们随机抽取了100个人,其中25人喜欢
  3. 计算似然函数:对于每个可能的喜欢百分比(从0%到100%),计算这些数据出现的概率。这个概率跟二项分布有关,因此可以用二项公式计算每个可能喜欢百分比下观测到25/100这个结果的概率。
  4. 应用贝叶斯定理:结合先验概率和似然函数来计算后验概率。计算后,会得到一个更新的概率分布,表示在观测到25个喜欢的人之后,对喜欢百分比的新的信心。

应用:

  • 机器学习: 如贝叶斯网络,贝叶斯优化,贝叶斯分类器等
  • 医学:
  • 经济金融:
  • 自然科学

似然函数的解释:

似然函数是在给定参数值下,数据出现的概率。它描述了在假设某个特定参数值时,观察到给定数据的可能性。虽然它和概率密度函数(PDF)/概率质量函数(PMF)有相似之处,但在似然函数中,把参数视为变量,而数据是固定的。

如抛了10次硬币,观测到7次正面朝上,你想估计 𝜃 是多少。

n=10,k=7,函数是 L(𝜃) = c(10 7)𝜃^7(1-𝜃)^3,其中 c(10 7) 是组合数。

为了找到最有可能的 θ,我们通常会最大化这个似然函数(这叫做最大似然估计,MLE)。在实际操作中,这可以通过对数似然函数来简化计算。

直观理解:

  • 固定数据,变参数:似然函数固定了数据(如观测到的7正3反),然后变换参数(如 𝜃=0.1,0.2,…,0.9θ=0.1,0.2,…,0.9 等)来看在不同 θ 下这些数据出现的可能性。
  • 找到最优θ:似然函数的最大值对应的参数值 𝜃 就是我们认为最有可能使这些数据出现的参数值。

4 - 3. 导数和偏导数

导数和偏导数

导数和偏导数

导数和偏导数

  • 导数
  • 梯度
  • 矩阵微积分
  • 最优化方法(梯度下降、牛顿法等)

导数是一个函数某一点的变化率,对于单变量函数f(x),导数记作 f’(x) 或 df/dx。

偏导数是一个函数有多个变量时,比如f(x,y),对每个变量进行微分,得到偏导数。

梯度:是多变量函数的导数向量,对应每个变量的偏导数,对于函数f(x,y,z),梯度记作 grad f(x,y,z) = (df/dx, df/dy, df/dz)。 梯度指向函数增长最快的反向,梯度的大小(即向量的长度)表示增长率的快慢。

矩阵微积分:对矩阵求导,得到矩阵的雅可比矩阵,即梯度的矩阵形式。

海森矩阵是一个方阵,包含二阶偏导数,通常用户分析函数的曲率。

最优化方法:梯度下降、牛顿法等。

梯度下降

梯度下降:是一种迭代优化方法,用于找到函数的局部或者全局最小值。

算法步骤:

  1. 随机选择一个起始点x0。
  2. 计算函数f(x)在x0处的梯度grad f(x0)。
  3. 确定步长α,使得x1 = x0 - α*grad f(x0)。
  4. 重复步骤2和步骤3,直到收敛。

牛顿法

牛顿法利用二阶导数(海森矩阵)加快收敛速度,适用于函数曲率信息明显的情况。

算法步骤:

  1. 随机选择一个起始点x0。
  2. 计算函数f(x)在x0处的海森矩阵H(x0)。
  3. 计算函数f(x)在x0处的梯度grad f(x0)。
  4. 计算矩阵H(x0)的逆矩阵,即H(x0)^-1。
  5. 确定步长α,使得x1 = x0 - αH(x0)^-1grad f(x0)。
  6. 重复步骤2-5,直到收敛。

牛顿法需要计算和存储海森矩阵,计算成本较高。

5 - 4. 基本数据结构

基本数据结构

基本数据结构

基本数据结构

6 - 5. 熵及其意义

熵及其意义

熵及其意义

熵及其意义

7 - 6. 缺失值处理

缺失值处理

缺失值处理

缺失值处理

  • 数据规范化
  • 维数灾难
  • 特征工程

缺失值处理:

  1. 删除法:
    • 删除行
    • 删除列
  2. 补全法:
    • 均值补全
    • 众数补全
    • 中位数补全
    • 插值法
  3. 预测法:
    • 机器学习算法预测
    • 多重插补法

数据规范化:

规范化的目的是将不同的量纲和范围的数据变换到同一量纲和范围,以便后续的分析和建模。

  1. 最小-最大归一法
  2. 标准法
    • 将数据转化为均值是0,方差是1的正态分布
    • 适用于数据分布大致对撑的数据
  3. max_abs 归一法
    • 将每个特征缩放到 |-1,1|范围,但不会改变数据的稀疏性

维数灾难:指的是随着数据特征维度的增加,数据稀疏性大幅增加,导致计算复杂度显著提高,模型表现下降的问题。

解决方法:

  1. 特征选择:
  2. 降维技术

特征工程:从原始数据中提取出有代表性且能更好描述数据特征的过程。

  1. 特征构造:
  • 创建新特征:结合现有特征,创建出新的有意义的特征,如两个特征的比值、累积量、时序特征等。
  • 分箱处理:将连续特征离散化,适用于某些分类算法,如决策树。
  • 交互特征:引入特征之间的交互项,可以捕捉到特征之间更复杂的关系。
  1. 特征提取:
  • 主题模型(如 LDA):从文本数据中提取主题特征。
  • 频谱分析:从信号数据中提取频率特征。
  1. 特征选择:
  • 过滤法:通过统计检验或评分函数,选择显著特征。
  • 嵌入法:基于模型的特征选择,例如通过正则化方法(Lasso回归)选出的特征。
  • 包裹法:使用一个预测模型,评估特征子集的效果,选择最佳子集。
  1. 特征编码:
  • 独热编码(One-Hot Encoding):将类别特征转化为二元矩阵。
  • 标签编码(Label Encoding):将类别特征转化为整数标签。
  • 目标编码(Target Encoding):用类别特征对应的目标变量的平均值来编码类别特征。

在机器学习中,缺失值处理、数据规范化、维数灾难解决和特征工程是重要的预处理步骤。 它们分别确保了数据的完整性一致性、处理效率、模型性能和特征的有效性。 这些步骤帮助我们从原始数据中提取最具信息量的特征,从而训练出更准确、更可靠的模型。