正则化

吴恩达机器学习_57线性回归的正则化

微笑、不失礼 提交于 2019-11-30 12:25:09
对于线性回归,我们已经推导了两种算法:(1)基于梯度下降(2)基于正规方程 (1)将 梯度下降法 运用到 线性回归正则化 常规的梯度下降法(将θ_0分离出来,因为之后对梯度下降法进行修改时会对θ_0区别对待): 用正则化对梯度下降法进行修改: 每次迭代时,都将θ_j乘以一个比1略小的数,然后进行和之前一样的操作 ,从而达到对代价函数的梯度下降 (2)将正规方程法运用到线性回归正则化 来源: https://www.cnblogs.com/vzyk/p/11585624.html

机器学习笔记[保持更新]

两盒软妹~` 提交于 2019-11-30 06:36:13
机器学习笔记[入门版] 本文是吴恩达《机器学习》的笔记,由于课程内容较为基础,所以本文对于许多数学知识有些欠缺 多变量线性回归 非线性函数线性化 这种情况下,特征的缩放就变得很重要(因为在平方甚至立方的情况下,特征的值会放大很多) 也不一定只要平方,开方也可以: 正规方程 相比梯度下降法,可以更快地获得最优解。 正规方程法更适合于较小型的问题,而梯度下降法适用于更大的数据集 正规方程不需要缩放特征 每个特征列在开头补上一个1然后转置,计算的公式是: 如果X^tX不可逆怎么办? 整体来说,这种情况还是比较少的 pinv()指令能在矩阵不可逆的情况下也求解出正确答案 需要求解的特征量大于样本数时也会造成问题。 解决不可逆问题的办法: 删除线性相关的变量 当特征数量太多时,删除一些特征,或者使用正规化方法 向量化 多使用内置函数库(老师的意思是自己造轮子比不上人家的2333) 左图是自己写的循环,右图是调用向量相乘的方法。右图由于使用了内置的乘法,效率比自己写的要高 C++也有这种,线性运算的库 再复杂一点的情况也是,向量化之后慢慢处理 Logistic回归 依然是在机器学习中常用的一种算法 线性规划在分类问题中的表现一般不太好 线性规划设置阈值的方法在分类中不好使 Logistic回归是一种分类算法,和回归分析没关系,这个名字有点问题,是历史遗留问题 Sigmoid function

6.正则化

纵然是瞬间 提交于 2019-11-30 06:18:00
1 import numpy as np 2 from keras.datasets import mnist 3 from keras.utils import np_utils 4 from keras.models import Sequential 5 from keras.layers import Dense 6 from keras.optimizers import SGD 7 from keras.regularizers import l2 # 载入数据 (x_train,y_train),(x_test,y_test) = mnist.load_data() # (60000,28,28) print('x_shape:',x_train.shape) # (60000) print('y_shape:',y_train.shape) # (60000,28,28)->(60000,784) x_train = x_train.reshape(x_train.shape[0],-1)/255.0 x_test = x_test.reshape(x_test.shape[0],-1)/255.0 # 换one hot格式 y_train = np_utils.to_categorical(y_train,num_classes=10) y_test = np

L2 normalization和L1,L2 regulation

被刻印的时光 ゝ 提交于 2019-11-30 00:09:34
L2 Normalization 第二种Normalization对于每个样本缩放到单位范数(每个样本的范数为1),主要有L1-normalization(L1范数)、L2-normalization(L2范数)等 Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(比如l1-norm,l2-norm)等于1。 p-范式的计算公式: ∣ ∣ X ∣ ∣ p = ( ( x 1 ) p + ( x 2 ) p + . . . + ( x n ) p ) 1 / p ||X||_p=((x_1)^p+(x_2)^p+...+(x_n)^p)^{1/p} ∣ ∣ X ∣ ∣ p ​ = ( ( x 1 ​ ) p + ( x 2 ​ ) p + . . . + ( x n ​ ) p ) 1 / p tensorflow中实现这一方法的函数如下: tf . nn . l2_normalize ( x , dim , epsilon = 1e - 12 , name = None ) 上式: x为输入的向量; dim为l2范化的维数,dim取值为0或0或1或[0,1]; epsilon的范化的最小值边界; 下面看个例子: #-*-coding:utf-8-*- import tensorflow as

【多项式回归】多项式回归正则项分析

試著忘記壹切 提交于 2019-11-29 22:22:44
Topic: 关于多项式正则化问题 Description: 对历届奥运会男子自由泳100米取胜时间数据进行拟合 Environment: Win 10 + matlab 2015 Date: 2018.10.18-19 by hw_Chen (需要程序和数据集的朋友可以私聊Q:1621673079,并备注:CSDN + 程序) 1.不对数据做预处理   先观察数据集分布,大约在1895年时,出现了一个离群点(由于其他数据点均满足一定的线性关系,并且大致在直线附近,如图1),同时数据集中存在部分数据的缺失,如1890年等。为了尽可能多的拟合数据点(当然这样极可能造成很大的过拟合),暂时不对数据点做任何预处理,包括不进行舍弃离群点和对样本缺失值的补充。选择六次多项式归(虽然这并不是很符合实际,但在这里主要以多尝试不同阶次为主,作为平常练习)来对样本点进行拟合,图1由程序LineRegression.m画出,图2是采用多项式回归,分别是一元线性回归、二次多项式回归、三次多项式回归、六次多项式回归,图3是分别采用标准六次多项式回归和正则六次多项式。其中红色线为标准多项式回归,蓝色线为标准多项式回归。   观察图2曲线,由程序PloynomialRegression.m画出。各多项式曲线与一元线性回归曲线相比,在训练集上效果相仿,但在测试集上,一元线性回归的效果明显比多项式回归好

多任务学习Multi-task-learning MTL

Deadly 提交于 2019-11-29 05:45:27
https://blog.csdn.net/chanbo8205/article/details/84170813 多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理解为定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升target domain的学习效果(performance)。 多任务学习(Multi-task learning):由于我们的关注点集中在单个任务上,我们忽略了可能帮助优化度量指标的其它信息。具体来说,这些信息来自相关任务的训练信号。通过共享相关任务之间的表征,可以使我们的模型更好地概括原始任务。这种方法被称为多任务学习(MTL)。其也是一种归纳迁移机制,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力,多任务学习通过使用共享表示并行训练多个任务来完成这一目标。归纳迁移是一种专注于将解决一个问题的知识应用到相关的问题的方法,从而提高学习的效率。比如,学习行走时掌握的能力可以帮助学会跑,学习识别椅子的知识可以用到识别桌子的学习,我们可以在相关的学习任务之间迁移通用的知识。此外,由于使用共享表示,多个任务同时进行预测时,减少了数据来源的数量以及整体模型参数的规模,使预测更加高效。因此

提示与不变性

試著忘記壹切 提交于 2019-11-29 01:33:10
提示与不变性 提示是在你看到数据之前就知道的关于目标函数的信息 例如信用审核中,工资是和信用额度呈正比 又例如视觉处理中旋转不改变目标函数的输出 有以下数据(红色代表-1,蓝色代表+1) 你使用如下两个假设集去拟合数据 \(H_+=\{h|h(x)=sign(wx+w_0);w\ge0\}\) \(H_-=\{h|h(x)=sign(wx+w_0);w<0\}\) 无论你怎么拟合, \(H_+\) 很轻松就可以使得 \(E_{in}\approx0\) ,而 \(H_-\) 最多使得 \(E_{in}\approx\frac{1}{2}\) 假如你看到数据之前知道数据的某些信息,就可以收缩假设集(就像这里使用 \(H_+\) 而不关心 \(H_-\) ),这样减少假设集大小从而提高泛化能力 提示类型 提示类型 描述 对称与非对称性 \(f(\mathtt{x})=f(-\mathtt{x}) orf(\mathtt{x})=-f(-\mathtt{x})\) 旋转不变性 \(f(\mathtt{x})\) 依赖于$ 广义不变性(平移,旋转,缩放) \(f(\mathtt{x})=f(\Phi(\mathtt{x}))\) 单调性 \(f(\mathtt{x}+\Delta{\mathtt{x}})>f(\mathtt{x})\) 凸性 \(f(\eta{\mathtt{x}}+(1

xgboost与gdbt的不同和优化

夙愿已清 提交于 2019-11-29 00:32:38
XGBoost 是GBDT算法的一种变种,是一种常用的有监督集成学习算法;是一种 伸缩性强、便捷的可并行构建模型的Gradient Boosting算法 Xgboost和GBDT不同之处 xgboost在目标函数中显示的加上了正则化项,基学习器为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 支持并行化,这是XGBoost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。 xgboost算法的步骤和GBDT基本相同,都是首先初始化为一个常数,GBDT是根据一阶导数gi,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。 XGBoost的其它特性 列采样(column subsampling):借鉴随机森林的做法,支持列抽样,不仅可以降低过 拟合,还可以减少计算量; 支持对缺失值的自动处理。对于特征的值有缺失的样本,XGBoost可以自动学习分裂方 向;

权重衰减(weight decay)与学习率衰减(learning rate decay)

徘徊边缘 提交于 2019-11-29 00:24:14
本文链接:https://blog.csdn.net/program_developer/article/details/80867468 “微信公众号” 1. 权重衰减(weight decay) L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。 1.1 L2正则化与权重衰减系数 L2正则化就是在代价函数后面再加上一个正则化项: 其中C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2 1/211经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整为1。系数λ就是权重衰减系数。 1.2 为什么可以对权重进行衰减 我们对加入L2正则化后的代价函数进行推导,先求导: 可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响: 在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为1-ηλ/n,因为η、λ、n都是正的,所以1-ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。 另外,需要提一下,对于基于mini-batch的随机梯度下降