关于数据挖掘的综合应用

数据挖掘综合应用

这里我们的主要任务是将我们学过的数据挖掘相关的知识点联系起来,能够掌握数据挖掘的一般流程之后,可以完成数据挖掘综合应用实验。

一、数据挖掘流程
1.数据挖掘流程的概述
在实际的数据挖掘项目中,一般的流程如下:
在这里插入图片描述
2.需求分析
(1)业务理解:最初的阶段集中在理解项目目标和从业务的角度理解需求,同时将这个信息转化为数据挖掘问题的定义和完成项目的初步计划。
(2)数据的获取和理解:数据理解阶段从初始的数据收集开始,通过一些活动的处理,目的是熟悉数据,识别数据的质量问题,首次发现数据的内部属性,或是探测引起兴趣的子集去形成隐含信息的假设。

3.数据加载
首先我们需要将收集的数据集加载到内存中,才能进行进一步的操作。在Python基础课程中介绍过的Pandas提供了非常多的读取数据的函数,分别应用在各种数据源环境中,我们常用的函数为:
(1)read_csv:从 csv 格式文件加载数据
(2)read_table:从 table 文件中加载数据
(3)read_sql: 从数据库中加载数据
注意:
read_csv 与 read_table默认使用的分隔符不同
read_csv 与 read_table常用参数:
(1)seq/delimiter: 用来制定数据之间的分隔符,read_csv默认为逗号, read_table默认为\t(制表符)。
(2)header: 用来制定标题行,如果数据集中没有标题行,则制定为None。
(3)names: 读取数据时,可以通过names属性设置列索引。
(4)index_col:可以将数据集中的某一列(某几列)设置为行索引,通过index_col来进行指定。
(5)usecols:通过 usecols 参数来设置需要使用的列。

4.数据预处理
在数据预处理的过程中主要包括两个部分:数据清洗和特征预处理。
(1)数据清洗:
缺失值处理:一般包括去除或者填补两种方式。 填补方式主要有:均值、中位数、众数、回归分析等。
异常值处理:包括特殊值 (NA)、奇异值以及数据的不一致性(如年龄<0)。
不均衡数据处理: 主要针对一个样本的数据量远大于其它样本类别的数据量。(例:二分类问题中若两个类别的样本比例超过4:1,即认为数据集中存在不均衡数据的现象)。
(2)特征预处理:
特征预处理:主要包括特征缩放,连续型特征的离散化、离散型特征的编码、数据的变换。
(2.1)特征缩放:无量纲化和正则化。
无量纲化:主要是使不同规格的数据转换到统一规格。
常见的无量纲化方法有:标准化、归一化(均值归一化、最大最小归一化)、缩放成单位向量。
正则化:无量纲化是依照特征矩阵的列处理数据,正则化是依照特征矩阵的行处理数据。正则化的前提是样本各特征服从正态分布,正则化后将其转换成标准正太分布。
正则化的公式类似于标准化,不同的是(正则化) 样本均值和样本标准差改为特征均值和特征标准差。
在这里插入图片描述
(2.2)连续型特征的离散化:
一般在建立分类模型时,需要特征的离散化,特征离散化后,模型会更稳定,降低了模型过拟合的风险。一般会根据数据类型的不同分为两类, 一种是针对定量数据类型(连续变量) ,另一种是针对定性的数据类型(无序变量)。
对定量的特征:二值化操作,分箱。
二值化操作:定量:二值化的核心在于设定一个阈值, 大于阈值的赋值为1,小于等于阈值的赋值为0,公式如下:
在这里插入图片描述
分箱::是连续变量离散化最常用的方法。主要分为有监督分箱和无监督分箱。
有监督分箱:最常用的是卡方分箱,是一种自底向上的数据离散化方法。他依赖于卡方检验,具有最小卡方值的相邻区间合并在一起,否则,它们应当保持分开。而低卡方值表明它们具有相似的类分布,直到满足确定的停止准则。卡方分箱最大的缺点是无法控制分箱的个数,且各分箱的区间不均衡。
阈值的确定:
在这里插入图片描述
无监督分箱:最常用的是等距分箱和等频分箱。
等距分箱:是最为常用的分箱方法之一,从最小值到最大值之间,均分为 N 等份, 这样, 如果A,B为最小最大值, 则每个区间的长度为W=(B−A)/N , 则区间边界值为A+W,A+2W,….A+(N−1)W 。这里只考虑边界,每个等份里面的实例数量可能不等。
等频分箱:区间的边界值要经过选择,使得每个区间包含大致相等的实例数量。比如说 N=10 ,每个区间应该包含大约10%的实例。
以上两种算法的弊端:
比如,等宽区间划分,划分为5区间,最高工资为50000,则所有工资低于10000的人都被划分到同一区间。等频区间可能正好相反,所有工资高于50000的人都会被划分到50000这一区间中。这两种算法都忽略了实例所属的类型,落在正确区间里的偶然性很大。

