机器学习基石笔记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\)是不是比之前的好,因此它的速度会比较慢。

posted on 2014-02-12 11:05  胡大牛  阅读(2359)  评论(0编辑  收藏  举报

导航