大数据算法:分类与预测

分类是大数据常见的应用场景之一,通过对历史数据规律的统计,将大量数据进行分类然后发现数据之间的关系,这样当有新的数据进来时,计算机就可以利用这个关系自动进行分类了。更进一步讲,如果这个分类结果在将来才会被证实,比如一场比赛的胜负、一次选举的结果,那么在旁观者看来,就是在利用大数据进行预测了。其实,现在火热的机器学习本质上说就是统计学习。

KNN分类算法

KNN算法,即K近邻(K Nearest Neighbour)算法,是一种基本的分类算法。其主要原理是:对于一个需要分类的数据,将其和一组已经分类标注好的样本集合进行比较,得到距离最近的K个样本,K个样本最多归属的类别,就是这个需要分类数据的类别。下面是KNN算法的原理图:

图中,红绿蓝三种颜色的点为样本数据,分属三种类别,w1、w2、w2。对于待分类带你Xu,计算和它距离最近的5个点(即K为5),这5个点最多归属的类别为w1(4个点归属w1,1个点归属w3),那么Xu的类别被分类为w1

KNN的算法流程也非常简单,流程图如下:

KNN算法是一种非常简单实用的分类算法,可用于各种分类场景,比如新闻分类、商标分类等,甚至可用于简单的文字识别。对于新闻分类,可以提前对若干新闻进行人工标注,标好新闻分类,计算好特征向量。对于一篇未分类的新闻,计算其特征向量后,跟所有已标注的新闻进行距离计算,然后进一步利用KNN算法进行自动分类。

问题来了,如何计算数据的距离?如何获得新闻的特征向量?

数据的距离

KNN算法的关键是要比较需要分类的数据与样本数据之间的距离,这在机器学习中通常的做法是:提取数据的特征值,根据特征值组成一个n维的实数向量空间(这个空间也被称为特征空间),然后计算向量之间的空间距离。空间之间的距离方法有很多种,常用的有欧氏距离、余弦距离等。

对于数据$x_i$和$x_j$,若其特征空间为n维实数向量空间$R^n$,即$x_i$=(xi1,xi2,…xin),xj=(xj1,xj2,…xjn),则其欧氏距离计算公式为

这个欧氏距离公式其实我们在初中也学过,平面几何和立体几何里两个点之间的距离,也是用这个公式计算出来的,只是平面几何里n=2,立体几何n=3,而机器学习需要面对的每个数据可能有n维的维度,即每个数据有n个特征值。但是不管特征值n是多少,两个数据之间的空间距离计算公式还是这个欧式计算公式。

欧式距离是常用的数据计算公式,但是在文本数据以及用户评价数据的机器学习中,更常用的距离计算方法是余弦相似度。

余弦相似度的值越接近1表示其越相似,越接近0表示其差异越大,使用余弦相似度可以消除数据的某些冗余信息,某些情况下更贴近数据的本质。举个🌰,比如两篇文章的特征值都是:“大数据”、“机器学习”、“人工智能”,A文章的特征向量为(3,3,3),即这三个词出现次数都是3;B文章的特征向量为(6,6,6),即这三个词出现次数都是6.如果光看特征向量,这两个向量差别很大,如果用欧氏距离计算确实也很大,但是两篇文章其实非常相似,只是篇幅不同而已,它们的余弦相似度为1,表示非常相似。

余弦相似度其实是计算向量的夹角,而欧式距离公式是计算空间距离。余弦相似度更关注数据的相似性。

文本特征值

我们知道了机器学习的算法需要计算距离,而计算距离还需要知道数据的特征向量,因此提取数据的特征向量是机器学习工程师的重要工作,有时候甚至是最重要的工作。不同的数据以及不同的应用场景需要提取不同的特征值,我们以比较常见的文本数据为例,看看如何提取文本特征向量。

文本数据的特征值就是提取文本关键词,TF-IDF算法是比较常用且直观的一种文本关键词提取算法。这种算法由TF和IDF两部分构成。

TF是词频(Term Frequency),表示某个单词在文档中出现的频率,一个单词在一个文档中出现的越频繁,TF值越高。

词频:

IDF是逆文档频率(Inverse Document Frequency),表示这个单词在所有文档中的稀缺程度,越少文档出现这个词,IDF值越高。

逆文档频率:

TF与IDF的乘积就是TF-IDF。

所以如果一个词在某一个文档中频繁出现,但在所有文档中却很少出现,那么这个词很肯能就是这个文档的关键词。比如一篇关于原子能的技术文章,“核裂变”“放射性”“半衰期”等词汇会在这篇文档中频繁出现,即TF很高;但是在所有文档中出现的频率却比较低,即IDF也比较高。因此这几个词的TF-IDF值就会很高,就可能是这篇文档的关键词。如果这是一篇关于中国原子能的文章,也许“中国”这个词也会频繁出现,即TF也很高,但是“中国”在很多文档中出现,那么IDF就会比较低,最后“中国”这个词的TF-IDF就很低,不会成为这个文档的关键词。

提取出关键词后,就可以利用关键词的词频构造特征向量,比如上面例子关于原子能的文章,“核裂变”“放射性”“半衰期”这三个词是特征值,分别出现次数为12、9、4。那么这篇文章的特征向量就是(12,9,4),再利用前面提到的空间距离计算公式与其他文档的距离,结合KNN算法就可以实现文档的自动分类。

0%