Andrew Ng 机器学习笔记 08 :分类与逻辑回归(Logistic Regression)

二元分类

在二元分类问题中,我们想要预测的变量是y,它可以取值0或者1:

y 0 , 1

0:“负类”(例如:良性肿瘤)
1:“正类”(例如:恶性肿瘤)

逻辑回归算法(Logistic Regression)

逻辑回归算法,适用于y值为离散值的情况,并且它的输出值保证在0到1之间:

0 h θ ( x ) 1

逻辑回归算法是一个分类算法,即使它的名字里有回归,但我们也把它当成分类算法来使用。

假设函数表达式

逻辑回归的假设函数表达式:

h θ ( x ) = g ( θ T x )

其中g函数的表达式为:

g ( z ) = 1 1 + e z

这个函数被称为S型函数(Sigmoid function),或者逻辑函数(Logistic function),其图形如下:

因此我们可以得到:

h θ ( x ) = g ( θ T x ) = 1 1 + e θ T x

假设函数的解释:

h θ ( x ) 是对于新注入样本x的满足y=1的概率估计,用更加正式的式子来表示就是:

h θ ( x ) = P ( y = 1 | x ; θ )

这个式子代表着在给定的特征x的情况下,y=1的概率,其中参数为θ。由于y的取值不是0就是1,因此当我们得到了y=1的概率时,y=0的概率就很容易得出:

P ( y = 0 | x ; θ ) + P ( y = 1 | x ; θ ) = 1 P ( y = 0 | x ; θ ) = 1 P ( y = 1 | x ; θ )

决策边界

假设函数中:

  • 如果 h θ ( x ) 0.5 我们认为y=1
  • 如果 h θ ( x ) < 0.5 我们认为y=0

即:

  • θ T x 0 时,y=1;
  • θ T x < 0 时,y=0;

假设我们有一个训练集,其假设函数为:

h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 )

假设我们已经拟合好了数据,并且得到了θ0=−3、θ1=1、θ2=1。

  • 3 + x 1 + x 2 0 时,y=1
  • 3 + x 1 + x 2 < 0 时,y=0

因此,当 x 1 + x 2 = 3 时,我们可以得到一条直线:

这条直线被称为决策边界(decision boundary)。所以一旦能确定θ的值时,就能确定出决策边界了。

对于更复杂的假设函数,会有形态各异的决策边界:

逻辑回归的代价函数

线性回归的的代价函数如下:

C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ) y ) 2

而逻辑回归的假设函数是非线性的非凸函数,直接代入会有多个局部最优值。因此,为了表现为凸函数,逻辑回归的代价函数如下:



对应的函数的图形如下:




在y=1的情况下:

  • 如果假设函数hθ(x)=1,那么代价函数为0:Cost=0。
  • 如果假设函数hθ(x)→0,那么代价函数趋近于∞:Cost→∞

在y=0的情况下:

  • 如果假设函数hθ(x)→1,那么代价函数为0: Cost→∞。
  • 如果假设函数hθ(x)=0,那么代价函数等于0: Cost=0

当假设函数和期望值越接近时,代价函数值越小,反之越大。

简化代价函数以及梯度下降

代价函数的简化格式:

C o s t ( h θ ( x ) , y ) = y l o g ( h θ ( x ) ) ( 1 y ) l o g ( 1 h θ ( x ) )

完整的逻辑回归的代价函数:



逻辑回归问题中最小化代价函数的方法,是通过梯度下降算法来实现。



由于假设函数的不同,虽然形式相似,但线性回归和逻辑回归的梯度下降是两个完全不同的东西。

在讨论线性回归的梯度下降算法时,我们谈到了如何监控梯度下降法以确保其收敛。其实我们通常也把这种方法运用在逻辑回归中,来检测梯度下降,以确保其正常收敛。

高级优化

除了梯度下降算法(Gradient descent),还有其他几种优化算法:

  • 共轭梯度法(Conjugate gradient)
  • 变尺度法(BFGS)
  • 限制变尺度法(L-BFGS)

优点

  • 不需要手动选择学习率a
    其思路是,给出计算导数项和代价函数J(θ)的方法,你可以认为算法有一个智能的内部循环,这种智能的内部循环被称为线性搜索(line search)算法,它可以自动尝试不同的学习速率a,并自动选择一个好的学习速率a。因此它甚至可以在每次迭代时都选择不同的学习速率,那么你就不需要自己选择a了。

  • 通常情况下收敛速度比梯度下降算法更快
    这些算法实际上在做更复杂的事情,而不仅仅是选择一个好的学习速率a,所以他们往往最终收敛的远远快于梯度下降。

缺点

  • 比梯度下降法复杂多了
    如果你不是数值计算方面的专家,不建议你亲自去写共轭梯度法、BFGS和L-BFGS,而是去使用一些现成的库。实际上Octave和Matlab都有很理想的库来实现这些先进的优化算法。

一对多分类问题

二元分类问题中,只有两个类别需要处理,对于一对多的分类问题,也可以借鉴二元分类的思想。

对于由三个类别元素组成的训练集。可以将其分成三个二元分类问题。

实际上这是一个新的“伪类型集”,类型2和类型3被定义为负类(值为0),类型1定义为正类(值为1)。
由此得到三个分类器,通过这些分类器来估算出给出 x 和先验 θ 时, y = i 的概率:
h θ ( i ) ( x ) = P ( y = i | x ; θ ) ( i = 1 , 2 , 3 )
对于给定一个新的输入值 x ,分别三个分类器里输入 x ,其中使 h θ ( i ) ( x ) 最大的 i ,就是预测出的类别。

正规化

欠拟合

欠拟合(under fitting),这个问题的另一个术语叫做高偏差(High bias)。这两种说法大致相似,意思是它只是没有很好地拟合训练数据。



刚好合适

过拟合

过度拟合(over fitting),另一个描述该问题的术语是高方差(variance)。



介于高偏差和高方差这两者之间的情况叫做“刚好合适”。

概括地说,过拟合的问题将会在变量过多的时候发生,这种时候训练出的方程总能很好的拟合训练数据,所以你的代价函数实际上可能非常接近于0,甚至就是0。但是这会导致这种模型无法泛化到新的数据样本中,以至于无法预测新样本价格。

在这里术语“泛化(generalize)”指的是一个假设模型能够应用到新样本的能力。

解决过拟合问题

为了解决过度拟合问题,有两种方法:

  • 要尽量减少选取的变量的数量。

    • 可以人工检测变量的条目,保留重要的特征,舍弃无用的特征
    • 模型选择算法
  • 正则化
    • 保留所有的特征变量,但是通过减少参数θj的数量级或值的大小。

正规化优化的目标

正规化之后的代价函数如下:



正规化项中的λ称为正规化参数,控制在两个不同的目标中的一个平衡关系:

  • 第一个目标:使假设函数更好的拟合训练数据。
  • 第二个目标:保持参数值较小。

在正规化线性回归中,如果正规化参数值被设定为非常大,那么会发生什么呢?

我们将会非常大地惩罚我们的参数,会使得所有的参数接近于0。如果我们这么做,那么就相当于我们从假设函数中去掉了这些项,并且使得我们只是留下了一个简单的假设:

h θ ( x ) = θ 0

那就是类似于拟合了一条水平直线,对于数据来说这就是欠拟合(underfitting)。

猜你喜欢

转载自blog.csdn.net/lk3030/article/details/79928091