来源 | AI小白入门
作者 | 文杰
编辑 | yuquanle
原文链接

Fisher线性判别与线性感知机

​ Fisher线性判别和线性感知机都是针对分类任务,尤其是二分类,二者的共同之处在于都是线性分类器,不同之处在于构建分类器的思想,但是二者有异曲同工之妙。同时二者又可以与logistic回归进行对比,当然logistic回归的理论基础是概率。

1. Fisher线性判别

​ Fisher线性判别是一种线性分类思想,其核心是找一个投影方向将d维数据投影(降维)到一维,使得类内紧致,类间分离。在确定投影方向之后,决策分类器还并未完成,我们还需要分界点来划分不同的类。一般而言很少用Fisher线性判别作为分类模型,更多是借鉴Fisher线性判别的思想来指导降维。

以两类问题来分析:

由类内紧致,类间分离准则确定投影方向,我们可以定义如下类内距离和类间距离
m~i=1ni∑yj∈Xii=1,2yj=1ni∑yj∈Xii=1,2wTxj=wTmi\tilde{m}_{i}=\frac{1}{n_{i}}\sum_{y_{j}\in X_{i}}^{i=1,2}y_{j}=\frac{1}{n_{i}}\sum_{y_{j}\in X_{i}}^{i=1,2}w^{T}x_{j}=w^{T}m_{i} m~i​=ni​1​yj​∈Xi​∑i=1,2​yj​=ni​1​yj​∈Xi​∑i=1,2​wTxj​=wTmi​
其中m~i\tilde{m}_{i}m~i​表示降维后的类中心,mim_{i}mi​表示原始空间的类中心。

类内距离:
S~w=∑yj∈Xii=1,2(yj−m~i)2=∑xj∈Xii=1,2(wTxj−1ni∑xj∈XiiwTxj)2=wT∑xj∈Xii=1,2(xj−1ni∑xj∈Xiixj)2w=wTSww\tilde{S}_{w}=\sum_{y_{j}\in X_{i}}^{i=1,2}(y_{j}-\tilde{m}_{i})^{2}\\ =\sum_{x_{j}\in X_{i}}^{i=1,2}\left (w^{T}x_{j}-\frac{1}{n_{i}}\sum_{x_{j}\in X_{i}}^{i}w^{T}x_{j} \right )^{2}\\ =w^{T}\sum_{x_{j}\in X_{i}}^{i=1,2}\left (x_{j}-\frac{1}{n_{i}}\sum_{x_{j}\in X_{i}}^{i}x_{j} \right )^{2}w\\ =w_{T}S_{w}w S~w​=yj​∈Xi​∑i=1,2​(yj​−m~i​)2=xj​∈Xi​∑i=1,2​⎝⎛​wTxj​−ni​1​xj​∈Xi​∑i​wTxj​⎠⎞​2=wTxj​∈Xi​∑i=1,2​⎝⎛​xj​−ni​1​xj​∈Xi​∑i​xj​⎠⎞​2w=wT​Sw​w
其中Sw=∑xj∈Xii=1,2(xj−mi)2S_{w}=\sum_{x_{j}\in X_{i}}^{i=1,2}\left (x_{j}-m_{i} \right )^{2}Sw​=∑xj​∈Xi​i=1,2​(xj​−mi​)2表示每类样本在原始空间的一个类内距离。

类间距离:
S~b=(m~1−m~2)2=(1n1∑xj∈X1wTxj−1n2∑xj∈X2wTxj)2=wT(1n1∑xj∈X1xj−1n2∑xj∈X2xj)2w=wTSbw\tilde{S}_{b}=(\tilde{m}_{1}-\tilde{m}_{2})^{2}\\ =\left (\frac{1}{n_{1}}\sum_{x_{j}\in X_{1}}w^{T}x_{j}-\frac{1}{n_{2}}\sum_{x_{j}\in X_{2}}w^{T}x_{j} \right )^{2}\\ =w^{T}\left (\frac{1}{n_{1}}\sum_{x_{j}\in X_{1}}x_{j}-\frac{1}{n_{2}}\sum_{x_{j}\in X_{2}}x_{j} \right )^{2}w\\ =w^{T}S_{b}w S~b​=(m~1​−m~2​)2=⎝⎛​n1​1​xj​∈X1​∑​wTxj​−n2​1​xj​∈X2​∑​wTxj​⎠⎞​2=wT⎝⎛​n1​1​xj​∈X1​∑​xj​−n2​1​xj​∈X2​∑​xj​⎠⎞​2w=wTSb​w
其中Sb=∑xj∈Xii=1,2(m1−m2)2S_{b}=\sum_{x_{j}\in X_{i}}^{i=1,2}\left (m_{1}-m_{2} \right )^{2}Sb​=∑xj​∈Xi​i=1,2​(m1​−m2​)2表示每类样本在原始空间的一个类间距离。

