美文网首页机器学习
逻辑回归的算法理解及算法实现

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

作者: 在做算法的巨巨 | 来源:发表于2018-08-03 21:14 被阅读0次

    开门见山


    基本印象:

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


    一般步骤:

    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,因此得到的最优解便是全局最优解。

    相关文章

      网友评论

        本文标题:逻辑回归的算法理解及算法实现

        本文链接:https://www.haomeiwen.com/subject/gbrcvftx.html