视频加载失败

机器学习

5396 字
27 分钟
机器学习

人工智能的三大概念#

人工智能#

目标: 让机器表现出”智能”的行为,用计算机模拟人类大脑,像人脑一样理性地思考和行动.

关键: 人工智能不一定需要学习,早期的AI很多靠人工写规则.

机器学习#

是什么: 人工智能的一个子领域,把”人工写规则”转变为”让机器从数据中自己学出规则”.

经典方法:

  • 线性回归, 逻辑回归
  • 决策树, 随机森林
  • SVM(支持向量机)
  • K-means 聚类

深度学习#

是什么: 机器学习的一个子领域,使用多层神经网络,自动从数据中提取特征.

关键: 解决了ML的痛点——特征工程(特征由网络自动学习).

对比ML/DLMLDL
特征人工设计(很费人力)网络自动学习
数据量小数据也能用通常需要大数据
算力CPU 够用通常需要 GPU
可解释性较好较差(黑盒)

一句话总结: AI是梦想,机器学习是实现梦想的思路,深度学习是当前最强大的实现工具.

机器学习的两种方式#

基于规则的学习#

程序员根据经验,手工编写 if-else 规则进行预测.

基于模型的学习#

从数据中自动学习出规律.

一元线性回归:

  1. 用线性关系描述输入特征与输出结果之间的关系.
  2. 找一条直线,让它尽可能靠近所有数据点(或让点均衡分布在 直线两侧),利用这条线代表的关系实现预测.
  3. 直线写成 y = ax + b: 整条式子是模型; a(斜率/权重)和 b(截距/偏置)都是参数—— 参数通常未知,是训练要求解的量.

机器学习的发展史#

AI发展三要素: 数据, 算法, 算力#

  • 数据: 原料,类似汽油粮食. 数据的质与量决定模型上限, 算法与算力决定逼近上限的速度.
  • 算法: 类似于大脑/道路.
  • 算力: 类似于发动机/卡车.
  • CPU: 擅长逻辑控制与串行任务,适合I/O密集型任务.
  • GPU: 擅长大规模并行计算,尤其是矩阵运算,适合计算密集型任务.
  • TPU: Tensor Processing Unit(张量处理器), > 谷歌专为神经网络矩阵运算定制的芯片.

人工智能元年: 1956年达特茅斯会议, 约翰·麦卡锡提出 “Artificial Intelligence”一词.

几条发展路线:

  • 符号主义: 人写规则.
  • 统计学习: 不给硬规则,给大量数据及人工特征, 由机器自动寻找规律.
  • 神经网络(连接主义): 只给大量数据, 由机器自动寻找规律及特征.
  • 大规模预训练模型: 预训练+微调,一个大模型搞定很多任务.

机器学习数据集相关术语#

培训学科作业考试学历工作经验工作地点就业薪资
java90本科1北京14k
java80本科1武汉10k
AI90本科0北京15k
AI91本科1上海?
  • 样本: 一行数据就是一个样本.
  • 特征: 一列数据就是一个特征(培训学科、工作地点等).
  • 标签/目标(label/target): 模型要预测的那一列 (本例中是就业薪资).
  • 数据集: 多个样本组成.
  • 训练集: 用来训练模型的数据集,由两部分组成:
    • x_train: 训练集的特征
    • y_train: 训练集的标签
  • 测试集: 用来检验模型的数据集:
    • x_test / y_test

机器学习算法分类#

有监督学习#

带特征和标签的数据训练. 适用于分类任务、回归任务.

无监督学习#

有特征但无标签的数据训练. 适用于: 聚类(K-means)、降维(PCA)、异常检测、关联规则挖掘. 作用: 降低标注成本,或数据本身无法标注.

半监督学习#

少量带标签 + 大量无标签的数据共同训练.融合有监督与无监督,降低标注成本.

强化学习#

Agent在环境中不断试错,靠奖惩机制学会如何行动,以获得最多奖励.

机器学习建模流程#

  1. 获取数据: 明确数据源并加载(图像/文本/表格…)
  2. 数据预处理: 过滤空值、异常值等
  3. 特征工程: 反复做特征,让模型效果更好
  4. 模型训练: fit
  5. 模型预测: predict
  6. 模型评估: 用测试集评估(见”回归模型评估”), 效果不好则回到 3 调整特征或模型

特征工程#

