逻辑回归(Logistic Regression)(一)

逻辑回归的定义

简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。 注意,这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘。

那么逻辑回归与线性回归是什么关系呢?

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

假设函数(Hypothesis function)

首先我们要先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

  • g(z)= \frac{1}{1+e^{-z}}

其函数曲线如下:



从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要

逻辑回归的假设函数形式如下:

  • h_\theta(x) = g(\theta^T x), g(z)= \frac{1}{1+e^{-z}}

所以:

  • h_\theta(x)= \frac{1}{1+e^{-\theta^Tx}}

其中 x 是我们的输入, \theta 为我们要求取的参数。

一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是:

  • P(y=1|x;\theta) =g(\theta^Tx)= \frac{1}{1+e^{-\theta^Tx}}

这个函数的意思就是在给定 x\theta 的条件下 y=1 的概率。

这里 g(h) 就是我们上面提到的sigmoid函数,与之相对应的决策函数为:

  • y^* = 1, if P(y=1|x)>0.5

选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。

决策边界(Decision Boundary)

决策边界,也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。

注意:决策边界是假设函数的属性,由参数决定,而不是由数据集的特征决定。

这里我们引用Andrew Ng 课程上的两张图来解释这个问题:

  • 线性决策边界



这里决策边界为: -3+x_1+x_2=0

  • 非线性决策边界:


这里决策边界为: -1+x_1^2+x_2^2 = 0

上面两张图很清晰的解释了什么是决策边界,决策边界其实就是一个方程,在逻辑回归中,决策边界由 \theta^Tx=0 定义。

  • P(y=1|x;\theta) =g(\theta^Tx)= \frac{1}{1+e^{-\theta^Tx}}

这里我们要注意理解一下假设函数和决策边界函数的区别与联系。决策边界是假设函数的属性,由假设函数的参数( \theta )决定。

在逻辑回归中,假设函数 h=g(z) 用于计算样本属于某类别的可能性;决策函数 y^* = 1, if P(y=1|x)>0.5 用于计算(给出)样本的类别;决策边界 \theta^Tx=0 是一个方程,用于标识出分类函数(模型)的分类边界。

代价函数(Cost Function)

什么是代价函数?

假设有训练样本 (x,y) ,模型为 h , 参数为 \thetah(\theta) = \theta^Tx\theta^T 表示 \theta 的转置)。

<1>. 概况来讲,任何能够衡量模型预测出来的值 h(\theta) 与真实值 y 之间的差异的函数都可以叫做代价函数 C(\theta) ,如果有多个样本,则可以将所有代价函数的取值求均值,记做 J(\theta) 。因此很容易就可以得出以下关于代价函数的性质:

  • 选择代价函数时,最好挑选对参数 \theta 可微的函数(全微分存在,偏导数一定存在)
  • 对于每种算法来说,代价函数不是唯一的;
  • 代价函数是参数 \theta 的函数;
  • 总的代价函数 J(\theta) 可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本 (x,y)
  • J(\theta) 是一个标量;

<2>. 当我们确定了模型 h ,后面做的所有事情就是训练模型的参数 \theta 。那么什么时候模型的训练才能结束呢?这时候也涉及到代价函数,由于代价函数是用来衡量模型好坏的,我们的目标当然是得到最好的模型(也就是最符合训练样本的模型)。因此训练参数的过程就是不断改变 \theta ,从而得到更小的 J(\theta) 的过程。理想情况下,当我们取到代价函数J的最小值时,就得到了最优的参数 \theta ,记为:

  • \displaystyle \min_{ \theta } J(\theta)

例如, J(\theta)=0 ,表示我们的模型完美的拟合了观察的数据,没有任何误差。

<3>. 在优化参数θ的过程中,最常用的方法是梯度下降,这里的梯度就是代价函数 J(\theta)\theta_1, \theta_2, ..., \theta_n 的偏导数。由于需要求偏导,我们可以得到另一个关于代价函数的性质:

  • 选择代价函数时,最好挑选对参数 \theta 可微的函数(全微分存在,偏导数一定存在)
代价函数的常见形式

经过上面的描述,一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数 \theta 可微。

<1>. 在线性回归中,最常用的是均方误差(Mean squared error),即

  • J(\theta_0, \theta_1) = \frac{ 1 }{ 2m } \displaystyle \sum_{ i = 1 }^{ m } (\hat{ y }^{(i)} - y^{(i)})^2 = \frac{ 1 }{ 2m } \displaystyle \sum_{ i = 1 }^{ m } (h_\theta(x^{(i)}) - y^{(i)})^2
  • m :训练样本的个数;
  • h_\theta(x) :用参数 \thetax 预测出来的y值;
  • y :原训练样本中的 y 值,也就是标准答案;
  • 上角标 (i) :第 i 个样本。

<2>. 在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),交叉熵是一个常见的代价函数,在神经网络中也会用到。下面是《神经网络与深度学习》一书对交叉熵的解释:

交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数x→y=y(x)。但是我们让它取而代之计算函数x→a=a(x)。假设我们把a当作y等于1的概率,1−a是y等于0的概率。那么,交叉熵衡量的是我们在知道y的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。

在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵(Shannon Entropy),它是香农信息量(Shannon Information Content, SIC)的期望。香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶。更多解释可以看这里

  • J(\theta) = -\frac{ 1 }{ m }[\sum_{ i=1 }^{ m } ({y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)}) \log (1-h_\theta(x^{(i)})})]
  • 符号说明同上

但是我们会疑问,为什么这么定义代价函数呢?下面我会简单的解释一下:

PS:由于文章里的公式太多,编辑的时候开始卡顿,这篇就先写到这里,接下来的内容见:

逻辑回归(Logistic Regression)(二)

Reference:

[机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

sigmoid函数详解_mmmmmm_新浪博客

逻辑斯谛回归之决策边界 logistic regression -- decision boundary

【机器学习】代价函数(cost function)

编辑于 2017-08-09