L0,L1,L2正则化--广义线性模型
特点正则化项即罚函数,该项对模型向量进行“惩罚”,从而避免单纯最小二乘问题的过拟合问题。训练的目的是最小化目标函数,则C越小,意味着惩罚越小,分类间隔也就越小,分类错误也就越少。 L0范数表示向量中非零元素的个数 L2正则化标识各个参数的平方的和的开方值。 形式与推导L1 regularization(往0方向靠)原始的代价函数是:
更新 而在进行L1正则化处理后,在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n。数学形式: 对上式求导:
相比没有L1正则化,新的权重比之前的多出
当w为正时,更新后的w变小。当w为负时,更新后的w变大。因此它的效果就是让更新后的w不断往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。 L2 regularization(权重衰减) 对上式求导: 可见,L2的正则化对于
在不使用L2正则化时,求导结果中w前系数为1,现在
广义线性模型线性回归的形式:
其中,向量 普通最小二乘法(Ordinary Least Squares)目标函数: scikit-learn 实现此模型的方法: sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)
示例: from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit ([[0,0],[1,1],[2,2]],[0,1,2])
LinearRegression(copy_X=True,fit_intercept=True,n_jobs=1,normalize=False)
clf.coef_
#array([ 0.5,0.5])
但是,普通最小二乘法的系数估计依赖模型terms之间的独立性, 当terms是相关的,并且设计的X矩阵的列有近似线性相关,设计的矩阵变得更接近奇异 ,结果是,最小平方估计在观察到的反应对随机误差变得非常敏感,产生较大的反差. 多重共线性的这种情况更加,例如,数据在没有实验性的设计下收集。 岭回归 (Ridge Regression)岭回归通过使用同系数大小的惩罚函数,解决了部分普通最小二乘法中的问题。岭系数最小化惩罚残差和。
原理同上面推到的 L2 正则化。 sklearn.linear_model.Ridge(alpha=1.0,fit_intercept=True,max_iter=None,tol=0.001,solver='auto',random_state=None)
from sklearn import linear_model
clf = linear_model.Ridge (alpha = .5)
clf.fit ([[0,[0,1]],.1,1])
Ridge(alpha=0.5,copy_X=True,max_iter=None,normalize=False,random_state=None,tol=0.001)
clf.coef_
#array([ 0.34545455,0.34545455])
clf.intercept_
#0.13636...
Lasso套索算法是一个估计稀疏系数的线性模型。由于它倾向于解决较少的参数值,它在某些情况下时有效的,有效地较少解决方法说依赖的变量数 。正是由于这个原因,Lasso以及它的变体是压缩感知领域的基础. 在特定的情况下,它能复原确定的非0权值数集(查看压缩感知: tomography reconstruction with L1 prior (Lasso)). sklearn.linear_model.Lasso(alpha=1.0,precompute=False,max_iter=1000,tol=0.0001,warm_start=False,positive=False,random_state=None,selection='cyclic')
from sklearn import linear_model
clf = linear_model.Lasso(alpha = 0.1)
clf.fit([[0,1])
Lasso(alpha=0.1,positive=False,precompute=False,selection='cyclic',warm_start=False)
clf.predict([[1,1]])
#array([ 0.8])
Elastic NetElasticNet 是一个线性回归模型,训练以 L1,L2正则化作为正则项。 这种组合使得学习一个较少 sklearn.linear_model.ElasticNet(alpha=1.0,l1_ratio=0.5,selection='cyclic')[source]
参考文章: 怎么理解在模型中使用L1+L2正则化 正则化方法:L1和L2 regularization、数据集扩增、dropout 机器学习:L1与L2正则化项 Generalized Linear Models (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |