读书笔记-白话机器学习的数学

回归

线性回归

步骤

  1. 训练数据,画图

  2. 预测函数和目标函数

    • 初始值是随机的

    • 最小二乘法

    • 1 2 \frac{1}{2} 21​ 是方便计算加的

  3. 梯度下降法

    • 学习率 η \eta η
  4. 复合函数微分的链式法则

  5. 参数更新表达式

  6. 演示程序

  7. 标准化

    • 差值阈值,跳出训练

公式

预测函数:
f θ ( x ) = θ 0 + θ 1 x f_\theta(x)= \theta_0 + \theta_1x fθ​(x)=θ0​+θ1​x
目标函数(误差函数):
E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)} - f_\theta(x^{(i)}))^2 E(θ)=21​i=1∑n​(y(i)−fθ​(x(i)))2
梯度下降法表达式:
θ 0 : = θ 0 − η ∂ E ∂ θ 0 \theta_0 := \theta_0 - \eta\frac{\partial E}{\partial \theta_0} θ0​:=θ0​−η∂θ0​∂E​
链式法则:
u = E ( θ ) v = f θ ( x ) ∂ u ∂ θ 0 = ∂ u ∂ v ⋅ ∂ v ∂ θ 0 u= E(\theta) \\ v = f_\theta(x) \\ \frac{\partial u}{\partial \theta_0} = \frac{\partial u}{\partial v}\cdot\frac{\partial v}{\partial \theta_0} u=E(θ)v=fθ​(x)∂θ0​∂u​=∂v∂u​⋅∂θ0​∂v​
参数更新表达式:

u u u 对 v v v 的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
v v v 对 θ 0 \theta_0 θ0​ 的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
u u u 对 θ 0 \theta_0 θ0​ 的微分
$$
\begin{align*}
\frac{\partial u}{\partial \theta_0} &= \frac{\partial u}{\partial v}\cdot\frac{\partial v}{\partial \theta_0} \
&= \sum_{i=1}^{n}( v - y^{(i)})\cdot 1\
&= \sum_{i=1}^{n}( f_\theta(x^{(i)}) - y^{(i)})

\end{align*}
KaTeX parse error: Can't use function '$' in math mode at position 2: $̲\theta_0$ 的参数更新…
\theta_0 := \theta_0 - \eta\sum_{i=1}^{n}( f_\theta(x^{(i)}) - y^{(i)})
KaTeX parse error: Can't use function '$' in math mode at position 5: 同理,$̲\theta_1$ 的参数更新…
\theta_1 := \theta_1 - \eta\sum_{i=1}^{n}( f_\theta(x^{(i)}) - y{(i)})x{(i)}
$$

使用矩阵表示

预测函数:
f θ ( x ) = θ 0 + θ 1 x f_\theta(x)= \theta_0 + \theta_1x fθ​(x)=θ0​+θ1​x
使用向量表示:
KaTeX parse error: Undefined control sequence: \va at position 2: \̲v̲a̲{\theta} = \beg…

优化算法

  • 最速梯度下降法的缺点
    • 计算量大
    • 容易陷入局部最优解
  • 随机梯度下降
    • 随机选择一个训练数据来更新参数
    • 最速下降法更新一次,随机梯度下降法可以更新 n 次
  • 小批量梯度下降法
    • 随机选择 m 个训练数据来更新参数

问题

为什么要使用梯度下降法,直接求导不行吗?

  1. 确定不了导数为 0 的时候,是最大值还是最小值
  2. 计算机更擅长循环迭代的方式求解
  3. 多元表达式无法直接求解

为什么使用标准化?

  • 提升模型精度
  • 提升收敛速度
  • 不改变原始数据的分布

为什么是用 python 作为 AI 的主流语言?

  • 广泛的库和框架选择
  • 平*立性

学习率如何决定?

目前只能通过反复尝试来找到合适的值

扩展

  • 多重回归
    • 对参数进行标准化,校验时需要使用相同的平均数和标准差
  • 多项式回归

分类

感知机

  • 只能处理线性可分的情况
  • 可以处理三维以上的数据

