SVM原理:

1.优化目标:

logisic regression:

如上图所示,支持向量机是在logistic回归的基础上改变的。支持向量机和逻辑回归略有不同,正则化参数写为C,且在第一个优化项之前,(如下所示中的C的位置)。并且去掉了参数1/m。(去掉参数1/m,对结果没有影响,下图中的红色部分有解释。)。其中的参数C可以近似理解为

即目标函数变为下式:

Large Margin Intuition:

SVM的假设函数是:

当y=1时,想要

>=1。而上述的假设函数是仅仅
>=0即可,所以相当于有了一个安全间隔。(吴恩达老师是这样解释的)。y=0,同理。

在如下图所示的公式优化后:

目标函数就变为下式所示:

在目标函数中的参数C very large时,相当于正则化参数足够大,即产生过拟合;

因此当C不是很大时,SVM则恰可以正好分类。

The mathematics behind large margin classification (optional)

从上述两页的ppt可以看出两个向量之间的点乘可以写成下述形式:

所以X向量在参数

向量上的投影越大,则
的值可以越小,符合下述目标关系表达式:

值尽量小的前提下,使:

即如下图所示,间隔越大,X向量在参数

向量上的投影越大。

Kernels I

如下图所示,特征x1,x2,x1x2,

,
是目标函数中的一些特征,然而高阶项不一定是我们需要的特征。采用构造特征的方法来构造目标函数式。

如下图所示,首先在训练样本中选取三个标记,

。选用高斯核函数作为构造新特征的方式。

如下图所示,如果选取的点x距离标记点较劲,则新特征值为1,如果较远,则为0.

下图所示参数

对结果的影响,如果偏小,会出现变化过快,偏差小,方差大。如果偏大,会出现偏差大,方差小的情况

具体分类效果如下图所示:

在参数

求得之后,只有距离l1,l2较近的点被分类为1,其他点分类为-1.

Kernels II

选择的标记点和训练样本点一致的情况,如下所示:

选择l1,l2,l3等等这些标记为训练样本,如下图所示:

参数C和参数

的取值大小对结果的影响如下所示:

吴恩达SVM的ppt:

chenyuanyuannoif/SVM​github.com

代码来自:

代码思想:

对文档中的词建立一个3000维度的词典。为每篇邮件建立一个3000维度的向量,其中向量每一维度的值为词出现的次数(如果词在词典中)。之后把3000维度的向量作为本封邮件的特征进行训练。

源代码地址:

https://github.com/abhijeet3922/Mail-Spam-Filtering​github.com

上述代码是组成词典的代码;

上述是对每篇文档(邮件)建立一个3000维向量的代码。

数据集:

https://www.dropbox.com/s/yjiplngoa430rid/​www.dropbox.com

参考文章:

Email Spam Filtering : A python implementation with scikit-learn​appliedmachinelearning.blog

svm分类代码_SVM的原理及实现垃圾邮件分类代码解析:相关推荐

  1. Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说

    Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报  分类: 机器学习(19)  听说朴 ...

  2. 基于Bayes和SVM的垃圾邮件分类实现(改进版)

    对本文标题进行分词和提取关键词,本文关键词如下:分类.垃圾邮件分类(spam).Bayes.SVM.改进版(体现在哪里?).本文不对Bayes.SVM原理做过多的摄入和解释,主要是使用这些算法做一个基 ...

  3. Python微调文本顺序对抗朴素贝叶斯算法垃圾邮件分类机制

    封面图片:<Python可以这样学>,ISBN:9787302456469,董付国,清华大学出版社 图书详情(京东): ================= 关于朴素贝叶斯算法中文垃圾邮件分 ...

  4. 使用线性SVM实现对垃圾邮件分类

    本文内容 代码地址 使用线性SVM实现对垃圾邮件分类 (1)问题描述: (2)实现过程: 实验小结: 代码地址 代码地址 使用线性SVM实现对垃圾邮件分类 (1)问题描述: ​ 编程实现一个垃圾邮件S ...

  5. 朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现

    朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现 以下代码为本人学习后,修改或补充后的代码实现,数据集和原代码请参考:https://github. ...

  6. 朴素贝叶斯-垃圾邮件分类实现

    1. 前言 <朴素贝叶斯算法(Naive Bayes)>,介绍了朴素贝叶斯原理.本文介绍的是朴素贝叶斯的基础实现,用来垃圾邮件分类. 2. 朴素贝叶斯基础实现 朴素贝叶斯 (naive B ...

  7. 垃圾邮件分类 python_在python中创建SMS垃圾邮件分类器

    垃圾邮件分类 python 介绍 (Introduction) I have always been fascinated with Google's gmail spam detection sys ...

  8. 垃圾邮件分类-朴素贝叶斯算法

    目录 一.贝叶斯公式原理 二.使用朴素贝叶斯进行文档分类 三.Python代码实现 一.贝叶斯公式原理 在基础的概率学中,经典的有求独立事件的概率以及求关联时间的概率,贝叶斯所要解决的问题就是在有条件 ...

  9. 基于朴素贝叶斯+Python实现垃圾邮件分类和结果分析

    基于朴素贝叶斯+Python实现垃圾邮件分类 朴素贝叶斯原理 请参考: 贝叶斯推断及其互联网应用(二):过滤垃圾邮件 Python实现 源代码主干来自: python实现贝叶斯推断--垃圾邮件分类 我 ...

最新文章

  1. redis 安装启动及设置密码windows
  2. AR与大数据 珠联璧合带来的无限想象空间
  3. linux打开文件命令_详解Linux中3个文件查找相关命令
  4. linux rps值大小,Linux系统中RPS/RFS介绍
  5. python︱imagehash中的四种图像哈希方式(phash/ahash/dhash/小波hash)
  6. sql语句回忆录1-多表连接子查询
  7. jQuery基础资料
  8. php smarty 调试模式,Smarty3调试
  9. 詹森不等式到底是什么?
  10. Foxmail中Exchange设置账户总是提示密码错误
  11. 计算机不定时黑屏,宏基acer 4736ZG不定时黑屏,时亮时不亮通病维修
  12. 《国际贸易术语解释通则》概述中关于2000年通则的主要内容
  13. android studio 横向拖动条,Android HorizontalScrollView内子控件横向拖拽实例代码
  14. 苹果账户登录_开心,安卓手机支持和iPhone内APP账户互通
  15. Vue判断IE浏览器版本并提示
  16. 关于Proteus的复制粘贴快键
  17. 获取checkbox选中状态的两种方式_张童瑶的博客
  18. linux恶意代码检查软件,Yara:恶意软件检测神器
  19. Unity 屏幕特效 之 简单地调整颜色的 色散效果 的实现
  20. 公告:CSDN新版个人空间上线公测

热门文章

  1. 提高效率 JavaScript调试 js 调试工具
  2. STM32F429HAL库时钟系统学习笔记
  3. 在Idea中为项目添加Tomcat配置
  4. 18句正能量话语,送给自己也送给你
  5. Java中IDEA,Springboot实现手机获取验证码和倒计时
  6. python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
  7. 跨设备链路聚合_企业核心经常用到的链路聚合技术,原理与实现
  8. oracle函数 power(x,y)
  9. 如何避免学习linux必然会遇到的几个问题
  10. native和html5的通信方案