逻辑回归的算法理解及算法实现

开门见山


基本印象:

逻辑回归的作用:做二分类、多分类的问题
逻辑回归类似于人类的一个神经元
多个逻辑回归的叠加就是传说中的神经网络


一般步骤:

  1. 收集数据的形式没有要求
  2. 数据预处理:将文本变量转化为虚拟变量,将空值剔除或特殊处理
  3. 模型搭建:对数据进行分析,如果自变量是二维变量,散点图可以查看是该组数据是线性分类问题还是非线性分类问题
    决策边界(Decision Boundary)
    决策边界,也成为决策面,用于N维空间,将不同类别样本分开的平面或曲面。(其实类似与SVM的分隔超平面)
    • 如果自变量是一维的,其实就是最简单的逻辑函数sigmoid


      横轴代表自变量,纵轴代表因变量
    • 如果自变量是二维的,那还可以实现可视化帮助我们。
      比如说,

      红色区域与蓝色区域分别是二分类的结果,x1,x2分别是自变量

      所以我们发现决策边界是可以通过一条直线进行分隔开的,我们把决策函数写成线性方程。类似\theta_0+\theta_1*x_1+\theta_2*x_2=0

      再比如说,

      红色marker和蓝色marker的分布

      在这里我们发现分类并非线性直线可以解决,所以引入Polynomial,把决策函数写为\theta_0+\theta_1*x_1+\theta_2*x_2 +\theta_3*x_1^2+\theta_4*x_2^2=0
      当然可以更复杂,比如把最高次幂调整为三次,四次等等。但是代价就是计算量也会增加。这也是我们需要trade-off的东西。

    • 多维问题的求解思路:
      J(\theta)求偏导,建立\theta矩阵,建立x的矩阵。利用梯度下降法解决最优化问题,求解\theta

  4. 模型检验
    涉及到两个概念:
    1). 准确率(Accuracy),精确率(Precision),召回率(Recall),F1值
    准确率(Accuracy)的定义:分类器分类正确的样本数与总样本数之比。缺点:如果正负样本不平衡,这种计算方式失去有效性。

    精确率(Precision)的定义:P=\frac{TP}{TP+FP}
    召回率(Recall)的定义:R=\frac{TP}{TP+FN}
    F1值:精确率和召回率的调和均值。\frac{2PR}{P+R}
    F1值越大,模型预测能力越理想。
    2). 利用正交验证法对数据的trainset进行K折交叉验证。将数据分为K份,取K-1作为训练数据,剩下的作为测试数据,重复K次,这样最终得到K个训练结果,计算正确率,然后取平均。python在这一部分有现成的包cross_val_score。可以直接设定K从而得到最终结果。

逻辑回归的理论推导

  • cost function的确定
    正常梯度回归中,J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2
    h_\theta=g(\theta^Tx)
    在这里我们可以发现,
    when y==1, (h_\theta(x^{(i)})-y^{(i)})偏小,
    when y==0,(h_\theta(x^{(i)})-y^{(i)})偏大。所以导致J(\theta)随着\theta有很多局部最优解。如下图,
    Non-convex

    如果按照梯度下降法强行解,得到的解只会大概率是局部最优解,而不是全局最优解。
    因此,我们对J_\theta进行优化,我们引入log函数。
    J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_\theta(x^{(i)},y^{(i)})

    最后得到,

    新的Cost函数:
    Cost=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))
    然后,新的J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(ylog(h_\theta(x))+(1-y)log(1-h_\theta(x)))
    对其求偏导,得,\frac{\partial{J(\theta)}}{\partial{\theta}}=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x)-y)x^i
    推到过程如下:

    然后,
    \theta_j=\theta_j-\alpha\frac{\partial}{\partial{\theta_j}}J(\theta)
    这就回归到之前写的梯度下降法当中,因为我们确保了我们的cost function是convex,因此得到的最优解便是全局最优解。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 10,140评论 0 5
  • 作者按:简书的文艺气息还是比较浓的。我们来捣捣乱,搞一篇全部数学公式的文章,用实际行动推动简书加入 MathJax...
    kamidox阅读 5,193评论 8 6
  • 我又来发公式了。用行动推动简书支持 MathJax。万一你真想看这篇文章,请移步 逻辑回归算法获得完整地阅读体验。...
    kamidox阅读 8,804评论 9 23
  • ## 第三周 Logistic Regression逻辑回归 ### 1 Classification and R...
    nightSin阅读 2,372评论 0 0
  • 几天前,我重新翻阅了2017年5月写的一篇关于小程序的文章,文章虽青涩但还算精确,文中阐述了三个观点: 如何决定小...
    极乐叔阅读 1,475评论 0 1