Spark文本聚类
聚类是常见的无监督学习算法,用于找到相似的Item,在无标记数据的情况下经常使用。这里考虑,当我们拥有大量文本,需要找到相似的文本(粗分类)时,使用Spark进行实验。
Spark mlib简介
mlib是Spark提供的机器学习算法库,提供特征工程、分类、回归、聚类、协同过滤等算法调用接口。
(1)对于特征工程主要包括:特征提取、特征变换、特征选择等。
提供常见的特征提取方法包括:TF-IDF,Word2Vec,CountVecmtorizer;
提供常见的特征变换方法包括:分句、去停用词、n-gram语言模型、二值化、PCA、DCT变换、One-hot编码等;
提供常见的特征选择算法:VectorSlicer、 R model Formula、卡方检验等。
(2)对于分类和回归,提供逻辑回归、决策树、随机森林、GBDT、MLP、朴素贝叶斯等方法。
(3)对于聚类,提供K-Means,LDA主题模型、高斯混合模型等。
(4)另外还支持协同过滤,便于搭建推荐系统。
中文文本分词
对于python而言,常见的分词工具有jieba,为了更加精细准确的进行中文分词,此处采用PyLTP工具(支持自定义词典)。
TFIDF特征
用词频表示文本特征,将文本进行量化,变成矩阵形式。矩阵内的每个元素就是词语对应的词频信息。矩阵大小为M*N,其中M表示文本数量,N表示词典中词语数量。TF表示某词在该文本内出现的频率,IDF表示Inverse Document Frequency, 某个词在文本中出现的频率。
|D|表示文本数量,DF(t,D)表示出现t词的文本数量
TFIDF = TF *IDF
word2vec介绍
word2vec是google开发的向量化词语的工具,实现方法是CBOW和Skip-Gram算法。Spark使用如下:
from pyspark.mllib.featur