简化逻辑回归代价函数
因为y不是1就是0,所以可以想出一个更简单的方法来写这个损失函数,下面的一行公式等价于上面这个复杂的公式
代价函数J是平均损失,是包含m个样本的训练集的平均损失
把负号移到外面,就会得到新的表达式,这就是代价函数,使用这样的代价函数训练逻辑回归,这种代价函数具有凸函数的优点
实现梯度下降
为了拟合逻辑回归模型的参数,我们要找到w和b的值,使代价函数J(w,b)最小,使用梯度下降法去实现
使用梯度下降法最小化代价函数,xij是第i个训练样本的特征j,上图的式子就是逻辑回归的梯度下降
虽然与线性回归的梯度下降方程一样,但函数f(x)的定义变了,所以是不同的算法
使用向量化的逻辑回归,使梯度下降的速度更快
线性回归有特征缩放,将所有特征值缩放到相似的值的范围,比如在-1和1之间,使梯度下降更快的收敛,采用相同的方法对不同的特征进行缩放,使其具有相似的值的范围,也可以加快逻辑回归的梯度下降
过拟合问题
线性回归预测房子例子,其中预测价格是关于房子大小的函数,
数据集中,输入特征x是房子大小,y用来预测房价,我们可以用线性函数来拟合这些数据
蓝线是训练出来的模型,不过预测的不好,因为房子的价格随着房子大小的增加,逐渐趋于平稳,该算法不能很好的拟合训练数据,这就是模型对训练数据的拟合不足(欠拟合)(高偏差)
第二个图是插入了一个二次函数,有两个特征x和x2,当拟合参数w1和w2时,就可以得到更好的拟合了数据的曲线
第3个图加入了四阶多项式,有了这个四次多项式,我们就可以精确的拟合出通过所有5个训练例子的曲线。一方面,这似乎能很好的拟合训练数据,因为它通过了所有的训练数据,事实上,可以选择参数使代价函数等于0,因为5个训练样本的误差都是0,但是这是一条曲折的线,很多预测将不准确,这不是一个很好的预测房价的模型,这个模型有过拟合(高方差)问题,因为它和训练集拟合的很好,而对于其他要预测数据并不好,该模型不具有泛化到新样本的能力
x1使肿瘤大小,x2是患者年龄,试图区分肿瘤是恶性还是良性
第1个图,数据不太吻合这是欠拟合(高偏差)的例子
第3个图就是过拟合的例子
解决过拟合
假设你拟合了一个模型,它的方差很大,就是过拟合
解决这个问题的一种方法是收集更多的训练数据,有了更大的训练集后,算法就会拟合出一个不那么摇摆不定的函数
解决过拟合的第二个方法,观察是否可以使用更少的特征
如果有很多上图的特征,但是没有足够的训练数据,那么学习算法可能会过拟合训练集
现在我们只挑选最有用的特征,组成一个集合,过拟合就不会那么严重了
选择合适的特征集有时被称为特征选择,选择出你认为与预测价格最相关的,不过这有个缺点,因为只选用特征的一部分,那么其他关于房子的信息就会被算法丢弃
减少过拟合的第3种方法,叫做正则化
如果想要消除某些特征,比如不想要特征x4了,那就相当于把这个参数设为0
正则化做的是尽可能让算法缩小参数的值,而不是要求一定要把参数变成0
事实证明,即使拟合右图中的像这样的高次多项式,只要让算法使用更小的参数值w1,w2,w3,w4,最终得到的曲线也会很好的拟合数据
正则化的作用是,让你保留所有的特征,但防止特征权重过大,这有时会导致过拟合
我们通常只需要减小参数w1~wn的大小,对参数b正不正则化没有太大差别
3种解决过拟合的方法:
1:收集更多的数据
2:选择使用特征子集
3:利用正则化减小参数的大小
正则化
假设你有一种方法使得参数w3、w4非常小,比如接近于0
假设最小化不是这个函数(这是线性回归的代价函数),而是修改后的代价函数,给它加上1000w23+1000w24,修改后的代价函数会在w3和w4很大时惩罚这个模型
当最小化这个函数时,最终得到w3、w4的值都会接近于0,此时有效的消除了特征x3和x4的影响,如果这样做,我们最终会得到一个更接近二次函数的数据,其中也有x3和x4小小的贡献
此想法是,参数值越小,模型可能越简单,或许是因为一个模型的特征变少了,那它拟合的可能性也变小了
更普遍的实现正则化的方式是,我们有很多特征,并不清楚哪个重要,哪个不重要, 所以正则化实现的方式通常是惩罚所有的特征,或者更准确的说,惩罚所有的wj的参数
假设你有100个w和1个b,但是不知道哪个参数是重要的,索性所有参数都缩小点
λ是正则化参数,用同样的方式缩放这两项,我们选择λ的值就更容易了,即使你的训练集规模变大,此时m的值也变大,λ仍然可以用
b惩不惩罚都可以,也可以乘λ/2m,但这在实践中产生的影响很小
在这个修改后的代价函数中,要最小化的代价函数由第一项(均方误差代价)和新加进来的第二项(正则化)项组成
这个新的代价函数权衡了两个目标,最小化第一项,可以让(预测值-真实值)2尽可能小,从而算法能更好的拟合数据,最小化第二项wj,可以减小过拟合的风险
选择的λ值体现了相对重要性或相对权衡,以线性模型为例
如果λ设为0,该项就消失了,拟合曲线就变得复杂,发生了过拟合
如果λ很大,此时正则化项加上了很大的权重,算法会选择让w1,w2,w3,w4的值趋近于0,此时f(x)=b,水平直线,发生了欠拟合
用于线性回归的正则方法
上图中是提出的正则线性回归的代价函数,第一项是平方误差代价函数,第二项是正则化项,其中λ是正则化参数,我们需要找到使得正则化代价函数最小化的参数w和b,之前用梯度下降法计算代价函数(没有后面的项),根据公式重复更新参数wj(j从1到n)和参数b
事实上,正则化线性回归的更新步骤看起来与之相同,不过代价函数的定义有点不同
为了实现正则化线性回归的梯度下降,也需要进行同步更新
正则化每次迭代中所做的就是,将w乘上一个略小于1的数,这使得wj的值变小,这就是正则化的原理
用于逻辑回归的正则方法
如果用高阶多项式特征来拟合,逻辑回归很容易过拟合,z是个高阶多项式,用于传到sigmoid函数中计算f,最终会得到一个复杂的过拟合训练集的决策边界
逻辑回归的正则化函数,需要在后面加上一项,如果这样做,那么即使你拟合的是一个有很多参数的高阶多项式, 仍然能得到一个比较合理的决策边界
为了实现梯度,将wj和b同时进行更新,与正则化线性回归的方程相同,不过f的定义不再是线性函数,而是逻辑回归函数,与之类似,我们只正则化参数wj,而不是参数b