zoukankan      html  css  js  c++  java
  • [分类算法] :SVM支持向量机

    Support vector machines 支持向量机,简称SVM

    • 分类算法的目的是学会一个分类函数或者分类模型(分类器),能够把数据库中的数据项映射给定类别中的某一个,从而可以预测未知类别。
    • SVM是一种监督式学习的方法。
    • 支持向量:支持或支撑平面上把两类类别划分开来的超平面的向量点
    • 机:就是算法,机器学习常把一些算法看作是一个机器
    • SVM 其实就是一种很有用的二分类方法。
    • 超平面:

         n维空间中, 满足n元一次方程a1x1+a2x2+...+anxn=b的点(x1,x2,...,xn)的全体就叫空间的一张超平面(即广义平面)。

         具体到2维空间,就是一条直线,3维空间,就是一个平面。

    原理概况:

    1. 线性可分:超平面分割(超平面是分割两类数据的最优的一个平面,下图的红线表示)

          

          2. 最大化间隔

          3. 线性问题求解:

          求解对偶问题得到最优解。(Lagrange 函数的对偶因子)

          4. 非线性问题

              

          通过选择一个核函数,将数据映射到高维空间(线性可分),从而来解决原有空间的线性不可分。

          核方法: 除了支持向量机外,任何把计算表示为数据点的内积的方法,都可以用核方法进行非线性扩展。

    例子:

    import org.apache.spark.mllib.classification.{SVMModel, SVMWithSGD}
    import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
    import org.apache.spark.mllib.util.MLUtils
    
    // Load training data in LIBSVM format.
    val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt")
    // Split data into training (60%) and test (40%).
    val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L)
    val training = splits(0).cache()
    val test = splits(1)
    
    // Run training algorithm to build the model
    val numIterations = 100
    val model = SVMWithSGD.train(training, numIterations)
    
    // Clear the default threshold.
    model.clearThreshold()
    
    // Compute raw scores on the test set.
    val scoreAndLabels = test.map { point =>
      val score = model.predict(point.features)
      (score, point.label)
    }
    
    // Get evaluation metrics.
    val metrics = new BinaryClassificationMetrics(scoreAndLabels)
    val auROC = metrics.areaUnderROC()
    println("Area under ROC = " + auROC)
    

      

  • 相关阅读:
    ios专题 - CocoaPods - 初次体验
    ios专题 - CocoaPods - 安装
    Objective-C浅拷贝和深拷贝
    支付宝交互流程
    UITabBar的隐藏
    iOS-容易造成循环引用的三种场景
    FMDB 的基本操作
    Swap file ".Podfile.swp" already exists!
    将UIImage保存成JPG或PNG格式存储在本地
    UI常用控件的一些属性
  • 原文地址:https://www.cnblogs.com/skyEva/p/5620421.html
Copyright © 2011-2022 走看看