最近开始学习机器学习的相关理论知识,准备把自己的整个学习心得整理汇集成博客,一来可以督促自己,二来可以整理思路,对问题有一个更加透彻的理解,三来也可以放在网上和大家分享讨论,促进交流。

由于这次的学习过程主要是以数学理论以及对应的编程为主,因此,整个过程中,我将以Kaggle上的Titanic上的数据作为练习背景。

今天以logistic regression为主,主要包括理论部分以及对应的编程实验结果。

理论部分

logistic regression主要应用于二值分类问题,首先我们需要引入伯努利分布的概念。

  • 伯努利分布又称两点分布或者是0-1分布
  • 伯努利实验是只有两种可能结果的单次随机实验  
  • 进行一次伯努利实验,成功(y=1)的概率为p, 失败(y=0)的概率为1-p,则称随机变量y服从伯努利分布
  • 伯努利分布的离散概率分布函数可以表达为
  • 这里可以参考一下http://blog.csdn.net/michael_r_chang/article/details/39188321,有关于伯努利分布,二项分布,多项分布的基本介绍。

有了上述概念之后,我们可以引入logistic regression的基本概念。logistic regression认为,在我们对两类事物进行分类的时候(如y=1和y=0),若出现特征x,则

上式即所谓的logistic分布或者是sigmoid分布,其一般通式为

注意

logtistic回归的任务是给定一系列的训练样本集合,并假设y=1发生的概率可以由logistic分布来进行表达,求出模型系数以便进行将来的预测。

上述问题可以通过极大似然估计来进行求解,即

经过负对数变换之后,即可最小化如下公式

利用最速下降算法,在第k次迭代处的梯度可以表示为

因此系数可以进行如下更新:

实验部分:

  • 如果每次只随机选择其中的某一个样本计算梯度并进行模型更新,就是所谓的随机梯度下降算法(stochastic gradient descent)
  • 如果每次选择多个样本同时计算梯度并进行模型更新,就是所谓的mini-batch算法
  • 如果每次选择所有的样本计算梯度并进行模型更新,就是所谓的batch descent算法

实验中我们将研究batch数目(即将所有的样本均分成多少份进行梯度计算)以及迭代步长对速度的影响

如上图所示,迭代步长和batch数目对收敛速度都有很大的影响,一般来说,迭代步长越大,batch数目越多,速度就越快,但是当迭代步长和batch数目同时过大的时候,算法会出现不稳定的情况,如上图的蓝实线所示。

关于迭代步长的影响很好理解,因为最速下降中,每一次沿着梯度方向走的太短,则需要很多步才可以对模型产生足够的更新,反之,如果每一次沿着梯度方向走得太远,则可能超过了当前所能够走的最大距离,目标函数不一定变小。

关于batch数目的影响,总的来说,是希望利用每一个小样本子集所计算出来的梯度和利用全部样本的所计算出来的梯度方向近似,如此便可以利用相对小的计算量达到足够准确的梯度方向,从而减少计算时间。但是如果batch数目过多,则每个子集中的样本过少,无法进行有效近似,也就是近似梯度方向不够准确和稳定,从而出现上述的不稳定现象。

可以考虑在迭代过程中不断地减小迭代步长和batch数目来进行综合,确保开始的快速减小和后来的算法稳定性。

注意:在利用梯度方向进行更新的时候,最好对计算出来的梯度进行归一化,便于选择迭代步长。

最新文章

  1. Lenovo K29 笔记本经常没声音解决方案Hotkey[gevu18ww].exe
  2. VS轻松开发Node.js应用
  3. C#更改控制台文本颜色
  4. HDU 5039 Hilarity
  5. javascript 递归之阶乘
  6. RadHat搭建内网YUM源server
  7. Windows下ANSI、Unicode、UTF8字符编码转换
  8. java学习一目了然——异常必知
  9. 小编辑 Java 中十进制和十六进制的相互转换
  10. [Usaco2008 Jan]Cow Contest奶牛的比赛[神奇的FLOYD]
  11. Dubbo源码学习--集群负载均衡算法的实现
  12. Photoshop颜色出现比较大的偏差,偏色严重,显示器配置文件2351似乎有问题
  13. jquery常用函数
  14. 解决linux删除文件后空间没有释放问题
  15. 限定项目的 Node.js 版本
  16. 在VS2015中用C++编写可被C#调用的DLL
  17. react整理一二(初入React世界)
  18. C# Note19: Windows安装包制作实践
  19. 身份证号码 正则表达式 jquery
  20. mysql 5.7.3.0-m13安装教程

热门文章

  1. 20135327--linux内核分析 实践二
  2. IT行业的创新的读后感
  3. 后端返回值以json的格式返回,前端以json格式接收
  4. beanutils的使用
  5. SpringBoot初识
  6. Maven入门指南④:仓库
  7. 开源通用爬虫框架YayCrawler-框架的运行机制
  8. Java并发—synchronized关键字
  9. 3.27PSP及体会
  10. 通过反射来读取XML格式的ControlTemplate