Spark 的 MLlib 库中预定义的 Streaming k-means 聚类是有监督的还是无监督的?
Posted
技术标签:
【中文标题】Spark 的 MLlib 库中预定义的 Streaming k-means 聚类是有监督的还是无监督的?【英文标题】:Is the Streaming k-means clustering predefined in MLlib library of spark supervised or unsupervised? 【发布时间】:2015-09-07 10:31:39 【问题描述】:我知道 k-means 聚类是最简单的无监督学习算法之一。查看 MLlib 中打包的流式 k-means 聚类的源代码,我找到了术语:训练数据、测试数据、预测和训练。
这让我觉得这种流式 K-means 可能会受到监督。那么,这个算法是有监督的还是无监督的?
这是使用流式 k-means 的代码示例:
package org.apache.spark.examples.mllib
import org.apache.spark.SparkConf
import org.apache.spark.mllib.clustering.StreamingKMeans
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.streaming.Seconds, StreamingContext
object StreamingKMeansExample
def main(args: Array[String])
if (args.length != 5)
System.err.println( "Usage: StreamingKMeansExample " +
"<trainingDir> <testDir> <batchDuration> <numClusters> <numDimensions>")
System.exit(1)
val conf = new SparkConf().setMaster("localhost").setAppName
("StreamingKMeansExample")
val ssc = new StreamingContext(conf, Seconds(args(2).toLong))
val trainingData = ssc.textFileStream(args(0)).map(Vectors.parse)
val testData = ssc.textFileStream(args(1)).map(LabeledPoint.parse)
val model = new StreamingKMeans().setK(args(3).toInt)
.setDecayFactor(1.0)
.setRandomCenters(args(4).toInt, 0.0)
model.trainOn(trainingData)
model.predictOnValues(testData.map(lp => (lp.label, lp.features))).print()
ssc.start()
ssc.awaitTermination()
【问题讨论】:
【参考方案1】:K-means(流式或常规)是一种聚类算法。根据定义,聚类算法是无监督的。也就是说,您不知道数据的自然分组(标签),并且希望自动将相似的实体分组在一起。
这里的术语train
指的是“学习”集群(质心)。
术语predict
指的是预测一个新点属于哪个集群。
【讨论】:
【参考方案2】:这取决于,但大多数人会将 k-means 归类为无监督。
除了指定簇的数量,k-means“学习” 集群自己,没有任何关于哪个集群的信息 观察属于。 k-means 可以是半监督的。
这通常是关于 k-means 的,所以理想情况下,我相信 spark 也遵循相同的 - https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala
【讨论】:
以上是关于Spark 的 MLlib 库中预定义的 Streaming k-means 聚类是有监督的还是无监督的?的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Spark ML 库中的 Vector 用于 DataFrame
Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介