机器学习基石笔记2——感知机(Perceptron)
上一讲我们得到一个结论:学习模型 = 算法A + 假设集H
这里,我们应该使用什么样的假设集H呢?
这一讲,我们来看看对于一个二值分类问题(YES/NO)的一个简单的假设集:感知机(Perceptron)
1、感知机假设集
考虑银行给用户发信用卡的问题,银行会搜集客户的数据判断是否该给客户发信用卡。比如说,银行会搜集以下一些信息:
我们把这些信息用向量表示:\(x=(x_{1},x_{2},...,x_{d},)\),这个向量也叫做用户的“特征”。我们给该用户的每个特征赋予一个权重,给这个客户进行“打分”:
如果 \(\sum_{i=1}^{d}w_{i}x_{i}>threshold\) ,可以发卡
如果 \(\sum_{i=1}^{d}w_{i}x_{i}<threshold\) ,拒绝发卡
输出 \(y=\{-1,1\}\),(如果等于就忽略,拒绝分类),\(h\)的线性表达式为:
这就是感知机假设,其中\[sign(x)=\begin{cases} 1 & \text{ if } x>0 \\ -1 & \text{ if } x<0 \end{cases}\]
把假设表示为向量形式:
那么感知机到底长啥样呢?看看二维平面上的感知机:
可见,二维平面上感知机就是一条直线,把正类分到直线的一边,负类分到直线的另一边。
2、感知机学习算法(Perceptron Learning Algorithm, PLA)
学习模型 = 算法 + 假设集
假设集有了,现在需要确定算法,即从假设集中无数个假设选择最好的一个作为\(g\)。
假设集中有无数个假设,该怎么选?
idea:先拿一个假设出来作为初始的 \(g\),然后在训练集 \(D\) 上慢慢矫正 \(g\)!
PLA选择 \(g\) 的过程:
3、线性可分性
如果PLA在训练集 \(D\)上能停止(也就是到最后没有分错的情况),那么说 \(D\)是线性可分的。
线性可分和不可分的几个例子:
假设数据集线性可分,那么关于PLA,有两个事实:
(1)\(w_{t}\)会越来越接近\(w_{f}\)
(2)\(w_{t}\)不会长的太快
4、Pocket算法
通常数据中会有噪音,即不是线性可分的,此时最理想的方法就是找到那个能让出错降到最低的 \(g\),即:
非常可惜,这是一个NP问题。
我们可以用Pocket算法,每次选择一个最好的 \(w\)放到pocket里面:
由于Pocket算法每次都要检查新的\(w\)是不是比之前的好,因此它的速度会比较慢。