Week 3——Machine learning by Pro.Andrew Ng (cousera)——notebook

一.概述

在第三周的课程中,主要对逻辑回归(Logistic Regression)和正则化(Regularization)两大部分进行了介绍。其中逻辑回归(Logistic Regression)旨在解决监督学习(Supervised learning)中回归问题之外的另一大类问题——分类问题;正则化(Regularization)则是用于解决机器学习应用过程中的过拟合(overfitting)问题。
Week 3——Machine learning by Pro.Andrew Ng (cousera)——notebook
(关于Machine learning by Pro.Andrew Ng 的更多资源请关注图中微信公众号——针知与拙见 获取 )

  • 在第三周的学习中主要应当掌握以下几个主要概念
    • 逻辑回归(Logistic Regression)
    • one-vs-all in Multi Classification
    • 正则化(Regularization)

以及其中概念所对应的函数/向量表达式

1 逻辑回归的模型假设(Model Representation of Logistic Regression)

——hθ(x)=g(θTX)
将g函数表达式写出得:
——hθ(x)=11+eθTX

2 逻辑回归的代价函数(Cost Function of Logistic Regression )
——J(θ)=1mCost(hθ(xi),yi)
当y=1时 Cost(hθ(x),y)=log(hθ(x))
当y=0时Cost(hθ(x),y)=log(1hθ(x)))

简化的形式为Cost(hθ(x),y)=ylog(hθ(x)(1y)log(1hθ(x))

3 逻辑回归的梯度下降算法(Gradient Descent of Logistic Regression )

θj:=θjαi=1m(hθ(xiyi)xji

4 多类分类(Multi Classification)
—— θ=(XTX)1XTy

y0,1...n

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

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

hθn(x)=P(y=0|x;θ)

二.逻辑回归(Logistic regression)

definition:用以处理除线性回归外的其他离散值(不连续值)分类问题的方法叫Logistic Regression(逻辑回归)。

1.二元分类问题

与处理回归问题时不同,在处理分类问题时,我们的输出向量y不是一个连续的范围,而是只有0或1两个数值。

y0,1

通常y=0时称为负类,y=1时称为正类。

(1) 模型假设

我们的假设应该满足 0hθ(x)1

在逻辑回归问题中,我们用到了一个新的函数形式——“Sigmoid Function”又称“Logistic Function”

其函数形式为:g(z)=11+ez

针对二元分类问题,其应用方式为:hθ(x)=g(θTx)z=θTx

将z带入可得hθ(x)=g(θTx)=11+eθTx
Week 3——Machine learning by Pro.Andrew Ng (cousera)——notebook

我们希望从过去使用的线性回归的模型假设出发,将y的范围限制为{0,1}。所以实际上逻辑回归的模型假设hθ(x)的值表示的是y输出为1时的可能性(probability)举例说明,当hθ(x)=0.8则表示输出为1的可能性为80%。

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

我们预测输出为0的概率只是我们输出为1的概率的补充,即若输出为1的概率为80%,则输出为0的概率为20%。

(2) 决策边界/判定边界(Decision Boundary)

为了得到离散的0或1分类,我们需要将假设函数的输出进行如下的转换:

hθ(x)0.5y=1
hθ(x)<0.5y=0

实际上我们可以通过sigmoid函数的图像直接看出,当z=θTx0hθ(x)=g(z)0.5

同样的,我们也可以从函数图像看出:
zg(z)=1
zg(z)=0

综上,当θTx0y=1
θTx<0y=0

决策边界是分隔y = 0和y = 1的区域的直线。它的位置由我们假设函数的形式决定。

举例说明:

θ=[620]

y=1 if 6+(2)x1+0x20

if 6(2)x10

x13

在这种情况下,我们的决策边界是在图表上垂直且 x1=3 的直线,所有在直线左边的点均有y=1,所有在直线右边的点均有y=0

注意:输入sigmoid function函数g(z)的并不局限于特征x的一次多项式,只要能够与数据很好的拟合,输入的形式可以是多种多样的(e.g. z=θ0+θ1x13+θ2x23)。

其向量表示形式为:
hθ(x)=[θ0θ1θ2...θn][x0x1x2xn]=θTx

2.代价函数(Cost Function)

我们不能使用与线性回归相同形式的代价函数,因为Logistic Function会导致输出波动,从而导致产生许多的局部最优点。换句话说,如果直接使用与线性回归相同形式的代价函数,我们将得到的是一个非凸函数。

所以逻辑回归的代价函数形式为:

J(θ)=1mi=1mCost(hθ(x(i))y(i))

if y=1 Cost(hθ(x)y)=log(hθ(x))

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

如果经由模型假设得到的y越偏离实际的y值,成本函数输出越大。 如果我们模型假设得到的y值与实际输出恰好相同,则我们的代价函数为0。

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

Cost(hθ(x)y) if y=0 and hθ(x)1

Cost(hθ(x)y) if y=1 and hθ(x)0

当模型假设的输出与实际输出一致时(都为0或者都为1),那么代价函数的值则为0。当模型假设的输出与实际输出不一致时,代价函数的值趋向于无穷。由此规律可以很明显的看出,采用如此表达形式的代价函数为凸函数。

3.简化的代价函数和梯度下降(Simplified Cost Function and Gradient Descent)

(1)简化的代价函数

我们可以用简单的小技巧,将上文中提到的两种情况下的代价函数合并为一个代价函数:

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

然后我们可以完整地写出整个代价函数如下:

J(θ)=1mi=1m [y(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i))]

(2)梯度下降

θj:=θjαmi=1m(hθ(xi)yi)xji

需要注意的是,该梯度下降算法与我们在线性回归中使用的算法相同。我们在使用时同样需要同时更新theta中的所有值。

3.多类分类问题(Multiclass Classification: One-vs-all)

当我们解决多类分类问题的时候,我们与解决二分类问题时采用的方法一致,只不过将y的范围由0,1拓展到0,1,2,...,n

在这种情况下,我们将问题分为n + 1个二元分类问题;在每一次分类时,我们将得到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=maxi(hθi(x))

我们首先选择一个类,然后将所有其他归为第二个类。 通过反复操作,对每个案例应用二元逻辑回归,然后使用返回最高值的假设作为我们的预测。

三.正则化(Regularization)

purpose:正则化旨在解决过拟合问题

过度拟合或high variance 通常由过度复杂的模型假设引起,它会产生许多与数据无关的不必要的曲线和角度。

过拟合问题有两个主要选择:
1)减少特征数量:
a)手动选择要保留的特征。
b)使用模型选择算法
2)正则化
保留所有特征,但减少参数θj