步骤

  1. 训练数据,画图
    • 矩形为横向还是纵向
  2. 预测函数和目标函数
    • KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{x} 和 \vb*{w}为向量
    • 内积正负说明相似程度
    • 无目标函数
  3. 参数更新表达式
    • 寻找使权重向量成为法线向量的直线
    • 通过向量的相加实现权重的更新
  4. 演示程序
    • 指定训练次数

公式

预测函数(判别函数):
KaTeX parse error: Undefined control sequence: \vb at position 4: f_\̲v̲b̲*{w}(\vb*{x}) =…
参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{w} := \begin{…

逻辑回归

  • y 值使用 0 和 1 处理更加方便
  • 训练数据
    • 线性可分
    • 同感知机
  • 预测函数
    • KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}^T\vb*… 时,值为 0.5
    • 函数值在(0,1)范围内
    • KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}^T\vb*… 时的直线称为决策边界
  • 目标函数
    • 似然函数,Likelihood
    • 求使目标函数最大化的参数KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}
  • 参数更新表达式
    • l o g ( 1 − v ) log(1-v) log(1−v) 同样使用复合函数求导公式进行微分
    • 指定训练次数

公式

sigmoid函数:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+e−x1​
读书笔记-白话机器学习的数学

常用导数:
( e x ) ′ = e x ( e − x ) ′ = − e − x (e^x)' = e^x \\ (e^{-x})' = -e^{-x} (ex)′=ex(e−x)′=−e−x
sigmoid函数微分:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \sigma'(x) &= …
预测函数:
KaTeX parse error: Undefined control sequence: \vb at position 4: f_\̲v̲b̲*{\theta}(\vb*{…
阈值函数:
KaTeX parse error: Undefined control sequence: \vb at position 25: …in{cases} 1 & (\̲v̲b̲*{\theta}^T\vb*…
未知数据 KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{x}是横向图像的概率:
KaTeX parse error: Undefined control sequence: \vb at position 8: P(y=1|\̲v̲b̲*{x}) = f_\vb*{…
目标函数:
KaTeX parse error: Undefined control sequence: \vb at position 4: L(\̲v̲b̲*{\theta}) = \p…
对数似然函数:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \log L(\vb*{\t…
复合函数:
KaTeX parse error: Undefined control sequence: \vb at position 13: u = \log L(\̲v̲b̲*{\theta}) \\ v…
参数更新表达式:

u u u 对 v v v的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
v v v 对 θ j \theta_j θj​ 微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
u u u 对 θ j \theta_j θj​ 微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
θ j \theta_j θj​ 的参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 54: …^n(y^{(i)} - f_\̲v̲b̲*{\theta}(\vb*{…
θ j \theta_j θj​ 的参数更新表达式(和回归时保持一致):
KaTeX parse error: Undefined control sequence: \vb at position 44: …\sum_{i=1}^n(f_\̲v̲b̲*{\theta}(\vb*{…
决策边界:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{\theta}^T\vb*…

线性不可分

  • 多项式函数
  • 决策边界为曲线

决策边界:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{\theta}^T\vb*…

扩展

  • SVM 分类算法
  • 其他分类算法

正则化

  1. 确定正则化项
    • λ \lambda λ 表示正则化项影响程度
  2. 重定义目标函数
  3. 重定义参数更新表达式

公式

L2正则化项:
R ( θ ) = λ 2 ∑ j = 1 m θ j 2 R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2 R(θ)=2λ​j=1∑m​θj2​
目标函数:
KaTeX parse error: Undefined control sequence: \vb at position 59: …i)} - f_\theta(\̲v̲b̲*{x}^{(i)}))^2 …

参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 55: …^{n}( f_\theta(\̲v̲b̲*{x}^{(i)}) - y…

基础

  • 误差函数

    • MSE(Mean Square Error, 均方误差),KaTeX parse error: Undefined control sequence: \vb at position 37: …^n(y^{(i)} - f_\̲v̲b̲*{\theta}(\vb*{…
    • SSE(The Sum Of Squares Due To Error, 和方差)
    • RMSE(Root Mean Squared Error, 均方根误差)
  • 容量

    • batchsize:批大小
    • iteration:1 个iteration 等于使用 batchsize 个样本训练一次
    • epoch:1个epoch等于使用训练集中的全部样本训练一次
  • 随机梯度下降法(Stochastic Gradient Descent,SGD)

模型评估

  • 交叉验证:将数据按一定比例分为测试数据和训练数据,一般为 3:7 或者 2:8
  • 数据的分配方法不能太极端
  • 回归问题:均方误差
  • 计算精确率和召回率时使用数据少的类别
  • K 折交叉验证:需要确定一个合适的 K 值
  • 学习曲线:通过学习曲线判断模型是过拟合还是欠拟合
    • 高偏差(欠拟合):随着数据数量的增加,使用训练数据时的精度不断下降,使用测试数据时的精度不断上升
    • 高方差(过拟合):随着数据数量的增加,使用训练数据时的精度缓慢,使用测试数据时的精度不断上升,但是达不到训练数据精度

分类问题

  • 精度

A c c u r a c y = T P + T N T P + F P + F N + T N Accuracy = \frac{TP + TN}{TP + FP + FN + TN} Accuracy=TP+FP+FN+TNTP+TN​

  • 精确率:当训练数据极不平衡时,在分类为 Positive 的数据中,分类正确的比例

P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP​

  • 召回率:在 Positive 数据中,分类正确的比例
    R e c a l l = T P T P + F N Recall = \frac{TP}{TP + FN} Recall=TP+FNTP​

  • 一般来说,精确率和召回率会一个高一个低,不能取平均值

  • 调和平均值F1值
    F m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l F m e a s u r e = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l Fmeasure = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} \\ \\ Fmeasure = \frac{2 \cdot Precision \cdot Recall}{Precision + Recall} Fmeasure=Precision1​+Recall1​2​Fmeasure=Precision+Recall2⋅Precision⋅Recall​

  • 权重调和平均值F值
    F m e a s u r e = ( 1 + β 2 ) ⋅ P r e c i s i o n ⋅ R e c a l l β 2 ⋅ P r e c i s i o n + R e c a l l Fmeasure = \frac{(1 + \beta^2) \cdot Precision \cdot Recall}{\beta^2 \cdot Precision + Recall} Fmeasure=β2⋅Precision+Recall(1+β2)⋅Precision⋅Recall​

正则化

过拟合

  • 过拟合:只能拟合训练数据
  • 避免过拟合
    • 增加全部训练数据的数量(重要)
    • 使用简单的模型,例:将预测函数从曲线变成直线
    • 正则化
  • 欠拟合:一般模型过于简单
正则化
  • 防止参数变得过大,减少参数的影响,对参数进行惩罚
  • 不对偏置项进行正则化
  • λ \lambda λ 为正则化项影响程度
  • 线性回归的正则化
    E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 R ( θ ) = λ 2 ∑ j = 1 m θ j 2 E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)} - f_\theta(x^{(i)}))^2 \\ R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2 E(θ)=21​i=1∑n​(y(i)−fθ​(x(i)))2R(θ)=2λ​j=1∑m​θj2​
  • 分类函数的正则化,改变目标函数的符号将最大化问题转换为最小化问题
    KaTeX parse error: Undefined control sequence: \vb at position 9: \log L(\̲v̲b̲*{\theta}) = -\…
  • L1 正则化:被判定为不需要的参数为变为 0
    R ( θ ) = λ ∑ j = 1 m ∣ θ j ∣ R(\theta) = \lambda\sum_{j=1}^{m}|\theta_j| R(θ)=λj=1∑m​∣θj​∣
  • L2 正则化:抑制参数
    R ( θ ) = λ 2 ∑ j = 1 m θ j 2 R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2 R(θ)=2λ​j=1∑m​θj2​

参考

  • 数据集 Iris

待学习

  • numpy
  • Matplotlib Pyplot
上一篇:vb.net 连接sqlsever


下一篇:父组件访问子组件$children,$refs