什么是数据挖掘

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_02


建模数据挖掘方法 数学建模挖掘模型_数据_03

从数学建模比赛的角度来看,这里说的数据挖掘,基本上指的就是数据分析技术、机器学习那一块儿,针对的就是数模比赛里给了你一大堆数据表格(或者让你自己去找)然后让你分析的那种题目。

数据导入

建模数据挖掘方法 数学建模挖掘模型_拟合_04

数据预处理

建模数据挖掘方法 数学建模挖掘模型_聚类_05


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_06


建模数据挖掘方法 数学建模挖掘模型_聚类_07


建模数据挖掘方法 数学建模挖掘模型_拟合_08


建模数据挖掘方法 数学建模挖掘模型_聚类_09


建模数据挖掘方法 数学建模挖掘模型_数据_10


建模数据挖掘方法 数学建模挖掘模型_拟合_11


建模数据挖掘方法 数学建模挖掘模型_聚类_12


如右图长方体,长度数值非常大,对整体的影响非常大,宽和高对整体的影响就小很多,变化基本上由长度主导,标准化之后使得它各个维度上差不多。

建模数据挖掘方法 数学建模挖掘模型_数据_13


建模数据挖掘方法 数学建模挖掘模型_聚类_14


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_15


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_16


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_17


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_18


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_19


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_20

数据预处理 例(2011年重金属污染问题)

虽然方法很多,但不能简单套用,需要具体问题具体分析。

在某个城市,有300个监测点,每个监测点都测了好几种元素的值,值很高的说明污染严重。针对 汞 有如下数据及分析。

建模数据挖掘方法 数学建模挖掘模型_聚类_21


建模数据挖掘方法 数学建模挖掘模型_拟合_22


在未处理的数据中,由于有三个点数据极大,所以在图中基本上只能看到这三个点,通过题目中给的其他信息,我们可以得出污染物超过435的就已经算是污染严重的,至于它到底是1000还是10000,在目前的分析里并不是非常重要,所以我们把超过435的值都归到435,再画图,包含的信息就丰富了很多。

而且如果用临近值来处理离群值的话,用的是相邻编号的点,但是编号相邻的点不见得就是地理位置相邻的点,所以用临近均值的方法是不对的。

数据可视化

数据可视化更有利于我们对数据的理解,也更便于我们对读者表达信息。

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_23


可视化方式的选取

建模数据挖掘方法 数学建模挖掘模型_数据_24



建模数据挖掘方法 数学建模挖掘模型_拟合_25


建模数据挖掘方法 数学建模挖掘模型_拟合_26

数据建模

- 预测方法

建模数据挖掘方法 数学建模挖掘模型_拟合_27


建模数据挖掘方法 数学建模挖掘模型_聚类_28


但是在多元线性回归中,如果存在多重共线性问题,会导致结果出错。同时最小二乘中用的残差平方和最小,只是保证拟合误差最小,并不能说明预测效果好。

建模数据挖掘方法 数学建模挖掘模型_聚类_29


期望预测误差被分解成三项,最后一项与模型无关的固有残差我们控制不了,只能尽量使前两项的和尽可能的小。

从右上角的图可以看到,往往偏差的平方小,估计值的方差就会大,把两个合起来的话就是黑色的那条线,往往偏差很小之后总的误差反而大了。这样来看最小二乘估计能够使得拟合偏差较小,但总的来看并不见得是一个很好的预测方法。

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_30


建模数据挖掘方法 数学建模挖掘模型_拟合_31


○代表的是数据

直线拟合:并没有反应数据的规律性

三次曲线拟合:基本能够反应数据的规律性

浅色曲线拟合:高次多项式,残差更小,但过拟合现象更严重,对于已有的样本可能拟合程度更好,但是用于预测可能会产生比较严重的误差

对付这种过拟合的现象,有正则化的方法,即限制模型的复杂度。

建模数据挖掘方法 数学建模挖掘模型_聚类_32


两种方法相同之处是在做优化的时候都加了限制条件,使得β只能在图中的圆或者正方形里取值,不会很大。从残差平方和的角度来看,是变大了,但是它方差小,所以总的预测误差应该是会更小

