系列(二)中,对于SMO算法中有一个重要的代码:计算样本的预测类别。如下:

fXi = float(multiply(alphas,labelMat).T*(dataMatrix*dataMatrix[i,:].T)) + b  # 第i样本的预测类别
  • 1
  • 1

注意:.T的优先级高于*, dataMatrix*dataMatrix[i,:].T 形成一个行为m,列为1的矩阵,

multiply(alphas,labelMat) 是两个m行,1列的矩阵对应元素乘积,结束后还是100行1列。aiyi

中间的*,矩阵乘法,有相加的作用。X.T*X

注意此处xi,yi,ai 而dataMatrix[i,:] 是x

矩阵运算的理解,求和问题利用A.T*B解决A为需要求和的i组成的一个矩阵。B里面也可以带i,或常量

我们知道原始的预测类别计算公式是用决策面的参数w和b表示的,那么为什么这里的貌似不一样呢? 
原始的预测类别计算公式为: 

其中w可以表示为: 

然后分类函数可以转化为: 

关于这个的解释,july博客上说的比较清晰:

这里的形式的有趣之处在于,对于新点 x的预测,只需要计算它与训练数据点的内积即可(<.>表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。

这样子的表示形式和上面代码就一致了。

这儿还有一个现象可以分析出来:哪些是支持向量。 
答:alpha不等于0的为支持向量。

所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数alpha都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。 
为什么非支持向量对应的alpha等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。 
 
注意到如果 xi 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而alpha_i又是非负的,为了满足最大化,必须alpha_i等于 0 。这也就是这些非Supporting Vector 的点的局限性。

所以,在我们运行SMO算法程序之后,可以根据这个特点求得支持向量,也就是alpha不等于0。 

参考:http://blog.csdn.net/v_july_v/article/details/7624837

《Machine Learning in Action》

深入解析python版SVM源码系列(三)——计算样本的预测类别相关推荐

  1. vue3源码系列之计算属性computed原理剖析

    前言 vue3诸多API中computed的作用毋庸置疑,也算是我们开发中使用比较多的API了.今天就让我们来探究下computed底层到底做了什么.如果想要学好computed个人觉得还是需要将ef ...

  2. 彻底弄懂Python标准库源码(三)—— pprint模块

    目录 模块整体注释 依赖模块导入.对外暴露接口 saferepr函数--返回对象的字符串表示,并为无限递归数据结构提供保护 isreadable函数--返回对象的是否"可读" is ...

  3. adreno源码系列(三)dts配置与gpu列表

    以Find x3 pro设备树文件为例进行分析:https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm ...

  4. 源码解读_入口开始解读Vue源码系列(二)——new Vue 的故事

    作者:muwoo 转发链接:https://github.com/muwoo/blogs/blob/master/src/Vue/2.md 目录 入口开始解读Vue源码系列(一)--造物创世 入口开始 ...

  5. 高效阅读嵌入式源码系列一:静态分析神器understand软件基本操作

    系列文章目录 高效阅读嵌入式源码系列一:静态分析神器understand软件基本操作 高效阅读嵌入式源码系列二:understand阅读linux.uboot等源码 高效阅读嵌入式源码系列三:unde ...

  6. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

  7. php极速链,php PHP极速链 战群源码系列(全自动采集更新+引流神器无数据库版) WEB(ASP,PHP,...) 261万源代码下载- www.pudn.com...

    文件名称: php下载  收藏√  [ 5  4  3  2  1 ] 开发工具: PHP 文件大小: 15699 KB 上传时间: 2015-08-10 下载次数: 5 提 供 者: 田维莉 详细说 ...

  8. [darknet源码系列-3] 在darknet中,如何根据解析出来的配置进行网络层构建

    [darknet源码系列-3] 在darknet中,如何根据解析出来的配置进行网络层构建 FesianXu 20201120 at UESTC 前言 笔者在[1,2]中已经对darknet如何进行配置 ...

  9. [darknet源码系列-2] darknet源码中的cfg解析

    [darknet源码系列-2] darknet源码中的cfg解析 FesianXu 20201118 at UESTC 前言 笔者在[1]一文中简单介绍了在darknet中常见的数据结构,本文继续上文 ...

最新文章

  1. 【研究】大脑如何在“知道”与“无知”之间做出决定
  2. 花17000元在元宇宙里用Linux?这款VR电脑开启预售,头显就是主机的那种,搭载英特尔i7...
  3. C语言基础:时间转换成字符串 strftime的代码
  4. Java常见的乱码解决方式
  5. Html5必看:教你如何选择移动APP开发框架
  6. wxHtml 示例:wxHtmlEasyPrinting 测试
  7. Java 403 forbidden错误解决
  8. [LeetCode] 9. Palindrome Number
  9. linux nginx 安装_艾编程基础教程:Linux 环境下 Nginx 安装
  10. NOI Linux2.0使用系列视频集
  11. 用properties写的一个程序运行次数计数的程序代码,超过次数提示注册。
  12. 在中国程序员能不能干一辈子?水平差距再大也逃不掉这个噩梦吗?
  13. Spring相关笔记整理
  14. 【Bash百宝箱】shell作业控制(jobs、bg、fg)
  15. 基于matlab的直流调速仿真系统代码,基于Matlab的双闭环直流调速系统仿真研究毕业设计论文...
  16. android 11.0 去掉音量键电源键组合键的屏幕截图功能
  17. 使用 LaTeX 制作幻灯片
  18. java 格式化输出xml_Java格式化输出Xml
  19. mysql on.000002_mysql | 同乐学堂
  20. 宇宙为什么没有单独存在的夸克,强行将夸克拉出来会怎样?

热门文章

  1. win10 如何进入bios
  2. 【笔记】概统论与数理统计第七章知识点总结
  3. 《两种文化与科学革命》读后感
  4. 利用Eigen完成一元线性回归
  5. fastreport连接mysql
  6. .net core 3.1简体中文语言包,英文智能提示变成中文!
  7. MAC 自定义通知提醒 (定时提醒喝水)
  8. UE4发布LinuxServer
  9. 有关SAP系统函数的说明
  10. 中国电动汽车换电行业需求现状及未来发展规划报告2022-2028年版