(2.3)离散型数据的编码:
当变量不是定量特征的时候是无法用来训练模型的,因此需要对离散型数据进行编码。这个过程主要包括两种方式:One-Hot编码(独热编码)、哑编码。
One-Hot编码:将离散型特征的每一种取值都看成一种状态,若你的这一特征中有N个不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。
LabelEncoder (标签编码): 是对不连续的数字或文本进行编码,在实际工程中,独热编码通常会搭配LabelEncoder一同使用,即先对需要编码的某一非连续的数值型特征进行编码转换成连续型数值,再使用独热编码。
哑编码:
与One-Hot编码很类似,区别在于哑变量认为对于一个具有N个类别的特征,我们只需要考察N-1个类别是否存在,第N个类别自然就能得到。

(2.4)数据的变换:
当线性回归或者一般回归的方法无法拟合目标数据。 通常会采用数据变换的方式来对数据进行处理后再尝试拟合。常用的数据变换方式有:基于多项式的、基于对数函数的。
多项式变换:两个特征,即维度为2的多项式转换公式如下:
在这里插入图片描述
对数变换:对数变换能够缩小数据的绝对范围。

5.特征工程
特征工程是数据挖掘过程中最为重要的一个技术点之一。它主要包括降维和特征选择两个部分。
特征选择(Feature Selection):当数据预处理完之后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:
特征是否发散:如果一个特征不发散,例如方差为0,也就是说样本在各个特征上基本上没有差异,这个特征对于样本的区分并没有什么作用。
特征与目标的相关性:与目标相关性高的特征,应当优先选择。

特征选择:
根据特征选择的形式又可以将特征选择方法分为3种
(1)Filter:过滤法按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数来选择特征。
(2)Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
(3)Embedded:集成法,先使用某些机器学习的算法和模型进行训练,得到各个特征的取值系数,根据系数从大到小选择特征。类似于Filter方法,但是通过训练来确定特征的优劣。
注意:
我们使用sklearn中的feature_selection库来进行特征选择。

降维:
当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,导致训练时间长的问题。因此降低特征矩阵维度也是必不可少的。常见的降维方法有:
基于L1惩罚项的模型
奇异值分解 (SVD)
主成份分析法 (PCA)
线性判别分析 (LDA)
局部线性嵌入 (LLE)
其中PCA是为了让映射后的样本具有最大的发散性,LDA是为了让映射后的样本具有最好的分类性能。因此PCA可以理解为是一种无监督的降维方法,而LDA是一种有监督的降维方法。

