1.参考资料

这次不同的是,我要先列举几个自己参考的文献,博客等。真的是从里面受益匪浅,这也是我主要的参考资料。如果有需要的童鞋,可以先看它们。

1).http://blog.csdn.net/zouxy09/article/details/24971995/(讲L0,L1,L2范数讲的不错哦)

2).机器学习实战(Machine Learning in Action),Peter Harrington 著。这里我主要参考的是第五章:Logistic回归及第八章 预测数值型数据:回归

3).李航博士的统计学习方法(这是我必用的啊)

4).逻辑回归的数据推导参考的一点资料:http://blog.csdn.net/Andrewseu/article/details/46742151

5).寒小阳的博客http://blog.csdn.net/han_xiaoyang/article/details/49123419(每次必读,很谦虚的一个老师)

6).Andrew Ng的课程

7)http://blog.csdn.net/abcjennifer/article/details/7716281(浙大的,我崇拜人之一)

8)https://github.com/celestewang1026/LogisticRegression(我写了一个简单的代码,仅供参考,还有很多的问题。以后每个算法我决定都写在博客上,代码都放在github上。对于这么懒的我,可是一项不小的工程啊,^~^)


2.逻辑回归的推导(Logistic Regression ,LR)---数学基础

               最大似然原理:通过m个训练样本估出theta,使似然函数最大。




 3.步骤

     1)寻找h函数(hyothesis)

     2)构造J(损失)函数

     3)求得使J最小的参数 

4.终止条件

     1)设定迭代次数为指定值

     2) 所得模型参数变化很小/允许的范围(设定一个阈值)

5.求解及改进算法

求解:

        具体见上面的手稿

改进:

       判断优化算法优劣的可靠方法是:看其是否收敛。参数是否达到了稳定值,是否还会不断的变换,我们期望得到的参数避免有很大的波动,其能收敛到某个值且收敛速度加快。如何做到呢?

      1)alpha每次迭代的时候要调整

      2)随机选择样本来更新参数,及在改进梯度下降法(随机梯度下降法,mini-batch梯度下降)


或者:除了梯度下降以外,其他的方法


--Conjugate Gradient

--BFGS

--L-BFGS


上述三个方法共同的特点:无需选择学习率alpha;更快。但是更复杂



6.优缺点

优点:

    1)可以得到的不止是简单的分类结果,还可得到其概率,0~1之间,通常取0.5为阈值,大于0.5,取1,为正类;小于0.5,取0,为负类。

    2)模型简单

缺点:

1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。​需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;

2)预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着​log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。


7.应用场景


1)危险元素的检测

2)信用评估







8.L0,L1,L2范数及正则

L0范数:向量中非0元素的个数,L0范数用来规划一个系数矩阵,希望大部分元素为0 ,达到“稀疏”的效果

L1范数:绝对值之和;

L2范数:就是我们平时所说的模;


1)L0范数可以实现稀疏,为什么不使用L0要使用L1呢?

因为L0范数不可微,是一个NP问题(难优化求解),但是L1是L0的最优凸近似,且L1比L0容易优化求解。


总结:L1和L0都可以实现稀疏化,L1因具有比L0更好的优化求解特性而被广泛应用。

稀疏规则化:可实现特征的自动选择,对于没有用的信息的特征,其权重=0

2)L2可以防止过拟合,提升模型的泛化能力!!

欠拟合与过拟合(盗用NG课程的一个图)

http://write.blog.csdn.net/postedit/53121723


Overfitting:if we have too many features,the learned hypothesis may fit the training set very well ,but fail to generalize to new examples(predict prices on new examples)即:模型复杂到我们可以拟合我们所有的训练样本,但是预测新样本时,糟糕的一塌糊涂(模型训练时误差很小,但是测试时误差很大)

what is 模型复杂?-->要学习的参数多,时间复杂度高等

误差(偏差):模型预测值和数据之间的差异

方差:模型之间的差异。随机选取样本,线性模型拟合。同理,对于所得到的各组之间的模型系数,各系数之间的差异大小

如何权衡偏差和方差?

用下面一幅图可以把上面的关系清晰的表现出来,如下所示。



下面解释一下为什么L2可以防止过拟合?





 可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。

       相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。

       因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。


话外:



对于上式,如果当我们的样本X的数目比每个样本的维度还要小的时候,矩阵XTX将会不是满秩的,也就是XTX会变得不可逆,所以w*就没办法直接计算出来了。这时候我们可以加入正则,即上面提到的Lasso和Ridge,就可以直接求逆了。



总结:

L1可以特征选择!!

L2可以防止过拟合!!

END!