感知机原理以及代码

参考:
林轩田机器学习基石
统计学习方法

感知机Perceptron

一. 模型

  • 感知机是二类分类的线性分类模型。把输入空间的实例划分为正负两类的分离超平面,它是线性分类模型,属于判别模型。
  • 函数:f(x)=sign(w*x+b),w表示超平面S法向量,x表示特征向量
  • 解决应用问题:分类问题。得到模型后可以对新输入的实例进行分类。

二.策略

如果给定的数据集是线性可分,也就说存在某个超平面S为w*x+b=0,它刚好可以把正负实例点划分开。那么感知机学习目的就是找到这么一个超平面。
如何确定呢?那就是我们的学习策略:定义损失函数并将其损失函数最小化。

  1. 损失函数是由所有误分类点的距离相加组成,它非负。
    在这里插入图片描述

三.算法

PLA算法

Perceptron Learning Algorithm(PLA)的核心思想是知错能改,逐步修正。

  • 实例点的错误划分为两种情况:
    (1) 实例x对应的y本应该是正,但是sign(w_t^T * x_n(t))为负。两个向量内积为负,几何定义上来看,两个向量夹角超过90°。在这里插入图片描述
    (2)实例x对应的y本应该是负,但是sign(w_t^T * x_n(t))为正。两个向量内积为正,几何定义上来看,两个向量夹角小于90°。
    此时w_t+1 = w_t+y_n(t)*x_n(t),w_t+1就是我们新的超平面S的法向量。直到所有的点正确的划分为结束。
    在这里插入图片描述
步骤
  1. 一开始我们的W_0=0,我们先找一个点做连线,它就是修正后的平面的法向量。w1=w_0+y_n(0)*x_n(0)在这里插入图片描述
  2. 我是正,但是放在了负的区域,夹角大于90°,修正
    在这里插入图片描述
  3. 我是负,放在了正的区域,夹角小于90°,修正
    在这里插入图片描述
PLA的遗留问
  1. PLA停不下来,找不到一条直线分割正负点,下图第一个可以,第二三个不行。
    在这里插入图片描述
    当处于第二种情况的时候,我们可以找犯错误最少的线。首先经过w_0,手上握住一根线,开始纠正错误。每一次出现线时,比较自己手上的线看看犯错时是不是少,是就替换,不是就接着纠正错误找线。直到手上握住的线中的错误点个数,就算纠正了也没我手上的好之后,结束。

  2. 停下来的PLA得到的直线g是不是与f接近呢?
    首先理想函数f会完美的划分正负区域,而且每一个点距离f的距离都会大于0,法向量w_f*x会与y同号,也就是两者相乘也会大于0。
    在这里插入图片描述
    那么f与g接近怎么判别呢?
    (1). 法向量w_f与修正更新后的w_t+1做内积,向量内积越大说明向量越接近,说明f和g会越来越接近。(注意:内积变大还有可能是向量的模引起的)
    在这里插入图片描述
    (2). 解决长度引起的内积变大
    首先PLA是有错才更正,其次我们的更新后的w_t+1的长度用求模来计算,我们把错误点x_n(t)换成最远的点,发现最多会多出的距离由x_n的决定。
    在这里插入图片描述
    证明最后一个公式:

参考: https://redstonewill.com/70/
最后一个公式的左边其实得到的是一个余弦,可以看到除了T再变动以外,其他都是固定给出的,所以当T越来越大时,w_f^T会和W_T接近。这也说明线性可分的停下来的PLA函数f和函数g会接近。

在这里插入图片描述

四.算法:原始形态

在这里插入图片描述

五.算法:对偶形态

为什么需要对偶形式?
因为它可以减少一位参数!原始形态的w,b可以被a_i所代替。
在这里插入图片描述
在这里插入图片描述

六. 代码

参考:https://blog.csdn.net/u010626937/article/details/72896144

# 原始形态
import numpy as np
import matplotlib.pyplot as plt
p_x = np.array([[3, 3], [4, 3], [1, 1]])
p_y = np.array([1, 1, 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值