是什么: 将原始数据加工成模型可用信息的过程.

  • 特征提取: 从原始数据中提取与任务相关的特征. 要贴合任务,任务不同,特征不同.

  • 特征预处理: 数据清洗、数值变换,消除数据缺陷, 让数据适配算法. 典型问题是量纲问题,两种解决法:

    • 归一化(Min-Max): (xxmin)/(xmaxxmin)(x-x_{min})/(x_{max}-x_{min}), 压缩到 [0,1] 区间.
    • 标准化(Z-score): (xμ)/σ(x-\mu)/\sigma, 变换为均值0、方差1,不限定取值范围.
  • 特征降维: 在核心信息损失最小的前提下,将高维特征映射到低维子空间.

    • 区分: 特征选择是”挑”出原有特征的子集,含义不变; 特征降维是”造”出新特征(PCA、AutoEncoder),
    • 新特征是原始特征的数学组合,一般无直观业务含义.
  • **特征选择 **: 选取有用的特征列,将无用的特征列移除.

    为什么?

    • 降维降噪,防过拟合

      无用或冗余的数据对模型就是噪声,模型会试图从”噪声” 中学习,在训练集上表现的头头是道,到了测试集上一塌糊涂,原因就是模型一直在”背噪声”.

    • 省算力,省时间

      移除无用列,节省算力. 如在正规方程中,复杂度为o(n^3)

    • 确保可解释性

      移除无用列,如决定薪资的是人的手机号,这个完全没有意义.

    • 规避维度灾难

      特征维度过高时,数据在高维空间里变的过于稀疏,模型找不到规律.

  • 特征组合: 将两个或多个特征相乘,交叉,拼接,生成新的特征.

    与降维的区别是: 降维是压缩信息,而组合是创造信息.

    为什么?

    • 表达交互效应

      如学区房贵的条件是: 是学区房且面积大,单独看一列,可能会有一些误解,如单看面积,有些城区小户型也贵.将两列组合起来,可以更有效的表达信息.

// todo#

对比分类任务和回归任务分类任务回归任务
输出离散的类别标签连续的数值
以KNN为例的预测逻辑K个邻居投票,取多数类别K个邻居标签取平均值
常用损失函数交叉熵,0-1损失MSE,MAE
评估指标准确率,精确率,召回率,F1MSE,RMSE,MAE,R^2
代表算法逻辑回归,KNN,SVM,决策树,朴素贝叶斯线性回归,岭回归,回归树
例子垃圾邮件,手写数字识别房价预测,温度预测,销售额预测.
  1. 分析线性回归的公式组成及作用

  2. 梯度下降中,有四种梯度下降计算方法,推导一下他们的公式

线性回归#

一元线性回归是什么: 求一条直线,让它尽可能靠近所有数据点,用于值预测.

多元线性回归是什么: 是一个超平面,让它尽可能靠近所有数据点,用于值预测.

一元线性回归方程: y=wx+by = wx + b

  • w: 斜率(权重) b: 截距(偏置)

多元线性回归方程: y=w1x1++wnxn+b=wTx+by = w_1x_1 + \cdots + w_nx_n + b = \boldsymbol{w}^T\boldsymbol{x} + b

w有多个,b只有一个,所以可以把w抽离出来,作为一个矩阵,但因为矩阵有一些运算规则,所以矩阵需要进行转置.

线性回归的目标就是 找出最优的w和b,使预测值与真实值的总误差最小. 误差使用损失函数进行衡量.

损失函数#

是什么: 衡量预测值真实值差距的函数. 损失越大,预测越偏离.

通用公式,一般不采用,仅用于原理解释: 将预测值与真实值之间的误差进行求和.

J(w,b)=i=1m(wx(i)+by(i))J(w, b) = \sum_{i=1}^{m}\big(w x^{(i)} + b - y^{(i)}\big)

参数解释

J(w,b)J(w,b): 一个关于w和b的二元损失函数

wx(i)+bwx^{(i)}+b<第i个线性回归方程的预测值>.

y(i)y^{(i)}: 第i个真实值

不采用的原因: 误差有正有负,若直接求和会抵消.

目的: 找到使损失最小的参数w和b.

