• 《机器学习基石》---Linear Models for Classification


    1 用回归来做分类

    到目前为止,我们学习了线性分类,线性回归,逻辑回归这三种模型。以下是它们的pointwise损失函数对比(为了更容易对比,都把它们写作s和y的函数,s是wTx,表示线性打分的分数):

    把这几个损失函数画在一张图上:

    如果把逻辑回归的损失函数ce做一个适当的放缩,则可以得到下图:

    可以看出,平方误差和放缩后的交叉熵误差是0/1误差的上限,这里以放缩后的ce举例,由于对于每个点的error均成立不等式,则不论是对于Ein还是Eout仍然有不等式成立,因为它们是数据集上每个点error的期望:

    应用到VCbound,就有:

    可以看出,只要把训练集上的交叉熵误差做到低,则就能保证真实的0/1错误也比较低。

    因此线性回归和逻辑回归都可以用来做分类:

    正如之前在《噪声与错误》一节中所说,我们这里用平方错误或交叉熵错误来代替01错误,作为errhat。

    通常,我们会使用线性回归的结果作为逻辑回归,PLA,pocket算法的初始值。

    2 随机梯度下降法

    (注:课程里面并没有证明为什么SGD能work,直接说这样替代是可行的。)

    使用随机选取一个点的梯度来代替真实的梯度,计算代价明显降低,同时能保证效果是近似的。(收敛速度会变慢,因为最快的收敛方向一定是真实的梯度方向)。

    PLA和逻辑回归的联系:

    当逻辑回归使用SGD时,与PLA形式上很类似,可以看作是一种soft-PLA。因为PLA是要么更新,要么不更新,而使用SGD的逻辑回归则是每次更新一定的值:

    注意,对于随机梯度下降法来说,停止的条件一般是足够的迭代次数,而不是看梯度是否为0。否则再去算梯度是否为0,就没有必要用SGD了。

    3 用逻辑回归做多元分类

    先介绍一种简单的方法,OVA:

    要做k元分类,我们相当于对同一个训练数据集训练k个二元逻辑回归模型。训练第k个模型时,标签做一定的修改,类别是k就把标签记为1,不是k就记为-1。

    在做预测时,就是对这k个模型都算一遍,选择打分最大的作为预测类别:

    上面的算法的一个缺点是,当k很大且每个类别的样本数量均匀时,对每个训练来说就是不均衡的。可以使用下面的算法OVO来解决这个问题:

    训练C(k,2)个二分类模型,每个模型训练只使用两个类的数据,显然这样就是均衡的。做预测时,每个模型投票给一个类,最终选用得票数最多的类作为预测结果:

    另外一种方法,是使用soft-max回归。事实上,逻辑斯蒂函数是soft-max函数的一个特例。

  • 相关阅读:
    前端 二
    web 作业 01
    前端 一
    mysql 了解性知识
    数据查询优化之mysql索引
    yml格式或者叫做YAML格式数据学习
    执行sql报错:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    大型网站架构之分布式消息队列(转)
    intellj利用 maven自动生成dto,mapper文件
    对memcached使用的总结和使用场景(转)
  • 原文地址:https://www.cnblogs.com/coldyan/p/6337586.html
Copyright © 2020-2023  润新知