机器学习: 线性分类器

作者: 写代码的海怪 | 来源:发表于2019-02-25 00:43 被阅读28次

之前说过线性回归可以帮我们在给定特征值后预测对应的结果,而在分类上线性回归也是可以的。

Perceptron Classifier

Perceptron Classifier 也就是我们所说的感知机,用于区分数据应该属于哪个类的。先看个使用线性回归拟合的例子吧

上面是两个不同的线性回归方程,很明显第一个拟合不是那么好。但是我们更希望看到的是有一条线将数据集里的数据分割开,而不是直接拟合。所以就有了感知机,下面是感知机的函数定义(目前就分两类)

要注意的是这里的 x 是特征值,在多维上感知机都能将数据分类,如二维用线分割,三维用面分割,这种分割的线/面统一叫做超平面。一个只有两个维度的特征数据集例子如下所示

这里要注意的是横纵坐标不再是 xf(x) 了,而是 x_1 以及 x_2下面是另外一个例子

不可分情况

上面这个例子特征数据都很好,一眼就看出要怎么分割,但是数据里你中有我,我中有你怎么办?如下图所示

这个时候我们就可以对特征值“做点手脚”,比如将它们平方一下

这样就可以将原来的一维变成二维,在二维里用一维的方式去分割。以此类推,二维不能分割的变成一个曲面(三维),用二维平面去分割曲面,等等。

过拟合

当然最好不要从一维变到一万维,这样就过拟合了,即训练数据每个都精确地分类,但是分类测试数据时候往往出错率很高。所以这种修改特征值的方法优点在于

  1. 更容易分类
  2. 在修改特征值后是一定可以分类的(如搞到一万维一定可以分类。。。)

缺点是

  1. 高维容易过拟合
  2. 训练数据分类结果很好,但是测试数据分类结果很差

用图表形式表示出错率

找到恰当的 \theta

刚刚只是简单说了下感知机的原理,现在要深入了解感知机。其实,有没有发现如果开局数据好看,只要能够将训练数据分成两类,感知机的参数 \theta 怎么设置都可以。当然,这是不好的,理想情况是两边数据离感知机方程越远越好,也就是要找到一个恰当的 \theta 值使得这个方程最优。

我们的线性回归就是使用梯度下降出错率导数去找 \theta 值的,不过这里可以先不用梯度下降,而对每次预测值直接调整 \theta。伪代码如下

这里有点像梯度下降的感觉,不过没有求导,只是借用了一下它的原理。

  • 当预测正确后,y^{(j)}-\hat{y}^{(j)}=0,这时候不需要调整 \theta

  • 当预测出错后,y^{(j)}-\hat{y}^{(j)}=\pm2,这时候就可以要调整 \theta 值使得拟合函数更靠近数据且感知机更好分割数据

调整过程如下

一直调整下去最终结果会将两边数据分开

基于梯度的感知机

我们先来看看原来的线性拟合函数是怎么样的

方方正正的,出错率还很高,拟合也不是很理想。这时候就想,要不我把这个函数变曲一点?这样的话拟合效果会好一点,而且出错率就不是 1-0,可以是 1-一个小数,出错率会稍微降低一点。如图所示

这个平滑的函数一般使用 Sigmoid 函数。变曲了之后,出错率就可以用公式表示了

除了上面这些优点,我们还可以用梯度下降的方法来寻找最优的 \theta 值了。

梯度下降

假设现在的 Cost Function 是

对其中参数 a 求导后,就可以用梯度下降的方法去求最优的 a 值了。

当然这里的 Cost Function 是假定的,而使用不同的回归函数也会有不一样的 Cost Function。比如下图两个不同的 Cost Function

多个类的分类

多个类的分类可以借用 Bayes 的分类方法,求数据属于哪个类的概率高,哪个高选哪个,函数表示成这样

而感知机里的分割函数要写成这样

计算给定特征值后属于哪个类的概率

而 Negative Log Likelihood 的代价函数就是

多次梯度下降迭代后,\theta 值就可以调整到最优了,

正则化

在梯度下降的迭代过程中肯定少不了要正则一下,以此防止下面的过拟合情况

下面给出使用 Negative Log Likelihood 并添加正则因子的代价函数

相关文章

  • 机器学习笔记02-支持向量机SVM(上)

    目录 什么是SVM 线性分类器的含义 怎么找线性分类器 1.什么是SVM SVM支持向量机,号称机器学习的拦路虎。...

  • 机器学习: 线性分类器

    之前说过线性回归可以帮我们在给定特征值后预测对应的结果,而在分类上线性回归也是可以的。 Perceptron Cl...

  • 机器学习 - 草稿

    线性分类器 发散问题不可学习 支持向量机器(SVM):二分类(学习能力):《统计学习方法》:较好的泛化能力,过拟合...

  • 损失函数

    线性分类器简介 线性评分函数 阐明线性分类器 损失函数多分类SVMsoftmax分类器SVM和softmax的比较...

  • 【火炉炼AI】机器学习008-简单线性分类器解决二分类问题

    【火炉炼AI】机器学习008-简单线性分类器解决二分类问题 (本文所使用的Python库和版本号: Python ...

  • Logistic分类实战

    Logistic分类是一种很经典的线性分类器,现在参考《机器学习及实践》使用它来练习一下。案例就是很经典的...

  • BAT机器学习面试1000题系列(第31~40题)

    31.线性分类器与非线性分类器的区别以及优劣如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则...

  • 基于sklearn的线性支持向量机分类器

    原理 分类器 机器学习的分类器,均可以看成一个或一组超平面,将label不同的数据点在数据空间中分开。对于线性可分...

  • 线性分类器与性能评价(R语言)

    原文链接:线性分类器与性能评价(R语言) 微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwin...

  • 机器学习成长记录

    1.大纲 机器学习类型: [1]输出空间类型分类:(1)二元分类是机器学习领域非常核心和基本的问题。二元分类有线性...

网友评论

    本文标题:机器学习: 线性分类器

    本文链接:https://www.haomeiwen.com/subject/aeefeqtx.html