• Logistic回归


     来源:https://www.cnblogs.com/alfred2017/p/6627824.html

        1. logistic回归的基本思想  

      logistic回归是一种分类方法,用于两分类问题。其基本思想为:

      a. 寻找合适的假设函数,即分类函数,用以预测输入数据的判断结果;

      b. 构造代价函数,即损失函数,用以表示预测的输出结果与训练数据的实际类别之间的偏差;

      c. 最小化代价函数,从而获取最优的模型参数。

      2. 逻辑回归的过程

      逻辑函数(sigmoid函数):

      该函数的图像:

      假设函数(分类函数):

            

       判定边界:

       线性边界和非线性边界如下:

           

              图1  线性边界                                               图2  非线性边界

    线性边界的边界形式:

    非线性边界的边界形式可表示为:

      hθ(x)函数的值表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

                             (概率公式)

      代价函数为: 

    其中:

    等价于:

    代入得到代价函数:

      这样构建的 Cost(hθ(x),y)函数的特点是:当实际的 y=1 且 hθ 也为 1 时误差为 0,当 y=1 但 hθ 不为 1 时误差随着 hθ 的变小而变大;当实际的 y=0 且 hθ 也为 0 时代价为 0,当 y=0且hθ 不为 0 时误差随着 hθ 的变大而变大。


      实际上,Cost函数和J(θ)函数是基于最大似然估计推导得到的。

      前面的概率公式可简化为:

      

      对应的似然函数为:

      

      对数似然函数为:

      

      最大似然估计就是要求得使l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。

       前面提到的代价函数即可表示为: 


    梯度下降法求J(θ)的最小值

      使用梯度下降法求J(θ)的最小值,θ的更新过程:

      

    其中:α学习步长。

      求偏导:

      

    更新过程可改写为:

    α为一常量,所以1/m一般将省略,所以最终的θ更新过程为:


      求解过程中用到如下的公式:

      


    梯度下降算法的向量化解法:

       训练数据的矩阵形式表示如下,其中x的每一行为一条训练样本。

      

      参数θ的矩阵形式为:

      

      计算x.θ(点乘)并记为A:

       

      求hθ(x)-y并记为E

      

      g(A)的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。由上式可知hθ(x)-y可以由g(A)-y一次计算求得。

      θ更新过程,当j=0时:

      

      θj同理:

      

      综合起来:

      

      

      

      综上所述,vectorization后θ更新的步骤如下:

      (1)求A=x.θ

      (2)求E=g(A)-y

      (3)求θ:=θ-α.x'.E,x'表示矩阵x的转置。

      也可以综合起来写成:

       

       

      正则化逻辑回归:

      假设函数:

      

      梯度下降法最小化该代价函数:

      

      参考:

      1. andrew ng机器学习视频

      2. http://blog.csdn.net/dongtingzhizi/article/details/15962797

  • 相关阅读:
    gitlab搭建
    .NET Core 跨平台物联网开发:设置委托事件(二)
    .NET Core 跨平台物联网开发:连接阿里云IOT(一)
    Orange Pi 3 GPIO 笔记
    树莓派踩坑备忘录 -- 使用 Linux
    .NET Core / C# 开发 IOT 嵌入式设备的个人见解
    阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台
    跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
    .NET Core 使用 EF 出错的解决方法
    arm 开发板更新 gcc/gcc++ | Debain 更新 gcc,无需编译直接更新 gcc
  • 原文地址:https://www.cnblogs.com/lantingg/p/8534465.html
Copyright © 2020-2023  润新知