正则化

特征选择之经典三刀

a 夏天 提交于 2019-12-11 08:52:40
本文由作者授权发布,未经许可,请勿转载。 作者:侯江畔,网易杭州研究院算法工程师 数据决定了模型的上限,而算法只是去逼近这个上限。如何从海量特征中科学提取关键特征呢? 特征选择(Feature Selection)和特征提取(Feature Extraction)是特征工程(Feature Engineering)的两个重要子内容。其中特征提取是指从数据中找到可以表征目的的属性,而特征选择是从候选特征中选出“优秀”的特征。通过特征选择可以达到降维、提升模型效果、提升模型性能等效果,深度学习目前这么火热,其中一个重要原因是其减少了特征选择的工作,但对于机器学习,特征选择仍然是其应用中很重要的一步。 一、为什么要特征选择? 1.1特征数量与分类器性能的关系 一般来说,进入模型的特征数量与模型的效果之间满足以下曲线,在某个位置达到最优。过多或过少都会使分类器的效果发生严重的下降。 1.2特征不足的影响 当特征不足时,极易发生数据重叠,这种情况下任何分类器都会失效。如下图所示,仅依赖x1或x2都是无法区分这两类数据的。 1.3特征冗余的影响 增加特征可以理解为向高维空间映射,当这个“维度”过高时,容易造成同类数据在空间中的距离边远,变稀疏,这也易使得很多分类算法失效。如下图所示,仅依赖x轴本可划分特征,但y轴的引入使得同一类别不再聚集。 1.4特征选择的难点问题 首先我们已经明确

深度学习—过拟合问题

半城伤御伤魂 提交于 2019-12-10 17:20:36
1、过拟合问题   欠拟合: 根本原因是特征维度过少,模型过于简单,导致拟合的函数无法满足训练集,误差较大;       解决方法:增加特征维度,增加训练数据;    过拟合: 根本原因是 特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多 ,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。 过度的拟合了训练数据,而没有考虑到泛化能力。       解决方法:(1)减少特征维度;(2)正则化,降低参数值。    减少过拟合总结: 过拟合主要是有两个原因造成的:数据太少+模型太复杂   (1)获取更多数据 :从数据源头获取更多数据;数据增强(Data Augmentation)   (2)使用合适的模型:减少网络的层数、神经元个数等均可以限制网络的拟合能力;   (3) dropout ;   (4)正则化,在训练的时候限制权值变大;   (5)限制训练时间;通过评估测试;   (6)增加噪声 Noise: 输入时+权重上(高斯初始化) ;   (7)数据清洗(data ckeaning/Pruning):将错误的label 纠正或者删除错误的数据。   (8)结合多种模型: Bagging用不同的模型拟合不同部分的训练集;Boosting只使用简单的神经网络;    产生过拟合根本原因:    1、 观察值与真实值存在偏差:    训练样本的获取

sklearn机器学习算法--线性模型

喜欢而已 提交于 2019-12-10 17:11:54
线性模型 用于回归的线性模型 线性回归(普通最小二乘法) 岭回归 lasso 用于分类的线性模型 用于多分类的线性模型 1、线性回归 LinearRegression,模型简单,不同调节参数 #2、导入线性回归模型 from sklearn.linear_model import LinearRegression #3、实例化线性回归模型对象 lr = LinearRegression() #4、对训练集进行训练 lr.fit(X_train,y_train) #“斜率”参数(w,也叫作权重或系数)被保存在coef_ 属性中,而偏移或截距(b)被保存在intercept_ 属性中: print('lr.coef_:{}'.format(lr.coef_)) print('lr.intercept_:{}'.format(lr.intercept_)) View Code 2、岭回归 Ridge,调节参数alpha,默认使用L2正则化,alpha越大模型得到的系数就更接近于0,减少alpha可以让系数受到的约束减小。 #导入岭回归模型 from sklearn.linear_model import Ridge #实例化岭回归模型对象并对训练集进行训练 ridge = Ridge().fit(X_train,y_train) #查看模型在训练集和测试集上的精确度 print(

