根据奥卡姆剃刀定律,或许我们可以通过降低复杂模型的复杂度来防止过拟合,这种原则称为正则化

1.过拟合

直接拿网上的图来说明过拟合

图一欠拟合,图二是符合预期,图三过拟合
机器学习的模型是希望有良好的泛化效果,图三的训练结果太贴合训练集,就会导致后面基于新数据的预测会不准确。

2.解决过拟合问题

我们怎么解决这个过拟合的情况,根据奥卡姆剃刀定律(机器学习模型越简单,良好的实证结果就越有可能不仅仅基于样本的特性),所以我们希望模型需要更简单。
也就是说,模型训练并非只是以最小化损失(经验风险最小化)为目标,而是以最小(损失+模型复杂)为目标,这也称为结构风险最小化:
minimize(Loss(Data|Model)+complexity(Model))
好了,这里专家们出现了,定义:Loss(Data|Model)为损失项,complexity(Model)为正则化项,衡量模型复杂度。
上图的数据公式为:
f(x)=w0x0+w1x1+w2x2+...+wnxn
减少模型复杂度,减少特征(x)数量就可以。这里就需要介绍0、1、2范数了。

3. 0、1、2范数

0范数,向量中非零元素的个数。
1范数,为绝对值之和。
2范数,就是通常意义上的模。
这里看0范数很符合我们的要求,非零元素的个数少,模型就简单。
但是0范数比较恶心,是个np-hard问题。同时1范数是0范数的最优凸近似
minimize(Loss(Data|Model)+lambda|W|1 )

L2范数就是指向量各元素的平方和然后求平方根。我们让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。

总结

a、1范数和0范数可以实现稀疏,可以来筛选特征。b、2范式主要在不减少特征的情况解决过拟合。

[机器学习]谈谈正则化的更多相关文章

  1. Android中的自然语言处理API

    我正在尝试制作类似于thiswebsite的Android应用程序.问题是我对自然语言处理领域很陌生.我不希望实现太多,只是提供用户与应用程序的一些交互,给他一种感觉,他确实在与某人聊天.基本上,我只是捕获用户输入的文本并将其发送到API并显示从API检索的结果.我遇到了http://opennlp.apache.org/和http://gate.ac.uk/,但不知道如何在我的Android应用

  2. python机器学习GCN图卷积神经网络原理解析

    这篇文章主要为大家介绍了GCN图卷积神经网络原理及代码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. 正则化DropPath/drop_path用法示例(Python实现)

    DropPath 类似于Dropout,不同的是 Drop将深度学习模型中的多分支结构随机"失效",而Dropout是对神经元随机"失效"这篇文章主要给大家介绍了关于正则化DropPath/drop_path用法的相关资料,需要的朋友可以参考下

  4. 如何用JavaScript学习算法复杂度

    这篇文章主要介绍了如何用JavaScript学习算法复杂度,对算法感兴趣的同学,一定要看一下

  5. PHP机器学习库php-ml的简单测试和使用方法

    下面小编就为大家带来一篇PHP机器学习库php-ml的简单测试和使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. PHP实现机器学习之朴素贝叶斯算法详解

    这篇文章主要介绍了PHP实现机器学习之朴素贝叶斯算法,结合实例形式详细分析了朴素贝叶斯算法的概念、原理及php实现技巧,需要的朋友可以参考下

  7. Java如何分析算法的时间和空间复杂度

    这篇文章主要介绍了Java如何分析算法的时间和空间复杂度,在计算机科学中,计算复杂性解释了算法的性能。文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

  8. python机器学习Logistic回归原理推导

    这篇文章主要为大家介绍了python机器学习Logistic回归原理推导,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  9. 16中Python机器学习类别特征处理方法总结

    类别型特征(categorical feature)主要是指职业,血型等在有限类别内取值的特征。在这篇文章中,小编将给大家分享一下16种类别特征处理方法,需要的可以参考一下

  10. 机器学习Erdos Renyi随机图生成方法及特性

    这篇文章主要为大家介绍了机器学习Erdos Renyi随机图生成方法及特性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部