百度
360搜索
搜狗搜索

正则化参数选多少合适,正则化详解详细介绍

本文目录一览: 正则化长细比是多少?

正则化长细比也叫通用长细比,即λ/λy,λy为欧拉临界应力正好等于材料屈服点fy时的长细比。将图形的横坐标用通用长细比表示时可以将该图形曲线通用于不同钢号的材料。
参数,其值等于钢材受弯、受剪或受压屈服强度与相应的构件或板件抗弯、抗剪或抗承压弹性屈曲应力之商的平方根。
λ=μl/i, μ与连接方式有关,l为计算长度,i为惯性半径,i=(I/A)^0.5, I为惯性矩,A为面积。材料力学中压杆稳定那章就有介绍。
根据现在的钢结构规范,长细比计算有两个目的。
第一,看看有没有超过容许长细比的限值,这个目的是不用考虑钢材的牌号(或是屈服强度)。
第二,当然是计算受压构件的稳定性。规范中求稳定系数是是把长细比λ正则化,或叫通用长细比,记做λn=λ/π sqrt(E/Fy)。
它有一个弹性屈曲和非弹性屈曲的界限长细比,4.71sqrt(E/Fy),如果长细比λ小于这个值,柱子发出屈曲时会有塑性区出现。
稳定应力为Fy*0.658 Fy/Fe否则即为弹性屈曲稳定应力为0.877Fe。其中Fe=π2E/λ2可见此值就是欧拉荷载。比如说Fy=345MPa,那么界限长细比为115。所以柱子的稳定系数是和其强度有一定关系的,就在于是发生弹性屈曲还是非弹性屈曲。

【zt】LogisticRegression 调参 & GridSearchCV

资料目录:

1. LogisticRegression()参数解析

2.?sklearn-GridSearchCV,CV调节超参使用方法

=====================================================================

C : float, optional (default=1.0)

Inverse of regularization strength; must be a positive float. Like in support vector machines, smaller values specify stronger regularization.

C为正则化系数λ的倒数,必须为正数,默认为1。和SVM中的C一样,值越小,代表正则化越强。

class_weight : {dict, ‘auto’}, optional 考虑类不平衡,类似于代价敏感

Over-/undersamples the samples of each class according to the given weights. If not given, all classes are supposed to have weight one. The ‘auto’ mode selects weights inversely proportional to class frequencies in the training set.

penalty : 正则化参数:’l1’,’l2’.默认是’l2’。

在调参时如果我们主要的目的只是为了解决过拟合,一般penalty选择L2正则化就够了。但是如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化。? 另外,如果模型的特征非常多,我们希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。

penalty参数的选择会影响我们损失函数优化算法的选择。即参数solver的选择。

solver: 逻辑回归损失函数的优化方法,有四种算法供选择

‘newton-cg’:坐标轴下降法来迭代优化损失函数?

‘lbfgs’:, ‘liblinear’:牛顿法变种?

‘sag’:随机梯度下降

其中‘newton-cg’, ‘lbfgs’, ‘sag’只适用于L2惩罚项的优化,liblinear两种都适用。因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。而‘liblinear’并没有这个依赖。

当样本数目比较大时,使用sag效果较好,因为它只使用一部分样本进行训练。

a) liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。

b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。

小结:

multi_class?

{‘ovr’, ‘multinomial’}, default: ‘ovr’

OvR的思想很简单,无论你是多少元逻辑回归,我们都可以看做二元逻辑回归。multinomial相对复杂。

官网有个对比两种分类方式的例子: 链接地址 。

class_weight :类型权重参数。

用于标示分类模型中各种类型的权重。默认不输入,即所有的分类的权重一样。选择‘balanced’自动根据y值计算类型权重。自己设置权重,格式:{class_label: weight}。例如0,1分类的er'yuan二元模型,设置class_weight={0:0.9, 1:0.1},这样类型0的权重为90%,而类型1的权重为10%。

n_jobs=1?: 并行数

int:个数;-1:跟CPU核数一致;1:默认值。

其他参数:

dual=False: 对偶或者原始方法。Dual只适用于正则化相为l2的‘liblinear’的情况,通常样本数大于特征数的情况下,默认为False。

fit_intercept=True: 是否存在截距,默认存在。

