问题引入
炮弹轨迹问题
文章图片
对于以上的炮弹问题,想分析他不用的数据模型
文章图片
文章图片
- 以上三种模型对应着3种不同模型情况
文章图片
文章图片
文章图片
文章图片
- 以上三种情况对应着拟合的3种结果
文章图片
- 模型对数据的预测情况
文章图片
解决过拟合和欠拟合问题
- 通常来说,欠拟合可通过观察训练数据的预测结果发现,解决办法可以是:选用其他模型、增加模型复杂度、增加数据样本、采集新的维度数据
- 原因:
? 使用了过于复杂的模型结构(比如高阶决策边界)
? 训练数据不足,有限的训练数据(训练样本只有总体样本中的小部分、不具备代表性)
? 样本里的噪音数据干扰过大,模型学习到了噪音信息(使用过多与结果不相关属性数据)
? 简化模型结构(降低模型复杂度,能达到好的效果情况下尽可能选择简单的模型)
? 数据增强(按照一定的规则扩充样本数据)
? 数据预处理,保留主成分信息(数据PCA处理)
? 增加正则化项(regularization)
参考链接:
https://blog.csdn.net/dfly_zx/article/details/107954860
- 数据增强
- 如图形中用的比较多的平移、翻转、旋转、镜像
文章图片
- 如图形中用的比较多的平移、翻转、旋转、镜像
- PCA降维处理
文章图片
文章图片
- 增加正则项
文章图片
文章图片
如果λ是很大的数值(比如1000000),那各个θ取值就不能过大,其意义则是各个属性数据的系数受到约束(有效控制各个属性数据的影响)。
(这里用ridge正则项做例子,但并不局限,如用绝对值亦可)
文章图片
文章图片
- 回归模型,引入不同正则项
文章图片
文章图片
如在分类项目中
文章图片
小tips 如果想偷个懒,不知道该用几阶的回归任务,直接选用一个高阶的(如10阶5阶),这时候很有可能过拟合,则在这个的基础上增加一个pca数据分析降维,再去训练模型
分离训练数据与测试数据 思考:仅仅通过训练数据的预测效果,是否足以评判模型的表现?
文章图片
- 一个好的模型,能过对新数据样本做出准确预测
文章图片
- 回顾模型训练与评估流程
文章图片
在这个的基础上,我们在模型创建后,将数据分成两部分,对全数据进行数据分离!
文章图片
2、用训练集里的数据输入模型进行训练
3、用测试集里的数据输入模型进行预测,能有效评估此模型预测新的输入数据的表现
文章图片
混淆矩阵(Confusion Matrix) 用于评估模型训练结果后的准确性,在前期学习的时候,我们对模型评估的方法就是查看其准确率,但是也有局限性:不能全面或真实表达模型对各类别结果的预测准确度
- 案例:奢饰品公司在投放广告前,根据部分高档消费客户的数据作为训练集和测试集,训练测试了高档消费客户的分类模型。该模型的准确率达到了95%。但是在实际广告投时,发现模型输出预测都为普非高档消费客户(非目标用户群体),其结果无法帮助决策。
文章图片
更好的理解其中原因,我们将以上案例的数值提取出来概括:例如有100个样本,95个负样本,只有5个正样本,如果测试所有的样本结果都是负样本,也可以说准确率是95%
- 局限性变现在:
? 没有体现数据子类别的预测效果(如:0、1分别预测的准确率)
? 没有体现模型错误预测的类型(如:5%的错误率是什么预测错误)
基于混淆矩阵计算评估指标
- 混淆矩阵也称误差矩阵,用于统计各类别样本预测正确与错误的数量,能帮助用户更全面地评估模型表现
文章图片
?True Positives (TP): 预测准确、预测为正样本的数量(实际为1,预测为1)
?True Negatives (TN): 预测准确、预测为负样本的数量(实际为0,预测为0)
?False Positives (FP): 预测错误、预测为正样本的数量(实际为0,预测为1)
?False Negatives (FN): 预测错误、预测为负样本的数量(实际为1,预测为0)
文章图片
- 案例
文章图片
A模型的各指标计算数值
文章图片
- 最终结果
文章图片
- 优点:
? 分类任务中,相比单一的准确率指标,混淆矩阵提供了更全面的模型评估信息(TP\TN\FP\FN)
? 基于混淆矩阵,我们可以计算出多样的模型表现衡量指标,从而实现模型的综合评估
- 应用场景决定了衡量指标的重要性:
? 广告精准投放(正样本为 “目标用户”): 希望目标用户尽可能都被找出来、即实际正样本预测正确,需要关注召回率;同时,希望预测的正样本中实际都尽可能为正样本,需要关注精确率
? 异常消费检测 (正样本为 “异常消费”): 希望判断为正常的消费(负样本)中尽可能不存在异常消费,还需要关注特异度
模型选择与优化 在模型创建过程中有三大核心问题需要注意
文章图片
算法选择
文章图片
建模前检查 在这个过程,模型表现属于结果,如表现不好,需要从前往后找问题数据:是否有问题、算法选的是否合适、核心结构与参数是否合理
文章图片
文章图片
- 上游决定下游,建模前五检查:
2、标签统一化:对于样本结果,要确保每个样本都遵循一样的标签规则
3、数据合理性:样本中的异常数据点是否合理、如何处理
4、数据重要性:数据属性的意义,是否为无关数据
5、属性差异性:不同属性数据的数量级差异性如何
- 对于异常5检查,可以用以下方法进行尝试:
2、对不合理标签数据进行预处理(帮助模型学习到正确信息(合理的“监督”))
3、删除不重要的属性数据、数据降维(降低噪声影响、减少过拟合、节约运算时间)
4、对数据进行归一化或标准化(平衡数据影响,加快训练收敛)
5、过滤掉异常数据(降低噪声影响、提高鲁棒性)
文章图片
关于后3检查的示例
文章图片
根据芯片尺寸1、尺寸2参数识别次品
文章图片
- 异常数据处理
文章图片
- 不同属性数据量级比较
文章图片
- 数据降维分析
文章图片
- 多模型对比
不适合的基本情况(模型表现属于结果,如表现不好,需要从前往后找问题:数据是否有问题、算法选的是否合适、核心结构与参数是否合理)
文章图片
文章图片
- 单一模型的核心参数优化
KNN模型,可以尝试不同的K值
文章图片
在该情况下K越小,训练数据的预测准确率越高,但测试数据准确率可能下降(过拟合)
文章图片
提高模型表现的四要素
文章图片
推荐阅读
- Python|Python爬虫-获得某一链接下的所有超链接
- ggplot|R语言ggplot在一张图里同时画散点图和折线图
- 分享|python画圣诞树【全网最全】
- 人工智能+大数据|逻辑回归(使用激活函数sigmoid)详细介绍
- 统计学|灰色关联分析,Python实现GRA(gray relation analysis)
- python|总结|图像分割5大经典方法
- 激光条纹中心提取|opencv二值图像分割——python
- 目标检测|yolov5——断点训练/继续训练【解决方法、使用教程】
- 学习笔记|如何使用PyCharm对函数进行测试