机器学习中常见概念的区别与联系

欠拟合与过拟合

1.欠拟合:生成的拟合函数过于简单(例如 h(θ)=θ0+θ1x1

2.过拟合:生产的拟合函数过于精确(例如 h(θ)=θ0+θ1x1+...+θ6x6

  上图中,左图就是欠拟合的情况,曲线不能够很好的反映出数据的变化趋势;而右图是过拟合的情况,因为曲线经过了每一个样本点,虽然在训练集上误差小了,但是曲线的波动很大,往往在测试集上会有很大的误差。而中间图则是比较好的曲线。

  当训练数据量很少时,容易发生过拟合,因为曲线会拟合这些少量数据点,而这些数据点往往不能代表数据的总体趋势,导致曲线波动大以及发生严重偏离。

  欠拟合时,模型在训练集和测试集上都有很大误差(高偏差);过拟合时,模型在训练集上可能误差很小,但是在测试集上误差很大(高方差)。如果模型在训练集上误差很大,且在测试集上的误差要更大的多,那么该模型同时有着高偏差和高方差。

  防止欠拟合方法:不要选用过于简单的模型

  防止过拟合方法:不要选用过于复杂的模型;数据集扩增(可以是寻找更多的训练集,也可以是对原训练集做处理,比如对原图片翻转缩放裁剪等);正则化;Early stopping(在测试集上的误差率降到最低就停止训练,而不是不断降低在训练集上的误差)

L1正则化和L2正则化

L1正则化:在误差函数的基础上增加L1正则项:

C=C0+λnw|w|

L2正则化:在误差函数的基础上增加L2正则项:
C=C0+λ2nww2

  L1正则化和L2正则化都能够防止过拟合。简单的来说,权值w越小,模型的复杂度越低(当w全为0时模型最简单),对数据的拟合刚刚好(也就是奥卡姆剃刀法则)。如果从更加数学的解释来看,我们看下图:


  可以看出,过拟合的时候,曲线要顾及每一个点,最终形成的拟合函数波动很大。这就意味着函数在某些小区间里的导数值(绝对值)非常大。而由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

  L1正则化对应着Lasso回归模型,L2正则化对应着岭回归模型。Lasso(L1正则化)得到的w往往比较稀疏,会出现很多0,因此能够剔除无用特征(降维)。

分类和回归

  分类:输入新样本特征,输出类别(离散)。常见模型有:Logistic回归,softmax回归,因子分解机,支持向量机,决策树,随机森林,BP神经网络,等等

  回归:输入新样本特征,输出预测值(连续)。常见模型有:线性回归,岭回归,Lasso回归,CART树回归,等等

参数学习算法和非参数学习算法

  参数学习算法:模型有固定的参数列表 θ0,θ1... (比如线性回归)

  非参数学习算法:模型中参数的数目会随着训练集的增加而线性增长,或者参数的值会随着测试集的变化而变化(比如局部加权回归LWR就属于非参数学习算法)

偏差和方差

  偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。 高偏差对应的是欠拟合。高偏差时,模型在训练集和测试机上都有很大误差。

  方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。 高方差对应的是过拟合。高方差时,模型在训练集上的误差很小,但是在测试集上的误差很大。

  如果模型在训练集上误差很大,且在测试集上的误差要更大的多,那么该模型同时有着高偏差和高方差。

监督学习和无监督学习

  监督学习:训练集中的每个样本既有特征向量x,也有标签y。根据样本的y来对模型进行“监督”,调整模型的参数。监督学习对应的是分类和回归算法。

  无监督学习:训练集中的每个样本只有特征向量x,没有标签y。根据样本之间的相似程度和聚集分布来对样本进行聚类。无监督学习对应的是聚类算法。

分类和聚类

  分类:事先定义好了类别,类别数不变。当训练好分类器后,输入一个样本,输出所属的分类。分类模型是有监督。

  聚类:事先没有定义类别标签,需要我们根据某种规则(比如距离近的属于一类)将数据样本分为多个类,也就是找出所谓的隐含类别标签。聚类模型是无监督的。

判别模型和生成模型

  判别模型:从样本中学习,然后得到一个估计函数h(x),用来判别新的x的函数值。

  生成模型:根据要分的类别的特征建立多个模型,得到多个估计函数 yi 。然后将新的x代入各个类别对应的模型,看x属于哪个模型的概率 P(yi|x) 高,就认为x属于该类。

归一化与标准化

  归一化方法:

  • 把数变为(0,1)之间的小数

  主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。

  • 把有量纲表达式变为无量纲表达式

  归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

  标准化方法:

  • 数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。

  归一化,一般的方法是 (x-min(x))/(max(x)-min(x)) 。 标准化,一般方法是(x-mean(x))/std(x) 。 其中mean(x)代表样本均值,std(x)代表样本标准差。这两种方法都是属于线性转换,都是按比例缩放的。

  归一化和标准化的好处:

  • 归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。
  • 标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。

协方差和相关系数

  协方差:表示两个变量在变化过程中的变化趋势相似程度,或者说是相关程度。

Cov(X,Y)=E[(Xμx)(Yμy)]

  当X增大Y也增大时,说明两变量是同向变化的,这时协方差就是正的;当X增大Y却减小时,说明两个变量是反向变化的,这时x协方差就是负的。协方差越大,说明同向程度越高;协方差越小,说明反向程度越高。

  相关系数:也表示两个变量在变化过程中的变化相似程度。但是进行了归一化,剔除了变化幅度数值大小的的影响,仅单纯反映了每单位变化时的相似程度。

ρ=Cov(X,Y)σXσY

  翻译一下:相关系数就是协方差分别除以X的标准差和Y的标准差。

  当相关系数为1时,两个变量正向相似度最大,即X变大一倍,Y也变大一倍;当相关系数为0时,两个变量的变化过程完全没有相似度;当相关系数为-1时,两个变量的负向相似度最大,即X变大一倍,Y缩小一倍。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jquery.validate使用攻略(表单校验) 目录 jquery.validate使用攻略1 第一章 jquery.validate使用攻略1 第二章 jQuery.validate.js API7 Custom selectors7 Utilities8 Validato
/\s+/g和/\s/g的区别 正则表达式/\s+/g和/\s/g,目的均是找出目标字符串中的所有空白字符,但两者到底有什么区别呢? 我们先来看下面一个例子: let name = 'ye wen jun';let ans = name.replace(/\s/g, '&#3
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母 /^[0-9a-zA-Z]*$/g jQuery.validator.addMethod("letters", function (value, element) { return this.optio
this.optional(element)的用法 this.optional(element)是jquery.validator.js表单验证框架中的一个函数,用于表单控件的值不为空时才触发验证。 简单来说,就是当表单控件值为空的时候不会进行表单校验,此函数会返回true,表示校验通过,当表单控件
jQuery.validate 表单动态验证 实际上jQuery.validate提供了动态校验的方法。而动态拼JSON串的方式是不支持动态校验的。牺牲jQuery.validate的性能优化可以实现(jQuery.validate的性能优化见图1.2 jQuery.validate源码 )。 也可
自定义验证之这能输入数字(包括小数 负数 ) <script type="text/javascript"> function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都
// 引入了外部的验证规则 import { validateAccountNumber } from "@/utils/validate"; validator.js /*是否合法IP地址*/ export function validateIP(rule, value,cal
VUE开发--表单验证(六十三) 一、常用验证方式 vue 中表单字段验证的写法和方式有多种,常用的验证方式有3种: data 中验证 表单内容: <!-- 表单 --> <el-form ref="rulesForm" :rules="formRul
正则表达式 座机的: 例子: 座机有效写法: 0316-8418331 (010)-67433539 (010)67433539 010-67433539 (0316)-8418331 (0316)8418331 正则表达式写法 0\d{2,3}-\d{7,8}|\(?0\d{2,3}[)-]?\d
var reg = /^0\.[1-9]{0,2}$/;var linka = 0.1;console.log (reg.test (linka)); 0到1两位小数正则 ^(0\.(0[1-9]|[1-9]{1,2}|[1-9]0)$)|^1$ 不含0、0.0、0.00 // 验证是否是[1-10
input最大长度限制问题 <input type="text" maxlength="5" /> //可以 <input type="number" maxlength="5" /> //没有效
js输入验证是否为空、是否为null、是否都是空格 目录 1.截头去尾 trim 2.截头去尾 会去掉开始和结束的空格,类似于trim 3.会去掉所有的空格,包括开始,结束,中间 1.截头去尾 trim str=str.trim(); // 强烈推荐 最常用、最实用 or $.trim(str);
正则表达式语法大全 字符串.match(正则):返回符合的字符串,若不满足返回null 字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1 字符串.replace(正则,新的字符串):找到符合正则的内容并替换 正则.test(字符串):在字符串中
正整数正则表达式正数的正则表达式(包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+\d)|0)$正数的正则表达式(不包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+
JS 正则验证 test() /*用途:检查输入手机号码是否正确输入:s:字符串返回:如果通过验证返回true,否则返回false /function checkMobile(s){var regu =/[1][3][0-9]{9}$/;var re = new RegExp(regu);if (r
请输入保留两位小数的销售价的正则: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/ 1.只能输入英文 <input type="text" onkeyup="value
判断价格的正则表达式 价格的正则表达式 /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/; 1 解析:价格符合两种格式 ^ [1-9]\d*(.\d{1,2})?$ : 1-9 开头,后跟是 0-9,可以跟小数点,但小数点后要带上 1-2 位小数,类似 2,2
文章浏览阅读106次。这篇文章主要介绍了最实用的正则表达式整理,比如校验邮箱的正则,号码相关,数字相关等等,本文给大家列举的比较多,需要的朋友可以参考下。_/^(?:[1-9]d*)$/ 手机号
文章浏览阅读1.2k次。4、匹配中的==、an==、== an9、i9 == "9i"和99p==请注意下面这部分的作用,它在匹配中间内容的时候排除了说明:当html字符串如下时,可以匹配到两处,表示匹配的字符串不包含and且不包含空白字符。说明:在上面的正则表达式中,_gvim正则表达式匹配不包含某个字符串
文章浏览阅读897次。【代码】正则表达式匹配a标签的href。_auto.js 正则匹配herf