6.模型选择
在进行完数据预处理和特种工程之后,接下来要进行的就是选择合适的模型来训练我们已经处理好的数据和选择的特征。在这个过程中,一般会从如下几个角度来进行分析,以选择合适的算法:
数据集的大小
特征空间的维度
特征是否独立
是否为线性特征
对拟合程度的要求
其他要求:性能、时间、空间
注意:
影响选择的因素有很多,如果没有特别的要求,尽量选择简单的模型,越简单的越合适。
(1)分类问题的模型选择 (LR)
在实际的工程项目中,分类问题占据了数据挖掘市场的主导地位。因此分类模型的使用也最为常见。常用的分类模型有:逻辑回归(LR)、KNN、朴素贝叶斯、决策树、SVM、集成算法(随机森林、Adaboost、GBDT、Xgboost)。
逻辑回归(LR):适用于特征基本线性相关,并且问题线性可分。当特征为非线性特征时,可使用特征工程将非线性特征转换为线性特征(离散化+one-hot, 重排序)。正则化使模型对噪声鲁棒,不容易过拟合训练数据,并且可使用正则化进行特征选择。
LR的另一个特性是输出概率,有效支持排序任务和分类阈值的选择。
虽然LR准确率不高,不能百分百的有效,但是在尝试其他分类器之前,通常先使用LR+L2来建立一个不错的基模型。
(2)分类问题的模型选择 (KNN)
KNN:是一种基于实例的分类方法。该方法就是找出与未知样本x距离最近的k个训练样本,看这k个样本中多数属于哪一类,就把x归为那一类。
kNN是一种懒惰学习方法,它存放样本,直到需要分类时才进行分类,如果样本集比较复杂,可能会导致很大的计算开销,因此无法应用到实时性很强的场合。
它的特点是跟着数据走,没有数据模型可言。
适用场景:需要一个特别容易解释的模型,比如需要向用户解释原因的推荐算法。
(3)分类问题的模型选择(朴素贝叶斯)
朴素贝叶斯:主要利用Bayes定理来预测一个位置类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。
由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。
适用场景:可以高效处理高维数据,但是结果可能不尽如人意。至今依然被垃圾邮件过滤器使用的算法。
(4)分类问题的模型选择 (SVM)
SVM的核心思想就是找到不同类别之间的分界面,使得两类样本尽量落在面的两边,而且离分界面尽量远。
最早的SVM是平面的,局限很大。但是利用核函数(kernel function),我们可以把平面投射(mapping)成曲面,进而大大提高SVM的适用范围。
适用场景:SVM在很多数据集上都有优秀的表现。预测准确度高,且可适用于特征维度高的数据集(文本分类)。
(5)分类问题的模型选择 (DT)
决策树:是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。
构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。
主要的决策树有:ID3、C4.5、CART。
适用场景:因为它能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候往往可以使用决策树。受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石。
(6)分类问题的模型选择(集成)
随机森林:数据维度相对低(几十维),同时对准确性有较高要求时。因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。
Adaboost:具有很高的精度,不容易发生过拟合。可以将不同的分类算法当做弱分类器,且相对于随机森林,Adaboost考虑了每个分类器的权重。但是数据不均衡会导致分类精度下降,且训练比较耗时,如果对训练时间有要求,慎用。主要应用领域为:模式识别、计算机视觉领域,用于二分类和多分类场景。
GBDT:对于分类问题来说,GBDT一般是适用于二分类问题。单独的使用GBDT模型,容易出现过拟合,在实际应用中往往使用 GBDT+LR的方式做模型训练。
Xgboost:与传统机器学习算法相比,Xgboost具有速度快、准确度高等优势,本质上是GBDT的优化,但是把速度和效率做到了极值。常用做推荐算法。
(7)回归问题的模型选择
回归分析是研究自变量和因变量之间关系的一种预测模型技术。这些技术应用于预测,时间序列模型和找到变量之间关系。例如,可以通过回归去研究超速与交通事故发生次数的关系。
常用的回归模型有:
线性回归
多项式回归
岭回归
LASSO回归
决策树及GBDT

7.模型评估
回归问题中最常用的是均方误差。
分类问题中最常用的则是基于混淆矩阵,包括精度和错误率;查准率/查全率;F-score以及ROC曲线/AUC面积。
聚类问题常用的方法是Silhonette轮毂系数。

二、综合应用
在这里插入图片描述

发布了30 篇原创文章 · 获赞 19 · 访问量 2193

猜你喜欢

转载自blog.csdn.net/qiaoqiaomanman/article/details/105166931