所以为了使类内紧致,类间分离,可以最大化如下目标函数:
max⁡J(w)=S~bS~w=wTSbwwTSww\max J(w)=\frac{\tilde{S}_{b}}{\tilde{S}_{w}}=\frac{w^{T}{S}_{b}w}{w^{T}{S}_{w}w} maxJ(w)=S~w​S~b​​=wTSw​wwTSb​w​
等价于max⁡(wTSbw)s.t.wTSww=c\max(w^{T}{S}_{b}w) s.t. w^{T}{S}_{w}w=cmax(wTSb​w)s.t.wTSw​w=c,由拉格朗日乘子法有
L(w,λ)=wTSbw−λ(wTSww−c)L(w,\lambda)=w^{T}{S}_{b}w-\lambda(w^{T}{S}_{w}w-c) L(w,λ)=wTSb​w−λ(wTSw​w−c)
可以看出目标函数是关于w的二次凸规划,极值在导数为0处取到,对上式求导有Sbw∗−λSww∗=0S_{b}w^{*}-\lambda S_{w}w^{*}=0Sb​w∗−λSw​w∗=0,如果SwS_{w}Sw​可逆的话,即
(Sb−λSw)w=0Sw−1Sbw∗=λw∗(S_{b}-\lambda S_{w})w=0\\ S_{w}^{-1}S_{b}w^{*}=\lambda w^{*} (Sb​−λSw​)w=0Sw−1​Sb​w∗=λw∗
也就是说www是(Sb−λSw)(S_{b}-\lambda S_{w})(Sb​−λSw​)的特征向量。将Sb=(m1−m2)2S_{b}=(m_{1}-m_{2})^{2}Sb​=(m1​−m2​)2带入有
Sw−1(m1−m2)(m1−m2T)w∗=λw∗S_{w}^{-1}(m_{1}-m_{2})(m_{1}-m_{2}^{T})w^{*}=\lambda w^{*} Sw−1​(m1​−m2​)(m1​−m2T​)w∗=λw∗
又(m1−m2T)w∗(m_{1}-m_{2}^{T})w^{*}(m1​−m2T​)w∗是一个标量,所以w∗=Sw−1(m1−m2)w^{*}=S_{w}^{-1}(m_{1}-m_{2})w∗=Sw−1​(m1​−m2​).

​ 虽然我们确定了投影方向,但是真正的决策函数还是未能确定,一般最简单的做法是直接在一维上找一个阈值直接将两类分开,但是如何确定阈值还需要定义分类的损失函数(类一致性准则)。

比如我们直接采用0-1损失,那么决策界则尽可能多的正确分类样本,另外如果我们采用Logistic回归的对数损失,那么我们的决策边界就不一样。从这个角度来看,线性判别分析和Logistic回归都是将数据映射到一维来进行分类,有没有不用降维直接进行分类的方法,下面就是感知机的分类思想。

2. 线性感知机

​ 线性感知机同样是基于线性分类思想,其核心是直接在高维空间找到一个超平面将两类样本尽可能的分开。即,定义点到超平面的距离,在保证线性可分的基础上最小化点到超平面的距离(等价于使得最难分的样本离超平面距离尽可能的大),但由于没有线性可分前提,所以感知机的目标函数是最小化错分样本到超平面的距离之和(线性损失),而分类正确的样本无损失。

首先定义线性超平面:
w⋅x+b=0w\cdot x+b=0 w⋅x+b=0
点到超平面的距离为1∣∣w∣∣2(w⋅xi+b)\frac{1}{||w||^{2}}(w\cdot x_{i}+b)∣∣w∣∣21​(w⋅xi​+b),即错分的样本到超平面的距离一定为负:
−1∣∣w∣∣2yi(w⋅xi+b)>0-\frac{1}{||w||^{2}}y_{i}(w\cdot x_{i}+b)>0 −∣∣w∣∣21​yi​(w⋅xi​+b)>0
感知机只考虑分类错误的样本,目标函数为最小化错分样本到超平面的距离之和:
min⁡−∑xi∈M1∣∣w∣∣2yi(w⋅xi+b)\min-\sum_{x_{i}\in M}\frac{1}{||w||^{2}}y_{i}(w\cdot x_{i}+b) min−xi​∈M∑​∣∣w∣∣21​yi​(w⋅xi​+b)
其中M为错分样本集合。因为感知机优化的目标是针对错误样本集来不断的调整参数,所以在使用梯度下降算法的时候梯度的计算只依赖于错分的样本。