lasso回归还有一定的变量选择的作用,随着t(限制β大小的量)减小,lasso回归中不断有系数变为0。

建模数据挖掘方法 数学建模挖掘模型_聚类_33


总结

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_34


例子:

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_35


在存在共线性的数据中,进行拟合,回带数据可以看到lasso回归的效果还是不错的,不仅能够比较好的拟合还进行了数据选择。

- 分类方法

建模数据挖掘方法 数学建模挖掘模型_聚类_36


分类问题同样存在欠拟合和过拟合问题

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_37


建模数据挖掘方法 数学建模挖掘模型_聚类_38


建模数据挖掘方法 数学建模挖掘模型_数据_39


建模数据挖掘方法 数学建模挖掘模型_聚类_40


建模数据挖掘方法 数学建模挖掘模型_聚类_41


建模数据挖掘方法 数学建模挖掘模型_拟合_42


下面主要介绍决策树、神经网络和支持向量机的一些相关概念

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_43


以贷款的例子来看,这是一个二分类(放贷或者不放贷)

建模数据挖掘方法 数学建模挖掘模型_聚类_44


首先选一个根节点,在这里我们选 有没有自己的房子 。回查表格我们发现有自己的房子的都放贷了,这就生成了一个叶节点。如果没有房子,看他有没有工作,查表格发现有工作的也都批了,这又生成了一个叶节点。没有房子也没有工作的这些,都没有批,这又生成了一个叶节点。

但这里面有几个问题

是否要做到完全一致才生成叶节点?如果一定要完全一致才生成叶节点对于一些比较复杂的问题可能很难找到叶节点,也容易导致过拟合。

如何选择节点?

针对如何选择节点,属性选择问题,有下面的ID3算法

建模数据挖掘方法 数学建模挖掘模型_聚类_45


算法的主要思想就是:总的数据具有一定的不确定性,可以算一个总的信息熵,把总的数据去掉某个属性之后再算一个信息熵。把这两个相减算出来的就是某个属性的信息增益,信息增益越大的属性,影响就越显著。为了防止过拟合的问题,我们采用了一些集成的方法(随机森林是较为常用的一种):

建模数据挖掘方法 数学建模挖掘模型_数据_46


神经网络:

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_47


方法本质上是一个多元的函数,如果f是一个线性的关系,实际上就是一个多元回归的模型。神经网络的妙处在于这个f往往不是线性。它用的是一些激活函数

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_48


建模数据挖掘方法 数学建模挖掘模型_拟合_49


这些激活函数体现了神经网络的非线性。较为常用的是logsig。神经网络既可以用于预测问题,也可以用于分类问题。

建模数据挖掘方法 数学建模挖掘模型_拟合_50


神经网络成功的关键之一在于反向传播算法,我们叫做BP神经网络。

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_51


还有一类比较常用的分类方法是支持向量机

建模数据挖掘方法 数学建模挖掘模型_拟合_52


加入数据如图所示分布,我们称这两类是线性可分的,在图中我们可以用一条直线给它分开,在图中,可以用蓝色的线给它分开也可以用黑色的线给它分开,但黑色的线要好一些,当测试数据离这个线更近一点的时候也能分得开,也就是说他的泛化误差或者说预测误差比较小。

那么我们怎么找这条线呢,用的是最大间隔原则

建模数据挖掘方法 数学建模挖掘模型_数据_53


具体可以通过二次规划实现

建模数据挖掘方法 数学建模挖掘模型_拟合_54


刚刚我们讨论的是能够完全分得开的,但有一些数据不能用直线完全分开,或者找出来这个直线它的间隔很小,这样的话可能应用误差就比较大了。于是提出了软间隔的概念。就是我不是要求这个间隔带里是没有样本点的,我允许这个间隔带里有少量的数据,留出一定的软间隔。

建模数据挖掘方法 数学建模挖掘模型_聚类_55


处理非线性可分的向量机还有一种非常创造性的方法叫做核方法,就是给数据升维。