intercept_scaling=1: 仅在正则化项为‘liblinear’,且fit_intercept设置为True时有用。

max_iter=100: 算法收敛的最大迭代次数。

tol=0.0001: 迭代终止判据的误差范围。

verbose=0: 日志冗长度int:冗长度;0:不输出训练过程;1:偶尔输出; >1:对每个子模型都输出

warm_start=False: 是否热启动,如果是,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。布尔型,默认False。

LogisticRegression类的常用方法

fit(X, y, sample_weight=None)

拟合模型,用来训练LR分类器,其中X是训练样本,y是对应的标记向量

返回对象,self。

fit_transform(X, y=None, **fit_params)

fit与transform的结合,先fit后transform。返回X_new:numpy矩阵。

predict(X)

用来预测样本,也就是分类,X是测试集。返回array。

predict_proba(X)

输出分类概率。返回每种类别的概率,按照分类类别顺序给出。如果是多分类问题,multi_class="multinomial",则会给出样本对于每种类别的概率。

返回array-like。

score(X, y, sample_weight=None)

返回给定测试集合的平均准确率(mean accuracy),浮点型数值。

对于多个分类返回,则返回每个类别的准确率组成的哈希矩阵。

上述内容汇总自不同网站,但多数内容来自于这个链接:https://www.jianshu.com/p/e51e92a01a9c

-----------------------------------------------------------------------------------------------

【其他】

sklearn-GridSearchCV,CV调节超参使用方法:https://blog.csdn.net/u012969412/article/details/72973055

GridSearchCV 简介:

GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。这个时候就是需要动脑筋了。数据量比较大的时候可以使用一个快速调优的方法——坐标下降。它其实是一种贪心算法:拿当前对模型影响最大的参数调优,直到最优化;再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。这个方法的缺点就是可能会调到局部最优而不是全局最优,但是省时间省力,巨大的优势面前,还是试一试吧,后续可以再拿bagging再优化。回到sklearn里面的GridSearchCV,GridSearchCV用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。

GridSearchCV官方网址: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

常用参数解读:

estimator :所使用的分类器,如estimator=RandomForestClassifier(min_samples_split=100,min_samples_leaf=20,max_depth=8,max_features='sqrt',random_state=10), 并且传入除需要确定最佳的参数之外的其他参数。每一个分类器都需要一个scoring参数,或者score方法。

param_grid :值为字典或者列表,即需要最优化的参数的取值,param_grid =param_test1,param_test1 = {'n_estimators':range(10,71,10)}。

scoring : 准确度评价标准,默认None,这时需要使用score函数;或者如scoring='roc_auc',根据所选模型不同,评价准则不同。字符串(函数名),或是可调用对象,需要其函数签名形如:scorer(estimator, X, y);如果是None,则使用estimator的误差估计函数。scoring参数选择如下:

参考地址: http://scikit-learn.org/stable/modules/model_evaluation.html

cv? :交叉验证参数,默认None,使用三折交叉验证。指定fold数量,默认为3,也可以是yield训练/测试数据的生成器。

refit? :默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。

iid :默认True,为True时,默认为各个样本fold概率分布一致,误差估计为所有样本之和,而非各个fold的平均。

verbose :日志冗长度,int:冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。

n_jobs: ?并行数,int:个数,-1:跟CPU核数一致, 1:默认值。

pre_dispatch :指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次

常用方法:

grid.fit():运行网格搜索

grid_scores_:给出不同参数情况下的评价结果

best_params_:描述了已取得最佳结果的参数的组合

best_score_:成员提供优化过程期间观察到的最好的评分

线性模型-分类模型

