《Machine Learning》系列学习笔记之第三周

时间:2023-03-08 16:04:31
《Machine Learning》系列学习笔记之第三周

第三周

第一部分 Classification and Representation

Classification

为了尝试分类,一种方法是使用线性回归,并将大于0.5的所有预测映射为1,所有小于0.5的预测作为0.然而,此方法不能很好地工作,因为分类实际上不是线性函数。

分类问题就像回归问题,只是我们现在想要预测的值y只包含少量的离散值。现在,我们将关注二进制分类问题,其中y只能取两个值0和1.(我们在这里说的大多数也将泛化到多类情况。)例如,如果我们尝试为电子邮件构建垃圾邮件分类器,则x(i)可以是电子邮件的一些特征,并且如果它是一条垃圾邮件则y可以是1,否则为0。因此,y∈{0,1}。 0也称为负类,1是正类,它们有时也由符号“ - ”和“+”表示。给定x(i),对应的y(i)也称为训练示例。

Hypothesis
Representation

直观地,当我们知道y∈{0,1}时,hθ(x)取大于1或小于0的值也没有意义。为了解决这个问题,让我们改变我们的假设hθ(x)的形式以满足0≤hθ(x)≤1。这是通过将θTx插入逻辑函数来完成的。

我们的新形式使用“Sigmoid函数”,也称为“逻辑函数”:

hθ(x)=g(θTx)z=θTxg(z)=11+ez

下图显示了Sigmoid函数的外观:

《Machine Learning》系列学习笔记之第三周

这里所示的函数g(z)将任何实数映射到(0,1)间隔,使得它有用于将任意值函数变换为更适合于分类的函数。

hθ(x)将给出我们的输出为1的概率。例如,hθ(x)=
0.7给出我们的输出为1的概率为70%。我们的预测为0的概率只是我们的概率为1(例如,如果其为1的概率为70%,则其为0的概率为30%)。

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

Decision
Boundary

为了得到我们的离散0或1分类,我们可以翻译假设函数的输出如下:

hθ(x)≥0.5→y=1

hθ(x)<0.5→y=0

因此,如果我们对g的输入是 θTX,则意味着:

hθ(x)=g(θTx)≥0.5

从这些陈述,我们现在可以说:

y=1

θTx<0⇒y=0
决策边界是分隔y
= 0和y
= 1的区域的线。它由我们的假设函数创建。例如:

Θ=⎡⎣5
−1 0⎤⎦

y=1
if 5+(−1)x1+0x2≥0

5−x1≥0

x1≥−5

x1≤5

在这种情况下,我们的决策边界是一条垂直线,其中x1
= 5,左边的一切表示y
= 1,而右边的一切表示y
= 0。

注意:对S形函数g(z)(例如θTX)的输入不需要是线性的,并且可以是描述圆(例如z
=θ0+θ1×21 +θ2×22)适合我们的数据的任何形状的函数

第二部分
Logistic
Regression Model

Cost
Function

我们不能将成本函数用于线性回归,因为Logistic函数会导致输出波动,导致许多局部最优。
换句话说,它不会是一个凸函数。

相反,我们的逻辑回归的成本函数如下:

J(θ)=1/mm(上标)i=1(下标)Cost(hθ(x(i)),y(i))

Cost(hθ(x),y)=−log(hθ(x))

Cost(hθ(x),y)=−log(1−hθ(x))if
y = 1if y = 0

当y
= 1时,我们得到J(θ)和hθ(x)的下面的图:

《Machine Learning》系列学习笔记之第三周

类似地,当y
= 0时,我们得到J(θ)对hθ(x)的以下图:

《Machine Learning》系列学习笔记之第三周

Cost(hθ(x),y)=0 if hθ(x)=y

Cost(hθ(x),y)→∞ if y=0andhθ(x)→1

Cost(hθ(x),y)→∞ if y=1andhθ(x)→0

如果我们的正确答案'y'=0,则如果我们的假设函数也输出0,则成本函数将为0.如果我们的假设接近1,则成本函数将接近无穷大。

如果我们的正确答案'y'=1,则如果我们的假设函数输出1,则成本函数将为0.如果我们的假设接近0,则成本函数将接近无穷大。

注意,以这种方式写成本函数保证了J(θ)对于逻辑回归是凸的。

Simplified
Cost Function and Gradient Descent

我们可以将成本函数的两个条件情况压缩为一种情况:

Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))

我们可以完全写出我们的整个成本函数如下:

J(θ)=−1/mi=1(下标)m(上标)[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]

向量化实现是:

h=g()

J(θ)=1/m⋅(−yTlog(h)−(1−y)Tlog(1−h))

梯度下降

记住,梯度下降的一般形式是:

Repeat{

θj:=θjα/mi=1(下标)m(上标)(hθ(x(i))−y(i))x(i)j

}

