week11 逻辑回归
监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。多么简约的哲学啊!因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。

其中,第一项L(yi,f(xi;w)) 衡量我们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi之前的误差。因为我们的模型是要拟合我们的训练样本的嘛,所以我们要求这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据。但正如上面说言,我们不仅要保证训练误差最小,我们更希望我们的模型测试误差小,所以我们需要加上第二项,也就是对参数w的规则化函数Ω(w)去约束我们的模型尽量的简单。
对于第一项Loss函数,如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是牛逼的 Boosting了;如果是log-Loss,那就是Logistic Regression了
(3)L2正则化为什么可以解决过拟合问题?
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。
为什么L2正则化可以获得很小的参数呢?
以线性回归中的梯度下降法为例。假设要求的参数为θ,hθ(x)是我们的假设函数,那么线性回归的代价函数如下:

那么在梯度下降中,最终用于迭代计算参数θ的公式为:

其中α是learning rate。上式是没有添加L2正则化项的迭代公式,如果在原始代价函数之后添加L2正则化,则迭代公式会变成下面的样子:

其中λ就是正则化参数。从上式可以看到,与未添加L2正则化的迭代公式相比,每一次迭代,θj都要先乘以一个小于1的因子,从而使得θj不断减小,因此总得来看,θ是不断减小的。

参考博客:机器学习中的L1和L2正则化项 - Microstrong - CSDN博客 https://blog.csdn.net/program_developer/article/details/79436657
机器学习中的范数规则化之(一)L0、L1与L2范数 - zouxy09的专栏 - CSDN博客 https://blog.csdn.net/zouxy09/article/details/24971995
梯度下降
哪个方向下降的最快?


python3通过SMTP来发送邮件 只需获取授权码即可



问题来啦,是不是有些眼熟呢?



思路也很简单:在给定模型的情况下,只要确定x[j]对应的权重θ[j],代入给定的模型中就可以进行估计。因此只要寻找使误差函数J(θ)最小(其梯度的L2范数足够小)的参数θ。

绿色为A类点,y为0;红色为B类点,y为1
从下至上四条回归直线表示y为1的概率依次为0.15 0.3 0.5 0.75
选取步长为0.003,误差边界为0.001,最大迭代次数为20000,依概率0.5收敛,循环10次,得到θ和相应的正确率,观察θ取值与正确率的关系


当θ=[-7.8, -11.7, 26.3]时,验证集达到最高的正确率90%
经多次拟合,选取合适的θ,验证集的正确率大多能达到80%。在正确率相近的情况下,该如何判断θ的好坏?有没有别的指标可以评判θ的影响?