热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习之模型预估与选择

损失函数与风险函数在监督学习中,对于训练样本(X,Y),其中X表示记录,Y表示对应的实际结果。假设我们学习到的模型为:f(x).损失函数定义为L(f(x),Y).表示的是模型结果也实

损失函数与风险函数

在监督学习中,对于训练样本(X,Y),其中X表示记录,Y表示对应的实际结果。假设我们学习到的模型为:f(x). 损失函数定义为L(f(x),Y).表示的是模型结果也实际结果之间的误差计算方式。
常见的损失函数有:
1. 0-1损失函数
L(f(x),Y)={1,0,Y f(x)Y=f(x)
这种常用来计算模型模型是否命中的情况。还有就是我们需要将得到的结果进行离散处理,比如逻辑回归中,最后我们根据得到的结果判断是否大于0.5,如果大于0.5则为1,否则为0.

2.平方损失函数
L(f(x),Y)=(Yf(x))2
这是一种很常见的损失函数,几何学上表示预测点和标记点之间的距离。线性回归模型采用就是平方损失函数
3.绝对损失函数
L(f(x),Y)=|(Yf(x))|

4.对数损失函数
L(f(x),Y)=logP(Y|X)
对数损失函数的基本思想是,最大似然化。我们需要找到一组参数使得已经发生的事件概率最大。这里就取了负的log的概率。逻辑回归就是采用对数损失函数。

这里损失函数越小,我们就认为预测值和实际值越接近,模型越好。

训练误差与测试误差

在模型学习中,不仅要使得训练误差最小,同时要泛化能力强,测试误差也要小。
假设基于一定的损失函数得到的模型是Y=f(x),那么训练误差是模型在训练数据集中的平均损失:
Rtrain=1Ni=1nL(yi,f(xi))
表示训练集中每一个样本的损失的期望。
当使用训练集训练好模型,在测试集上的误差就表示测试误差。
Rtest=1Ni=1nL(yi,f(xi))

过拟合

假设在模型空间中存在一个真的模型来表示我们的数据,在进行训练的时候需要将我们的训练模型尽可能的逼近真模型,但是有时候太过于逼近,就会导致模型复杂度增加,导致其泛化能力降低。这就是过拟合现象。
同时,如果我们的训练模型复杂度不够,则会导致欠拟合。
在训练误差和测试误差中的表现是,随着训练误差的降低,开始时测试误差也降低;随后训练误差继续降低(模型复杂度增加),但是测试误差却增加(泛化能力变差).所以我们需要找到这个临界点。
如下图所示:
这里写图片描述

正则化和交叉验证

为了防止模型过于复杂,会在风险函数中添加模型复杂度函数,称为正则化项,这个函数随着模型的复杂度增加,该值也增加,这就是正则化。这是一种常见的模型选择方法。就是结构风险最小化。形式如下:
min1Ni=1nL(yi,f(xi))+λJ(f)
其中 1Nni=1L(yi,f(xi)) 是经验风险, λJ(f) 是正则化项,模型复杂度越高,该值越大,从而降低过拟合风险, λ>0
正则化是选择经验风险和模型复杂度同时比较小的模型。
正则化,一般有L1和L2.这里就不展开了,后面会专门写一篇文章介绍。

模型选择的另一个方法就是交叉验证,这里先介绍训练集,验证集,测试集合的定义。
训练集:用于学习参数的数据子集称为训练集
验证集:用于挑选超参数的数据子集称为验证集
测试集:用于进行泛化误差的估计称为测试集
在实际的工作过程中,只用了训练集和测试集

简单的交叉验证就是随机的抽取样本,比如80%作为训练集,20%作为测试集。
那么我们可以不断的重复简单交叉验证,就是S交叉验证了。比如将数据均分5等分,随机的抽取一份作为测试集,另外四份作为训练集。这样重复5次,选择测试误差最小的模型。
这里写图片描述

性能度量

当我们训练模型过程中,我们以二分类为例:

原始值/预测值
TP FN
FP TN

TP:将真的预测为真
FN:将真的预测为假
FP:将假的预测为真
TN:将假的预测为假

准确率= TP+TNTP+TN+FN+FP
精确度= TPTP+FP , 精确度针对的是预测为真的情况
召回率FPR= TPTP+FN ,召回率针对的是原始值为真的情况
负正类率FPR= FPTN+FP ,代表分类器预测的正类中实际负实例占所有负实例的比例

一般情况我们还会看ROC曲线
ROC曲线,以FPR为横轴,以召回率为竖轴进行绘制,如下:
横轴FPR:1-TNR,1-Specificity,FPR越大,预测正类中实际负类越多。
纵轴TPR:Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。

这里写图片描述
理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

一般来说我们直接看AUC值大小就好了,越趋向于1就好了。


推荐阅读
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
author-avatar
茶不离
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有