从0开始学大数据学习笔记——37.如何对数据进行分类和预测?
START:所谓人工智能就是利用数学统计方法,统计数据中的规律,然后利用这些统计规律进行自动化数据处理,使计算机表现出某种智能的特性,而各种数学统计方法,就是大数据算法
一、导论
围绕数据分类、数据挖掘、推荐引擎、大数据算法的数学原理、神经网络算法几个方面,为你展开大数据算法的“全景图”
二、数据分类
- 分类即认知
- 在互联网时代,一个人在互联网里留下越来越多的信息,如果计算机利用大数据技术将所有这些信息都统一起来进行分析,理论上可以将一个人完全分类,也就是完全了解一个人
- 通过对历史数据规律的统计,将大量数据进行分类然后发现数据之间的关系,这样当有新的数据进来时,计算机就可以利用这个关系自动进行分类了。如果这个分类结果在将来才会被证实,就是利用大数据进行预测
三、正文
3.1 KNN 分类算法
- 对于一个需要分类的数据,将其和一组已经分类标注好的样本集合进行比较,得到距离最近的 K 个样本,K 个样本最多归属的类别,就是这个需要分类数据的类别
- 计算和它距离最近的 5 个点(即 K 为 5),这 5 个点最多归属的类别
- 可用于各种分类的场景,比如新闻分类、商品分类等,甚至可用于简单的文字识别
- 对于新闻分类,可以提前对若干新闻进行人工标注,标好新闻类别,计算好特征向量
- 对于一篇未分类的新闻,计算其特征向量后,跟所有已标注新闻进行距离计算
- 然后进一步利用 KNN 算法进行自动分类
3.2 数据的距离
KNN 算法的关键是要比较需要分类的数据与样本数据之间的距离
- 提取数据的特征值,根据特征值组成一个 n 维实数向量空间(这个空间也被称作特征空间),然后计算向量之间的空间距离。
- 欧氏距离是最常用的数据计算公式,但是在文本数据以及用户评价数据的机器学习中,更常用的距离计算方法是余弦相似度
- 余弦相似度的值越接近 1 表示其越相似,越接近 0 表示其差异越大
比如两篇文章的特征值都是:“大数据”“机器学习”和“极客时间”,A 文章的特征向量为(3, 3, 3),即这三个词出现次数都是 3;B 文章的特征向量为(6, 6, 6),即这三个词出现次数都是 6。如果光看特征向量,这两个向量差别很大,如果用欧氏距离计算确实也很大,但是这两篇文章其实非常相似,只是篇幅不同而已,它们的余弦相似度为 1,表示非常相似。余弦相似度其实是计算向量的夹角,而欧氏距离公式是计算空间距离。余弦相似度更关注数据的相似性,比如两个用户给两件商品的打分分别是(3, 3)和(4, 4),那么两个用户对两件商品的喜好是相似的,这种情况下,余弦相似度比欧氏距离更合理
3.3 文本的特征值
计算距离需要还知道数据的特征向量,因此提取数据的特征向量是机器学习工程师们的重要工作
文本数据的特征值就是提取文本关键词,TF-IDF 算法;使用TF作为特征值
TF 是词频(Term Frequency),表示某个单词在文档中出现的频率,一个单词在一个文档中出现的越频繁,TF 值越高
IDF 是逆文档频率(Inverse Document Frequency),表示这个单词在所有文档中的稀缺程度,越少文档出现这个词,IDF 值越高
TF 与 IDF 的乘积就是 TF-IDF
比如一篇关于原子能的技术文章,“核裂变”“放射性”“半衰期”等词汇会在这篇文档中频繁出现,即 TF 很高;但是在所有文档中出现的频率却比较低,即 IDF 也比较高。因此这几个词的 TF-IDF 值就会很高,就可能是这篇文档的关键词提取出关键词以后,就可以利用关键词的词频构造特征向量,比如上面例子关于原子能的文章,“核裂变”“放射性”“半衰期”这三个词是特征值,分别出现次数为 12、9、4。那么这篇文章的特征向量就是(12, 9, 4)再利用前面提到的空间距离计算公式计算与其他文档的距离,结合 KNN 算法就可以实现文档的自动分类
3.4 贝叶斯分类
贝叶斯公式是一种基于条件概率的分类算法
如果我们已经知道 A 和 B 的发生概率,并且知道了 B 发生情况下 A 发生的概率,可以用贝叶斯公式计算 A 发生的情况下 B 发生的概率。事实上,我们可以根据 A 的情况,即输入数据,判断 B 的概率,即 B 的可能性,进而进行分类
大量数据的统计规律则能准确反映事物的分类概率
贝叶斯分类的一个典型的应用场合是垃圾邮件分类
通过对样本邮件的统计,我们知道每个词在邮件中出现的概率 [Math Processing Error]P(Ai),我们也知道正常邮件概率 [Math Processing Error]P(B0) 和垃圾邮件的概率 [Math Processing Error]P(B1),还可以统计出垃圾邮件中各个词的出现概率 [Math Processing Error]P(Ai|B1),那么现在一封新邮件到来,我们就可以根据邮件中出现的词,计算 [Math Processing Error]P(B1|Ai),即得到这些词出现情况下,邮件为垃圾邮件的概率,进而判断邮件是否为垃圾邮件。
而如果我们设定概率超过某个值就认为其会发生,那么我们就对这个数据进行了分类和预测
首先要对原始邮件进行标注,需要标注哪些邮件是正常邮件、哪些邮件是垃圾邮件。这一类需要对数据进行标注才能进行的机器学习训练也叫作有监督的机器学习
3.5 总结
很多 AI 其实都是分类算法在起作用
比如 AI 围棋算法 AlphaGo 本质就是一个分类算法,围棋棋盘有 361 个交叉点,可以认为有 361 个分类选项,AlphaGo 只要每次选择一个有最大赢面的分类选项输出即可