线性模型也可用于分类问题。我们首先来看二分类。我们可以利用下面的公式预测:
y^=w[0]x[0]+w[1]x[1]+...+w[p]*x[p]+b>0
这个公式与线性回归的公式非常相似,但我们没有返回特征的加权求和,而是为预测设置了阈值(0)。如果函数值小于0,我们就预测类别-1,如果函数值大于0,我们就预测类别+1。对于所有用于分类的线性模型,这个预测规则都是通用的。同样,有很多不同的方法来找出系数(w)和截距(b)。 对于用于回归的线性模型,输出y^是特征的线性函数,是直线、平面或超平面(对于更高维的数据集)。对于用于分类的线性模型, 决策边界 是输入的线性函数。换句话说,(二元)线性分类器是利用直线、平面或超平面来分开两个类别的分类器。 学习线性模型有很多种算法。这些算法的区别在于以下两点: 1.系数和截距的特定组合对训练数据拟合好坏的度量方法; 2.是否使用正则化,以及使用哪种正则化方法。 不同的算法使用不同的方法来度量“对训练集拟合好坏”。由于数学上的技术原因,不可能调节w和b使得算法产生的误分类数量最少。对于我们的目的,以及对于许多有用而言,上面第一点(称为 损失函数 )的选择并不重要。 最常见的两种线性分类算法是 Logistic回归(logistic regression) 和 线性支持向量机(linear support vector machine,线性SVM) 。
Python version:3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] pandas version:0.23.4 matplotlib version:3.0.2 Numpy version:1.15.4 Scipy version:1.1.0 IPython version:7.2.0 scikit-learn version:0.20.1

阅读更多 >>>  数学中的正则性是指的什么

对于LogisticRegression和LinearSVC,决定正则化强度的权衡参数叫作C。C值越大,对应的正则化越弱。换句话说,如果参数C值较大,那么LogisticRegression和LinearSVC将尽可能将训练集拟合到最好,而如果C值较小,那么模型更强调使系数向量(w)接近于0。 参数C的作用还有另一个有趣之处。较小的C值可以让算法尽量适应“大多数”数据点,而较大的C值强调每个数据点都分类正确的重要性。 mglearn.plots.plot_linear_svc_regularization()

Training set score:0.953 Test set score:0.958 C=1的默认值给出了相当好的性能,在训练集和测试集上都达到95%的精度。但由于训练集和测试集的性能非常接近,所以模型很可能是欠拟合的。我们尝试增大C来拟合一个更灵活的模型:
Training set score:0.972 Test set score:0.965 使用C=100可以得到更高的训练集精度,也得到了稍高的测试集精度,这也证实了我们的直觉,即更复杂的模型应该性能更好。
Training set score:0.934 Test set score:0.930 最后,看一下正则化参数C取三个不同的值模型学到的系数:
LogisticRegression模型默认应用L2正则化。更强的正则化使的系数更趋向于0,但系数永远不会正好等于0。进一步观察图像,还可以第3个系数那里发现有趣之处,这个系数是“平均周长”(mean perimeter)。C=100和C=1时这个系数为正,其绝对值比C=1时还要大。在解释这样的模型时,系数可以告诉我们某个特征与哪个类别有关。例如,人们可能会认为高“纹理错误”(texture error)特征与“恶性”样本有关。但“平均周长”系数的正负号发生变化,说明较大的“平均周长”可以被当作“良性”的指标或“恶性”的指标,具体取决于我们考虑的是哪个模型。这也说明,对线性模型系数的解释应该始终持保留态度。 如果想要一个可解释性更强的模型,使用L1正则化可能更好,因为它约束模型只使用少数几个特征:
Training accuracy of l1 logreg with C=0.001:0.91 Test accuracy of l1 logreg with C=0.001:0.92 Training accuracy of l1 logreg with C=1.000:0.96 Test accuracy of l1 logreg with C=1.000:0.96 Training accuracy of l1 logreg with C=100.000:0.99 Test accuracy of l1 logreg with C=100.000:0.98
将二分类算法推广到多分类算法的一种常见方法是“一对多余”(one-vs.-rest)方法。在“一对多余”方法中,对每个类别都学习一个二分类模型,将这个类别与所有其他类别尽量分开,这样就生成了与类别格式一样多的二分类偶像。在测试点上运行所有二分类器来进行预测。在对应类别上分数最高的分类器“胜出”,将这个类别标签返回作为预测结果。 每个类别都对应一个二类分类器,这样每个类别都有一个系数(w)向量与一个截距(b)。 我们将“一对多余”方法应用在一个简单的三分类数据集上。我们用到了一个二维数据集,每个类别的数据都是从一个高斯分布中采样得出的:
在上面的数据集上训练一个LinearSVC分类器:
Coefficient shape: (3, 2) Intercept shape: (3,) 我们看到,coef_的形状是(3,2),说明coef_每行包含三个类别之一的系数向量,每列包含某个特征(这个数据集有2个特征)对应的系数值。现在intercetp_是一维数组,保存每个类别的截距,我们将这3个二分类器给出的直线可视化:
你可以看到,训练集中所有属于类别0的点都在类别0对应的直线上方,这说明它们位于这个二分类器属于“类别0”的那一侧。属于类别0的点位于与类别2对应的直线上方,这说明它们被类别2的二分类器划为“其余”。属于类别0的点位于与类别1对应的直线左侧,这说明类别1的二元分类器将它们划为“其余”。因此,这一区域的所有点都会被最终分类器划为类别0(类别0的分类器的分类置信方程的结果大于0,其他两个类别对应的结果小于0)。 但图像中间的三角形区域属于哪一个类别呢,3个分类器都将这一区域内的点划为“其余”。这里的点应该应该划归到哪一个类别呢?答案是分类方程结果最大的那个类别,即最接近的那条线对应的类别。
线性模型的主要参数是正则化参数,在回归模型中叫作alpha,在LinearSVC和LogisticRegression中叫作C。alpha值较大或C值较小,说明模型比较简单。特别是对于回归模型而言,调节这些参数非常重要。通常在对数尺度上对C和alpha进行搜索。你还需要确定的是用L1正则化还是L2正则化。如果你假定只有几个特征是真正重要的,那么你应该用的是L1正则化,否则默认使用L2正则化。如果模型的可解释性很重要的话,使用L1也会有帮助。由于L1只用到几个特征,所以更容易解释哪些特征对模型时重要的,以及这些特征的作用。 线性模型的训练速度非常快,预测速度也很快。这种模型可以推广到非常大的数据集,对稀疏数据也很有效。如果你的数据包含数十万甚至上百万个样本,你可能需要研究使用LogisticRegression和Ridge模型的solver='sag'选项,在处理大型数据时,这一选项比默认值要更快。其他选项还有SGDClassifier类和SGDRegressor类,它们对线性模型实现了可扩展性更强的版本。 线性模型的另一个优点在于,利用我们之前见过的用于回归和分类的公式,理解如何进行预测是相对比较容易的。不幸的是,往往并不完全清楚系数为什么是这样的。如果你的数据集中包含高度相关的特征,这一问题尤为突出。在这种情况下,可能很难对系数做出解释。 如果特征数量大于样本数量,线性模型的表现通常都很好。它也常用于非常大的数据集,只是尤为训练其他模型并不可行。但在更低维的空间中,其他模型的泛化性能可能更好。

