机器学习模型 知乎_机器学习-模型选择与评价

交叉验证

首先选择模型最简单的方法就是,利用每一种机器学习算法(逻辑回归、SVM、线性回归等)计算训练集的损失值,然后选择其中损失值最小的模型,但是这样是不合理的,因为当训练集不够、特征过多时容易过拟合,那么训练集的损失值就会不断变小,但是此时针对测试集可能损失值很高,所以训练集上的损失值是无法衡量模型的好坏的。

我们的办法就是增加交叉验证集,即将所有数据分为三部分:训练集、交叉验证集和测试集。交叉验证集不仅在选择模型时有用,在超参数选择、正则项参数

和评价模型中也很有用。

简单交叉验证利用训练集训练模型

利用交叉验证集在每一种模型上测试并计算损失值

选择损失值最小的模型

但是简单交叉验证存在一个问题,就是因为增加了验证集后,导致训练集的数据更少了,这样模型可能无法更好地的体现整体数据,所以提出以下交叉验证的方法。

k-折叠交叉验证假设训练集为

,将训练集等分为

份:

然后每次从集合中拿出

份进行训练

利用集合中剩下的那一份来进行测试并计算损失值

最后得到

次测试得到的损失值,并选择平均损失值最小的模型

Bias与Variance,欠拟合与过拟合

如下图,针对同一组数据的三种模型,可以看出来中间的模型可以更好的表现数据,其中左边的模型一般称为欠拟合,右边的模型称为过拟合。

欠拟合一般表示模型对数据的表现能力不足,通常是模型的复杂度不够,并且Bias高,训练集的损失值高,测试集的损失值也高。

过拟合一般表示模型对数据的表现能力过好,通常是模型的复杂度过高,并且Variance高,训练集的损失值低,测试集的损失值高。

具体如下图所示:

针对Bias于Variance,有多种解释方法。

第一种:

一般用下面两张图表示:

Bias描述的是模型与数据表现的真实情况的差别,Variance描述的是我们的假设与最好的假设之间的差别。

第二种:Bias是表明模型在整体数据上表现,不在乎其中某一个样本的正确与否

对于Variance,一个样本的变动会给整个模型带来很大的影响,是模型抗样本干扰能力有多强

如下图所示:

高Bias的模型,单个样本对模型影响不大。

高Variance的模型,一个样本的变化可以改变整个模型。

第三种:

解决方法

针对机器学习模型,在效果不佳时可以有如下解决办法:增加训练样本----解决高Variance情况

减少特征维数----解决高Variance情况

增加特征维数----解决高Bias情况

增加模型复杂度----解决高Bias情况

减小模型复杂度----解决高Variance情况

针对过拟合的情况,我们可以采取上述中的1、2、5的方法,除此之外,我们还可以在损失函数中增加正则项(L0、L1、L2范数)来解决过拟合的问题。

一般监督学习可以看做最小化下面目标函数:

其中

函数为损失函数,

就是规则化函数,也可以叫做正则项。我们增加正则项的主要原因是为了让

更稀疏,使模型不容易过拟合(后面会详细解释)。

函数具体可以有很多种选择,常见的有L0范数、L1范数、L2范数等。其中:L0范数是向量中非零元素的个数

L1范数是向量中各个元素绝对值之和,

L2范数是向量的模,

其中L0范数由于不好实现,所以一般不采用。

针对L1范数,它能实现特征的自动选择,一般来说,

的大部分元素(也就是特征)都是和最终的输出

没有关系或者不提供任何信息的,在最小化目标函数的时候考虑

这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,会干扰了对正确

的预测。稀疏规则化算子就是为了完成特征自动选择,它会自己学习去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

针对L2范数,与L1范数的区别是不会将权重置为0,而会是一个很小的数,这样可以通过

来控制模型拟合程度,如下图所示

针对正则项,我们还可以有如下理解(来自知乎问题机器学习中常常提到的正则化到底是什么意思? @陶轻松的回答 ):将函数

泰勒展开,

当n很大的时候,特征就越多,模型就越复杂,越容易过拟合。

因为

是我们学习到的,所以我们要做的就是改变

的大小减少特征维数,降低模型复杂度,也是让一部分

趋近于0。

所以在目标函数中加入正则项,利用L0、L1、L2范数来改变

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三种查看SqlServer中数据物理pge页的方法

1.根据数据记录查看当前记录所在的文件编号、page页、以及在页中的插槽。 示例如下: SELECT top 10 %%physloc%%, sys.fn_physlocFormatter (%%physloc%%) AS RID FROM tableName --注意;在64位系统中sys.fn_physlocFormatter 整理出来的格式有时候不…

C#10 和 .NET6 代码跨平台开发

零、前言有数千页长的编程书籍,旨在成为 C# 语言、.NET 库、网站、服务、桌面和移动应用等应用模型的综合参考。这本书不一样。它简洁明了,旨在成为一本轻快有趣的书,每一个主题都有实用的实践演练。总体叙述的广度是以某种深度为代价的&…

文件权限

用户类型:管理员:0一般用户:1-65535系统用户1-499普通用户:500权限管理:owner,group属主:属组:其他:权限:read(读),write&…

linux之tar命令使用总结