找到超平面之后我们就可以基于超平面定义决策函数为
f(x)=sign(w⋅x+b)sign(x)={+1,x≥0−1,x<0f(x)=sign(w\cdot x+b)\\ sign(x)=\left\{\begin{matrix} +1, x \geq 0\\ -1, x<0 \end{matrix}\right. f(x)=sign(w⋅x+b)sign(x)={+1,x≥0−1,x<0​
再回过头看损失函数,我们发现感知机的损失与Logistic回归的对数损失不一样,感知机采用的损失直接是错误样本的f(x)f(x)f(x)值,而Logistic回归的损失是所有样本的对数损失(当然Logistic回归的f(x)=sigmoid(x)f(x)=sigmoid(x)f(x)=sigmoid(x))。

感知机的对偶形式

感知机的对偶形式是logistic回归一致,同SVM对偶形式推导一致。

可以说神经网络和SVM都是线性感知机的一种延伸,神经网络是引入非线性激活函数,而SVM则是使用核函数,SVM同时提出了软间隔分类。虽然说神经网络是从感知机过来的,但是神经网络引入非线性激活函数后,不仅失去了解释性,也使其与感知机渐行渐远,笔者倒是觉得SVM更像感知机,不仅提升了精度,同时保留了很好的解释性。

欢迎关注【AI小白入门】,这里分享Python、机器学习、深度学习、自然语言处理、人工智能等技术,关注前沿技术,求职经验等,陪有梦想的你一起成长。

【机器学习】Fisher线性判别与线性感知机相关推荐

  1. 线性判别准则与线性分类编程实践

    一.线性判别分析 (一)简介 线性判别分析(linear discriminant analysis,LDA)是对费舍尔的线性鉴别方法的归纳,这种方法使用统计学,模式识别和机器学习方法,试图找到两类物 ...

  2. 线性判别准则和线性分类算法

    一.线性判别-LDA         线性分类:指存在一个线性方程可以把待分类数据分开,或者说用一个超平面能将正负样本区分开,表达式为y=wx,这里先说一下超平面,对于二维的情况,可以理解为一条直线, ...

  3. Python 分类问题研究-Fisher线性判别

    [实验目的] 1.掌握常见机器学习分类模型思想.算法,包括Fisher线性判别.KNN.朴素贝叶斯.Logistic回归.决策树等: 2.掌握Python编程实现分类问题,模型评价指标.计时功能.保存 ...

  4. 朴素贝叶斯分类器与Fisher线性判别实践——水果识别为例

    开篇:本次博客主要分享二分类水果实现案例,样本构造显然不具备泛化.大数量特性以及背景均为纯白色是为了方便目标提取.大家若需要更好的水果样本,Github上有许多的优秀案例.本次代码计算效率较低,代码有 ...

  5. 模式识别(1)Fisher线性判别

    Fisher线性判别 分类是我们经常会遇到是问题,下面主要介绍Fisher线性判别,利用Fisher算法来分类UCI数据集中的Iris数据集和Sonar数据集. 一.数据集说明 UCI数据库是加州大学 ...

  6. fisher判别_经典模式识别:Fisher线性判别

    本文将介绍Fisher线性判别的原理和具体实践,阅读时间约8分钟,关注公众号可在后台领取数据集资源哦^-^ Fisher线性判别 1.背景介绍 生活中我们往往会遇到具有高维特性的数据,如个人信息,天气 ...

  7. Fisher线性判别算法原理及实现 MATLAB

    Fisher线性判别算法原理及实现 MATLAB 一.Fisher判别器原理 二.代码实现 clc; close all; clear; %% 生成数据 rng(2020); %指定一个种子 mu1 ...

  8. matlab fisher检验,FISHER线性判别MATLAB实现.doc

    FISHER线性判别MATLAB实现 Fisher线性判别上机实验报告 班级: 学号: 姓名: 算法描述 Fisher线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),将高维问题降低到一 ...

  9. Fisher线性判别

    Fisher线性判别 一.算法介绍 1.背景: 在应用统计方法解决模式识别问题时,一再碰到的问题之一就是维度问题,在低维空间里解析上或计算上行得通的方法,在高维空间里往往行不通.降低维度有时会成为处理 ...

最新文章

  1. 295. 数据流的中位数
  2. 以网络安全为例的大数据可视化设计
  3. HP6531s安装windows2003无法调节亮度的解决方法
  4. 微信小程序云开发 mysql_微信小程序云开发学习笔记(一)云数据库
  5. 中国.NET:东莞+长沙.NET俱乐部现场花絮及合肥、苏州、上海等地活动预
  6. 在线JSON在线对比差异工具
  7. SSH启动失败解决方法
  8. 无缝世界网游服务器架构的设计思路
  9. 免费在线SQL数据库SQL Fiddle使用简介
  10. matlab 图片数字化,基于MATLAB的尾流图像数字化处理
  11. 圣思园Spring精髓-Spring的底层设计思想
  12. (三)office2016-excel制作打钩按钮
  13. 西南大学计算机学院推免,2019年西南大学计算机与信息科学学院硕士研究生拟录取名单的公示(不含推免生)...
  14. 运算器的基本组成及操作过程
  15. 华为路由交换学习篇-STP生成树协议
  16. 云呼HTML自适应官网源码
  17. python考研人数数据分析统计服_2019年考研统计数据出炉:往届生考研人数占比48.23%...
  18. 八大排序算法总结——Java篇
  19. 使用aggregate函数计算平均数
  20. 共勉-所有努力中的人

热门文章

  1. [bzoj3727]PA2014 Final Zadanie
  2. indexOf()方法
  3. quic java_QUIC 协议网络库
  4. SublimeText如何快速设置代码自动补全?
  5. WIN7系统通知栏的图标不见了的解决方法
  6. 到底什么是谱聚类算法?
  7. 学会爱上iOS自动布局(Auto Layout)
  8. jvm与jit编译器的区别_了解jvm和jit编译器的第1部分
  9. 线程池有几种?分别有什么特点
  10. python正则表达式常用函数和正则表达式符号查询