梯度下降中正则化参数大小如何确定

梯度下降法的搜索方向顾名思义就是梯度方向,也就是当前点所在地形最陡峭的下降方向(你这个图里面只有左右两个方向)。
步长的选择要看函数的性质,一般可导函数,只要步长足够小,则保证每次函数值都不会增加,此外:
1.
如果函数可导,且函数的梯度满足李普希兹连续(常数为L),若以小于
的步长迭代,则能保证每次迭代的函数值都不增,则保证最终会收敛到梯度为0的点。也可以采用Line
search确定步长,Line
search的本质目的其实也是为了保证函数值下降(或称作不增)。
2.
如果函数还是凸的,则最终会走到最优点。

L1、L2正则化知识详解

正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束、调整或缩小。也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险。

如果随机变量的概率密度函数分布为:

还有涉及极大似然估计、概率论相关的先验和后验相关概率, 为了控制篇幅, 本文就不详细介绍, wiki百科和百度百科都讲得很清楚。
正则化通过降低模型的复杂性, 达到避免过拟合的问题。 正则化是如何解决过拟合的问题的呢?从网上找了很多相关文章, 下面列举两个主流的解释方式。

如果发生过拟合, 参数θ一般是比较大的值, 加入惩罚项后, 只要控制λ的大小,当λ很大时,θ1到θn就会很小,即达到了约束数量庞大的特征的目的。
原因二:从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代。 L1正则是拉普拉斯先验,L2是高斯先验。整个最优化问题可以看做是一个最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计。 给定训练数据, 贝叶斯方法通过最大化后验概率估计参数θ:

下面我们从最大后验估计(MAP)的方式, 推导下加入L1和L2惩罚项的Lasso和岭回归的公式。 首先我们看下 最小二乘公式的推导 (公式推导截图来自知乎大神)

