逻辑回归和正规化

逻辑回归(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项)

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

        

  

posted @ 2018-05-09 11:19  jude_python  阅读(349)  评论(0编辑  收藏  举报