数据模型:并不是简单地二维数据,多个维度或者对象的数据聚合起来
     {
          persion1's attr1:value1,...,persion1's attrN:valueN,persion2's attr1:value1,...,persion2's attrN:value1,whetherSuccess:value
     }
 
同一个问题:不同的分类方法的类比
          决策树:存在多个数值型输入,且这些数值所呈现的关系并不简单,决策树往往不是最有效的方法
          简单的线性分类:它只能找出一条分界线来,如果找不到,或者实际存在多条直线时,分类器会得到错误的答案
 
算法思想:
          核方法和SVM都是线性分类(类发现群组的聚类)的方法,不同的是在更高维度上计算两个向量间的点积,而简单的线性分类只是在二维空间里用点积来计算距离
          核方法:
                    用新的函数来取代原来的点积函数,将数据映射到更高维度的坐标空间去,并返回高维度空间内的点积,实际中会采取少数几种变换方法,常用径向基函数(radial-basis function):
                    接受两个向量作为输入,返回一个标量值,和点积不同的是,其是非线性的         
        通过调整gamma来得到最佳的线性分离
                    先用向量A和一个分类中的每个向量求距离,然后再求平均距离
 
          SVM:
                    使用LibSVM
 
数据的线性化是重点:
          1.是否问题:yes->1,no->0
          2.兴趣类的:
          单人的:可以用是否的方法处理
          成对的:则两人出现计数累加1次
          某些不同的兴趣爱好也是可能配对成功的,如滑雪与滑板;如果为每一个兴趣都建立一个变量,则分类器更加复杂;一种好的处理方法是将兴趣爱好按层级排列:第一级-第二级-第三级:滑雪和滑板都是雪地运动,雪地运行又是体育运动,如果两个人都对第三级的项目感兴趣,则分值为1,否则如果两个人都是对第二级的项目感兴趣,则分支为1,第一级的感兴趣,分值为0.5;即层级越高,赢取的分值越低
           
          3.数据的缩放:对不同度量单位的数值进行衡量时,需要将数据缩放为统一尺度[0,1],做归一化处理,即m(x)=(x-min(X))/(max(X)-min(X));或者构建成本函数,获得每个属性的权重  
 

1.数据的处理:

     婚介数据集:
          年龄、是否吸烟、是否要孩子、兴趣列表、家庭住址
 
     每一行数据包含了一对男女的信息以及是否匹配成功的标志(0和1)
  

     数据集中的数据是相互作用和非线性的,所以先用年龄和是否配对成功来分析各种分类算法的使用场景
 
2.决策树
     i.适用场景:
          根据数值边界来对数据进行划分的
 
     ii.处理过程:
          使用年龄来最决策树
            
               决策树更加适合自动分类

          
     iii.不使用场景:
          存在多个数值型输入,且这些数值所呈现的关系并不简单,决策树往往不是最有效的方法
 
3.基本的线性分类:
     i.思想:
          寻找每个分类中所有数据的平均值,并构造一个代表该分类中心位置的点,根据和每个中心位置的距离远近来进行分类
 
     ii.计算方法:
          
     
     iii.分类结果图:
          
 
     iv.距离的计算方法:
          a.欧几里得距离
          b.向量和点积
               先计算两个分类的中心点
               然后根据两个向量的点积的正负(夹角的大小)来判断属于哪个分类:
                    class="sign"((X-(M0+M1)/2)*(M0-M1))=sign(XM0-XM1+(M0*M0-M1*M1)/2)
 
     v.优劣性:
          它只能找出一条分界线来,如果找不到,或者实际存在多条直线时,分类器会得到错误的答案
 
4.数据的线性化:
     数据有数值型,也有分类型,决策树不需对数据进行预处理,但是其他分类器只能处理数值型数据,所有需要进行数据的数值化:
     i.是否问题:
          yes --> 1
          no --> 0
     ii.兴趣列表:
          单人的:可以用是否的方法处理
          成对的:则两人出现计数累加1次
          某些不同的兴趣爱好也是可能配对成功的,如滑雪与滑板;如果为每一个兴趣都建立一个变量,则分类器更加复杂;一种好的处理方法是将兴趣爱好按层级排列:第一级-第二级-第三级:滑雪和滑板都是雪地运动,雪地运行又是体育运动,如果两个人都对第三级的项目感兴趣,则分值为1,否则如果两个人都是对第二级的项目感兴趣,则分支为1,第一级的感兴趣,分值为0.5;即层级越高,赢取的分值越低
 
     iii.地理位置的距离:
          利用Yahoo Maps来根据地址为邮编得到经度和纬度,然后将两地的纬度差*69.1,经度差*53,求欧几里得距离
 
     iv.对数据进行缩放:(也可用成本函数进行计算)
          对不同度量单位的数值进行衡量时,需要将数据缩放为统一尺度[0,1],做归一化处理,即m(x)=(x-min(X))/(max(X)-min(X))
            
5.核方法:(超越线性分类的方法,来解决寻找一条分界线额局限性)
     i.通过对数据进行变换实现线性分类是有可能的
    
          
          可以对x、y求平方,进行变化后,可以寻找一条分界线,或者数据的多维变换:a=x^2,b=x*y,c=y^2,在多维空间里寻找两个分类的分界线,但是将数据投影到很多维度上又不切实际
 
     ii.核技法:
          用新的函数来取代原来的点积函数,将数据映射到更高维度的坐标空间去,并返回高维度空间内的点积,实际中会采取少数几种变换方法,常用径向基函数(radial-basis function):
               接受两个向量作为输入,返回一个标量值,和点积不同的是,其是非线性的通过调整gamma来得到最佳的线性分离
 
     iii.坐标点与均值点间的距离:
          先对一组向量求均值点,然后向量A与均值点的点积,与先用向量A和向量组中的每一个向量求点积,然后在求均值的效果一样,所有直接计算某个坐标点与分类中其余每个坐标点的点积或者径向基函数,然后再求均值
                
          offset参数是偏移量,在转换后的空间中也会变化,因其计算过程费时,所以预先为某个数据集计算一次偏移量,然后调用的时候传入
 
