机器学习笔记--分类问题与逻辑回归
注:本文为学习笔记,描述与截图多来自课件和百科,学习网站为:https://www.coursera.org/learn/machine-learning/supplement/fDCQp/classification
1.分类问题与模型
1)分类
分类是机器学习非常重要的一个组成部分,它的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。分类是监督学习的一个实例,根据已知训练集提供的样本,通过计算选择特征参数,创建判别函数以对样本进行的分类。
如预测一个人是否得了肿瘤癌,结果只有两种,得了和没得。要尝试分类,一种方法是使用线性回归,将大于0.5的所有预测映射为1,将小于0.5的所有预测映射为0。但是,此方法效果不佳,因为分类实际上不是线性函数。
2)模型
线性函数的模型不适用于分类问题,在结果只有指定的两个离散值的情况下,比如0,1,线性函数预测的结果可能0与1之间,也可能远大于1或远小于0。因此我们需要修改我们的预测模型,01符合我们的期望。
新的模型为S函数也称为逻辑函数:
函数的图形为S型,如下:
此处显示的函数g(z)将任何实数映射到(0,1)区间,适用于分类问题。
的值表示输出结果为1的概率,例如
=0.7表示有70%的概率结果为1。结果为0的概率与结果为1的概率相加应为1:
3)决策边界
为了获得0或1分类,我们可以按如下方式转换假设函数的输出:
函数g的输入若大于等于0,则输出大于等于0.5:
当函数g的输入值为 时, 函数表达式将如下:
也就意味着:
决策边界是分隔y = 0和y = 1区域的线,它是由我们的假设函数创建的,如:
在这个例子中,我们的决策边界是=5,也就是图形结果的垂直线,当
小于5时,输出结果为1,当
大于5时,输出结果为0。
函数g(z)的输入不一定为线性函数,也可以是其他形状,如
2.逻辑回归模型
1)代价函数:
我们不能使用与线性回归相同的代价函数,因为逻辑函数将导致输出波动,从而导致许多局部最优。 话句话说,它不会是凸函数。
逻辑函数的代价函数为如下所示:
当y=1时与
的关系如下图:
当y=0时与
的关系如下图:
我们可以得到如下的关系:
如果我们的正确答案“ y”为0,则如果我们的假设函数也输出0,则成本函数将为0。如果我们的假设接近1,则成本函数将接近无穷大。
如果我们正确的答案y为1,那么如果我们的假设函数输出为1,则成本函数将为0。如果我们的假设接近0,则成本函数将接近无穷大。
2).简化的成本函数与梯度下降
我们可以将成本函数的两个条件情况压缩为一个情况:
当y=1时,第二项的为0,不会影响结果。同理,当y=0时,第一项的
为0,也不会影响结果。
代价函数如下:
向量化的实现是:
梯度下降的一般形式为:
我们可以使用微积分计算出导数部分,从而得到:
注意,该算法与我们在线性回归中使用的算法相同。 我们必须同时更新中的所有值。
向量化的实现是:
3).高级优化
“共轭梯度”,“ BFGS”和“ L-BFGS”是更复杂,更快速的优化θ的方法,可用于替代梯度下降。这些算法很多算法库都有提供,不用自己编写。
我们首先需要提供一个函数,该函数针对给定的输入值θ评估以下两个函数:
我们可以编写一个返回这两个函数的函数:
然后,我们可以使用算法库的“ fminunc()”优化算法以及“ optimset()”函数,该函数创建一个对象,其中包含要发送给“ fminunc()”的选项。
我们将成本函数,theta值的初始向量以及预先创建的“ options”对象赋予函数“ fminunc()”。
3.多类别分类:一对多
现实情况中,我们通常需要对多个类别进行分类, 代替y = {0,1},我们将扩展定义为y = {0,1 ... n}。由于y = {0,1 ... n},我们将问题分为n + 1个(+1,因为索引从0开始)二进制分类问题。 在每一个类别中,我们预测“ y”是我们类别之一的概率。
我们通常上是选择一个类型,然后将所有其他类型合并为一个第二类型。 我们反复进行此操作,对每种情况应用二元逻辑回归,然后使用返回最高值的假设作为我们的预测。