机器学习中常常提到的正则化到底是什么意思?

r(d)可以理解为有d的参数进行约束,或者 D 向量有d个维度。
咱们将楼主的给的凸优化结构细化一点,别搞得那么抽象,不好解释;

[公式] , 其中,
咱们可以令: f([公式]) = [公式].

ok,这个先介绍到这里,至于f(x)为什么用多项式的方式去模拟?相信也是很多人的疑问,很简单,大家看看高等数学当中的泰勒展开式就行了,任何函数都可以用多项式的方式去趋近,[公式]log x,lnx,[公式]等等都可以去趋近,而不同的函数曲线其实就是这些基础函数的组合,理所当然也可以用多项式去趋近,好了,这个就先解释到这里了。

接下来咱们看一下拟合的基础概念。
首先,用一个例子来理解什么是过拟合,假设我们要根据特征分类{男人X,女人O}。
请看下面三幅图,x1、x2、x3;


这三幅图很容易理解:
1、 图x1明显分类的有点欠缺,有很多的“男人”被分类成了“女人”。
2、 图x2虽然有两个点分类错误,但是能够理解,毕竟现实世界有噪音干扰,比如有些人男人留长发、化妆、人妖等等。
3、 图x3分类全部是正确的,但是看着这副图片,明显觉得过了,连人妖都区分的出来,可想而知,学习的时候需要更多的参数项,甚至将生殖器官的形状、喉结的大小、有没有胡须特征等都作为特征取用了,总而言之f(x)多项式的N特别的大,因为需要提供的特征多,或者提供的测试用例中我们使用到的特征非常多(一般而言,机器学习的过程中,很多特征是可以被丢弃掉的)。

好了,总结一下三幅图:
x1我们称之为【欠拟合】
x2我们称之为【分类正拟合】,随便取的名字,反正就是容错情况下刚好的意思。
x3我们称之为【过拟合】,这种情况是我们不希望出现的状况,为什么呢?很简单,它的分类只是适合于自己这个测试用例,对需要分类的真实样本而言,实用性可想而知的低。

恩,知道了过拟合是怎么回事之后,我们来看一下如何去规避这种风险。先不管什么书上说的、老师讲的、经验之说之类的文言文。咱们就站在第一次去接触这种分类模型的角度去看待这个问题,发散一下思维,我们应该如何去防止过拟合?
显而易见,我们应该从【过拟合】出现的特征去判别,才能规避吧?
显而易见,我们应该、而且只能去看【过拟合】的f(x)形式吧?
显而易见,我们从【过拟合】的图形可以看出f(x)的涉及到的特征项一定很多吧,即[公式]等等很多吧?
显而易见,N很大的时候,[公式]是等数量增长的吧?
显而易见,w系数都是学习来的吧?

So,现在知道这些信息之后,如何去防止过拟合,我们首先想到的就是控制N的数量吧,即让N最小化吧,而让N最小化,其实就是让W向量中项的个数最小化吧?
其中,W=([公式])

PS: 可能有人会问,为什么是考虑W,而不是考虑X?很简单,你不知道下一个样本想x输入的是什么,所以你怎么知道如何去考虑x呢?相对而言,在下一次输入[公式],即第k个样本之前,我们已经根据[公式]次测试样本的输入,计算(学习)出了W.就是这么个道理,很简单。


ok,any way.回到上面的思维导图的位置,我们再来思考,如何求解“让W向量中项的个数最小化”这个问题,学过数学的人是不是看到这个问题有点感觉?对,没错,这就是0范数的概念!什么是范数,我在这里只是给出个0-2范数定义,不做深究,以后有时间在给大家写点文章去分析范数的有趣玩法;
0范数,向量中非零元素的个数。
1范数,为绝对值之和。
2范数,就是通常意义上的模。

PS,貌似有人又会问,上面不是说求解“让W向量中项的个数最小化”吗?怎么与0范数的定义有点不一样,一句话,向量中0元素,对应的x样本中的项我们是不需要考虑的,可以砍掉。因为[公式]没有啥意义,说明[公式]项没有任何权重。so,一个意思啦。


