机器学习笔记

参考: 吴恩达机器学习课程 https://www.bilibili.com/video/BV1owrpYKEtP

监督学习

为数据打上标签

输入 input: x 输出 output: label y

在给足够多正确示例后,算法学会了只根据输入x就给出正确的输出标签y

应用:邮件过滤、语音识别、机器翻译、广告推送、自动驾驶、视觉检测……

无监督学习

无标签

聚类算法

将未标记的数据放入不同的簇

线性回归模型

x - f - y 所拟合的函数f(a,b,c,……) 其中abc为函数参数(系数/权重)

成本函数

或者损失函数/目标函数,用于衡量模型预测好坏

J(w) 其中Jw可视化为多个维度上的曲面,寻求使Jw最小的w即寻求曲面的最低点

成本函数为权重调整做指导

不同类型任务成本函数可能不同,需要特化成本函数

线性回归常用损失函数为 均方误差(MSE):

J(θ) = (1/2m) * Σ(ŷ⁽ⁱ⁾ - y⁽ⁱ⁾)²

其中 ŷ⁽ⁱ⁾ = θᵀx⁽ⁱ⁾(线性预测)

收敛

在接近最低点的位置梯度下降得非常缓慢,如果加速收敛,会在收敛点附近震荡,如果精细收敛,会让整个收敛过程过长(即步长过长)。

自适应收敛:初始快速接近收敛点,到达收敛点附近精细收敛

梯度下降

1 量化误差 找到当前成本

2 分析误差方向:计算梯度 判断权重的调整方向

3 权重更新

w = w - a*dw 调整权重使Jw降低 a即步长,控制下降幅度大小 dw为J在w方向上求偏导
J可能具有多个参数,w、b、q,都进行如上调整 即梯度下降过程中所有参数同步更新
将w向量化,损失函数写为Jw、b=wx+b 其中w、b为向量
这样在更新权重时更新w1、w2、w3……

a(步长)多大导致在收敛点附近震荡,过小会收敛过慢

成本函数目标是找到山谷中的最低点,达到收敛位置的不止梯度下降一种方法

局部收敛

局部收敛是机器学习优化的根本挑战,算法可能卡在局部收敛点,导致表现不佳。

判断局部收敛

  • 所处位置过高
  • 小范围震荡
  • 存在其他最优解

应对局部收敛

引入随机性 增加噪音注入

增加批次 噪声大,探索能力强

增加初始位置

动量法冲出局部最优 可能错失最优

种群、遗传算法

多特征

一个样本数据可能存在多个属性,将这些属性量化后组成行向量来参与回归 我们可以将此特征(组成的)向量代表为v

可写为v = (x1,x2,x3,……)

则有Av = n 即表示经过矩阵操作A,由v计算得到n

其中 A = fw

Av = f(x1,x2,x3……)= w1x1+w2x2+…… 即多元线性回归

我们机器学习的过程是提供v和n来拟合A,推理过程是有A和v来得到n

向量化

多重线性回归中,Fw和Jw中的w是向量而非单个参数,在执行梯度下降等运算时更为高效

为什么numpy dot比循环逻辑快

– 二进制运算,无需类型检查和动态调度
– 数组在内存中连续
– 同步并行计算
等等

特征缩放

数据所处的范围不同,有的集中于很小的范围,有的范围非常广,直接训练会导致模型被尺度大的参数主导,通过缩放尺度来优化训练结果

均一化:将所有维度的数据都缩放到-1到1的尺度

如 20< x < 100 则缩放为 0.2 < x < 1

标准化: 均一化的一种方法 x = x−μ/σ 使数据均值为0,标准差为1,适用于特征分布近似正态的情况
最小-最大归一化:x′=x−min(x)/max(x)−min(x) 将特征缩放到[ 0,1 ]区间,对异常值敏感

检查梯度下降是否收敛

Jw、是否始终处于下降状态且下降得越来越慢

没有一个标准去判断多少次迭代合适

学习率的选择

选择一个略小于最大学习率的值 保证完成收敛且安全稳定

特征工程

通过原始特征值的转换、组合、创造,将原始数据转化为能够更好的表示模型预测相关参数的过程。

逻辑回归

逻辑回归用来解决分类问题
逻辑回归算法通过线性回归将结果限定在0false和1true两个值之间,表示是或否的概率,但通过Sigmoid激活函数使输出结果y只会是0或1 (y=Sigmoid(output))

决策边界

决策边界(Decision Boundary),也称为决策面,是一个用于将不同类别的样本在特征空间中分隔开来的超平面或曲面。

本质:它是你的分类模型(分类器)学到的“规则”在几何空间上的可视化体现。

作用:当输入一个新样本的特征向量时,模型会根据这个样本点落在决策边界的哪一侧来决定其类别。

关键点:决策边界是模型本身的属性,而不是数据本身的属性。不同的模型会在同一数据集上学习出不同的决策边界。

寻找最合适的决策边界就如同线性回归寻找最优拟合,它的损失函数是交叉熵损失,和线性回归一样通过梯度下降收敛

J(θ) = -(1/m) * Σ[y⁽ⁱ⁾log(σ(θᵀx⁽ⁱ⁾)) + (1-y⁽ⁱ⁾)log(1-σ(θᵀx⁽ⁱ⁾))]
其中 σ(z) = 1/(1+e⁻ᶻ)(Sigmoid函数)

正则化

为防止过拟合,在损失函数中引入一个惩罚项λ,通过调整λ来决定决策面的复杂程度,以避免在新数据中不适用

L1正则化(Lasso回归)

惩罚项:参数绝对值之和。
Penalty(θ) = Σ |θ_j| (通常不惩罚截距项θ₀)

数学形式:
J_reg(θ) = Loss(θ) + λ * Σ|θ_j|

关键特性:

特征选择(Sparsity):L1正则化倾向于产生稀疏解——将一些不重要的特征的系数直接压缩到0。这相当于自动进行了特征选择。

几何解释:在参数空间中,L1惩罚项的等高线是“菱形”,与损失函数的等高线相交时,容易交在坐标轴上,导致某些参数为0。

不可导性:|θ|在0处不可导,需要特殊优化方法(如坐标下降、近端梯度法)。

适用场景:

特征数量很多,但只有少数特征真正重要。

需要模型解释性,想知道哪些特征是关键的。

高维数据(特征数 >> 样本数)。

L2正则化(岭回归/Ridge回归)

惩罚项:参数平方和。
Penalty(θ) = Σ θ_j²

数学形式:
J_reg(θ) = Loss(θ) + λ * Σθ_j²

关键特性:

参数收缩:使所有参数同步地缩小,但不会精确为0。所有特征都被保留,只是影响力减小。

几何解释:L2惩罚项的等高线是“圆形”,与损失函数等高线相交时,参数会均匀缩小。

可导性:处处可导,容易用梯度下降优化。

解决多重共线性:在特征高度相关时,L2正则化能稳定解,使模型更鲁棒。

适用场景:

大多数特征都有用,只是部分特征有噪声。

特征间存在多重共线性。

需要平滑的预测函数。


此方悬停
相册 小说 Ai