机器学习笔记4

逻辑回归

1.1 分类 Classification

垃圾邮箱分类、在线交易是否为欺诈、判断肿瘤是良性还是恶心这些问题都属于分类问题

先讨论二分类问题,预测值y的取值是0或者是1,0代表负类,一般表示没有,1代表正类,一般表示有。比如在肿瘤问题中,0代表没有恶性肿瘤(良性),1表示有恶性肿瘤

当然之后也会涉及到多分类问题

如果把线性回归运用在分类问题上,有时候运气好或许可以得到一个不错的线性回归,但有时候也会得到一个差劲的线性回归

比如在下图中,数据集是5个数据点为1表示恶性和4个数据点为0表示良性,没有右侧那个额外点时,可以得到一个洋红的线性回归,设定阈值为0.5,大于等于阈值0.5时预测为恶性,小于阈值0.5时预测为良性

但是如果有右侧那个额外点时,得到的就是一个蓝色的线性回归,阈值依然是0.5,那么就会将一些恶性肿瘤预测为良性肿瘤

在取值上,分类问题一般是0或者1,而使用线性回归的话一般得到的值是小于0或者大于1的,所以在分类问题上,不推荐使用线性回归来解决

那么我们就引入逻辑回归算法,它是一种分类算法并且取值介于0到1之间的

1.2 假设表示 Hypothesis Representation

逻辑回归希望得到一个介于0到1之间的值,其实只要在原来线性回归 h(x)=θTx 的基础上稍微修改一下就可以了,转变为:h(x)=g(θTx) ,把 θTx 看成是一个变量z

定义一个g(x)函数为sigmoid函数(logistic函数),如下图右边。将z代入就可以得到一个介于0到1之间的值

对于假设输出的解释,我们可以理解为得到的是一个概率值。在一个肿瘤的例子中,向假设函数传入病人特征x(x0依旧是1)会得到 y=1 的概率,如果得到是0.7,那么就说明该病人是恶性肿瘤的概率为70%

规范的表达为: h(x)  = p( y=1 | x;θ ) 表示病人在特征x的情况下患有恶性肿瘤(y=1)的概率,概率的参数为θ,由于p( y=1 | x;θ ) + p( y=1 | x;θ ) = 1 ,所以在得出 p( y=1 | x;θ ) 后就可以直接得出 p( y=0 | x;θ )

1.3 决策边界 Decision boundary

理解好决策边界可以帮助我们更好理解逻辑回归在计算什么

之前了解了在sigmoid函数中,假设函数值大等于0.5,我们就可以把它理解为预测为 y=1,小于0.5,我们就可以把它理解为预测为 y=0

再进行拆分的话,就可以进一步理解为当θTX大等于0.5,我们就可以把它理解为预测为 y=1小于0.5,我们就可以把它理解为预测为 y=0

可以先来看一个例子:存在两类数据集,现在我们通过假设函数h(x)来对他进行分类,之后会讲解如何自动的拟合获得参数θ,这里给定θ

假设 θ0=-3,θ1=1,θ2=1 ,即θ=[-3,1,1],根据上面对sigmoid函数的解释,我们可以得到当 -3+x1+x2 满足大于等于0时,就预测 y=1

换句话说也就是 x1+x2大于等于3时,预测 y=1,小于3时,预测 y=0。那就可以画出一条直线来划分类别,我们就可以把这个划分的直线称为决策边界

除了有线性的决策边界也有非线性的决策边界,对于以下这样的数据集我们就需要多加几个参数了,还是一样我们先给定θ=[-1,0,0,1,1]

同理可以知道当x12+x22大于等于0时,预测 y=1,x12+x22小于0时,预测 y=0

当然有更多参数时,我们会得到各种各样型状的决策边界

1.4 代价函数 Cost function

依次选择m个样本,n+1维特征向量表示特征(x0=1),那在sigmoid函数中应该如何取得合适参数θ?

在选择参数θ之前我们先来看一下代价函数,在之前线性回归中我们使用的代价函数是均方误差,如果还是使用这个代价函数的话依然可以求解吗?

我们将均方误差式子中的一部分看成Cost(),化简为:J(θ)=(1/2)*Cost(hθ(x),y),在逻辑回归中我们的假设函数hθ(x)使用的sigmoid函数,如果将函数hθ(x)带入J(θ)中

我们画出来的可能就不是一个凸函数了,会得到一个有许多局部最优的函数,那么我们就不能保证梯度下降能够收敛到全局最优了

所以我们就需要换一个代价函数,如下图。

当y=1时,如果预测值hθ(x)=1,真实值 y=1,表示预测效果比较好与代价Cost=0吻合,如果预测值hθ(x)=0,真实值 y=1,那么代价Cost将会激增,我们将大程度的惩罚学习算法

同理在当y=0时也是一样的

为了方便我们可以把这两个代价函数合并起来

整理一下思路,我们现在已经有了简化过的代价函数了,然后通过最小化代价函数求得参数θ,最后通过θ在假设函数中进行预测,那么现在要解决的就是如何最小化代价函数求得参数θ

我们使用梯度下降算法来求解最优参数θ,那会发现在梯度下降算法中逻辑回归的更新规则和我们之前学习的线性回归的更新规则是一样的

其实这两个并不是一个东西,他们的假设函数hθ(x)分别是θTx和sigmoid函数

那么到这里逻辑回归的梯度下降就完成了!

1.5 高级优化 Advanced Optimization

除梯度下降算法以外,还有一些常被用来令代价函数最小的算法。这些算法更加复杂和优越,而且通常不需要人工选择学习率,比梯度下降算法要更加快速。这些有: 共轭梯度 (Conjugate Gradient), 局部优化法 (Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法 (LBFGS)。

这些算法有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 。只需要给这些算法提供计算导数项和代价函数的方法,就可以返回结果。适用于大型机器学习问题。

它们太复杂,不应该自己实现,而是调用MATLAB方法。例如一个无约束最小值函数 fminunc 。它会使用众多高级优化算法中的一个,就像加强版的梯度下降法,自动选择学习速率,找到最佳的 θ 值

1.6 多元分类:一对多 Multi-class classification:One-vs-all

其实可以把多元分类看成多个二元分类,将某一类看成正类,其余类看成负类,训练出一个分类器,对每一个类别依次做这个操作,最后可以预测出各个类别为正类的概率

取概率值最大那一个做为本次的预测结果

原文地址:https://www.cnblogs.com/bird7/p/14966057.html