为了帮助理解,我们来看一个直观的例子:假定x仅有两个属性,于是无论岭回归还是Lasso接触的w都只有两个分量,即w1,w2,我们将其作为两个坐标轴,然后在图中绘制出两个式子的第一项的”等值线”,即在(w1,w2)空间中平方误差项取值相同的点的连线。再分别绘制出L1范数和L2范数的等值线,即在(w1,w2)空间中L1范数取值相同的点的连线,以及L2范数取值相同的点的连线(如下图所示)。
岭回归与Lasso的解都要在平方误差项与正则化项之间折中,即出现在图中平方误差项等值线与正则化项等值线相交处。而由上图可以看出,采用L1范数时平方误差项等值线与正则化项等值线的交点常出现在坐标轴上,即w1或w2为0,而在采用L2范数时,两者的交点常出现在某个象限中,即w1或w2均非0。
这说明了岭回归的一个明显缺点:模型的可解释性。它将把不重要的预测因子的系数缩小到趋近于 0,但永不达到 0。也就是说,最终的模型会包含所有的预测因子。但是,在 Lasso 中,如果将调整因子 λ 调整得足够大,L1 范数惩罚可以迫使一些系数估计值完全等于 0。因此,Lasso 可以进行变量选择,产生稀疏模型。注意到w取得稀疏解意味着初始的d个特征中仅有对应着w的非零分量的特征才会出现在最终模型中,于是求解L1范数正则化的结果时得到了仅采用一部分初始特征的模型;换言之,基于L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程和学习器训练过程融为一体,同时完成。

正则化详解

机器学习模型需要拥有很好地泛化能力来适应训练集中没有出现过的新样本。在机器学习应用时,我们经常会遇到过度拟合(over-fitting)的问题,可能会导致训练出来的模型效果很差。接下来,我们将谈论的正则化(regularization)技术,它可以改善或者减少过度拟合问题,以使学习算法更好实现。
机器学习中一个重要的话题便是模型的泛化能力,泛化能力强的模型才是好模型,对于训练好的模型,若在训练集表现差,不必说在测试集表现同样会很差,这可能是欠拟合(under fitting)导致;若模型在训练集表现非常好,却在测试集上差强人意,则这便是过拟合(over fitting)导致的,过拟合与欠拟合也可以用 Bias 与 Variance 的角度来解释,欠拟合会导致高 Bias ,过拟合会导致高 Variance ,所以模型需要在 Bias 与 Variance 之间做出一个权衡。
使用简单的模型去拟合复杂数据时,会导致模型很难拟合数据的真实分布,这时模型便欠拟合了,或者说有很大的 Bias, Bias 即为模型的期望输出与其真实输出之间的差异 ;有时为了得到比较精确的模型而过度拟合训练数据,或者模型复杂度过高时,可能连训练数据的噪音也拟合了,导致模型在训练集上效果非常好,但泛化性能却很差,这时模型便过拟合了,或者说有很大的 Variance,这时模型在不同训练集上得到的模型波动比较大, Variance 刻画了不同训练集得到的模型的输出与这些模型期望输出的差异 。
举例:

Bias反映的是模型的期望与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
我们通过公式来直观了解一下,文字没有数学符号解释的清楚:
用图形解释方差与偏差:

举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环;二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。
简单的模型会有一个较大的偏差和较小的方差,复杂的模型偏差较小方差较大。