1、使用原因 刚才在linux平台需要安装Clion的时候,下载得到CLion-2016.3.2.tar.gz 这个gz的压缩文件,所以需要解压到当前文件夹 2、简单解压到当前文件 解压当前文件夹命令 tar -zxvf CLion-2016.3.2.tar.gz 效果如下 3、tar命令介绍 -c: 建立压缩档案 -x:解压 -t:…

jq取第一个子元素为select_【转】jquery如何获取第一个或最后一个子元素?

【转自】https://www.cnblogs.com/MUMO/p/5938483.html通过children方法,children("input:first-child")$(this).children("input:first-child").val();$(this).children("input:last-child").val();通过>选择器,$(&qu…

基于ASP.NET Core SignalR的流式传输

基于ASP.NET Core SignalR的流式传输SignalR概述SignalR是ASP.NET Core下非常流行的实现Web实时功能的库。微软再文档中列出了适合的应用场景:适合 SignalR 的候选项:需要从服务器进行高频率更新的应用。示例包括游戏、社交网络、投票、拍卖、地图和 GPS…

Leetcode: Palindrome Partition I II

题目一, 题目二 思路 1. 第一遍做时就参考别人的, 现在又忘记了 做的时候使用的是二维动态规划, 超时加超内存 2. 只当 string 左部分是回文的时候才有可能减少 cut 3. 一维动规. 令 cuts[i] 表示string[i, string.size()] 所需的切割数, 那么 状态转移方程为 cuts[i] min(cut…

FatMouse

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1431 解决:641 题目描述:FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food…

linux之安装Clion和运行使用总结

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程 1、Clion的简单介绍 CLion是以IntelliJ为基础,专为开发C及C++所设计的跨平台IDE,可以在Windows、Linux及MacOS使用,这里我是在ubuntu 16.0.4基础上安装。 2、linux平台…

Tips

1.Unity\Editor\Data\Resources\ScriptTemplates 里的文件是Unity 生成文件的模板. 2.提示文件尾不一致.用VS打开Unity\Editor\Data\Resources\ScriptTemplates里的模板文件.文件->高级保存选项->Windows(CRLF) 3.Scene视图里选择Transform工具,按V可以通过Pivot对齐 4.N…

体验 正式发布 的OSM v1.0.0 版本

2021年10月份发布了OSM 1.0 RC[1],在过去的几个月里,OSM 的贡献者一直在努力为 v1.0.0 版本的发布做准备。2022年2月1日,OSM 团队正式发布 1.0.0 版本[2]。OSM 从最初的发布到现在已经走了很长的路,团队继续专注于社区需要的关键和…

linux c之用命名管道实现进程通信

1、命名管道相关信息介绍 不是很了解命名管道先看这个篇博客 http://blog.csdn.net/u011068702/article/details/55102379 linux c之命名管道简单使用 博客介绍了创建管道的方法,这里还需要介绍 open函数和调用阻塞 FIFO文件也可以使用open调用来打开,mkfifo函数只是创建…

vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例

一:先使用Vue.js绑定好数据与更新事件使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接取出需要更新的数据选择用户名学号班级操作{{item.UserName}}{{item.Number}}{{item.Class}}删除更新//实例化vue.js(用来给表格提供…

数据流图的画法

数据流图的画法 数据流图也称为数据流程图date flow diagram , DFD,是一种便于用户理解和分析系统数据流程的图形工具,他摆脱了系统和详细内容,精确的在逻辑上描写叙述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组…

linux之自己总结学习linux的资源推荐

1、学习linux前辈的网站 安卓和linux网络编程 http://www.cnblogs.com/hnrainll/ IBM学习linux技术地址: https://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp 2、学习linux的途径,或者说过程 1、APUE再深读 – 尤其是进程,线程,IPC,套接字 2、 多…

01-算法简介

数据结构和算法 基于《算法图解》—Aditya Bhargava和《数据结构》—严蔚敏 ** 算法图解:(基于Python)* 第1章—算法简介 1.1 引言 算法是一组完成任务的指令。 1.2 二分查找(binary_search) 二分查找是一种算法,其输入是一个…

浏览器渲染机制面试_【前端面试必考题】页面渲染机制(一)

页面渲染机制这部分内容会分成两篇来进行讲解,这两篇里我们准备聊一下页面的渲染的过程,包括页面的加载、DOM 树的构建、CSSOM 树的构建、渲染树的构建和最后的渲染过程等。浏览器的渲染机制和网页的优化息息相关,只有知道了页面是怎么渲染出…

OpenJudge/Poj 1226 Substrings

1.链接地址: http://bailian.openjudge.cn/practice/1226/ http://poj.org/problem?id1226 2.题目: 总时间限制:1000ms内存限制:65536kB描述You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, s…

MFC继承表

转载于:https://www.cnblogs.com/Lthis/p/4264967.html

linux之fdisk查看分区和mkfs.ext3删除分区和mount挂载和e2label添加卷标使用总结

一、使用fdisk、mkfs.ext3、和mount、e2lable的原因 有个分区挂载不上,然后需要格式化分区,还需要添加卷标 二、fdisk、mkfs.ext3、mount、e2lable命令介绍 1、fdisk命令介绍 1)、了解分区 分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个…