zoukankan      html  css  js  c++  java
  • 机器学习笔记之逻辑回归原理

    1.从线性回归到逻辑回归

      线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数(θ),满足(Y=Xθ)。此时我们的Y是连续的,所以是回归模型。
    如果我们想要Y是离散的话, 一个可以想到的办法是,我们对于这个Y再做一次函数转换,变为(g(Y))。如果我们令(g(Y))的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。

    2.二元逻辑回归的模型

       逻辑回归的思想就是 在线性回归上再做一次函数转换,即上一节我们提到对线性回归的结果做一个在函数(g)上的转换,可以变化为逻辑回归。这个函数(g)在逻辑回归中我们一般取为sigmoid函数,形式如下:

    [g(z)=frac{1}{1+e^{-z}} ]

      图形如图:

     它有一个非常好的性质,即当z趋于正无穷时,$g(z)$趋于1,而当$z$趋于负无穷时,$g(z)$趋于0,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质: $$g^{`}(z)=g(z)(1-g(z))$$

    如果我们令(g(z))中的(z)为:(z=xθ),这样就得到了二元逻辑回归模型的一般形式:

    [h_{ heta}(x)=frac{1}{1+e^{- heta x}} ]

      其中(x)为样本输入,(hθ(x))为模型输出,可以理解为某一分类的概率大小。而(θ)为分类模型的要求出的模型参数。
    我们假设,如果(hθ(x)>0.5) ,即(xθ>0), 则(y)为1。如果(hθ(x)<0.5),即(xθ<0), 则(y)为0。 (y=0.5)是临界情况,此时(xθ=0)为, 从逻辑回归模型本身无法确定分类。

      ——(hθ(x))的值越小,而分类为0的的概率越高,反之,值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。

    3.参数估计

    模型的数学形式确定后,剩下就是如何去求解模型中的参数。
    由于在线性回归模型中,输出(y)值是连续的,因此可以用差值的平方等表示损失函数。但是在逻辑回归中,输出(y)值是离散的,所以损失函数用极大似然法估计

    • 最大化似然函数 == 最小化损失函数
    • 损失函数是似然函数求对数再取反

    我们知道,按照二元逻辑回归的定义,假设我们的样本输出是0或1两类,那么我们有:

    [P(y=1|x, heta)=h_{ heta}(x) ]

    [P(y=0|x, heta)=1-h_{ heta}(x) ]

    把这两个式子写成一个式子,就是:

    [P(y|x, heta)=h_{ heta}(x)^y(1-h_{ heta}(x))^{1-y} ]

    其中y的取值只能是0或者1 ,用矩阵法表示,即为:

    [P(Y|X, heta)=h_{ heta}(X)^Y(E-h_{ heta}(x))^{1-Y} ]

    其中E为单位矩阵。
    得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数( heta).
    为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数(J( heta)).
    似然函数的代数表达式为:

    [J( heta)= -lnL( heta) = -{sum_{i=1}^m(y^{(i)}log(h_{ heta}(x^{(i)}))+(1-y^{(i)})log(1-h_{ heta}(x^{(i)})))} ]

    损失函数用矩阵法表达更加简洁:

    [J( heta)=- Y.logh_{ heta}(X)-(E-Y).log(E-h_{ heta}(X)) ]

    这样,问题就转换成目标为最小化损失函数的优化问题,求解参数

    4. 参数求解方法

    对于求解二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。这里用梯度下降法中θ每次迭代的公式。(用矩阵的写法)
    对于(J( heta)=-Y.logh_{ heta}(X)-(1-Y).log(E-h_{ heta}(X))),我们用(J( heta))对向量( heta)向量求导得:

    [egin{align}frac{partial}{partial heta}J( heta)=&-YX^{T}frac{1}{h_{ heta}(X)}h_{ heta}(X)(1-h_{ heta}(X))\\ &+(E-Y)X^Tfrac{1}{1-h_{ heta}(X)}h_{ heta}(X)(1-h_{ heta}(X))end{align} ]

    这一步用到了矩阵求导的链式法则,和下面三个矩阵的求导公式:
    (frac{partial}{partial X}logX=frac{1}{X})
    (frac{partial}{partial z}g(z)=g(z)(1-g(z))) ((g(z))为sigmoid函数)
    (frac{partial}{partial heta}X heta= X^T(h_{ heta}(X)-Y))
    从而在梯度下降法中每一步向量 ( heta) 的迭代公式如下:

    [ heta = heta -alpha X^T(h_{ heta}(X)-Y) ]

    其中, (alpha) 为梯度下降法的步长

    实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解至少一种优化方法还是有必要的。

    5. 二元逻辑回归的正则化

    逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化 。
    二元逻辑回归的L1正则化损失函数表达式如下:

    [J( heta)=-Y.logh_{ heta}(X)-(E-Y).log(1-h_{ heta}(X))+alpha||{ heta}||_1 ]

    其中(parallel{ heta}parallel_1) 为L1范数

    [J( heta)=-Y.logh_{ heta}(X)-(E-Y).log(1-h_{ heta}(X))+alphaparallel{ heta}parallel_2^2 ]

    其中(parallel{ heta}parallel_2^2) 为L2范数
    两种正则化的特点
    L1正则化的模型建叫做Lasso回归,L1会趋向于产生少量的特征,而其他的特征都是0。Lasso在特征选择时候非常有用.
    L2正则化的模型叫做Ridge回归(岭回归),L2会选择更多的特征,这些特征都会接近于0。这就只是一种规则化,防止过拟合。

  • 相关阅读:
    代码发布概述图
    gitPython模块
    django重点面试题
    paramiko模块
    Spring Security 注解
    JsonIgnoreProperties JsonIgnore导致RequestBody无法接受参数值
    Http和Rpc区别
    ExceptionHandler(思路参考CustomException)
    Linux安装Nginx
    秒杀扣除库存方案
  • 原文地址:https://www.cnblogs.com/laiyaling/p/10655713.html
Copyright © 2011-2022 走看看