以下是三种常用的损失函数

  • SSE(残差平方和): 所有误差平方直接相加,不除以 m.

    所以SSE的损失函数是: J(w,b)=i=1m(wx(i)+by(i))2J(w, b) = \sum_{i=1}^{m}\big(w x^{(i)} + b - y^{(i)}\big)^2

  • MSE(均方误差): 误差平方和 / m.等于SSE/m

    所以MSE的损失函数是: J(w,b)=1mi=1m(wx(i)+by(i))2J(w, b) = \frac{1}{m}\sum_{i=1}^{m}\big(w x^{(i)} + b - y^{(i)}\big)^2

  • MAE(平均绝对误差): 误差绝对值之和 / m.

    所以MAE的损失函数是: J(w,b)=1mi=1mwx(i)+by(i)J(w, b) = \frac{1}{m}\sum_{i=1}^{m}\big|\,w x^{(i)} + b - y^{(i)}\,\big|

  • SSE/MSE 处处光滑可导 -> 便于梯度下降优化(首选).
  • MAE 在零点不可导,但对异常值不敏感 > (MSE 的平方会放大离群点),量纲与原数据一致、直观.

如何”优化”损失函数?#

何为优化? 优化 = 寻找使损失函数J(w,b)取最小值的参数w和b.即求解w,b两个变量.

目标: 到达谷底(误差最小)

  • 参数 w, b 的优化: 用梯度下降压低损失的值,这是”优化”在ML中的默认含义.
  • 损失函数本身: 它是人设计的,可以修改(换函数形式、加正则项、改权重);
  • 损失函数定义了模型的价值观.
  • 注意: 训练找的是一个最优点(参数组合), 不是”一条最短路径”.
  • 迭代轨迹只是手段.

正规方程法#

本质: 方程求解,利用极值点处梯度为0(导数为0)这个数学性质,令偏导数等于0,直接求解方程组,一步跳到最低点.

分别对w,b求偏导

优势:

  • 一次性求出w,b,是精确的解析解.
  • 无超参数(不需要学习率,不需要考虑震荡/收敛).
  • 无需迭代,实现简单.

劣势:

  • 特征过多时,计算量爆炸.
  • 只适合线性回归问题,对于逻辑回归,神经网络等对θ\theta求偏导令为零后解不出闭式解,只能迭代.

步骤:

  1. 对w求偏导,令偏导等于0.
  2. 对b求偏导,令偏导等于0.
  3. 两个方程,两个未知数,联立求解 -> 可直接得到w,b.

适用于:

特征数少,数据量不大,需要精确求解的场景.

梯度下降#

是什么: 一种迭代优化算法,边走边修正的求最小值算法.

从初始点出发,每步沿负梯度方向(下降最快方向)挪一小步,重复成千上万次,走到最小值附近.

三个关键构件(下山比喻):

构件作用比喻
损失函数定义好与坏(误差大小)山的形状
梯度指出最陡方向及陡峭程度罗盘+坡度计
学习率步长的系数(信任梯度几分)固定深度的油门

梯度下降计算公式: w=wα梯度w_{新} = w_{旧} - \alpha \cdot 梯度

参数解释:

ww_新: 新的损失函数值

ww_旧: 旧的损失函数值

α\alpha: 学习率

梯度: 损失函数对参数的偏导数,指上升最快的方向,所以要使用负梯度.

梯度是什么?

  • 一元函数: 某点的斜率(带正负号的数).也就是对损失函数求导.
  • 多元函数: 所有偏导数组成的向量. 也就是对损失函数的每个自变量分别求偏导.

梯度大小的含义:

  • 梯度大: 此处坡陡,每走一步,损失函数变化都会很大.事半功倍
  • 梯度小: 此处坡不陡,每走一步,损失函数变化很小.事倍功半
  • 梯度趋于0: 到达极值点(可能是最低点/局部极小/鞍点).在这里意味着离最优解/局部最优解很近了.

为什么沿负梯度走?

  • 梯度的本义: 变化最剧烈的方向.
  • 而在损失函数中,梯度上升指的是损失上升的方向,所以要使用梯度下降,也就是负梯度.
  • 要想使损失函数下降最快,只能沿负梯度走.
  • 最快: 单位距离内,每走一次,使损失函数值下降最快.

学习率与步长?

  • 学习率 α: 预先设定的系数,全程固定,与地形无关.
  • 步长(实际迈多远) = α × 梯度大小: α 是你给的,梯度大小是地形给的,步长是相乘的结算结果.
  • α 太小 → 收敛慢; α 太大 → 震荡甚至发散(跨过谷底).
  • 经验区间 0.1 ~ 0.001,常配合学习率衰减.

四种梯度下降计算方法#

