感知机整理笔记

基于《统计学习方法》的感知机内容以及自己的理解整理如下。
应用场景
按李航老师的定义:感知机(perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别(取+1 ,-1二值),感知机对应于输入空间(特征空间)中将实例分为正负两类的分离超平面,属于判别模型。
使用场景较多,比如对网站某个广告位进行点击预估,就可以使用感知机离线训练样本,特征空间就是样本用户的浏览点击行为等,样本类别就是用户属于曝光、曝光点击。
感知机是1957年Rosenblatt提出,是神经网络与支持向量机的基础,感知机虽然是线性分类模型,但多层感知机组成的神经网络可以处理非线性问题,神经网络的单个神经元就是感知机。
 
感知机数学定义

  假设输入空间(特征空间),输出空间是,输入表示实例的特征向量,对应输入空间(特征空间)点;

输出表示实例的类别,输入空间到输出空间的映射函数称为感知机。

其中w b为模型参数,w*x表示内积,sign表示指示函数:

 

感知机几何解释

线性方程,对应于特征空间 Rn    超平面S,S的法向量为w,S的截距为b。超平面S将特征空间分为两部分,位于两部分(特征空间)

的点分为正负两类,因此也称为分离超平面。二维空间分离平面示意图:

 

 感知机的学习策略

给定训练集,需要找到模型参数w 、b,确定将正负样例正确分开的超平面。这时我们需要定义损失函数并极小化。损失函数一个自然的想法是误分类点

的总数,但它不是w 、b的连续可导数;另一个想法是计算所有误分类点到超平面S的距离,其中任一点到S的距离可表示为:

,其中是w的L2  范数。

对于误分类的数据(xi ,yi)有:

 

误分类点集合有:

 

误分类点到超平面S的距离为:

 

因此所有误分类点到超平面的距离为:,M为误分类点的集合。

 

不考虑就得到感知机的损失函数,感知机的学习策略就是在假设空间选取使最小的模型参数w 、b。

 

感知机损失函数极小化方法

感知机误分类集合M,所有点离超平面S越近,越小,而是连续可导的,对w求偏导得:

对b求偏导得:

 

训练时随机选取误分类点更新:

其中为学习率或步长。

比较直观的代码实现:

# 数据线性可分,二分类数据
# 此处为一元一次线性方程
class Model:
    def __init__(self):
        self.w = np.ones(len(data[0])-1, dtype=np.float32)
        self.b = 0
        self.l_rate = 0.1
        # self.data = data
    
    def sign(self, x, w, b):
        y = np.dot(x, w) + b
        return y
    
    # 随机梯度下降法
    def fit(self, X_train, y_train):
        is_wrong = False
        while not is_wrong:
            wrong_count = 0
            for d in range(len(X_train)):
                X = X_train[d]
                y = y_train[d]
                if y * self.sign(X, self.w, self.b) <= 0:
                    self.w = self.w + self.l_rate*np.dot(y, X)
                    self.b = self.b + self.l_rate*y
                    wrong_count += 1
            if wrong_count == 0:
                is_wrong = True
        return 'Perceptron Model!'
        
    def score(self):
        pass

 感知机的收敛性

Novikoff定理说明:1)线性可分的样本一定存在超平面将正负样本分开;

2)误分类次数有上限,经过有限次搜索可以找到样本完全正确分开的超平面,也就是说原始形式通过不断迭代是收敛的。

3)当样本线性不可分时,感知机算法不收敛,原始形式迭代过程会发生震荡。

4)感知机的算法存在许多解,依赖于初值选择,也依赖于误分类点在迭代过程中的顺序。

5)在增加约束条件下,可以得到唯一分离超平面。

 

感知机学习对偶形式

  感知机学习算法对偶形式:
  输入:线性可分的数据集其中,i=1,2...N,学习率

  输出:a,b: 感知机模型 ,其中a=

  1)

  2)在训练集中选取数据

  3)如果

  

  

  4)转至(2)直到没有误分类数据。

对偶形式中样本实例以内积形式预先计算出来,保存在Gram矩阵中

  对偶形式与原始形式本质一样,它出现的意义在于:样本点特征向量以内积事先计算好,放在Gram矩阵中,在更新参数a、b时,直接

通过查询矩阵,可以加快计算。

  不妨假设特征空间是,n很大,而样本行数N远小于n,如果采用原始形式时间复杂度为\Theta(n) ;采用对偶形式的话,直接在Gram矩阵

里查表就能拿到内积 x_jx_i ,所以这个误判检测的时间复杂度是 \Theta(N),大大降低了时间复杂度。

  换句话说感知机的对偶形式,通过提前计算好样本点内积并存储于Grama Matrix,把每轮数据迭代的时间复杂度,从特征空间维度n转移

到样本集大小的维度,达到了性能的提升。

 

参考推荐
李航《统计学习方法》

转载于:https://www.cnblogs.com/John-Geek-2018/p/10150405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值