机器学习:过拟合和欠拟合:岭回归

荒凉一梦 提交于 2019-12-10 15:53:26
过拟合与欠拟合 过拟合 :一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂) 欠拟合 :一个假设在训练数据上不能获得更好的拟合, 但是在训练数据外的数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单) 模型复杂度 数据的特征和目标值之间的关系,不仅仅是线性关系。 欠拟合原因以及解决办法 原因 : 学习到数据的特征过少 解决办法 : 增加数据的特征数量 过拟合原因以及解决办法 原因 : 原始特征过多,存在一些嘈杂特征, 模型过于复杂是因为模型尝试去兼顾 各个测试数据点 解决办法 : 进行特征选择,消除关联性大的特征(很难做) 交叉验证(让所有数据都有过训练) 正则化(了解) 根据结果现象判断:欠拟合和过拟合 交叉验证:训练集结果:表现不行,测试集:表现不行(欠拟合) 特征选择有:过滤式:低方差特征;嵌入式:正则化,决策树,神经网络 正则化 L2正则化:解决过拟合 作用:可以使得W的每个元素都很小,都接近于0 优点:越小的参数说明模型越简单,越简单的模型则越不 容易产生过拟合现象 如果模型函数是: 尽量减小高次项特征的影响,减小他们的权重,这就是正则化 线性回归:LInearRegression 容易出现过拟合,为了把训练集数据表现得更好 所以就出现了

训练神经网络调超参的总结

随声附和 提交于 2019-12-10 05:37:55
train loss与test loss结果分析: train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test loss不断下降,说明数据集100%有问题; train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目; train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。 train loss 趋于不变,train accuracy不断上升,说明网络学习能力不强,正确分类多数是大于0.5多一点,就会造成train loss趋于不变,而train accuracy不断上升 train loss很低,test loss却很高,说明网络的泛化能力低或者是过拟合 调整模型的一些心得: 很多人在刚开始训练自己的模型的时候都容易进入一个误区:一开始训练数据准备的很大,训练时间消耗太多,最后发现train loss不收敛,测试效果也理想。在进行大规模数据训练的时候,应该先用少量的数据进行测试,证明你设计的模型是有学习能力的,在这基础上把各个参数调到最佳,最后才是进行大规模的数据训练。很多人都省略了开始的一步,造成许多麻烦,而且还很费时间。

机器学习之监督学习supervised learning

前提是你 提交于 2019-12-06 16:36:06
分类与回归 监督学习的问题主要有两种,分别是分类classification和回归regression。 分类: 分类问题的目的是预测类别标签class label,这些标签来自预定义的可选列表。 回归: 回归任务的目的是预测一个连续值,也叫作浮点数floating-point number,即预测值不是一个类别而是一个数字值。打个比方,假如要根据一个人的年龄学历等feature来预测这个人的收入,那么预测值为一个金额,可以在给定范围内任意取值。 区分分类与回归: 最好的办法就是看输出是否具有某种连续性,如果在可能的结果之间具有连续性,那么它就是一个回归问题。 泛化 generalize: 如果一个模型能对没有见过的数据做出准确的预测,那么就表明这个模型能从训练集generalize到测试集。 过拟合 overfitting 欠拟合 underfitting: 如果我们总想找到最简单的模型,构建与一个对于现有信息量过于复杂的模型,即在拟合模型的时候过分关注训练集的细节,得到了一个与训练集上表现很好但是不能泛化到新数据上的模型,那么就是overfitting过拟合。 反之 ,如果模型过于简单,无法抓住数据的全部内容以及数据中的变化,甚至在训练集上表现就很差,那么就是underfitting欠拟合。 所以 ,在二者之间存在一个最佳位置,找到这个位置就是我们最想要的模型。 监督学习算法

关于梯度爆炸和梯度消失的详解(转载)

