一, 机器学习
**机器学习定义:**计算机能够在没有明确的编程情况下学习
**特征:**特征是描述样本的属性或变量,是模型用来学习和预测的基础。如: 房屋面积, 地理位置
**标签:**监督学习中需要预测的目标变量,是模型的输出目标。如: 房屋价格
**样本:**如: {面积=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 正则化
解决过拟合情况:
-
收集更多数据
-
仅用特征的一个子集
-
正则化
欠拟合(高偏差), 适中, 过拟合(高方差)

正则化项:

添加正则化项后的梯度算法:

原理: 通过在损失函数中添加与模型参数相关的惩罚项,限制参数的复杂度,从而提升模型的泛化能力。 (使得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 诊断偏差与方差
高偏差(欠拟合):训练集和验证集误差均高。
解决方案:
-
可增加模型复杂度(如使用更高阶多项式、深层神经网络)
-
添加更多特征或改进特征工程
-
减少正则化强度(如降低λ值)
高方差(过拟合):训练误差低,验证误差高且差距大。表现: J(验证集)>>J(训练集)
解决方案:
-
可降低模型复杂度(如减少神经网络层数、剪枝决策树)。
-
增加训练数据量或使用数据增强。
-
增强正则化
多项式阶数(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 |