spark/MLlib分类与回归、聚类

本文探讨了Spark MLlib库中用于二分分类的技术,包括线性SVM和逻辑回归,同时也提及了多类分类、回归以及聚类方法,如k-means、层次聚类。聚类是一种无监督学习,与分类的主要区别在于其无需预先指定类别。
摘要由CSDN通过智能技术生成

二分分类: SVM、逻辑回归、决策树、贝叶斯

多类分类:决策树、贝叶斯

回归:线性最小二乘法

聚类:kmeans、层次法(CURE、CHAMELEON)、网格算法(STING、WaveCluster)


与分类不同,分类是示例式学习,要求分类前指出各个类别,并断言每个元素映射到一个类别,儿聚类是观察式学习,在聚类前可以不知道类别甚至不给定类别数量,是无监督学习的一种。



二分分类

线性SVM


MLlib支持两个线性方法:线性支持向量机SVM和逻辑回归。在MLlib中,训练标签用1表示积极,用0表示消极。


线性SVM是大规模分类任务的标准方法。

L ( ; , y ) = max { 0 , 1  y w T } 

线性SVM算法输出一个SVM模型,对于一个新数据x,模型通过wTx进行预测。

逻辑回归

L ( ; , y ) = log ( 1 + exp (  y w T ) ) 


加载测试数据
val  data=MLUtils.loadLibSVMFile(sc,"svm_data.txt")

将测试数据划分为training和test (train,test)
val  splits = data.randomSplit(Array(0.6,0.4) , seed=11L)
val  training=splits(0).cache()
val  test=splits(1)

训练模型
val  numIterations =100
val  model=SVMWithSGD.train(training,numIterations)

清除默认阈值
model.clearThreshold()

计算新模型在测试数据集的效果
val scoreAndLabels = test.map{ point =>
      val score= model.predict(point.features)
      (score,point.label)
}

得到评估指标
val   metrics=new BinaryClassificationMetrics(scoreAndLabels)
val   auROC=metrics.areaUnderROC()

SVMWithSGD.train()训练方法使用默认参数。如需配置算法,
val  svmAlg=new SVMWithSGD()
svmAlg.optimizer.setNumIterations(200) .setRegParam(0.1).setUpdater(new L1Updater)
val  modelL1 =svmAlg.run(training)
其他MLlib算法也支持这种方式自定义。


Kmeans

从文件加载数据
val   data=sc.textFile("hdfs://")

使用spark util包中的generateKMeansRDD生成数据集,生成多个中心的混合高斯分布
val  data=KMeansDataGenerator.generateKMeansRDD(sc,pointnumber,numClusters,k,r)

转换为RDD
val  parseData=data.map( s=> Vectors.dense(s.split(' ').map(_.toDouble)))

生成模型
val  model=KMeans.train(parseData , numClusters,numIterations,runs)

数据中心点
model.clusterCenters

预测新数据点
model.predict(Vectors.dense("1.0 2.0 3.0".split(' ').map(_.toDouble)))

数据方差和
model.computeCost(parseData)

kmeans算法的结果好坏依赖于对初始聚类中心的选择,容易陷入局部最优解,对异常数据较为敏感,只能处理数值属性的数据,聚类结构可能不平衡。
 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值