假装没事ソ 提交于 2019-12-06 14:30:40
转载链接: https://www.jianshu.com/p/3f35e555d5ba 1.为什么使用梯度下降来优化神经网络参数? 反向传播(用于优化神网参数) :根据损失函数计算的误差通过反向传播的方式,指导深度网络参数的更新优化。 采取反向传播的原因:首先,深层网络由许多线性层和非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 (非线性来自于非线性激活函数),因此整个深度网络可以视为是一个复合的非线性多元函数。 我们最终的目的是希望这个非线性函数很好的完成输入到输出之间的映射,也就是找到让损失函数取得极小值。所以最终的问题就变成了一个寻找函数最小值的问题,在数学上,很自然的就会想到使用梯度下降来解决。 2.梯度消失、爆炸会带来哪些影响 举个例子,对于一个含有三层隐藏层的简单神经网络来说, 当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。 3.产生的原因 以最简单的网络结构为例,假如有三个隐藏层,每层的神经元个数都是1,且对应的非线性函数为 (其中 为某个激活函数)如下图: 现在假设我们需要更新参数 ,那么我们就要求出损失函数对参数 的导数 而对于激活函数,之前一直使用Sigmoid函数

《深度学习》笔记-正则化

拥有回忆 提交于 2019-12-05 22:07:55
算法效果不仅很大程度上受影响于假设空间的函数数量,也取决于这些函数数量的具体形式。 控制算法性能的两种方式:1.允许使用的函数数量,2.这些函数的数量。 正则化是指修改学习算法,使其降低泛化误差而非训练误差。 来源: https://www.cnblogs.com/wangzhenghua/p/11947093.html

Andrew Ng机器学习 五:Regularized Linear Regression and Bias v.s. Variance

丶灬走出姿态 提交于 2019-12-05 14:22:25
背景:实现一个线性回归模型,根据这个模型去预测一个水库的水位变化而流出的水量。 加载数据集ex5.data1后,数据集分为三部分: 1,训练集(training set)X与y; 2,交叉验证集(cross validation)Xval, yval; 3,测试集(test set): Xtest, ytest。 一: 正则化线性回归 (Regularized Linear Regression) 1,可视化训练集,如下图所示: 通过可视化数据,接下来我们使用线性回归去拟合这些数据集。 2,正则化线性回归代价函数: $J(\theta)=\frac{1}{2m}(\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2)+\frac{\lambda }{2m}\sum_{j=1}^{n}\theta_{j}^{2}$,忽略偏差项$\theta_0$的正则化 3,正则化线性回归梯度: $\frac{\partial J(\theta)}{\partial \theta_0}=\frac{1}{m}\sum_{i=1}^{m}[(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j]$ for $j=0$ $\frac{\partial J(\theta)}{\partial \theta_j}=(\frac{1}{m}\sum_{i

正则化

狂风中的少年 提交于 2019-12-05 11:32:20
正则化 解释 L1正则化在尖角处更大概率发生碰撞,此时的解 \(w_1 = 0\) L2正则化:使得模型的解偏向于范数较小的 \(W\) ,通过限制 \(W\) 范数的大小实现了对模型空间的限制,从而在一定程度上避免了过拟合。不过岭回归并不具有产生稀疏解的能力,得到的系数仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观 L1正则化:能产生稀疏性,导致 W 中许多项变成零。 稀疏的解除了计算量上的好处之外,更重要的是更具有“可解释性” L0正则化的值是模型参数中非零参数的个数,但难以求解。L1正则是L0正则的最优凸近似 约束解释 带正则项和带约束条件是等价的。为了约束 \(w\) 的可能取值空间防止过拟合,加上约束(这里的限制条件是2范数,对应于L2正则化)的优化问题变为: \[\begin{aligned} \begin{cases} \mathop{\min} \sum \limits_{i=1}^N (y_i - w^Tx_i)^2 \\ s.t. ||w||^2_2 \leq m \end{cases} \end{aligned}​\] 对应拉格朗日函数 \(\sum \limits_{i=1}^N(y_i - w^Tx_i)^2 + \lambda (||w||_2^2 - m)\) 若 \(w^*\) 和 \(\lambda^*\)