建模数据挖掘方法 数学建模挖掘模型_数据_56


例如在上面左图中,蓝色和红色的点 要是用一条直线,肯定是分不开的,但是如果添加一个维度,把这些点放到三维空间去看,就变成了了右图,就可以用一个平面把他们分开了,这个平面在三维空间就是一个线性的元素。由此可见低维非线性可分的在高维可能就变成了线性可分的。

建模数据挖掘方法 数学建模挖掘模型_拟合_57

- 聚类方法(无监督学习)

相对于上面的分类问题,聚类的这些样本点是没有标签的。在有监督学习中无论是回归还是分类,我们是有x有对应的y的,只是对应关系不清楚。现在是只有x没有y,我们要把相近的归到同一类中

建模数据挖掘方法 数学建模挖掘模型_拟合_58


在分类中,距离是很重要的判断依据,但也不能只看距离

建模数据挖掘方法 数学建模挖掘模型_聚类_59


建模数据挖掘方法 数学建模挖掘模型_数据_60


建模数据挖掘方法 数学建模挖掘模型_聚类_61


建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_62


在经典的统计学中常用的是层次聚类。在常用的聚类方法中,k-means是相对简单效果也相当不错的一种。

k-means聚类

k-means是一种比较随机的方法(初始距离中心是随机选取的),两次运行的结果一般都不一样

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_63


建模数据挖掘方法 数学建模挖掘模型_拟合_64


建模数据挖掘方法 数学建模挖掘模型_拟合_65


建模数据挖掘方法 数学建模挖掘模型_拟合_66


K-means有一个问题,它对于非凸形状的类 效果不好 对于这种情况我们有另外一种方法:基于密度的聚类

建模数据挖掘方法 数学建模挖掘模型_数据_67


引入了邻域的概念,如果这个点的邻域里的点足够多,那它就叫做核心点,如果它在某个核心点的邻域内但它自己的邻域内的点又不够多,它就叫边界点,如果既不是核心点也不是边界点那它称为噪声点。在邻域的基础上,又引入了密度直达、密度可达和密度相连的概念。

建模数据挖掘方法 数学建模挖掘模型_数据_68

建模数据挖掘方法 数学建模挖掘模型_聚类_69


可以看到密度聚类对于非凸的簇效果也是很好的

建模数据挖掘方法 数学建模挖掘模型_数据_70


下图是两种方法的一个对比,在凸形状的情况下K-means还是做得挺好的,密度聚类则会产生一些噪声点也就是说它不能把所有的点都给你分出来。

但是对于非凸的,k-means的效果就不是很好了,密度聚类就比较好。

建模数据挖掘方法 数学建模挖掘模型_数据_71


聚类问题跟分类问题不一样的一点在于,分类问题有参考,可以通过准确率判断模型的好坏,但是聚类没有对应的Y,为了简单判断聚类模型的好坏我们引入了如下的指标

建模数据挖掘方法 数学建模挖掘模型_建模数据挖掘方法_72


建模数据挖掘方法 数学建模挖掘模型_拟合_73

建模数据挖掘方法 数学建模挖掘模型_数据_74


简单来说,就是同一个类之间紧凑,不同类之间距离大的我们认为它聚类效果好

建模数据挖掘方法 数学建模挖掘模型_数据_75


建模数据挖掘方法 数学建模挖掘模型_聚类_76


层次分析法存在的致命的问题就是它的成对比较阵,这个成对比较阵在实际工程中往往是专家评判得来的,但是数学建模的过程中只能自己造一个成对比较阵,说服力不够。如果这个成对比较阵的来源你说的清楚还可以,如果说不清楚的话就得不到高分。

灰色预测常常用在数据量少并且误差也不大的时候用灰色预测,但是现在灰色预测用的太多了,在很多其他方法也能用的情况下,不要滥用灰色预测。

高次函数拟合也存在滥用的情况。

还有各种过拟合问题也需要注意。不要一味追求拟合误差小。

做检验的时候不能用建模已经用过的数据。

尽量减少套用的情况。

建模数据挖掘方法 数学建模挖掘模型_拟合_77