分享
数据挖掘过程疑问?
数据挖掘没人带,自己琢磨现在有一个数据集和spark集群关于分词1、在单机分词,生成分词后的数据集,然后在spark上进行挖掘2、直接在spark集群进行分词,挖掘哪种方案合适?如果是1的话,单机执行效率会不会很慢如果是2的话,如何在分词时加载自定义词库,好多分词工具好像都不支持从hdfs中获取词典吧,那如何保证在集群中每个节点可以加载自定义词典,难道每个节点都要存放一份关于算法选择和验证如果数据量很大,跑一次要很久,那么如何选择合适的算法和验证1、使用spark集群抽样,使用部分数据来选择2、取一部分数据,使用scikit-learn来选择,验证完成后在使用spark集群哪种方案比较合适?
回复 ( 2 )
关于分词,首先要明确的是分词是高度并行的计算,并不需要map/reduce这样的计算框架(严格的说是不需要reduce阶段),只要在多台机器上多进程运行就可最大化利用集群。所以分词的任务就不存在用不用Spark的问题。
关于选择和验证,这要看你产品的需求,首先scikit-learn的算法要比Spark mllib丰富的多,如果在scikit-learn选好一个算法,发现Spark里没有不就白折腾了么。除了自己写算法之外,最首要的就是要根据项目/产品的需求选择工具,如果数据量不是特别巨大,那么可以使用scikit-learn单机解决,scikit还支持GPU加速,性能其实不错的。如果一开始系统设计的目标就是大规模的机器学习,那么直接就用Spark调试是没有问题的,Spark还可以在本地的电脑上搭建一个开发环境,方便开发。就这样~
spark的算法选择目前还相当有限,而且除非数据量很大,不见得就比Python的效率高,所以还是先从Python入手,可以通过选择高效的模型,降维,优化程序,或者用GPU运算等方法提高效率。