Ho-Kashyap 算法

任务:给定样本{x1,x2,...,xn},xi=[xi1,xi2,⋯,xid]T\{x_1,x_2,...,x_n\},x_i=[x_{i1},x_{i_2},\cdots,x_{id}]^T{x1​,x2​,...,xn​},xi​=[xi1​,xi2​​,⋯,xid​]T,设每个样本属于两类中的某一类{1,−1}\{1,-1\}{1,−1},用线性模型对样本进行划分。
方法
将每个xix_ixi​转化成yiy_iyi​,如果xix_ixi​属于{1}类,yi=[1,xi1,xi2,⋯,xid]Ty_i=[1,x_{i1},x_{i_2},\cdots,x_{id}]^Tyi​=[1,xi1​,xi2​​,⋯,xid​]T,如果属于{-1}类,则yi=[−1,−xi1,−xi2,⋯,−xid]Ty_i=[-1,-x_{i1},-x_{i_2},\cdots,-x_{id}]^Tyi​=[−1,−xi1​,−xi2​​,⋯,−xid​]T。
如果使用感知器方法,即寻找一个权向量aaa,使得对于所有i都有aTyi=bi>0a^Ty_i=b_i>0aTyi​=bi​>0,那么可以使用感知器准则函数县官的优化方法,如批处理感知器算法等

但是使用感知器的方法对于线性不可分的样本将会十分棘手,可能会导致算法无法收敛



对于线性不可分的问题常常采用最小化均方误差的方法进行优化,例如需要最小化:
Js=∥Ya−b∥2,Y=[y1,y2,⋯,yn]T,b>0为超参(裕度)J_s=\|Ya-b\|^2,Y=[y_1,y_2,\cdots,y_n]^T,b>0为超参(裕度)Js​=∥Ya−b∥2,Y=[y1​,y2​,⋯,yn​]T,b>0为超参(裕度)▽aJs=2YT(Ya−b)\triangledown_a J_s = 2Y^T(Ya-b)▽a​Js​=2YT(Ya−b)采用这种梯度迭代更新a的方法例如:

但是最小化均方误差的算法对于本来就是线性可分的问题表现的并不优秀例如:


找到MSE最小的解却不是一个可分的解。



Ho-Kashyap Algorithm在采用最小均方误差的前提下又保证对于所有线性可分的问题,必然找到可分的解。

定义:
Js=∥Ya−b∥2,Y=[y1,y2,⋯,yn]TJ_s=\|Ya-b\|^2,Y=[y_1,y_2,\cdots,y_n]^TJs​=∥Ya−b∥2,Y=[y1​,y2​,⋯,yn​]T▽aJs=2YT(Ya−b)=2YTe\triangledown_a J_s = 2Y^T(Ya-b)=2Y^Te▽a​Js​=2YT(Ya−b)=2YTe▽bJs=−2(Ya−b)=−2e\triangledown_b J_s = -2(Ya-b)=-2e▽b​Js​=−2(Ya−b)=−2e其中e定义为误差向量。

HoK算法对b进行迭代优化,而直接让▽aJs=0⇔YTe=0⇔a=(YTY)−1YTb=Y†b\triangledown_a J_s=0\Leftrightarrow Y^Te=0\Leftrightarrow a=(Y^TY)^{-1}Y^Tb=Y^\dag b▽a​Js​=0⇔YTe=0⇔a=(YTY)−1YTb=Y†b(使用了伪逆)。

由于我们希望最终的解能线性可分,即Ya^=b^>0Y\hat a=\hat b>0Ya^=b^>0,所以我们希望迭代b的过程中,b不能小于0,这个通过初始化b并且在迭代过程中不允许b减小(仅保留对b的负梯度中正的部分)
b(k+1)=b(k)+η(k)▽bJs+=b(k)+2η(k)e+,e+=12(e+∣e∣)b(k+1)=b(k)+\eta(k)\triangledown_b J_s^+=b(k)+2\eta(k)e^+,e^+=\frac12 (e+|e|)b(k+1)=b(k)+η(k)▽b​Js+​=b(k)+2η(k)e+,e+=21​(e+∣e∣)
同时为了避免死循环设置了kmaxk_{max}kmax​最大迭代次数

重点标记算法停止条件abs(e)≤bminabs(e)\le b_{min}abs(e)≤bmin​ ,bmin=min(b(0))b_{min}=min(b(0))bmin​=min(b(0))即初始b中最小的元素,某个正数。

证明当η∈(0,1)\eta\in(0,1)η∈(0,1)时,对于线性可分问题,HoK必然收敛到一个可分的解。