6.支持向量机
     i.数据集
          
               大多数的数据都是远离分界线的,所以判断坐标点的分类与是否位于直线的某一侧并没有太大的实际意义
 
     ii.支持向量机:
          广为认知的一组方法的统称,用来解决上述问题的分类器:尝试找出一条尽可能远离所有分类的线,这条线被称为最大间隔超平面(Maximun-Margin hyperplan)
 
     iii.例子:
          此处选择分界线的依据是:寻找两条分别经过各分类相应坐标点的平行线,使其与分界线的距离尽可能的远;而对于新数据点,通过观察位于分界线的哪一侧类判断其所属的分类;同时,只有位于间隔区边缘的坐标点才是确定分界线位置所必须的,因此可以去掉冗余的数据,而分界线处于相同的位置,将这条分解称为支持向量;而寻找支持向量,并利用其来寻找分界线的算法及时支持向量机
         
 
     iv.应用:
          面部表情分类
          军事数据侦测入侵者
          预测蛋白质结构
          笔迹识别
          确定地震期间的潜在危害
 
     v.LIBSVM支持向量机的使用
          a.从包含两个列表的元组中读取数据,一个列表含有分类数据,另一个函数输入数据
          b.示例:
    

                

          
               c.对于婚介数据集:
    
          使用交叉验证来训练模型,接收一个参数n,将数据拆为n个子集,每次将一个子集作为测试集,利用其它子集对模型展开训练;将结果与最初的列表进行对比,answer与guesses差异数为116,即得到了500行数据中的384匹配项
    

          

高介分类:核方法与支持向量机(SVM)的更多相关文章

  1. 基于核方法的模糊C均值聚类

    摘要: 本文主要针对于FCM算法在很大程度上局限于处理球星星团数据的不足,引入了核方法对算法进行优化.  与许多聚类算法一样,FCM选择欧氏距离作为样本点与相应聚类中心之间的非相似性指标,致使算法趋向 ...

  2. SVM 核方法

    在 SVM 中引入核方法便可使得 SVM 变为非线性分类器,给定非线性可分数据集 $\left \{ (x_i,y_i)\right\}_{i=1}^N$,如下图所示,此时找不到一个分类平面来将数据分 ...

  3. paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。

    前面我们介绍了线性情况下的支持向量机,它通过寻找一个线性的超平面来达到对数据进行分类的目的.不过,由于是线性方法,所以对非线性的数据就没有办法处理了.例如图中的两类数据,分别分布为两个圆圈的形状,不论 ...

  4. Andrew Ng机器学习笔记+Weka相关算法实现(五)SVM最优间隔和核方法

    这一章主要解说Ng的机器学习中SVM的兴许内容.主要包括最优间隔分类器求解.核方法. 最优间隔分类器的求解 利用以一篇讲过的的原始对偶问题求解的思路,我们能够将相似思路运用到SVM的求解上来. 详细的 ...

  5. 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...

  6. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  7. 支持向量机SVM原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)

    项目合作联系QQ:231469242 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?cours ...

  8. 复习支持向量机(SVM)没空看书时,掌握下面的知识就够了

    支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器. ...

  9. OpenCV支持向量机(SVM)介绍

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

随机推荐

  1. h1、h2、h3标签及strong标签对页面seo的影响

    今天和大家来聊下h1,h2,h3,strong几个标签,在网页中的使用对页面seo的影响,也阐述了个人的一些想法. 首先简要讲下H标签及strong标签的含义:<h1>.<h2> ...

  2. StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明本系列分享地址:http://www.cnblogs.com/tdws/p/5815735.html 上一篇文章的不合理之处,已经有所修改. 今天分 ...

  3. 隔天开启tomcat spring报错

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  4. centos 域名硬解析(linux)

    centos做硬解析跟Windows一样修改一个文件. 具体文件为:/etc/hosts.修改命令: vi /etc/hosts 格式个Windows也一样的.

  5. 豆芽儿 - 高端IT人才成长社区 上线啦!

      豆芽儿 - 高端IT人才成长社区 这是我们新打造的网站,全新设计了用户体验,给你更爽快的学习体验.为你分享敏捷开发.项目管理.需求分析.软件设计.UML.中层领导力.CMMI.IT职场等“高大上” ...

  6. Node.js学习——HTTP

    HTTP Node.js开发的目的就是为了用JavaScript编写Web服务器程序.因为JavaScript实际上已经统治了浏览器端的脚本,其优势就是有世界上数量最多的前端开发人员.如果已经掌握了J ...

  7. postgresql 导出数据字典文档

    项目上需要整理目前数据库的数据字典文档.项目不规范,这种文档只要后期来补.这么多张表,每个字段都写到word文档里真心头大.就算前面写了个查询表结构的sql,但是最后整理到word里还是感觉有点麻烦. ...

  8. python ldap

    # -*- coding: UTF-8 -*- import ldap, ConfigParser, os from ldap import modlist LDAP_HOST = "myd ...

  9. SVN“验证位置时发生错误”的解决办法

    验证位置时发生错误:“org.tigris.subversion.javahl.ClientException...... 验证位置时发生错误:“org.tigris.subversion.javah ...

  10. [django]手动数据库备份

    基本原理是按钮点击后,系统查询出数据表中信息,然后在网页中导出相关表格! 若有自动数据库备份的兄弟,指点一下! 模板代码: <a href="{% url 'work_backup' ...