方法用于计算梯度的样本源方向怎么来特点用于
全梯度(FGD)全部样本,m个m个样本平均方向精确,无噪声,收敛稳;计算开销极大小批量数据精确计算;理论分析基准
随机(SGD)随机从样本中选取1个该样本梯度直接当方向算法简单高效,单步运算快,学习过程中的方差大,震荡不稳定;在线学习;超大规模数据
小批量(Mini-batch GD)随机b个,b常取2的k次幂本批内b个样本平均FGD和SGD的折中方案,允许GPU并行,深度学习常用.深度学习默认选择
随机平均(SAG)随机 1 个1个新梯度+m-1个缓存梯度的平均SGD的成本,FGD的平稳;吃内存样本量大但特征维度不多.(否则占用过多内存)

注意: 梯度下降是数值近似解.正规方程是解析解,精确解,当迭代次数足够多时,两者同时收敛于同一最优点,并无优劣差别.

回归模型评估方法#

是什么: 定量判断回归模型预测好坏的手段. 作用: 检验泛化能力、发现问题、对比选型. 在测试集上计算.

MSE 均方误差

公式: MSE=1mi=1m(y(i)y^(i))2MSE = \frac{1}{m}\sum_{i=1}^{m}\big(y^{(i)} - \hat{y}^{(i)}\big)^2

所有预测值和真实值差值的平方差的平均值.

mm为样本数量,yy为实际值,y^\hat{y}为预测值

RMSE 均方根误差

公式: RMSE=MSE=1mi=1m(y(i)y^(i))2RMSE = \sqrt{MSE} = \sqrt{\frac{1}{m}\sum_{i=1}^{m}\big(y^{(i)} - \hat{y}^{(i)}\big)^2}

所有预测值和真实值差值的平方差的平均值开根号.

等于MSE开根号,就这么简单

mm为样本数量,yy为实际值,y^\hat{y}为预测值

MAE 平均绝对误差

公式: MAE=1mi=1my(i)y^(i)MAE = \frac{1}{m}\sum_{i=1}^{m}\big|y^{(i)} - \hat{y}^{(i)}\big|

所有预测值和真实值的差值的平均值.

mm为样本数量,yy为实际值,y^\hat{y}为预测值

项目MAEMSERMSE
处理误差的方式取绝对值平方平方后开方
量纲与原数据一致原数据的平方与原数据一致
大误差/离群点不敏感(线性)重惩罚(平方放大)敏感(继承自平方)

拟合#

拟合: 模型从给定数据中寻找特征与标签关系的过程.

  • 欠拟合: 训练集差,测试集也差. 原因: 模型过于简单.

    解决方案:

    • 添加其他特征: 将线性模型通过添加二次项或更高次项使模型泛化能力更强( 说直白一点,一次线性模型是只能画直线,而添加了二次项或更高次项,则可以让模型去画曲线,以此增强拟合能力).
    • 采用能力更强的模型
  • 过拟合: 训练集好,测试集差. 原因:

    • 噪声多.
    • 样本量太少.
    • 模型过于复杂.

    解决方案:

    • 重新清洗数据: 对于过多异常点数据,数据不纯的地方进行再处理
    • 增大数据的训练量:
    • 正则化:
  • 正好拟合(目标): 训练集好,测试集也好.

泛化: 模型处理未见过的新数据的能力,是训练的最终目标.

奥卡姆剃刀: 泛化性能相同时,优先选择简单的模型.

正则化#

是什么? 在损失函数上额外加一个”惩罚项”,用于约束权重w的大小,让模型学得更简单,是一种缓解过拟合的技术.

公式: 损失函=损失函+α正则化项损失函数_新=损失函数_旧+\alpha \cdot 正则化项

符号含义
损失函损失函数_旧原始损失函数
损失函损失函数_新新损失函数
α正则化项\alpha \cdot 正则化项这个整体称为惩罚项
α\alpha惩罚系数, 控制原始损失与惩罚两者的平衡

正则化的分类#

L1正则化: J(w)=1mi=1m(yiy^i)2+αj=1nwjJ(\mathbf{w}) = \frac{1}{m}\sum_{i=1}^{m}\left(y_i - \hat{y}_i\right)^2 + \alpha\sum_{j=1}^{n}\left|w_j\right|

L2正则化: J(w)=1mi=1m(yiy^i)2+αj=1nwj2J(\mathbf{w}) = \frac{1}{m}\sum_{i=1}^{m}\left(y_i - \hat{y}_i\right)^2 + \alpha\sum_{j=1}^{n}w_j^2

参数解释:

