机器学习入门之 logistic、Softmax 回归

逻辑回归本质是分类问题,而且是二分类问题,不属于回归,但是为什么又叫回归呢。我们可以这样理解,逻辑回归就是用回归的办法来做分类。它是在线性回归的基础上,通过Sigmoid函数进行了非线性转换,从而具有更强的拟合能力

Sigmoid函数

Sigmoid函数具体的计算公式如下

sigmoid函数的因变量x取值范围是-∞到+∞,(-∞,+∞),但是sigmoid函数的值域是(0, 1)。

下面我们用通过spyder用python语言把logistic曲线画出来,如下所示。

# -*- coding: utf-8 -*-
"""
@author: tom
"""
 
import numpy
import math
import matplotlib.pyplot as plt
 
def sigmoid(x):
    a = []
    for item in x:
        a.append(1.0/(1.0 + math.exp(-item)))
    return a
    
x = numpy.arange(-10, 10, 0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.show()

å¨è¿éæå¥å¾çæè¿°

当x为0时,Sigmoid函数值为0.5。随着x的增大,对应的Sigmoid值将逼近于1;而随着x的减小,Sigmoid值将逼近于0。两种坐标尺度下的Sigmoid函数图。上图的横坐标为-5到5,这时的曲线变化较为平滑;下图横坐标的尺度足够大,可以看到,在x = 0点处Sigmoid函数看起来很像阶跃函数,如果横坐标刻度足够大(上图中的下图),Sigmoid函数看起来很像一个阶跃函数。

sigmoid函数的性质

  • 1)sigmoid函数是一个阀值函数,不管x取什么值,对应的sigmoid函数值总是0<sigmoid(x)<1。
  • 2)sigmoid函数严格单调递增,而且其反函数也单调递增
  • 3)sigmoid函数连续
  • 4)sigmoid函数光滑
  • 5)sigmoid函数关于点(0, 0.5)对称
  • 6)sigmoid函数的导数是以它本身为因变量的函数,即f(x)' = F(f(x))

对于分类问题,需要找到一个单调可微函数将真实值与广义线性回归模型的预测值联系起来,这个函数就是Logistic函数,或者称Sigmoid函数。(单位阶跃函数不连续,且瞬间跳跃的过程很难处理)

原因参考https://zhuanlan.zhihu.com/p/59137998

Logistic/Sigmoid函数是一个常见的S型函数,适合于提供概率的估计以及依据这些估计的二进制响应;由于其单调递增、反函数单调递增、任意阶可导等性质,且可以将变量映射到(0, 1)之间,在逻辑回归、神经网络中有着广泛的应用。
 

sigmoid函数求导f(x')=F(f(x))

这是sigmoid函数的一个重要性质。sigmoid函数的导数是以他自身为因变量的函数,下面进行推导~

Logistic回归分类器

为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类,小于0.5即被归入0类。所以,Logistic回归也可以被看成是一种概率估计。

所以说,Logistic回归分类器可以看成线性回归与sigmoid的混合函数,是一个二分类的模型(这里是取的0和1,有的算法是+1和-1)

在用于分类时,实际上是找一个阈值,大于阈值的属于1类别,小于的属于0类别。(阈值是可根据具体情况进行相应变动的)

Logistic回归及似然函数

我们假设

把两个式子结合起来

运用极大似然估计得到似然函数

累乘不好求,我们可以求其对数似然函数

最值的问题,我们求导(第二行到第三行使用了sigmoid函数求导)

不难发现,和梯度下降的公式极其类似

批量梯度下降法BGD

随机梯度下降法SGD

可以发现逻辑回归与线性回归梯度下降求解的形式类似,唯一的区别在于假设函数hθ(x)不同,线性回归假设函数为θTx,逻辑回归假设函数为Sigmoid函数。

线性回归模型服从正态分布,逻辑回归模型服从二项分布(Bernoulli分布),因此逻辑回归不能应用最小二乘法作为目标/损失函数,所以用梯度下降法。

极大似然估计与Logistic回归损失函数

我们要让对数似然函数最大,也就是他的相反数 -l(\theta )最小。而 -l(\theta ) 最小化,则可以看成损失函数,求其最小化:

loss = -l(\theta )

似然函数:

logistic函数

带入得

这个结果就是交叉熵损失函数。

总结

就一句话:通过以上过程,会发现逻辑回归的求解,跟线性回归的求解基本相同。

多分类问题(Multi-class classification)

        对于分类多于2个的问题, 可以将其看做二分类问题,即以其中一个分类作为一类,剩下的其他分类作为另一类,多分类问题的假设函数为 

one-vs-all/rest 问题解决方法:

                训练一个逻辑回归分类器,预测 i 类别 y=i 的概率;

                对一个新的输入值x,为了作出类别预测,分别在k个分类器运行输入值,选择h最大的类别 

Softmax回归模型  

Softmax回归是logistic回归的一般化模型,适用于k(k>2)分类的问题,第k类的参数为向量θk,组成的二维矩阵为\theta _{k*n}

Softmax函数的本质就是将一个k维的任意实数向量映射成为另一个k维的实数向量,其中向量中的每个元素的取值都介于(0,1)之间。

Softmax回归的概率函数为:

 推导和Logistic回归类似,只是将分类的个数从2扩展到k的情形。Softmax算法的损失函数:

梯度下降法

总结

  • 线性回归模型一般用于回归问题,逻辑回归和Softmax回归模型一般用于分类问题;
  • 求θ的主要方式是梯度下降算法,该算法是参数优化的重要手段,主要使用SGD或MBGD;
  • 逻辑回归/Softmax回归模型是实际问题中解决分类问题的最重要的方法;
  • 广义线性模型对样本的要求不必一定要服从正态分布,只要服从指数分布簇(二项分布、Poisson分布、Bernoulli分布、指数分布等)即可;广义线性模型的自变量可以是连续的也可以是离散的。
     
发布了33 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fenglepeng/article/details/104507284