zoukankan      html  css  js  c++  java
  • 逻辑回归和正规化

    逻辑回归(logistic regression)

    1.用来解决归类问题(只是由于历史上的原因取了回归的名字)

    2.二分归类(binary classification)

    • 定义:对于输入,输出值不连续,而是两个离散的值,eg:{0,1}
    • 方法:利用线性回归,将大于0.5的输出预测值设为1,小于0.5的输出预测值设为0.(目前不可行,因为归类问题不是线性函数,所以引入S型函数(Sigmoid Function)/逻辑函数(logistic function))
    • Sigmoid Function / logistic function

              

              z>=0时g>=0.5,z<0时g<0.5; z-> -∞,g->0;  z-> +∞,g->1

            

             h(x)为输出值为1的概率:

              

    • 为了得到离散的归类,假设:

            ,所以有:

             

    • 决策边界(decision boundry):将y=0和y=1的区域分开的那条线(对应上面来说就是θ'x=0那个方程) 
    • 代价方程(cost function):

            

            合并上面两个式子:

           

            再向量化表示:

            

             画图是:

                             

    • 梯度下降(gradient decent):

               

             求偏导可得:(和之前线性回归的结果一样)

             

             向量化表示为:

             

    • 比梯度下降更优的求θ的方法:

       Conjugate gradient, BFGS, L-BFGS

            用octave内部的函数库来调用这些方法,步骤:

        1.写出代价函数和它的偏导:
       function [jVal, gradient] = costFunction(theta)
         jVal = [...code to compute J(theta)...];
         gradient = [...code to compute derivative of J(theta)...];
       end
    2.调用fminunc函数,optimset是传给该函数的参数
       options = optimset('GradObj', 'on', 'MaxIter', 100);
       initialTheta = zeros(2,1);
       [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

    3.多类归类(multiclass classification):

    • 结果为多个类别,y={0,1,....n}
    • 这种情况下,可以将问题分为n+1个二分归类问题,选择一个类,将其他所有类看成一个类,利用二分归类,求出每个h(x),再求最大值

            

    正规化(regularization) 

    1.正规化用来解决过拟合问题(overfitting),适用于线性回归和逻辑回归问题。

        延伸:

    • h函数太简单:欠拟合,高偏差(underfitting,high bias)
    • h函数太复杂:过拟合,高方差(overfitting,high variance)
    • 解决过拟合方法有:减少参数(人工进行参数选择或者用特定的参数选择算法)、正规化

    2.正规化后的代价函数:

           (λ是正规化参数)

        演示:https://www.desmos.com/calculator/1hexc8ntqp

        eg:

           h(x)= 

           如果想要减少theta3,theta4参数的影响,代价函数可以写成如下形式:

           

           后面的两项参数乘以很大的数,这样为了得到代价的最小值,后两个参数就得很小,趋近于0,这样h函数中的那两个参数就

           会很小,相当于消去了参数,所以函数就会变得平缓了,从而不会过拟合

    3.正规化线性回归:

    • 梯度下降变为:(多了λ项)

            

             移项也可以写成:

             

             可以看出,和没有正规化相比,只是每次迭代时,theta都变为原来的(1-α*λ/m)<1倍

    • 不迭代的nomal equation为:

                 ( L=(n+1)*(n+1) )

    4.正规化逻辑回归:

    • 代价函数为:(多了λ项)

              (注意没有第0项)

    • 梯度下降:(和线性回归正规化的一样)

            

      

  • 相关阅读:
    Python 去掉文本中空行
    Pandas常用操作方法
    Numpy常用操作方法
    Python获取指定路径下所有文件的绝对路径
    Python获取指定目录下所有子目录、所有文件名
    Pycharm选中代码无法Backspace直接删除
    Redis常用命令(一)
    在eclipse程序中设置的断点上有一个斜杠,正常启动debug不能够跳转到debug页面,怎么解决
    常见的几种网络广告模式
    struts2中拦截器与过滤器的区别
  • 原文地址:https://www.cnblogs.com/judejie/p/9013145.html
Copyright © 2011-2022 走看看