解决欠拟合的方法: 1、增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间; 2、尝试非线性模型,比如核SVM 、决策树、DNN等模型; 3、如果有正则项可以较小正则项参数; 4、Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等. 解决过拟合的方法: 1、交叉检验,通过交叉检验得到较优的模型参数; 2、特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间; 3、正则化,常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择; 4、如果有正则项则可以考虑增大正则项参数; 5、增加训练数据可以有限的避免过拟合; 6、Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等. DNN中常见的方法: 1、早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。 2、集成学习策略。而DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。 3、DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。 在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。
正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。因此需要在目标函数添加一些额外的惩罚项,即正则项。添加惩罚项可看成是对损失函数中的某些参数做一些限制,根据惩罚项的不同可分为:L0范数惩罚、L1范数惩罚(参数稀疏性惩罚)、L2范数惩罚(权重衰减惩罚)。 L0范数惩罚:为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。因此机器学习中经常使用L1、L2正则化。L1正则化项也称为Lasso,L2正则化参数也称为Ridge。 L1范数:权值向量w中各个元素的绝对值之和,L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。 L2范数:权值向量w中各个元素的平方和然后再求平方根,L2正则化可以防止模型过拟合;一定程度上,L1也可以防止过拟合。
上面我们得到了带约束的优化问题A2,在实际的求解中,带约束的优化问题往往较难求解,大多都是转化为无约束优化问题去求解。接下来自然而然的我们采用拉格朗日乘子法将约束转化到目标函数上去,也就将约束优化问题A2转化为一个无约束的优化问题。那么这个无约束优化问题的形式是什么样的呢?这里直接先把最终的结论摆上来:
稀疏性对很多机器学习建模问题来说是非常重要的,也是非常好的一个性质。既然有很多系数等于0了,那么说明与之对应的输入是没有用了,这些输入就可以舍去,相当于起到了 降维和feature selection的作用。特殊要说明的是用L1正则化来降维和PCA降维是不同的,可以理解为L1正则化是用了数据的标签来做的,而PCA无需数据的标签。所以L1正则化实际上是带有监督学习性质的降维方法。
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是抗扰动能力强。
λ可以控制L图形的大小,λ越小,L的图形越大(上图中的黑色方框和圆);λ越大,L的图形越小,最后求得代价函数最值时各参数也会变得很小。从另一方面看,由公式5可以看到,λ越大,θj衰减得越快。
机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系? 机器学习防止欠拟合、过拟合方法
【学界】有约束转无约束,拉格朗日松弛观点下的L1正则化稀疏性探讨
斯坦福机器学习课程 第三周 (4)正则化:解决过拟合问题
拉格朗日乘子法如何理解?
机器学习中正则化项L1和L2的直观理解

正则项浅析

知识预备:范数 http://blog.csdn.net/shijing_0214/article/details/51757564
我们经常会听到正则项这个概念,通过查阅资料并且结合自己的理解对正则项做了一个简单的总结,首先,从问题出发: (1)正则项存在的意义是什么,为什么要使用正则项?正则项是如何防止过拟合的? (2)有哪几种正则项,如何表示,它们的相同点和不同点是什么? (3)不同正则项的使用场景是什么,如何选取正则项呢? 下面就来一一的进行分析吧~~~~
先引入问题 : 就拿斯坦福机器学习课程的例子来说,通过房子的面积来预测房价,建立回归方程来拟合样本数据

