机器学习教学计划与评价指标
2915 字约 10 分钟
2026-05-20
1.机器学习常见评价指标
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image.png
回归:
- MAE (Mean Absolut Error)
- MAE=n1∑i=1n∣fi−yi∣
MSE (Mean Square Error)
- RMSE (root mean square error)
- R方
分类:二分类,多分类(可以拆解成若干个2分类)
混淆矩阵:
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%201.png- 把对应结果写成矩阵的样子,这个就是混淆矩阵。包含了分类结果的全部信息
- 缺点,结果呈现不直观
准确度 Accuracy
- True Positives + True Negatives
- 混淆矩阵对角线相加
- 准确率高的模型是否是一个有效的模型呢?
- 不一定,无法应对本身比例差距悬殊的
- 例如垃圾邮件分类:本身不是垃圾邮件的数量非常庞大,如果把所有邮件都预测成正确邮件,那准确度非常高
精度Precision
- 精度高,代表诊断出来的结果,更高的概率是准确的
- True Positives/All positives
- Positives是我们关注的类别,比如垃圾邮件分类里面的垃圾邮件
- 精度:TP+FPTP
- 召回率:TP+FNTP
调和平均
- F1 Score:
- 2∗Precision+RecallPrecision∗Recall
- F beta Score
- Fβ=(1+β2)⋅(β2⋅precision)+recallprecision⋅recall
- beta > 1 倾向于recall
- Beta < 1 倾向于Preision
- F1 Score:
多分类问题:
- 混淆矩阵
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%202.png
- 2-本来是5, 被识别成了3
训练集:训练模型的
验证集:测试一下泛华能力,这是模型没有见过的数据集 (cv cross validation score)
测试集:预测
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%203.png
欠拟合和过拟合
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%204.png
- 欠拟合:训练数据不够
- 过拟合:泛化能力差
2.2 优化论基础和梯度下降
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%205.png
多元线性回归目标函数
f(x)=wTx+bf(x)=w1x1+w2x2+⋯+wdxd+b
损失函数
$MSE \ = \ min{||y-Xw||}^2_2$
让真实值和预测值差距越来越小
梯队与海森矩阵:
一阶导数和梯度:
f′(x);g(x)=∇f(x)=∂x∂f(x)=∂x1∂f(x)⋮∂xn∂f(x)
二阶导数和海森矩阵:
f′′(x);H(x)=∇2f(x)=∂x12∂2f(x)∂x2∂x1∂2f(x)∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22∂2f(x)∂xn∂x2∂2f(x)⋯⋱∂x1∂xn∂2f(x)⋯∂xn2∂2f(x)=∇(∇f(x))T
线性回归的解法:梯度为0
损失函数=0
无约束优化迭代法:
迭代法的基本结构:
- 选择一个初始点,设置一个convergence tolerance
- 决定搜索方向,使函数下降
- 决定步长α,是的 f(xk+αkdk) 对于α最小化,构建 xk+1=xk+αkdk
- 如果 dk<ϵ 则停止输出解,否则继续迭代
梯度下降法
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%206.png
泰勒展开:
- 假设认为一阶泰勒展开就可以很好的估计 xk附近的函数值
随机梯度下降法
每次用一个样本代替全局样本下降
https://blog.csdn.net/u010089444/article/details/53241218
/
2.3 决策树和信息增益
Decision Tree 逻辑判断的组合
常见的决策树:ID3,C4.5,CART
ID3模型训练
如何训练决策树:
信息熵计算公式: Ent(D)=−Σk=1Kpk×log2Pk
- 先求出来未分类之前的信息熵
- 目的是想让信息熵下降,优先选择让信息熵下降更多的分类。
- 计算每一个特征对应的信息熵下降的结果
信息增益:信息熵降低的值
Gain=Ent(D)−Ent(D′)
- 优先选择Gain最大的,因为信息熵下降的最多。
缺点:无法处理连续的数据
C4.5算的是信息增益率,ID3算的是信息增益
CART(Classification and regression tree)
Gini指数
gini(Ti)=1−Σj=1npj2
- 把各个成分平方,算gini指数
- 因为在二叉树的假设下gini指数近似等于信息熵
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%207.png
- 而基尼指数对复杂度有优势,信息熵的平替
- 判断方式等于信息熵
- 处理连续数据时候CART有优势
集成算法和XGBoost原理
随机森林,基于树模型的集成算法,基于多个模型的算法集合起来
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%208.png
- Bagging - parallel
- Boosting - sequential
- 根据训练结果,针对性的训练下一个结果
LightGBM (boosting decision tree)
微软开源算法软件包
支持分布式,内存占用小
数学原理
- 单边梯度抽样算法
- 带深度限制的leaf-wise算法
- 类别特征最优分割
- 互斥特征捆绑算法
工程实现
- 特征并行,数据并行,投票并行
- 缓存优化
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%209.png
特征工程
数据挖掘流程
- 数据预处理和特征抽取(特征工程)
- 模型训练
- 结果后处理
特征工程:
Feature scaling: Make sure features are on a similar scale
x′=xmax−xminx−xmin
- 决策树模型一般不需要标准化或者转化,神经网络一定需要
- 因为决策树是一个特征一个特征的处理信息。
对数转化
f(x)=ln(x+1)
对于偏度大于0.75的标签数据,一般有必要进行转换
特征组合&特征交叉
对于相互关联的特征可以进行交叉,可能发挥出更好的效果
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2010.png
特征预处理技巧
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2011.png
- 独热编码,常用语处理字符特征
- 将字符处理成向量
逻辑回归
分类问题:将线性表达式变为二分类器
y=wTx+b
映射函数:Sigmoid函数
y=wTx+b → σ(y)=1+e−y1
- 把所有映射的值压缩到0-1之间
- 压缩成了一个概率函数
- 输出某一个样本为正样本的概率。
- 越接近0,更大概率是负样本,越接近1,更大概率是正样本
最大释然估计maximum likelihood estimation
概率论:随机变量,分布已知
数量统计:随机变量,分布未知,通过观察对分布判断
总体→样本→样本观察值→理论分布
统计量:比如样本均值
最大释然估计:分布函数已知,但是一个或多个参数未知,可以用来估计总体参数值
- 对于两个取值的0,1分布,用伯努利分布
- 描述离散型随机变量:概率质量函数
- f(k,p)=pk(1−p)1−k
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2012.png
正则化
XGBoost,防止过拟合,加入正则化量
什么是正则化:
- 较大权重系数导致较小的系统误差
- 增大系数就可以使误差变小,显然不合理
- 训练过程中不能让系数无限增加
- 正则化就是用来约束系数大小的
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2013.png
过分追求对训练数据的拟合,从而导致泛化能力变差, 欠拟合
神经网络
神经元:感知器perception
如何用逻辑回归构建多分类器:
- 分别选择每一个样本作为正样本,做分类器,分别去辨别各种类别
- 二分类:交叉熵
- J(θ)=−m1∑i=1m[yilnhθ(xi)+(1−yi)ln(1−hθ(xi))]
- 多分类
单标签多分类:
- CrossEntropyLoss()
- 不需要独热编码,使用时候默认是单标签多分类
多标签多分类
- BCEwithLogisLoss(), FocalLoss()
- 需要手动独热编码
常见的激活函数:
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2014.png
时序数据和循环神经网络transformer
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2015.png
矩阵表示神经网络:
:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%99%E5%AD%A6%E8%AE%A1%E5%88%92/image%2016.png
- ∑i=1nwixi+b
- 每一个神经元都能写成向量内积的形式
时序数据:
时间发生的先后也是数据特征之一
RNN是一类拓展的人工神经网络,他是为了对序列数据进行建模而产生的
- 针对对象,序列数据,例如文本,是字母和词汇的序列,语音是音节序列,视频是图像的序列,气象观察,股票数据,都是序列数据
- 核心思想:样本之间存在顺序关系,在每个样本和它之前的样本存在关联,通过神经网络在时序上的展开,我们能够找到样本之间序列的相关性
- 隐藏层计算公式:
- ht=H(Wihxt+Whhht−1+bh)
- ht 表示当前时间步 t 的隐藏状态输出
- H 是激活函数,通常是 tanh 或 ReLU,用于引入非线性变换
- 公式中包含三个主要部分:
- Wihxt:输入到隐藏层的变换,其中 Wih 是输入权重矩阵,xt 是当前时间步的输入
- Whhht−1:前一时间步隐藏状态的影响,其中 Whh 是隐藏层的循环权重矩阵,ht−1 是前一时间步的隐藏状态
- bh:隐藏层的偏置项
这个公式的关键特点是它包含了 ht−1 项,这使得RNN能够"记住"之前的信息。通过这种方式,RNN可以处理序列数据,因为当前的输出不仅取决于当前的输入 xt,还依赖于之前的隐藏状态 ht−1。