如果在迭代过程的第k步出现了Ya(k)=b(k)Ya(k)=b(k)Ya(k)=b(k),即e(k)=0e(k)=0e(k)=0那么,此时算法已经终止,且由于b(k)>0,所以自然也找到了一个线性可分的解。

要担心的是如果出现了某种情况使得e(k)e(k)e(k)中所有元素都小于等于0,且e(k)不为0向量。此时e+(k)=0e^+(k)=0e+(k)=0,算法将不会迭代更新,我们也无法判定是否找到了一个线性可分的解,或者线性可分的解是否存在。

幸运的是这种情况不会出现,因为令
▽a(k)Js=2YT(Ya(k)−b(k))=2YTe(k)=0⇔YTe(k)=0⇔eT(k)Y=0\triangledown_{a(k)} J_s=2Y^T(Ya(k)-b(k))=2Y^Te(k)=0\Leftrightarrow Y^Te(k)=0\Leftrightarrow e^T(k)Y=0▽a(k)​Js​=2YT(Ya(k)−b(k))=2YTe(k)=0⇔YTe(k)=0⇔eT(k)Y=0
假设问题是线性可分的,那么就存在b^>0,a^\hat b>0,\hat ab^>0,a^,满足Ya^=b^Y\hat a=\hat bYa^=b^。
进而et(k)Ya^=0=et(k)b^e^t(k)Y\hat a=0=e^t(k)\hat bet(k)Ya^=0=et(k)b^
由于b^>0\hat b>0b^>0所以e(k)必然为0向量,或者e(k)中有正有负。对于0向量我们可以说已经找到了一个线性可分的解。对于后者则可以继续优化,但是如果问题是线性可分的就绝对不会出现e(k)e(k)e(k)中所有元素都小于等于0且e(k)不为0向量的情况。

说明YY†YY^\dagYY†是对称的,半正定的,满足:

有e(k)=Ya(k)−b(k)=YY†b(k)−b(k)=(YY†−I)b(k)e(k)=Ya(k)-b(k)=YY^\dag b(k)-b(k)=(YY^\dag -I)b(k)e(k)=Ya(k)−b(k)=YY†b(k)−b(k)=(YY†−I)b(k)

到这里为止说明了∥e(k)∥\|e(k)\|∥e(k)∥是单调递减的,又因为其有下界0,所以其必定是收敛的。
由于其收敛所以有:
lim⁡k→∞η(1−η)∥e+(k)∥2+η2e+t(k)YY†e+(k)=0\lim\limits_{k\to\infin} \eta(1-\eta)\|e^+(k)\|^2+\eta^2e^+t(k)YY^\dag e^+(k)=0k→∞lim​η(1−η)∥e+(k)∥2+η2e+t(k)YY†e+(k)=0
当η∈(0,1)\eta\in(0,1)η∈(0,1)时,第一项为正,由于YY†YY^\dagYY†是对称的,半正定的,所以第二项也为正,进而
e+(k)→0⇔[∣e(k)∣+e(k)]→0⇔[∣e(k)∣+e(k)]Tb^→0e^+(k)\to0\Leftrightarrow[|e(k)|+e(k)]\to 0\Leftrightarrow[|e(k)|+e(k)]^T\hat b\to 0e+(k)→0⇔[∣e(k)∣+e(k)]→0⇔[∣e(k)∣+e(k)]Tb^→0
又有et(k)b^=0e^t(k)\hat b=0et(k)b^=0,故直接推出∣e(k)∣→0,e(k)→0|e(k)|\to 0,e(k)\to0∣e(k)∣→0,e(k)→0。

到此证明了如果问题是线性可分的,那么该算法一定收敛到可分的解,且满足MSE的准则


下面对上图中结束循环的条件 abs(e(k))<min(b(0))abs(e(k))<min(b(0))abs(e(k))<min(b(0))进行说明

事实上只要Ya(k)>0Ya(k)>0Ya(k)>0就可以停止循环,abs(e(k))<min(b(0))abs(e(k))<min(b(0))abs(e(k))<min(b(0))是比Ya(k)>0Ya(k)>0Ya(k)>0更严格的条件。
原因是:
Ya(k)=b(k)+e(k)≥b(0)+e(k))≥b(0)−abs(e(k))[这是因为b是不减的]Ya(k)=b(k)+e(k)\ge b(0)+e(k))\ge b(0)-abs(e(k))\\ [这是因为b是不减的]Ya(k)=b(k)+e(k)≥b(0)+e(k))≥b(0)−abs(e(k))[这是因为b是不减的]

当abs(e(k))<min(b(0))abs(e(k))<min(b(0))abs(e(k))<min(b(0))时,必然有:
Ya(k)≥b(0)−abs(e(k))>0Ya(k)\ge b(0)-abs(e(k))>0Ya(k)≥b(0)−abs(e(k))>0
证毕。