(一)为什么要使用正则项? 其实正则项是对参数的控制。那么为什么要控制参数呢,控制参数有什么好处呢? (1)实现参数的稀疏,这样可以简化模型,避免过拟合。在一个模型中重要的特征并不是很多,如果考虑所有的特征都是有作用的,那么就会对训练集进行充分的拟合,导致在测试集的表现并不是很好,所以我们需要稀疏参数,简化模型。 (2)尽可能保证参数小一些,这又是为啥呢?因为越是复杂的模型,它会对所有的样本点进行拟合,如果在这里包含异常的样本,就会在小区间内产生很大的波动,不同于平均水平的高点或者低点,这样的话,会导致其导数很大,我们知道在多项式导数中,只有参数非常大的时候,才会产生较大的导数,所以模型越复杂,参数值也就越大。为了避免这种过度的拟合,需要控制参数值的大小。
(二)正则项的分类 正则项有三种:L0、L1、L2
L0正则化的值是模型参数中非零参数的个数。 L1正则化表示各个参数绝对值之和。 L2正则化标识各个参数的平方的和的开方值。
1、L0正则化 保证参数稀疏化来防止过拟合,可以用非零参数,来进行特征选择。但是L0正则化不好求,因此采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且可以实现稀疏的效果。
2、L1正则化 L1正则化也叫lasso,它往往是替代L0正则化来防止过拟合的。为啥用L1范数,因为L1范数就是各个参数的绝对值相加,我们已知,参数的值的大小和模型的复杂度是成正比的,因此复杂模型,L1范数就会大,导致损失函数大。下面定量的分析: 在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n。如下:
?同样计算导数得:
上式中sgn(w)表示w的符号。那么权重w的更新规则为:?
现在来观察正则求导项,可知当w为正时,更新后的w变小;当w为负时,更新后的w变大。 因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。 另外,上面没有提到一个问题,当w为0时怎么办?当w等于0时,|w|是不可导的,所以我们只能按照原始的未经正则化的方法去更新w,这就相当于去掉η λ sgn(w)/n这一项,所以我们可以规定sgn(0)=0,这样就把w=0的情况也统一进来了。
3、L2正则化 L2正则化也是防止过拟合的,原因和L1一样一样的,就是形式不同。L2范数是各参数的平方和再求平方根。对于L2的每个元素都很小,但是不会为0,只是接近0,参数越小说明模型越简单,也就越不容易产生过拟合。L2正则化也叫做“岭回归”。
来让我们看看具体的例子,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道 哪些是高阶多项式的项。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。因此在正则化里,我们要做的事情,就是把减小我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。因此,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。
为什么加了一项就让参数尽量小呢,因为只要你想让J最小,那么θ肯定尽可能的去小。
注意:这里我们没有去惩罚 θ0,实践中只会有较小的差异
λ 要做的就是控制惩罚项与均方差之间的平衡关系。 λ越大说明,参数被打压得越厉害,θ值也就越小
现在进行定量的分析:
L2正则化就是在代价函数后面再加上一个正则化项:
C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。L2正则化项是怎么避免overfitting的呢?我们推导一下看看,先求导:
在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1-ηλ/n ,因为η、λ、n都是正的,在样本量充足的时候,1-ηλ/n小于1,它的效果是减小w,这也就是权重衰减的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。
(三)lasso回归和ridge回归 下面我们来看两个对比图 (1)lasso 注意到L1正则化是权值的绝对值之和,J是带有绝对值符号的函数,因此J是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。考虑二维的情况,即只有两个权值w1和w2,此时L=|w1|+|w2|,对于梯度下降法,求解J的过程可以画出等值线,同时L1正则化的函数L也可以在w1w2的二维平面上画出来。如下图:
在图中,当J等值线与L首次相交的地方就是最优解。上图中J与L在L的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L函数有很多突出的角(二维情况下四个,多维情况下更多),J与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。
(2)ridge 同理,假设有如下带L2正则化的损失函数,同样可以画出他们在二维平面上的图形,如下:
图2 L2正则化二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。
总结 :L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适。
参考文章: http://blog.csdn.net/vividonly/article/details/50723852 http://blog.sina.com.cn/s/blog_8267db980102wryn.html http://www.mamicode.com/info-detail-517504.html http://www.2cto.com/kf/201609/545625.html http://blog.csdn.net/zouxy09/article/details/24971995/

阅读更多 >>>  正则化长细比的定义,pkpm中钢柱的长细比超限怎么调整

正则化的通俗解释

首先了解一下正则性,正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导)。
正则化是为了解决过拟合问题。
L1正则化和L2正则化可以看作是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫作Lasso回归,使用L2正则化的模型叫作Ridge回归(岭回归)
正则化的通俗解释就是给平面不可约代数曲线以某种形式的全纯参数表示。
正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。正则化:代数几何中的一个概念。
形式
反问题有两种形式。最普遍的形式是已知系统和输出求输入,另一种系统未知的情况通常也被视为反问题。许多反问题很难被解决,但是其他反问题却很容易得到答案。显然,易于解决的问题不会比很难解决的问题更能引起人们的兴趣,我们直接解决它们就可以了。那些很难被解决的问题则被称为不适定的。
用途
求解不适定问题的普遍方法是:用一组与原不适定问题相“邻近”的适定问题的解去逼近原问题的解,这种方法称为正则化方法。如何建立有效的正则化方法是反问题领域中不适定问题研究的重要内容。通常的正则化方法有基于变分原理的Tikhonov 正则化、各种迭代方法以及其它的一些改进方法,在各类反问题的研究中被广泛采用,并得到深入研究。

正则化参数如何确定

我画的参数,想要去的话,应该在它的系统程序里面好好找一找,根据自己的情况来设定个靠谱
正则化的参数,确定的话,还是有很多的方式的,而最重要的就是符合这个机器本身的一个规律
正则化参数如何确定?郑智化参数的话,你可以按照你的使用需求来确定你的这个参数

网站数据信息

"正则化参数选多少合适,正则化详解"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:正则化参数选多少合适,正则化详解的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!