type
status
date
slug
summary
tags
category
icon
password
💡 机器学习三要素:模型 + 学习准则 + 优化算法

损失函数(Loss function)
常见损失函数
距离标准
- 平方损失函数(欧氏距离)
- 绝对损失函数(曼哈顿距离)
熵的标准
- 对数损失函数(Log Loss)
其中
g 为sigmoid 函数 ,为真实标签- 交叉熵损失函数,
n=2为对数损失函数
其中 是第 个样本的真实标签,其实也为概率(在类别 时取值为 1,否则为 0), 是模型预测第 个样本属于类别 的概率。
- 信息熵
- 相对熵(KL散度)
- 交叉熵
其中相对熵 = 交叉熵 - 信息熵
其他损失函数
- Hinge损失函数
其中 为目标值(+1,-1), 为预测值(-1~1)
- 指数损失函数
- 0-1 损失函数
学习准则
- 经验最小化准则
其实就是找到一组参数 使经验损失函数达到最小值,最小化损失函数
- 结构风险最小化准则
使用经验最小化准则容易导致过拟合,在原来式子上加入一个正则化项 ,限制模型能力不要过度。
梯度下降(Gradient descent)
其中 代表学习率, 代表梯度
- 确定初始点
- 学习率(快慢)
- 梯度(方向)
梯度(Gradient)
- 梯度就是函数曲面陡度
- 偏导数就是具体方向的陡度
- 梯度就是所有方向偏导数向量和
学习率
- 太小,收敛慢,浪费计算量
- 太大,不收敛,反复横跳
局部最优和全局最优
- 极值点常常不唯一
- 随机初始化
- 初始点是超参数

常见梯度下降策略
- 批量梯度下降(BGD)
- 全部训练样本计算
- 保证算法精准度,找到最优解
- 平稳,速度慢
- 随机梯度下降(SGD)
- 每次一个样本计算
- 提升计算速度
- 牺牲了精准度
- 小批量梯度下降(MBGD)
- 没有SGD快但准确了很多
决策边界
拟合训练样本的线
在分类问题中,已知 , ,
决策边界:

- 三分类

- 多项式分类

代码文件:
过拟合和欠拟合
数据集
欠拟合

过拟合
当使用特征为
degree = 2 时,不会过拟合
当使用其它更高特征维度
degree 时,出现泛化能力不足输出:
Degree: 2 Score: 0.8196892855998191
Degree: 5 Score: 0.8222526704240265
Degree: 10 Score: 0.8275487827443732
Degree: 15 Score: 0.8442613021372602
Degree: 20 Score: 0.8504610870824968
Degree: 25 Score: 0.8500576288037215

学习曲线(Learning Curve)
示例图

- 数据集
- 使用

- 使用 (需要2个数据才能更好得出分数)

交叉验证(Cross Validation)
在训练集测试集上添加验证集
- 训练集 - 训练模型
- 测试集 - 评价最终效果
- 验证集 - 搜索最优参数
K-fold 交叉验证
- 测试集不变,在原有训练集上分离部分做验证集,分离部分不一致,再通过验证集准确率取均值取超参数
输出 5 次随机的验证集的结果:array([1. , 1. , 0.95833333, 0.875 , 1. ])
- 5次执行的结果,取平均再取最高的便是
model_selection中的GridSearchCV中的超参数结果
模型误差

- 偏差(Bias)- 预测结果的准确程度
- 方差(Variance)- 预测结果的集中程度
- 噪声(Noise)- 当前任务期望误差下界,即最少都会有这些错误
模型误差的组成
- 高偏差的原因
- 模型本身不合适 - 如线性模型拟合非线性数据
- 欠拟合 - 如模型未收敛
- 高方差的原因
- 模型过于复杂 - 特征太多
- 过拟合 - 噪声影响数据
- 噪声难以避免的原因
- 计算机精度误差
- 方法误差
- 观察误差
偏差和方差的关系

- 偏差降低方差会提高
- 方差降低偏差会提高
- 不同算法有不同的偏差和方差
- 参数方程偏差高 - 如回归算法
- 非参数方程方差高 - 如 KNN
- 偏差方差可以调整
解决偏差和方差问题
降低偏差
- 寻找更好的特征
- 增加更多特征
- 增加模型复杂度
降低方差
- 选择低复杂度模型
- 增加样本数
- 减少数据维度
- 使用验证集
- 使用正则化
正则化(Regularization)
数学原理

目的便是控制高次项个数即 n 最小化
使 项目最小化,写成数学为
结构化损失,其中 为正则项
不好求,便求和 ,即
- L1范数/LASSO回归 - ,相当于消除一个特征,因为在轴线上

- L2范数/Ridge回归/岭回归 - ,

- 一般正则项 -
LASSO和岭回归代码实现
LASSO回归
使 最小化
- 参数 衰减到0
- 可用于特征选择
- 过大会变为直线

岭回归
使 最小化
- 参数 不太会衰减到0
- 取值过大,回归曲线也不会变为直线

代码文件
模型泛化(Generalization)
机器学习算法对新鲜样本的适应能力
如何判断模型训练是否理想

过拟合应对策略

评价指标
混淆矩阵(Confusion matrix)

评价指标
- F1 Score
scikit-learn 代码实现
PR曲线(Precision Recall Curve)
代码实现


- scikit-learn 中的 PR 曲线
Precision 和 Recall 关系

- 红色为理想情况,橙色为真实情况
- 随着阈值
threshold的增加,Recall会减小,Precision会增加
- 在精准度
Precision降低至 0.5 时候,便和随机模型一致了
ROC 曲线(Receiver Operation Characteristic Curve)

- 红色,真阳占阳性比例
- 蓝色,假阳占阴性比例,误检比例
scikit-learn中的ROC曲线

- 理想状态下

- 真实情况下
AUC(Area Under Curve)
ROC 曲线下面积

- 当 AUC = 1 时候为完美
- 当 AUC = 0.5~1 时候优于随机猜测
- 当 AUC = 0.5 时与随机猜测类似
- 当 AUC < 0.5 时进行反猜测
PR 曲线 和 ROC 曲线 选择问题
在分类数据极度有偏差时,PR曲线 会更加剧烈变化
- 样本分类数差不多

- 样本分类极度偏差时

代码文件:
- Author:空格
- URL:https://www.shipangshuo.xyz/article/machine-learning
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!









