数据挖掘问题类别

数据挖掘简言之就是从数据中提取和发掘有价值的信息,具体问题有:回归、分类、聚类等,下面就尽量通俗的讲解来理解到底数据挖掘做了什么。

回归

回归问题最通俗解释就是对已给未知的输入输出关系进行拟合,与数学里的回归问题是一样的,如学到过线性回归、插值、拟合都属于这一范畴。与这些传统的插值拟合问题不同,插值拟合往往是已知某个具体的数学表达式,来对数据进行逼近,这类问题往往有具体的规律可循,即使是非线性问题,也有如指数、对数、三角函数等规律。而对于数据挖掘里的回归问题,输入输出的关系是超强非线性的。

这里的超强非线性已经超越的仅仅不是线性关系这么简单,虽然最终数据挖掘模型还是有解析的表达式,但是其所能描述的复杂关系已经超越了人的想象能力,比如下图中一个深度网络的示意图所展示的复杂的关系,而实际的深度网络可能比这个还要复杂的多。除此之外,许多数据挖掘模型更是一些没有具体表达式,而是依赖于逻辑关系的,如决策树、贝叶斯等等等等,许多方法更像是建立一种描述复杂问题的逻辑而非拟合某个形式的表达式本身。只有把用一个模型把大量的数据所隐含的规律描述出来,才有可能进行进一步的分析工作,可以说回归是分析一个数据问题的基础。

深度学习网络示意图

分类

分类问题从字面上就很好理解,就是把数据按照某个模型判断其所从属的类别,而数据挖掘分类所要处理的问题就是如何训练得到这样一个用来分类的模型。

其实从本质上而言,分类分类问题与回归问题其实是一样的,像开源数据挖掘工具Weka就将两者归为一类问题处理。像上文提到的很多算法,像贝叶斯、神经网络等等都是用来做分类问题的。比如对于一个判断数据从属与 0 和 1 两个类别的分类问题,对于计算机而言是判断其更偏向于0,还是更偏向于1,对于贝叶斯网络而言就是预测从属于0和从属于1的概率谁更大,对于神经网络而言就是预测的输出层更接近于哪一类别。

回归与分类两者的区别更像是对于输出形式的一个不同描述,如在用神经网络处理一个分类问题时,用不同的输出层神经元形式来描述,但是本质上讲是一样的,比如我们可以吧0/1分类问题看成是预测一个数值更接近于0,还是更接近于1,还可以看成对于0和1分别预测一个值,看哪个预测值更大,这些处理方法的不同,因具体问题而异,需要具体问题具体分析。

聚类

聚类问题如果从字面上看与分类可能很像,但是其本质却与分类又是不一样的。与分类 (Classify)不同,聚类的英文是Cluster,聚类问题事先不知道每一组数据从属于哪一类别,通过对大量数据的分析处理,来挖掘数据中的相关性,将具有相同特征的数据归为一类。

这里要提到一个概念:有监督学习无监督学习,在对应的就是分类问题和聚类问题。有监督的直观一点的含义就是事先知道输入数据对应的输出特征,模型训练的过程是通过输出来在不断的调整模型参数使模型的输入输出与数据匹配,因此对应分类问题。而无监督不一样的是不知道输入对应输出的类别,更多的是在分析每一条数据之间的关联关系,将具有相同特征的数据标记为一类,因此对应的是聚类问题,当然最理想的聚类结果是能够获得和分类一样效果。

分类和聚类的模型很多在本质上是很相似的,更多的是训练方法的区别,如分类下有KNN方法,而聚类则是KMeans方法,两种方法本质上讲都是通过距离将不同的数据来归类。

正因为聚类实现了对输入大量数据特征的分类,因此聚类也可以作为一种数据可视化方法,将看起来毫不相关的高维度数据按照其内在的联系展示出来,可以让人对复杂数据有更直观的理解。

数据挖掘的流程

待续…