请注意,此算法与我们在线性回归中使用的算法相同。
我们仍然必须同时更新theta中的所有值。向量化实现是:
θ:=θα/mXT(g()−y⃗ )

Advanced
Optimization高级优化

“Conjugate
gradient”(共轭梯度),“BFGS”和“L-BFGS”是更复杂的,更快的方式来优化可用于代替梯度下降的θ。我们建议您不要自己编写这些更复杂的算法(除非您是数值计算方面的专家),而是使用库,因为它们已经过测试和高度优化。

我们首先需要提供一个函数,对给定的输入值θ计算以下两个函数:

J(θ)

∂/∂θj
J(θ)

我们可以写一个返回这两个函数的单个函数:

1
function [jVal, gradient] = costFunction(theta)

2
jVal = [...code to compute J(theta)...];

3
gradient = [...code to compute derivative of J(theta)...];

4
end

然后我们可以使用octave的“fminunc()”优化算法以及“optimset()”函数创建一个包含我们想要发送到“fminunc()”的选项的对象。
(注意:MaxIter的值应该是一个整数)

1 options =
optimset('GradObj', 'on', 'MaxIter', 100);

2 initialTheta =
zeros(2,1);

3 [optTheta,
functionVal, exitFlag] = fminunc(@costFunction, initialTheta,
options);

我们给函数“fminunc()”我们的成本函数,我们的θ值的初始向量和我们事先创建的“选项”对象。

第三部分
Multiclass
Classification

Multiclass
Classification: One-vs-all

由于y
= {0,1 ... n},我们将问题划分为n
+ 1(+1,因为索引从0开始)二进制分类问题;
在每一个中,我们预测“y”是我们的一个类的成员的概率。

y∈{0,1...n}

h(0)θ(下标)(x)(上标)=P(y=0|x;θ)

h(1)θ(下标)(x)(上标)=P(y=1|x;θ)

h(n)(下标)θ(x)(上标)=P(y=n|x;θ)

prediction=max
i(下标)(h(i)θ(x))

我们基本上选择一个类,然后将所有其他类合并成一个第二类。
我们重复这样做,对每种情况应用二元逻辑回归,然后使用返回最高值的假设作为我们的预测。下图显示了如何对个类进行分类:

《Machine Learning》系列学习笔记之第三周

总结:

为每个类别训练逻辑回归分类器hθ(x)以预测y
= i的概率。

为了对新的x进行预测,选择类最大化hθ(x)

第四部分
Solving
the Problem of Overfitting

The Problem of Overfitting

欠适应(underfitting),或高偏差(high bias),是当我们的假设函数h的形式很差地映射到数据的趋势。它通常由一个太简单或使用太少功能的函数引起。在另一个极端,过拟合(overfitting)或高方差(high variance)是由符合可用数据的假设函数引起的,但不能很好地推广以预测新数据。它通常是由一个复杂的函数引起的,它产生了大量与数据无关的不必要的曲线和角度。

此术语适用于线性和逻辑回归。有两个主要选择来解决过度拟合的问题:

1)减少特征数量:

手动选择要保留的功能。

使用模型选择算法(稍后在课程中研究)。

2)正规化

保持所有的特征,但减小参数θj的幅度。

当我们有很多有用的功能时,正则化效果很好。

Cost
Function

如果我们从我们的假设函数过拟合,我们可以通过增加它们的成本来减少我们的函数中的一些项所携带的权重。

说我们想让下面的函数更接近于二次函数:

θ0+θ1x+θ2x2+θ3x3+θ4x4

我们想消除θ3x3和θ4x4
的影响。没有真正摆脱这些特征或改变我们的假设的形式,我们可以改为修改我们的成本函数:

minθ
1/2mm(上标)i=1(下标)(hθ(x(i))−y(i))^2+1000⋅θ3^2+1000⋅θ4^2

我们在末尾添加了两个额外的术语来增加θ3和θ4的成本。现在,为了使成本函数接近零,我们必须将θ3和θ4的值减小到接近零。这将大大降低我们的假设函数中的θ3x3和θ4x4的值。因此,我们看到新的假设(由粉红色曲线描绘)看起来像一个二次函数,但由于超小项θ3x3和θ4x4θ4x4更好地拟合数据。

《Machine Learning》系列学习笔记之第三周

我们还可以将我们所有的theta参数在一个求和中规则化为:

minθ 12m [∑mi=1(hθ(x(i))−y(i))2+λ ∑nj=1θ2j]

λ或λ是正则化参数。它决定了我们θ参数的成本是多少。

使用上述成本函数与额外求和,我们可以平滑我们的假设函数的输出,以减少过拟合。如果λ被选择为太大,它可能平滑函数太多并导致欠拟合。因此,如果λ=
0或太小会发生什么?