ok,现在来回答楼主的问题,r(d) = “让W向量中项的个数最小化” = [公式]

所以为了防止过拟合,咱们除了需要前面的相加项最小,即楼主公式当中的
[公式] = [公式] 最小,我们还需要让r(d)=[公式]最小,所以,为了同时满足两项都最小化,咱们可以求解让[公式]和r(d)之和最小,这样不就同时满足两者了吗?如果r(d) 过大,[公式]再小也没用;相反r(d)再小,[公式]太大也失去了问题的意义。
说到这里我觉得楼主的问题我已经回答了,那就是为什么需要有个r(d)项,为什么r(d)能够防止过拟合原因了。

根据《男人帮》电影大结局的剧情:本来故事已经完成了,为了让大家不至于厌恶课本的正规理论,我们在加上一集内容,用以表达我对机器学习出书者的尊重;

书本中,或者很多机器学习的资料中,为了让全球的机器学习人员有个通用的术语,同时让大家便于死记硬本,给我上一段黑体字的部分的内容加上了一坨定义,例如:
我们管[公式]叫做经验风险,管上面我们思维导图的过程叫做正则化,所以顺其自然的管r(d)叫做正则化项,然后管[公式]+r(d) 叫做结构风险,所以顺其自然的正则化就是我们将结构风险最小化的过程,它们是等价的。
By the way,各位计算机界的叔叔、阿姨、伯伯、婶婶,经过不懈的努力,发现了这个公式很多有意思的地方,它们发现0范数比较恶心,很难求,求解的难度是个NP完全问题。然后很多脑袋瓜子聪明的叔叔、阿姨、伯伯、婶婶就想啊,0范数难求,咱们就求1范数呗,然后就研究出了下面的等式:


一定的条件我就不解释了,这里有一堆算法,例如主成分KPCA等等,例子我就不在举了,还是原话,以后我会尽量多写点这些算法生动点的推到过程,很简单,注重过程,不要死记硬背书本上的结果就好。
上面概括而言就是一句话总结:1范数和0范数可以实现稀疏,1因具有比L0更好的优化求解特性而被广泛应用。然后L2范数,是下面这么理解的,我就直接查别人给的解释好了,反正简单,就不自己动脑子解释了:
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦;所以大家比起1范数,更钟爱2范数。
所以我们就看到书籍中,一来就是,r(d)= [公式] [公式] 或者r(d)= [公式] [公式] 这种结构了,然后在机器学习当中还能看到下面的结构:
min{ [公式] } , [公式]>=0
都是这么来的啦,万变不离其中。


