首页 / 算法 / Spark机器学习(5):SVM算法
Spark机器学习(5):SVM算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Spark机器学习(5):SVM算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1856字,纯文字阅读大概需要3分钟。
内容图文
![Spark机器学习(5):SVM算法](/upload/InfoBanner/zyjiaocheng/1333/e68c80e79f584ecf87e6be47f7dcb229.jpg)
1. SVM基本知识
SVM(Support Vector Machine)是一个类分类器,能够将不同类的样本在样本空间中进行分隔,分隔使用的面叫做分隔超平面。
比如对于二维样本,分布在二维平面上,此时超平面实际上是一条直线,直线上面是一类,下面是另一类。定义超平面为:
f(x)=w0+wTx
可以想象出,这样的直线可以有很多条,到底哪一条是超平面呢?规定超平面应该是距离两类的最近距离之和最大,因为只有这样才是最优的分类。
假设超平面是w0+wTx=0,那么经过上面这一类距离超平面最近点的直线是w0+wTx=1,下面的直线是w0+wTx=-1。其中一类到超平面的距离是
然后采用拉格朗日函数,经过一系列运算以后,得到
这也意味着,只用计算新点x与训练数据点的内积就可以对新点进行预测。
2. MLlib的SVM
MLlib只实现了线性SVM,采用分布式随机梯度下降算法。将SVM二分类的1和-1转化为1和0,因此y变成了(2y-1),梯度为g=-(2y-1)x,梯度更新公式
直接上代码:
import org.apache.log4j.{ Level, Logger } import org.apache.spark.{ SparkConf, SparkContext } import org.apache.spark.mllib.classification.SVMWithSGD import org.apache.spark.mllib.util.MLUtils object SVMTest { def main(args: Array[String]): Unit = { // 设置运行环境 val conf = new SparkConf().setAppName("SVM Test") .setMaster("spark://master:7077").setJars(Seq("E:\\Intellij\\Projects\\MachineLearning\\MachineLearning.jar")) val sc = new SparkContext(conf) Logger.getRootLogger.setLevel(Level.WARN) // 读取样本数据并解析 val dataRDD = MLUtils.loadLibSVMFile(sc, "hdfs://master:9000/ml/data/sample_svm_data.txt") // 样本数据划分,训练样本占0.8,测试样本占0.2 val dataParts = dataRDD.randomSplit(Array(0.8, 0.2)) val trainRDD = dataParts(0) val testRDD = dataParts(1) // 建立模型并训练 val numIterations = 100 val model = SVMWithSGD.train(trainRDD, numIterations) // 对测试样本进行测试 val predictionAndLabel = testRDD.map { point => val score = model.predict(point.features) (score, point.label, point.features) } val showPredict = predictionAndLabel.take(50) println("Prediction" + "\t" + "Label" + "\t" + "Data") for (i <- 0 to showPredict.length - 1) { println(showPredict(i)._1 + "\t" + showPredict(i)._2 + "\t" + showPredict(i)._3) } // 误差计算 val accuracy = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count() / testRDD.count() println("Accuracy = " + accuracy) } }
运行结果:
原文:http://www.cnblogs.com/mstk/p/7124148.html
内容总结
以上是互联网集市为您收集整理的Spark机器学习(5):SVM算法全部内容,希望文章能够帮你解决Spark机器学习(5):SVM算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。