spark算法
‘壹’ 用Spark做数据分析是怎样一种体验
数据科学家为了回答一个问题或进行深入研究,会使用相关的技术分析数据。通常,他们的工作包含特殊的分析,所以他们使用交互式shell,以使得他们能在最短的时间内看到查询结果和代码片段。Spark的速度和简单的API接口很好地符合这个目标,它的内建库意味着很多算法可以随时使用。
Spark通过若干组件支持不同的数据科学任务。Spark shell使得用Python或Scala进行交互式数据分析变得简单。Spark sql也有一个独立的SQL shell,可以用SQL进行数据分析,也可以在Spark程序中或Spark shell中使用Spark SQL。MLlib库支持机器学习和数据分析。而且,支持调用外部的MATLAB或R语言编写的程序。Spark使得数据科学家可以用R或Pandas等工具处理包含大量数据的问题。
有时,经过初始的数据处理阶段后,数据科学家的工作将被产品化,扩展,加固(容错性),进而成为一个生产数据处理应用,作为商业应用的一个组件。例如,一个数据科学家的研究成果可能会产生一个产品推荐系统,集成到一个web应用上,用来向用户生成产品建议。通常由另外的人员(如工程师)对数据科学家的工作进行产品化。
这个的话,先要了解下当下比较火的大数据,ITjob官网上有大数据和Spark的文章和帖子,如果觉得回答的不够详细,可以自己再去了解下。也可以去专业的贴吧和博客寻找下答案。
‘贰’ 遗传算法可以用spark实现吗,如何实现
遗传算法算是迭代计算的,spark这种计算框架非常适合迭代计算。
‘叁’ spark中有dbscan算法吗
看清楚dbscan算法中有两个关键的参数是 EPS, and Min group threshold. 直观的想法是,如果你的eps很大,min-group-threshold 也很大的时候,那你得到的聚类的类数目就会少很多,那你搜索的时候就可能很快收敛。
‘肆’ 如何运行spark mllib 算法
LS会建立一个user*proct的m*n的矩阵 其中,m为users的数量
‘伍’ spark机器学习-聚类
spark机器学习-聚类
聚类算法是一种无监督学习任务,用于将对象分到具有高度相似性的聚类中,聚类算法的思想简单的说就是物以类聚的思想,相同性质的点在空间中表现的较为紧密和接近,主要用于数据探索与异常检测,最常用的一种聚类算法是K均值(K-means)聚类算法
算法原理
kmeans的计算方法如下:
1 选取k个中心点
2 遍历所有数据,将每个数据划分到最近的中心点中
3 计算每个聚类的平均值,并作为新的中心点
4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代
算法的时间复杂度上界为O(n*k*t), 其中k为输入的聚类个数,n为数据量,t为迭代次数。一般t,k,n均可认为是常量,时间和空间复杂度可以简化为O(n),即线性的
spark ml编码实践
可在spark-shell环境下修改参数调试以下代码,可以用实际的业务数据做测试评估,业务数据一般是多列,可以把维度列用VectorAssembler组装成向量列做为Kmeans算法的输入列,考虑现实的应用场景,比如做异常数据检测,正常数据分为一类,异常数据分为几类,分别统计正常数据与异常数据的数据量,求百分比等
<span style="font-size:18px;">import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
val dataset = sqlContext.createDataFrame(Seq(
(1, Vectors.dense(0.0, 0.0, 0.0)),
(2, Vectors.dense(0.1, 0.1, 0.1)),
(3, Vectors.dense(0.2, 0.2, 0.2)),
(4, Vectors.dense(9.0, 9.0, 9.0)),
(5, Vectors.dense(1.1, 1.1, 0.1)),
(6, Vectors.dense(12, 14, 100)),
(6, Vectors.dense(1.1, 0.1, 0.2)),
(6, Vectors.dense(-2, -3, -4)),
(6, Vectors.dense(1.6, 0.6, 0.2))
)).toDF("id", "features")
// Trains a k-means model
val kmeans = new KMeans().setK(3).setMaxIter(20).setFeaturesCol("features").setPredictionCol("prediction")
val model = kmeans.fit(dataset)
// Shows the result
println("Final Centers: ")
model.clusterCenters.foreach(println)
model.clusterCenters.zipWithIndex.foreach(println)
val myres = model.transform(dataset).select("features","prediction")
myres.show()</span>
聚类算法是一类无监督式机器学习算法,聚类效果怎么评估,模型训练参数怎么调优,是否能用管道来训练模型来比较各种不同组合的参数的效果,即网格搜索法(gridsearch),先设置好待测试的参数,MLLib就会自动完成这些参数的不同组合,管道搭建了一条工作流,一次性完成了整个模型的调优,而不是独立对每个参数进行调优,这个还要再确认一下,查看SPARK-14516好像目前还没有一个聚类效果通用的自动的度量方法
像这种代码(不过现在这个代码有问题):
<span style="font-size:18px;">import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.ml.tuning.{ ParamGridBuilder, CrossValidator }
import org.apache.spark.ml.{ Pipeline, PipelineStage }
val dataset = sqlContext.createDataFrame(Seq(
(1, Vectors.dense(0.0, 0.0, 0.0)),
(2, Vectors.dense(0.1, 0.1, 0.1)),
(3, Vectors.dense(0.2, 0.2, 0.2)),
(4, Vectors.dense(9.0, 9.0, 9.0)),
(5, Vectors.dense(1.1, 1.1, 0.1)),
(6, Vectors.dense(12, 14, 100)),
(6, Vectors.dense(1.1, 0.1, 0.2)),
(6, Vectors.dense(-2, -3, -4)),
(6, Vectors.dense(1.6, 0.6, 0.2))
)).toDF("id", "features")
val kmeans = new KMeans().setK(2).setMaxIter(20).setFeaturesCol("features").setPredictionCol("prediction")
//主要问题在这里,没有可用的评估器与label列设置
val evaluator = new BinaryClassificationEvaluator().setLabelCol("prediction")
val paramGrid = new ParamGridBuilder().addGrid(kmeans.initMode, Array("random")).addGrid(kmeans.k, Array(3, 4)).addGrid(kmeans.maxIter, Array(20, 60)).addGrid(kmeans.seed, Array(1L, 2L)).build()
val steps: Array[PipelineStage] = Array(kmeans)
val pipeline = new Pipeline().setStages(steps)
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(evaluator).setEstimatorParamMaps(paramGrid).setNumFolds(10)
// Trains a model
val pipelineFittedModel = cv.fit(dataset)</span>
‘陆’ 大数据中的Spark指的是什么
谢谢邀请!
spark最初是由伯克利大学的amplab于2009年提交的一个项目,现在已经是Apache软件基金会最活跃的项目,对于spark,apache给出的官方定义是:spark是一个快速和通用的大数据处理引擎。可以理解为一个分布式大数据处理框架,spark是基于Rdd(弹性分布式数据集),立足于内存计算,在“one stack to rule them all” 的思想引导下 ,打造了一个可以流式处理(spark streaming),机器学习(mllib),实时查询(spark sql),图计算(graphx)等各种大数据处理,无缝连接的一栈式计算平台,由于spark在性能和扩展上快速,易用,通用的特点,使之成为一个一体化,多元化的大数据计算平台。
spark的一栈式优势
1 快速处理,比hadoop快100倍,因为spark是基于内存计算,而hadoop是基于磁盘计算
2易用性,spark支持多种语言
3 通用性强,可以流式处理,及时查询,图计算,机器学习
4 可以和hadoop数据集成,运行在yarn上,统一进行资源管理调度
5 活跃和壮大的社区
以上是关于spark的简单定义,希望我的回答可以采纳,谢谢
‘柒’ 如何高大上的描述spark
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,是一种快速、通用、可扩展的大数据分析引擎。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapRece的算法。
‘捌’ spark中有哪些推荐系统算法
item表示迭代的参数 比如你的这个数组通过request.setAttribute("array",xxx)放入了这个里,迭代的内容就是${requestScope.array} var 相当于一个引用 下面你就可以用 ${array.xxx1} ${array.xxx2} 将数组里的值输出出来了
‘玖’ 有没有人用Spark的机器算法mllib,好不好用
速度还是比较快的,不过精度没有串行的高,因为很多地方为了效率做了近似