讲一点自己机器学习过程的体验,大家都觉得机器学习入门难,绝大部分人反应知其然不知其所以然,这个原因很多时候在于中国教育工作者的教学、科研氛围,尤其是中文书籍出书者自己都不去搞懂原理,一个劲的为了利益而出书、翻译书,纯粹利益驱动。再加之机器学习起源于国外,很多经典的、有趣的历史没有被人翻译、或者归类整理,直接被舍弃掉了。个人感觉这是中国教育的缺失导致的。希望更多的人真的爱好计算机,爱好机器学习以及算法这些知识。喜欢就是喜欢。希望国内机器学习的爱好者慢慢的齐心合力去多多引荐这些高级计算机知识的基础。教育也不是由于利益而跟风,AI热出版社就翻译AI,机器学习热就翻译机器学习,知识层面不断架空,必然导致大家学习热情的不断衰减!愿共勉之。
<think>嗯,我现在要理解正则化机器学习和统计学中的定义和效果。首先,正则化这个词听起来像是让什么东西变得规则或者有规律,可能在机器学习中是用来防止模型过于复杂吧?记得以前学过过拟合,就是模型在训练数据上表现很好,但在测试数据上很差,这时候可能需要正则化来避免过拟合。 那正则化具体是怎么定义的呢?可能是在损失函数里加一个额外的项,用来惩罚模型的复杂度。比如线性回归中的L1和L2正则化,L2是权重的平方和,L1是绝对值和。这样模型在训练时不仅要拟合数据,还要尽量让权重小,从而防止过拟合。不过具体的数学表达式可能得查一下,比如引用[2]提到的经验风险和正则化项的组合,系数λ调整两者的关系。当λ越大,正则化的惩罚越强,模型会更简单。 那正则化的作用除了防止过拟合,还有什么呢?可能还能帮助特征选择,比如L1正则化因为会产生稀疏解,有些权重会变成零,这样就可以自动选择重要的特征。不过L2的话可能不会让权重为零,而是让它们均匀减小。另外,正则化可能还能提高模型的泛化能力,让模型在未知数据上表现更好。 然后,引用[3]和[4]提到L1和L2的不同应用场景,比如L1适合特征选择,而L2适合处理共线性问题。实际应用中可能需要调整正则化参数λ,像引用[4]里说的,尝试不同的λ值,找到最适合的模型。可能需要交叉验证来选择最佳的参数。 不过具体怎么在算法中实现呢?比如在Python的scikit-learn里,逻辑回归或线性回归模型有penalty参数可以选择L1或L2,然后设置C值(C是1/λ),值越小正则化越强。比如在引用[1]里用了accuracy_score来评估模型,可能在训练时已经应用了正则化,提高了准确率。 那总结一下,正则化的定义是在损失函数中加入惩罚项,控制模型复杂度,防止过拟合。效果包括减少过拟合风险、提高泛化、特征选择(L1)、处理共线性(L2)。应用时需要调整λ,选择适合的正则化类型,可能还要考虑数据特性如噪声和特征分布。</think>### 正则化的定义与效果 #### 1. **正则化的定义** 正则化机器学习中用于**控制模型复杂度**的技术,通过在损失函数中添加**惩罚项**来约束模型参数。其数学形式通常表示为: $$L_{\text{总}} = L(\theta) + \lambda \cdot R(\theta)$$ 其中: - $L(\theta)$ 是原始损失函数(如均方误差、交叉熵等); - $R(\theta)$ 是正则化项,例如L1范数、L2范数; - $\lambda$ 是正则化系数,用于平衡模型拟合能力与复杂度[^2]。 #### 2. **正则化的作用** - **防止过拟合**:通过限制参数大小,避免模型过度依赖训练数据中的噪声或偶然规律[^4]。 - **提高泛化能力**:迫使模型学习更简单的模式,从而在未知数据上表现更稳定。 - **特征选择(L1正则化)**:L1正则化(如LASSO)会倾向于将部分参数压缩为0,实现自动特征筛选[^3]。 - **缓解共线性问题(L2正则化)**:L2正则化(如岭回归)通过减小参数幅值,降低多重共线性对模型的影响。 #### 3. **正则化类型与对比** | 类型 | 数学表达式 | 特点 | 适用场景 | |-----------|---------------------|-------------------------------|------------------------| | **L1正则化** | $R(\theta) = \sum\|\theta_i\|$ | 产生稀疏解,适合特征选择 | 高维数据、稀疏特征场景 | | **L2正则化** | $R(\theta) = \sum\theta_i^2$ | 参数平滑,抑制极端权重 | 共线性较强、需稳定解 | | **弹性网络** | 结合L1和L2 | 平衡稀疏性与稳定性 | 复杂特征交互场景 | #### 4. **实际应用示例(Python)** 在Scikit-learn中,可通过设置`penalty`参数选择正则化类型,并通过`C`(即$1/\lambda$)调节正则化强度: ```python from sklearn.linear_model import LogisticRegression # 使用L2正则化的逻辑回归 model = LogisticRegression(penalty='l2', C=0.1) model.fit(X_train, y_train) y_pred = model.predict(X_test) print('Accuracy:', accuracy_score(y_test, y_pred)) # 引用[1] ``` #### 5. **参数选择与调优** - 通过交叉验证(如GridSearchCV)寻找最优$\lambda$值。 - 若数据噪声较大,需增大$\lambda$以增强正则化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值