符号含义
mm样本个数(第 1 个求和的上限)
nn特征个数 / 权重个数(第 2 个求和的上限)
yiy_i第 i 个样本的真实值
y^i\hat{y}_i第 i 个样本的预测值 y^i=wxi+b\hat{y}_i = \mathbf{w}^\top \mathbf{x}_i + b
wjw_j第 j 个特征的权重
α\alpha惩罚系数, 控制原始损失与惩罚两者的平衡

对比L1与L2正则化#

两句话总结: 前提: 总权重为固定值

  • L1喜欢集中: L1完全无所谓怎么分配,优化器可以自由地干掉一个,把权重让给另外一个 -> 稀疏
  • L2喜欢摊派: L2惩罚减半,优化器被迫人人有份,个个很小 -> 稠密
L1 正则化L2 正则化
惩罚项$\alpha \cdot \sum_{j=1}^{n}w_j
别名LassoRidge(岭回归)
权重结果部分权重精确 = 0(稀疏)权重逼近 0 但不为 0(稠密解)
额外能力自动特征选择解决多重共线性
梯度(惩罚部分)αsign(w)\alpha\cdot\mathrm{sign}(w)常数拉力2αw2\alpha w比例拉力
对大权重的惩罚相对“宽容”(线性增长)极其狠(平方增长)
对小权重的惩罚相对更狠(一刀切砍掉)温柔(越接近 0 拉力越弱)

KNN算法#

是什么? 是一个惰性算法,它没有训练过程,只是根据特征自动去训练集中匹配K个样本的相似性最后返回分类或回归值.

定义: 如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别.

分类: 属于有监督学习,既可以完成分类任务,也可以做回归计算.

KNN的核心步骤: 预测新样本时会进行如下步骤:

  • 计算新样本与训练集中的每一个样本的距离.

  • 选出距离最近的K个样本(K个邻居). 距离计算方式默认为欧几里得距离(欧氏距离),可选还有曼哈顿距离.

    闵可夫斯基距离: d(x,y)=(i=1nxiyip)1/pd(x, y) = \left(\sum_{i=1}^{n} |x_i - y_i|^p\right)^{1/p}

    p=1时,为曼哈顿距离.

    p=2时,为欧几里得距离.

    p>=2时,为切比雪夫距离.

  • 分类任务: K个邻居投票,少数服从多数,票数最多的类别作为预测结果.

  • 回归计算: 取K个邻居标签的平均值作为预测值.

由此可见,训练集就是全部的样本数据,KNN算法没有真正的”训练”过程.

在KNN中,有一个关键参数K:

  • K值太小: 模型容易变得复杂,过拟合.
  • K值太大: 模型学不会,欠拟合.
  • K=N: 这个完全没有意义,无情的投票机器.

K值设置为奇数是最为推荐的,用以避免平票.

注意点:

  1. 欧几里得距离,对于异常点很敏感,所以必须要对数据进行预处理,解决量纲问题. // todo
  2. 高维下性能退化: 当维度很高时,所有点之间的欧氏距离会趋于相同,失去了区分度,最近邻在此时失去了意义.
  3. 普通KNN算法,对每个特征维度都隐式的声明各维度独立且等权.即各维度的重要性(贡献度)相同.

特征预处理#

为什么? 不同特征的单位不一样,数值大小不一样,模型在学习时会优先学习数值较大的特征,较小的特征被忽略.为了解决这个问题,需要对数据进行预处理,有两种方式: 归一化标准化.

归一化#

将原始数据进行变换,把数据映射到[min,max]之间,默认是[0,1]之间.

公式1: 将数据映射到[0,1]之间: X=xminmaxminX' = \frac{x - min}{max - min}

公式2: 将数据映射到指定区间之间[mi,mx]: X=X(mxmi)+miX'' = X' \cdot (mx - mi) + mi

注意点:

归一化对异常点(离群点)异常敏感.

标准化#

将原始数据进行变换,把数据映射为均值为0,标准差为1的标准正态分布的数据.

公式: X=xmeanσX' = \frac{x - \mathrm{mean}}{\sigma}

对比归一化和标准化归一化标准化
异常点敏感度
结果范围固定在[0,1]无固定范围,均值0,方差1
适用场景数据边界明确,分布集中分布近似正态或存在异常值,多数机器学习算法默认选择.

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
机器学习
https://kulve.tech/posts/yuili/python笔记/机器学习/
作者
Kulve
发布于
2026-09-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Kulve
Hello, I'm Kulve.
公告
你好,欢迎来到我的博客
分类
标签
最新动态
站点统计
文章
17
分类
8
标签
23
总字数
29,467
运行时长
0
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录