Ho-Kashyap Algorithm 原理笔记相关推荐

  1. 集群概述及原理笔记(1)

    it你好linux学习文档之集群概述及原理笔记(1) 一 前言 目前,越来越多的网站采用Linux操作系统,提供邮件.Web.文件存储.数据库等服务.也有非常多的公司在企业内部网中利用Linux服务器 ...

  2. 人工智能原理笔记------知识表示方法

    人工智能原理笔记------知识表示方法 知识表示 知识表示方法 非结构化方法 谓词逻辑表示法 命题 真值 论域(个体域) 谓词 函数 谓词逻辑组成 连接词 约束量词 谓词公式 谓词逻辑表示步骤 产生 ...

  3. 编译原理笔记(二)之词法分析

    编译原理笔记(二)之词法分析 1. 词法分析中的若干问题 1.1 基本概念 1.2 记号的属性 1.3 词法分析器的作用与工作方式 1.4 输入缓冲区 2. 模式的形式化描述 2.1 字符串与语言 2 ...

  4. zucc 编译原理 笔记

    zucc 编译原理 笔记 lec02 lec03 lec04

  5. 【微机原理笔记】第 1 章 - 微型计算机基础概论

    微机原理笔记 - 主页 第 1 章 微型计算机基础概论 1. 微型计算机系统 (1)微型控制机是嵌入计算机的一种 8 位或 16 位机,没有操作系统. (2)计算机的基本组成( 3+1 结构):CPU ...

  6. 线性判别函数(Python实现批感知器算法、Ho Kashyap算法和MSE多类扩展方法)——模式识别编程作业

    文章目录 写在前面 批感知器算法 Ho Kashyap算法 MSE多类扩展方法 Ref. 写在前面 本博客为模式识别作业的记录,实现批感知器算法.Ho Kashyap算法和MSE多类扩展方法,可参考教 ...

  7. 自考计算机网络原理笔记,自考计算机网络原理笔记(典藏版).pdf

    更多优质自考资料尽在百度贴吧自考乐园俱乐部 (/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你 2010 2010 考计算机网络原理笔记(典藏版) 网络发展阶段: 网络发 ...

  8. 雷达原理笔记之恒虚警概率检测

    雷达原理笔记--恒虚警概率检测 --南京理工大学许志勇老师的<雷达原理课程>浅析 恒虚警概率检测技术是雷达设计过程中经常涉及到的问题. 由于噪声的存在,雷达在探测目标时不可避免地会出现虚警 ...

  9. 计算机网络原理笔记 精整理 第六章 应用层

    计算机网络原理笔记 精整理 第六章 应用层 6.1域名系统DNS 6.1.1什么是域名 6.1.2域名的结构 6.1.3Internet中的域名服务器 6.1.4域名解析过程 6.2动态主机配置协议D ...

最新文章

  1. 继承static的注意点
  2. 叶明哲 | 数据中心空调那点事
  3. macOSX中使用python matplotlib模块的问题解决
  4. 自己动手写一个 strace
  5. vue-cli3.0相关的坑
  6. SVG 教程 (二)矩形
  7. 18. 四数之和(四指针,快排)
  8. 高德地图 Android API 的基站定位原理及使用方法
  9. 【ElasticSearch】Es 源码之 NetworkService 源码解读
  10. supermap许可 (*.lic9d)
  11. Rancher如何按计算资源调度
  12. 11年写的一篇文章----智能终端安全现状及前景展望
  13. 安装SQL Server2008,要重启机器,解决办法
  14. maxscale mysql5.7_Maxscale实现Mysql读写分离
  15. idea 设置重复代码检测
  16. html移动端弹窗,移动端弹窗
  17. java.net.ServerSocket详解
  18. HMI-44-【多媒体】开启新篇章
  19. 视频文件头解析之---avi
  20. 国产系统中标麒麟neokylin上的可视化大屏电子看板系统

热门文章

  1. 729. 我的日程安排表 I
  2. 会议OA项目(六)--- (待开会议、历史会议、所有会议)
  3. Nervos CKB初体验
  4. jsp 爱心宠物诊所源码_jsp宠物医院信息管理系统
  5. 第1090期AI100_机器学习日报(2017-09-12)
  6. ftl和html的区别?
  7. web表格CSS 属性
  8. 用最简单易懂的方式告诉大家——区块链到底是什么?
  9. There were errors checking the update sites: SSLHandshakeException: sun.secu解决方案
  10. JwtToken介绍与使用 超详细保姆级教程 内附详细示例代码