代价函数(Cost Function)

如果我们发现代价函数过拟合,那么我们可以通过减少部分参数对函数影响的权重来解决过拟合问题。

举例说明:

假设我们想要如下函数更加二次特征化

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

我们想要在存在这些特征或者不改变我们模型假设的形式的情况下,消除θ3x3 θ4x4的影响。那这个时候我们可以修改代价函数:

minθ12mi=1m(hθ(xi)yi)2+1000θ32+1000θ42

我们在最后添加了两个额外的θ3 θ4的二次项,目的是为了膨胀θ3θ4的代价。在这样的情形下,为了让代价函数尽可能地接近0,我们就必须要尽可能地减小θ3θ4的值,让他们二者尽可能的接近0,这反过来会大大降低θ3x3θ44对模型假设函数的影响。

我们可以将所有的θ参数的正则化写到一起:

minθ12m[i=1m(hθ(xi)yi)2+λj=1nθj2]

λ是正则化参数,它决定了我们的θ参数的成本被放大的程度。

使用上述成本函数和额外的正则化项,我们可以平滑我们假设函数的输出以减少过度拟合。 但如果选择λ太大,它可能会使函数过于平滑而导致欠拟合。


文中部分内容取自Pro.Andrew Ng 于cousera上发布的Machine learning 公开课的Week 3 Lecture Notes。其他内容均由个人整理撰写,如需要更多机器学习的学习资源欢迎关注微信公众号:针知与拙见并在后台留言。
[1] https://www.coursera.org/learn/machine-learning/
[2] 微信公众号——针知与拙见