网站首页 > 技术文章 正文
本期连载总结机器学习的基础知识,包括生成模型判别模型、模型性能度量指标、如何解决过拟合欠拟合等。《机器学习基础知识手册》总结了更多的问题,欢迎访问github地址:https://github.com/5663015/machine-learning-handbook
判别模型与生成模型的本质区别
- 生成模型:
- 由数据学习联合概率分布,然后求条件概率分布作为预测模型:,这样的模型表示了给定输入产生输出的生成关系。
- 特点:可以还原联合概率分布,学习收敛速度快;当存在隐变量时仍然可以用生成模型,不可用判别模型。
- 常见的生成式模型:朴素贝叶斯、隐马尔科夫模型、EM、混合高斯模型
- 判别模型:
- 由数据直接学习决策函数或条件概率分布作为预测模型。判别模型关心的是对于给定的输入应该预测什么样的输出。
- 特点:不能学习联合概率,直接学习决策函数或条件概率;往往准确率更高;可以简化学习问题。
- 常见的判别模型:感知机、k近邻、决策树、逻辑回归、SVM、条件随机场、最大熵模型
常用的模型性能度量指标
- 混淆矩阵:对于二分类问题,可以将真实标签和预测值得组合划分为真正例(TP),假正例(FP),真反例(TN),假反例(FN)。令TP、FP、TN、FN分别表示对于的样本数目,显然有TP+FP+TN+FN=样本总数。则混淆矩阵表示如下:
- 准确率:accuracy
- 精度:precision
- 召回率:recall,也叫查全率
- F1-score:
- P-R曲线:P-R曲线的横轴是召回率,纵轴是精确率,其曲线上的一个点表示在某一阈值下,模型大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线就是通过将阈值从高到底移动而生成的。若一个学习器的P-R曲线被另外一个学习器的曲线完全包住,那么后者性能优于前者。如果有交叉则看平衡点,即召回率等于精确率的点,大的性能更优。
- ROC曲线:曲线上的某一点表示,在某个概率阈值下,大于该阈值的结果判定为正样本,小于该阈值判定为负样本,此时返回结果对应的真正例率(召回率,,纵轴)和假正例率(,横轴)。整条ROC曲线就是通过将阈值从高到低移动而形成的。AUC指的是ROC曲线下的面积大小。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
- ROC曲线相比P-R曲线有什么特点:相比于P-R曲线,ROC 曲线有一个特点,当正负样本的分布发生变化时, ROC 曲线的形状能够基本保持不变,而 P-R 曲线的形状一般会发生较剧烈的变化 。这个特点让 ROC 曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能 。
- IoU:即交并比,定义为两个面积的交集和并集的比值,即 。一般在计算机视觉的目标检测任务中,如果IoU大于或等于0.5,就认为召回,如果设置更高的IoU阈值,则召回率下降。
- AP和mAP:对于AP,实际上等于P-R曲线下的面积。对mAP,计算每个类别下的AP,然后取平均。AP衡量的是模型在一个类别上的好坏,mAP衡量的是模型在所有类别上的好坏。
如何解决过拟合、欠拟合
- 解决欠拟合:
- 增加新的特征。
- 可以增加模型的复杂程度。
- 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。
- 解决过拟合:
- 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
- 增加训练样本数量。
- 降低模型复杂程度。
- 集成学习,降低单一模型过拟合风险
- 增大正则项系数。
- 采用 dropout 方法,dropout 方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
- early stopping。
- 减少迭代次数。
- 增大学习率。
- 添加噪声数据。
- 树结构中,可以对树进行剪枝。
- 减少特征项。
如何解决类别不平衡问题
- 扩大数据集。增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。
- 对大类数据欠采样。减少大类数据样本个数,使与小样本个数接近。缺点:欠采样操作时若随机丢弃大类样本,可能会丢失重要信息。代表算法:EasyEnsemble。其思想是利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。相当于对每个学习器都进行欠采样,但对于全局则不会丢失重要信息。
- 过采样:对小类的数据样本进行采样来增加小类的数据样本个数。代表算法:SMOTE 和ADASYN。
- SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。
- ADASYN:根据学习难度的不同,对不同的少数类别的样本使用加权分布,对于难以学习的少数类的样本,产生更多的综合数据。通过减少类不平衡引入的偏差和将分类决策边界自适应地转移到困难的样本两种手段,改善了数据分布。
- 使用新评价指标。如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。比如准确度这个评价指标在类别不均衡的分类任务中并不适用,甚至进行误导。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。
- 选择新算法。不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。
- 数据代价加权。例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。
- 转化问题思考角度。例如在分类问题时,把小类的样本作为异常点,将问题转化为异常点检测或变化趋势检测问题。异常点检测即是对那些罕见事件进行识别。变化趋势检测区别于异常点检测在于其通过检测不寻常的变化趋势来识别。
- 将问题细化分析。对问题进行分析与挖掘,将问题划分成多个更小的问题,看这些小问题是否更容易解决。
猜你喜欢
- 2024-09-24 R数据分析:集成学习方法之随机生存森林的原理和做法,实例解析
- 2024-09-24 Python集成学习和随机森林算法
- 2024-09-24 机器学习集成方法:Bagging, Boosting, Stacking, Voting, Blending
- 2024-09-24 集成学习之如何由弱变强
- 2024-09-24 什么是集成学习
- 2024-09-24 风控违约场景如何预测,来看看这份常见的三种模型实现算法对比
- 2024-09-24 LLama+Mistral+…+Yi=免训练异构大模型集成学习框架DeePEn来了
- 2024-09-24 集成学习(Ensemble Learning)简析
- 2024-09-24 谷歌Chrome集成机器学习模型功能,提供更精准、快速的搜索服务
- 2024-09-24 目标检测的模型集成方法及实验
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)