0 - 算法描述

  感知机算法是一类二分类算法,其问题描述为,给定一个训练数据集

$$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$

其中$x_i\in \mathbb{R}^n,y_i\in\{-1,1\},i=1,2,\cdots,N$,求参数$w,b$,使得以下损失函数极小化问题的解

$$\min_{w,b}L(w,b)=\min -\sum_{x_i\in M}y_i(w\cdot x_i+b),$$

其中$M$为误分类点的集合。

  下一节给出损失函数的推导过程。

1 - 推导过程

  感知机算法求解的数据集必须具有线性可分性,其定义为,对于数据集

$$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$

其中$x_i\in \mathbb{R}^n,y_i\in\{-1,1\},i=1,2,\cdots,N$,如果存在某个超平面$S$

$$w\cdot x + b = 0,$$

能够将数据集的正类和负类完全正确地划分到超平面的两侧,即对所有$y_i=+1$的样本$i$,有$w\cdot x_i+b>0$,对所有$y_i=-1$的样本$i$,有$w\cdot x_i + b < 0$,则称数据集$T$为线性可分数据集(linearly separable dataset)。

  感知机算法即是求解线性可分数据集中的超平面$S$的算法。由于超平面是由$w$和$b$确定的,因此学习超平面的目标即是确定参数$w$和$b$,按照梯度下降法优化要求,需要定义一个关于参数$w$和$b$的损失函数进行优化。

  注意到,损失函数被期望是连续可导的,因此不能直接选取误分类点个数作为损失函数,在感知机中,选取误分类点到超平面$S$的总距离作为损失函数。对于输入空间$\mathbb{R}^n$中任意一点$x_i$到超平面$S$的距离为

$$\frac{1}{\left \|  w\right \|_2}\left | w \cdot x_i + b \right |,$$

其次,对于误分类点来说,满足

$$-y_i(w_i\cdot x_i+b)>0,$$

因此可以把距离公式的绝对值替换得到

$$-\frac{1}{\left \|  w\right \|_2}y_i\left ( w \cdot x_i + b \right ),$$

假设超平面$S$的误分类集合为$M$,那么所有误分类点到超平面$S$的总距离为

$$-\frac{1}{\left \|  w\right \|_2}\sum_{x_i\in M}y_i\left ( w \cdot x_i + b \right ),$$

不考虑$\frac{1}{\left \|  w\right \|_2}$,则感知机$sign(w\cdot x+b)$的损失函数定义为

$$L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b).$$

2 - 参考资料

《统计学习方法》,李航

【分类算法】感知机(Perceptron)的更多相关文章

  1. matlab 实现感知机线性二分类算法(Perceptron)

    感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = ...

  2. 感知机(perceptron)概念与实现

    感知机(perceptron) 模型: 简答的说由输入空间(特征空间)到输出空间的如下函数: \[f(x)=sign(w\cdot x+b)\] 称为感知机,其中,\(w\)和\(b\)表示的是感知机 ...

  3. 2. 感知机(Perceptron)基本形式和对偶形式实现

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  4. 神经网络、logistic回归等分类算法简单实现

    最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...

  5. Logistic回归分类算法原理分析与代码实现

    前言 本文将介绍机器学习分类算法中的Logistic回归分类算法并给出伪代码,Python代码实现. (说明:从本文开始,将接触到最优化算法相关的学习.旨在将这些最优化的算法用于训练出一个非线性的函数 ...

  6. [分类算法] :SVM支持向量机

    Support vector machines 支持向量机,简称SVM 分类算法的目的是学会一个分类函数或者分类模型(分类器),能够把数据库中的数据项映射给定类别中的某一个,从而可以预测未知类别. S ...

  7. K近邻分类算法实现 in Python

    K近邻(KNN):分类算法 * KNN是non-parametric分类器(不做分布形式的假设,直接从数据估计概率密度),是memory-based learning. * KNN不适用于高维数据(c ...

  8. 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比 ...

  9. 分类算法之贝叶斯(Bayes)分类器

    摘要:旁听了清华大学王建勇老师的 数据挖掘:理论与算法 的课,讲的还是挺细的,好记性不如烂笔头,在此记录自己的学习内容,方便以后复习.   一:贝叶斯分类器简介 1)贝叶斯分类器是一种基于统计的分类器 ...

随机推荐

  1. SUSE Ceph Cephfs - Storage6

    (1)Policy 配置文件,添加MDS角色定义 # vim /srv/pillar/ceph/proposals/policy.cfg # MDS role-mds/cluster/mds*.sls ...

  2. Winform工程反编译后的工作

    Winform工程,反编译后,虽然能用,但不太好用. 因为form并没有像原生的那样. 所以,需要几个步聚: 1. 用ResGen工具,把二进制资源文件还原为xml格式: ResGen fromXX. ...

  3. 《hello--world团队》第五次作业:项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 <hello--worl ...

  4. sudo 以管理员身份运行脚本--tee方式记录脚本日志

    说明:当运行脚本时,常遇到权限不足等,可以用以上方法来以管理员权限运行 1.编辑/etc/sudoers (注意,这里使用 visudo 而不是 vi 来设置.) 2.visudo或 给与/etc/s ...

  5. ubuntu下新立得(synaptic)软件包管理器安装

    1.从ubuntu下的软件中心(面板主页中输入soft即可找到)搜索安装synaptic后,打开新立得一闪就自动关了.解决办法为: 1.1命令行下卸载,命令行下重新安装: 卸载: #purge表示卸载 ...

  6. P3599 Koishi Loves Construction——构造题

    题目 Task1:试判断能否构造并构造一个长度 $n$ 的 $1...n$ 的排列,满足其 $n$ 个前缀和在模 $n$ 的意义下互不相同 Task2:试判断能否构造并构造一个长度 $n$ 的 $1. ...

  7. 九.配置SMB共享(Samba共享)

    • Samba 软件项目 – 用途:为客户机提供共享使用的文件夹 – 协议:SMB(TCP 139).CIFS(TCP 445)  • 所需软件包:samba • 系统服务:smb   管理共享账号 ...

  8. java上传1t文件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...

  9. selenium + chromeDriver的ip代理设置

    from selenium import webdriver from selenium.webdriver.chrome.options import Options import zipfile ...

  10. 在application-context.xml中配置多个property-placeholder

    如下所示,直接写多个<context:property-placeholder>标签是会报错的. <context:property-placeholder location=&qu ...