一, 机器学习
机器学习定义: 计算机能够在没有明确的编程情况下学习
特征: 特征是描述样本的属性或变量,是模型用来学习和预测的基础。如: 房屋面积, 地理位置
标签: 监督学习中需要预测的目标变量,是模型的输出目标。如: 房屋价格
样本: 如: {面积=100㎡, 卧室=3, 位置=市中心, 价格=500万}, 数据集中的一个独立实例, 包含一组特征及对应的标签。
样本向量形式:
独热编码举例:
1.1 机器学习的分类
1) 监督学习: 根据带标签的数据训练模型,预测新样本的标签。如回归, 分类。
回归应用: 房价预测
分类算法: 根据年龄和肿瘤大小判断肿瘤良/恶性
2) 无监督学习: 从未标注数据中发现潜在结构或模式。如聚类, 异常检测, 降维(大数据集压缩成更小的数据集, 并可能少地丢失信息)
聚类: 谷歌新闻示例
3) 半监督学习: 结合少量标注数据和大量未标注数据进行训练。如医学图像分析
4) 强化学习: 通过与环境交互学习策略,最大化累积奖励。如游戏AI, 自动驾驶
1.2 监督学习算法
1.2.1 线性回归
第i个数据特征:
损失函数(Loss Function):衡量单个样本的预测值与真实值的差异。
成本函数(Cost Function):衡量整个训练集的平均损失。
平方误差损失:
平方误差成本函数: 一定是凸函数,确保只有一个全局最小值
模型(y=wx)与成本函数示例 (左图w=-0.5、0、0.5、1时的情况):
模型(y=wx+b)下的成本函数:
模型与J(w,b)的平面等高线:
学习率(α):控制模型参数更新步长的超参数。
学习率的取值的两种情况:
1) 学习率过大:参数更新步长过大,可能导致损失值震荡甚至发散。
2) 学习率过小:收敛速度极慢,可能陷入局部极小值。
示例:
梯度下降公式:
推导过程:
梯度算法演示:
两个特征的多元线性回归举例:
特征缩放: 加速模型收敛。有如下方法:
标准化(Z-Score标准化):
标准差:
归一化(Min-Max缩放):
标准化与归一化的区别:
举例 (标准化前后的数据集) :
1.2.2 逻辑回归
通过线性组合特征与参数,结合Sigmoid函数将输出映射到概率区间(0-1),用于解决分类问题(尤其是二分类)。
Sigmoid函数模型:
图形:
对数损失函数(交叉熵损失):
对应图形:
为什么不使用均方误差(MSE)作为损失函数: 当预测值接近 0 或 1 时, 梯度接近于0, 权重几乎无法更新。
对应成本函数:
为什么选择对数损失函数:
1) 概率视角:最大似然估计(MLE)
2) 优化视角:凸性
梯度下降算法:
与线性回归梯度算法的区别: 模型定义不同:
线性回归与逻辑回归区别:
1.2.3 正则化
解决过拟合情况:
1) 收集更多数据
2) 仅用特征的一个子集
3) 正则化
欠拟合(高偏差), 适中, 过拟合(高方差)
正则化项:
添加正则化项后的梯度算法:
原理: 通过在损失函数中添加与模型参数相关的惩罚项,限制参数的复杂度,从而提升模型的泛化能力。 (使得W尽可能小以此使得函数趋于平滑)
λ过大: 参数被过度压缩,模型过于简单,无法捕捉数据中的有效规律。
λ过小: 正则化作用微弱,模型过度依赖训练数据中的噪声或局部特征。
备注: 只要正则化得当, 更大的神经网络总是更好的。
例图:
根据交叉验证误差找到适合的λ:
λ取值与交叉验证误差及训练集误差的关系:
1.2.4 决策树
一种树形结构的监督学习模型,通过递归划分特征空间,对样本进行分类或回归。
递归分裂过程:
- 从根节点开始,计算所有特征的分裂指标(如信息增益)。
- 选择最优特征作为当前节点的分裂特征。
- 根据特征的取值将数据集划分为子集,生成子节点。
- 对每个子节点递归执行步骤1-3,直到满足停止条件。
停止条件:
- 节点样本数小于预设阈值。
- 所有样本属于同一类别。
- 特征已用完或分裂后纯度提升不显著。
预剪枝: 在树生长过程中提前终止分裂。如设置最大深度
信息熵:度量数据集的混乱程度。值越小分类越明确。图为二分类情况
示例图:
推广多分类:
信息增益:特征分裂后熵的减少量。值越大特征越重要。图为二分类举例:
多分类推广:
符号含义:
二分类分裂决策举例:
决策树处理处理连续值特征:
1) 特征排序: 从小到大排序
2) 候选分割点生成:相邻值的中间点作为候选分割点。
3) 计算分裂指标: 计算分裂后的信息增益(分类)或均方误差(回归)。
4) 选择最优分割点
5) 递归分裂
示例图: 选择分裂点(分类)
示例图: 选择分类点(回归, 预测值为叶子结点的平均值)
随机森林
通过构建多棵决策树,结合投票(分类)或平均(回归)实现预测。
训练步骤:
1) Bootstrap抽样:从D中有放回地抽取N个样本,形成子集。
2) 构建决策树:在上训练一棵CART(分类与回归树)树,每次分裂时仅考虑m个随机选择的特征。m=math.sqrt(总特征数)
3) 保存模型:将训练好的树ht加入森林。
4) 预测:
· 多数投票法(分类):每棵树对样本预测一个类别,最终选择得票最多的类别。
· 平均值(回归):所有树的预测结果取平均。
放回抽样: 每次从总体中随机抽取一个样本后,将该样本放回总体,确保它在后续抽取中仍有可能被再次选中。
基尼系数公式:
符号含义:
作用:衡量数据集的不纯度。基尼系数越小,数据越“纯净”(同一类样本占比越高)。
基尼指数公式:
符号含义:
作用:衡量按特征 A 分裂后的整体不纯度。决策树选择基尼指数最小的特征进行分裂。
XGBoost思想: 在每一轮迭代中,通过拟合前序模型的预测残差(负梯度方向),并自动调整对预测不准样本的关注度,同时结合正则化防止过拟合。
1.3 非监督学习算法
1.3.1 聚类算法
将未标记的数据划分为若干组(簇), 组内相似性高, 组间差异性大。
K-means算法: 随机初始化K个中心点 → 分配数据点到最近中心 → 更新中心点 → 迭代至收敛。
K-means算法流程:
k-means工作示例:
质心:
符号含义:
不同初始化时的可能情况:
肘部算法: 选取合适的K值
1.3.2 异常检测
密度评估: 当P(x)小于某个值时, 为可疑异常, 相比较监督算法, 更容易发现从未出现过的异常
正态分布(高斯分布)的概率密度函数
推广(向量):
非高斯特征转化 :
协调过滤:
回归成本函数:
梯度算法:
均值归一化作用: 若无评分数据,使用全局均值 μglobal 作为初始预测值。
预测值:
基于内容的过滤算法:
PCA算法: 无监督的线性降维方法,通过正交变换将高维数据投影到低维空间,保留数据中的最大方差。以期用更少的特征(主成分)解释原始数据中的大部分变异性。
与线性回归的区别:
1.3.3 强化学习
贝尔曼方程:
- Agent(智能体):决策主体,执行动作(Action)。
- State(状态 s):环境在某一时刻的描述。
- Action(动作 a):Agent的行为选择。
- Reward(奖励 R(s)):环境对Agent动作的即时反馈。
- Value Function(价值函数):衡量状态或动作的长期价值(Q(s,a))。
- 其中γ∈[0,1]为折扣因子
小批量处理实现流程:
- 数据分块:将训练集随机划分为多个小批量。
- 前向传播:对当前小批量计算模型输出。
- 损失计算:根据预测值和真实标签计算损失(如交叉熵、均方误差)。
- 反向传播:计算损失对参数的梯度。
- 参数更新:使用优化算法(如SGD、Adam)更新模型参数。
- 重复:遍历所有小批量完成一个训练周期(Epoch)。
优势: 避免一次性加载全部数据, 更新更频繁,加快收敛。
软更新
二、深度学习
2.1 基本概念
输入层: x向量表示原始数据
隐藏层: 如下图 layer1 到 layer3输出激活值(向量)。通过权重和激活函数提取抽象特征。
输出层: layer4, 生成最终预测结果(如分类概率)。
神经元(节点):每层的圆圈代表一个神经元,负责接收输入信号并计算输出。
激活函数: 引入非线性,使网络能够拟合复杂函数。
前向传播示例图:
三种激活函数:
备注: 梯度下降时sigmoid两端导函数为0, 二ReLu只有一端。
为什么模型需要激活函数: 使得模型非线性。神经都是线性回归则神经网络只是一个线性回归。
反向传播: 通过链式法则,依次计算每一层的梯度
举例:
梯度下降: 利用反向传播计算的梯度,梯度下降通过以下公式更新参数
2.3 多分类与多标签分类
多分类: 将样本分配到唯一一个类别中, 如数字识别
多标签分类: 为样本分配多个相关标签, 如图像标注(包含“山”“湖”“树”)
多分类举例: 输出每个类别的概率,选择最大概率对应的类别。
损失函数:
网络层
密集层
卷积层
2.4 模型评估
数据集划分:
1) 训练集(Training Set):用于模型训练(通常占60-80%)。
2) 验证集: 用于调参, 学习数据中的潜在规律。
3) 测试集(Test Set):模拟“未知数据”,用于最终评估。
意义: 若模型仅在训练集上表现好,但在测试集上差,说明模型过拟合(过度记忆训练数据细节),泛化能力弱。
备注: 避免测试集调参, 若根据测试集结果反复调整模型,导致模型间接拟合测试集。
2.4.1 偏差与方差
偏差(Bias):指模型预测值的期望与真实值之间的差距,反映了模型对数据的拟合能力。高偏差意味着模型过于简单,无法捕捉数据中的潜在关系,导致欠拟合(Underfitting)。
方差(Variance):指模型对训练数据中微小变化的敏感程度,反映了模型的稳定性。高方差意味着模型过于复杂,过度拟合训练数据中的噪声,导致过拟合(Overfitting)。
高偏差(左), 高方差(右)
2.4.2 诊断偏差与方差
高偏差(欠拟合):训练集和验证集误差均高。
解决方案:
1) 可增加模型复杂度(如使用更高阶多项式、深层神经网络)
2) 添加更多特征或改进特征工程
3) 减少正则化强度(如降低λ值)
高方差(过拟合):训练误差低,验证误差高且差距大。表现: J(验证集)>>J(训练集)
解决方案:
1) 可降低模型复杂度(如减少神经网络层数、剪枝决策树)。
2) 增加训练数据量或使用数据增强。
3) 增强正则化
多项式阶数(x轴) 与 交叉验证误差 及 训练集误差 的关系:
学习曲线:
高偏差学习曲线情况(红线, 较人类水平相比):
高方差学习曲线情况(前半段):
训练神经网络的一般步骤:
数据增强: 在现有的训练样本上修改生成另一个训练样本
迁移学习: 预训练
两者区别:
维度 | 数据增强 | 迁移学习 |
---|---|---|
核心目标 | 增加数据多样性,提升模型泛化能力 | 复用已有知识,降低目标领域训练成本 |
依赖条件 | 需要少量原始数据 | 需要源领域模型或相关数据 |
适用阶段 | 数据准备阶段 | 模型训练阶段 |
技术范畴 | 数据预处理/正则化 | 模型优化/跨任务学习 |
典型应用领域 | 图像、文本、语音等所有数据驱动的任务 | 深度学习、跨领域任务(如医疗、金融) |
2.4.3 精确度与召唤率
混淆矩阵:TP(真正例)、TN(真负例)、FP(假正例)、FN(假负例)。
1) 真正例(TP, True Positive):实际为正类,预测也为正类。
2) 假正例(FP, False Positive):实际为负类,预测为正类(误报)。
3) 真负例(TN, True Negative):实际为负类,预测也为负类。
4) 假负例(FN, False Negative):实际为正类,预测为负类(漏报)。
精确率(Precision):(预测为正的样本中实际为正的比例)。关注预测的准确性
召回率(Recall):(实际为正的样本中被正确预测的比例)。关注正类的覆盖率
例子:癌症检测
设测试集有 100 名患者,其中 10 人患癌(正类) , 90 人健康(负类)。模型预测结果如下
- 正确预测:
- 癌症患者:8 人(TP = 8)。
- 健康患者:83 人(TN = 83)。
- 错误预测:
- 将 7 名健康人误诊为癌症(FP = 7)。
- 漏诊 2 名癌症患者(FN = 2)。
混淆矩阵:
预测患癌 | 预测健康 | |
---|---|---|
实际患癌 | TP = 8 | FN = 2 |
实际健康 | FP = 7 | TN = 83 |