分类问题描述
广义线性回归通过联系函数对线性模型的结果进行一次非线性变换,使它能够描述更加复杂的数据关系。联系函数可以是任何一个单调可微函数。
除了回归问题,现实世界中,还有另外一类非常常见的任务——分类问题。
输入是样本特征,输出是离散值,表示样本属于哪个类别。
例如,在鸢尾花数据集中,
如果要实现图像分类,例如手写数字识别。
手写数字的图像会以向量的形式提供给分类器。
实现分类器
那么怎么才能实现这样的分类器呢?
和回归问题一样,
首先,我们需要收集一些有分类标记的训练样本。然后用这个训练样本集去训练分类器,训练好之后,这个分类器就能够接收没有标记的样本,并对其做出分类判断。
分类器的设计
分类器的设计其实非常简单。只要对线性模型稍加改造就可以了。例如,在上面例子中,我们现在不再预测房价,而是要把商品房分为普通住宅和高档住宅两种类别,分别用0和1来表示。假设房价大于100万的就是高档住宅,低于100万的就是普通住宅。
只要在线性回归预测出的房价的基础上,再增加一个阶跃函数就可以了。
在这个例子,我们首先计算房价 z ,
z 和 x 之间是线性关系( 与前面定义对照相比,应该写成 z = h(wx+b),但是这个 z 比较特殊,就是z = wx+b。),然后使用 z 作为单位阶跃函数的自变量去求商品房类型 y ,判断的条件是 房价减去100 万,看看结果是否大于0。
这其实就是广义线性回归。“这个阶跃函数就是联系函数 g 的逆运算”。(视频中说的,为什么我认为“这个阶跃函数就是联系函数,而 z = wx+b 才是联系函数 g 的逆运算”)
这个例子是最简单的分类,即二分类问题。
通过阶跃函数可以方便地把线性回归模型转变为分类器。
但是,它存在两个问题。
第一:它不光滑,
假设z非常接近于0,那么这个样本分类应该是1还是0呢?
例如,假如有一套 99万 的房子和一套101万的房子,可能它们之间并没有非常明显的差距,如果仅仅把它们划分为普通住宅和高档住宅,把这个结果提供给用户,好像过于简单粗暴。
第二:它不连续,
这个函数在 z =0 的这点存在着从0到1的突变,这在后续的数学计算中会带来很多的麻烦。例如,在这一点处,没有办法求导数。
因此,阶跃函数并不是一个合格的单调可微的联系函数。我们希望找到一个近似的替代函数,它能够像阶跃函数一样,把线性模型的结果映射到0和1,从而实现分类,并且还是连续光滑的。
对数几率函数
它为什么叫做对数几率函数呢?
我们对这个函数进行整理,可以得到
其中的y代表某件事情发生的概率,1-y是不发生的概率。它们的比值反映了这件事情发生和不发生的相对可能性,也就是几率
对这个几率求对数,就是对数几率。图像如下:
可见,对数几率函数具有很好的数学性质。我们使用它来代替对数单位阶跃函数作为广义线性回归中的联系函数,就是对数几率回归,也称作逻辑回归,逻辑回归使用线性回归的结果作为对数几率函数的自变量。它的名字是回归,但是实现的是一个分类器。它不仅可以预测类比,而且还可以预测出输入样本属于某个类别的概率。这对于利用概率来辅助决策的任务来说,非常有用。
例如,在商品房评估系统中,它可以输出这个房子属于高档住宅的概率。
当房价是99万或者101万时,属于高档住宅的概率都在50%左右。
在进行分类时,我们可以把这个概率值,转化为类别输出。例如将阈值设置为0.5,当概率值大于0.5时,就是高档住宅,低于0.5时,就是普通住宅。
假设这是一个个人信用评价系统,
输出 y 是每个人的违约风险,如果希望对一个人的违约风险持谨慎态度,就可以选择一个更小的阈值来进行分类,例如,把阈值设置为0.2,当预测出某个人违约的可能性大于0.2时,就对这个人的消费进行限制。
对数几率函数的形状近似于S,这里外形的函数被称为 Sigmoid 函数。
对数几率函数是 Sigmoid 函数中最重要的代表。在大多数没有特别说明的情况下,Sigmoid 函数就是指对数几率函数。这里的σ就表示Sigmoid 函数,Sigmoid 函数能够将取值范围从负无穷大到正无穷大的输入。转化为一个0——1范围内的值来表示概率。
多元模型
同样也可以把逻辑回归推广到多元模型中。