数据挖掘流程
大数据应用基础——第三次课
魏炜
weiwei@
数据挖掘的基本流程
数据预处理2
评估4
信息收集31
数据挖掘33
知识表示35
数据挖掘的基本流程
高度重视以下同义词
• 以下术语大致是同一个意思:
• 表格中的行:个案=实例=记录=样本点=数据
点
• 表格中的列:属性=特征=字段=维度=预测变
量=自变量
数据预处理
数据预处理的步骤
• 主要包括:
–数据集成
–数据清理
–数据归约(抽样和属性筛选)
–数据变换。
数据质量有很多方面问题
数据准备
• 在数据挖掘过程中,数据准备工作占用的
时间往往在一半甚至60%以上!
• 这些工作对提高数据挖掘结果的准确性是
必不可少的。因为,没有高质量的数据,
就没有高质量的挖掘结果。
• 数据挖掘出现错误结果多半是由数据源的
质量引起的。因此应该重视原始数据的质
量,从源头上减少错误和误差,尤其是减
少人为误差。
数据准备的重要性
数据准备工作占用的时间
往往在60%以上!
数据集成
• 数据挖掘或统计分
析可能用到来自不
同数据源的数据,
我们需要将这些数
据集成在一起。
• 如果只有一个数据
源,这一步可以省
略。
数据集成中的实体识别问题
• 一个重要问题是实体识别问题:在不同的数据
源中,相同的字段也许有不同的名称。
• 我们需要识别数据中能唯一标识实体的字段。
我们怎么能确定一个数据源中的customer_id
和另一个数据源中的customer_number指的是
同一个字段呢?这里我们可以利用字段的元数
据信息,例如含义、数据类型、字段允许值的
范围等,从而避免在数据集成时出错。
• 如果我们确定这两个字段是一致的,那么我们
就能够把标识相同的客户当作同一个客户。
数据集成中的实体识别问题
• 对于互联网企业来说,一个需要注意的重
要问题是如何能把PC端用户、手机端用户
给对应起来。
• 也就是说,如何能保证,用户在不同设备
上登录你的网站时的访问记录都能汇总到
一起,而不是把这些访问记录当做是多个
不同用户的访问记录。
数据集成中属性值不一致的问题
• 同一个人的名字可能在一个数据库中登记
为“王思聪”,在另一个数据库中则登记
为“Sicong Wang”。
数据集成中的数据值格式不一致问
题
• 对同一个实体,来自不同数据源的属性值可能是不同
的。原因可能是各个数据源往往以不同的方式表示相
同的数据,或采用不同的度量等。
• 例如,不同数据源中日期的格式不同。
– 日期有时是一个数值;
– 有时是以“XXXX年X月X日”的字符串格式存储;
– 有时以“YY/MM/DD”的字符串格式存储。
• 又例如,对同一个省份可能用了不同的名称。
• 还有,同一个名字的属性sales,在一个数据库中是指
一个区域的销量,在另一个数据库中可能是指一个分
店的销量。
数据集成中的数据值格式不一致问
题
• 重量在一个数据源中的单位可能是千克;
在另一处则是斤。
一种度量
另一种度
量
数据集成中的属性冗余问题
• 一个属性可能能由另一个或一组属
性导出。
• 有些冗余可以被相关分析检测到。
我们通过相关系数或卡方检验了解
两个属性是否是统计相关的。
数据探索
• 在数据集成后,需要数据探索(data
exploring)。这个步骤不是数据预处理,
但对数据预处理很重要。
• 几乎很少有现成的数据能直接使用。数
据总是看上去不整洁,例如有脏数据、
缺失值等。
• 怎样能知道数据的质量呢?你需要把自
己沉浸在数据中,进行数据探索,从而
了解数据质量。
数据探索的方法
• 在R中的summary(变量名)这种指令(在其他
软件中有类似指令)能提供诸多基本统计信
息。比如:
–每个变量的值域区间(最大值和最小值)是
否合理?所有的值都落在期望的区间内吗?
–平均值与中位数是相等的还是差别很大(这
有助于说明变量是否符合正态分布)?数据
是对称的还是倾斜的。
–每个变量的标准差是多少?(远离属性的均
值超过两个或三个标准差的值可能是离群点)
–有多少缺失值?
直方图
箱图 箱图
散点图
• 通过直方图,能观察连续型变量的分
布是否接近正态分布。对于离散型变
量,则可以用频次分析。
• 通过箱图,能观察到离群值,比如识
别出观测值特别高的个案。
• 通过散点图,能了解属性之间是否有
相关性。
数据清理(数据预处理)
• “数据的重要程度大过算法本身!”
• 无论专家多有经验,无论算法再完美,也不可
能从一堆垃圾中发现宝石。
• 人们往往没有那么好的运气,有现成的质量好
的数据可以直接用。现实世界的数据是“杂乱
的”,其中总是有这样或那样的问题。
• “经常保持对客户数据的怀疑之心!”“所有
的数据都是脏的”
• 例如,有些数据是缺失的(属性的值是空值),
有些是含噪声的(属性的值是错误的,或有孤
立点数据),有时同样的信息采用了多种不同
的表示方式(在编码或命名上存在不一致)。
数据清理
• 对于在商业中比较重要的字段,系统开发者和
系统使用者会尽量确保其正确性。然而,对于
在商业中不太重要的字段,人们往往不太重视
确保其质量。
• 通过数据清理,可以确保存入数据仓库中的信
息是完整、正确和格式一致的。
• 如果数据有误,那么所得到的结果很可能有误
导性。
• 但是,数据挖掘者不应该太挑剔,因为我们往
往只能得到质量不好的数据。
数据清理
• 如果你的企业中有数据仓库,应弄清楚这
些数据是怎样收集的,这对理解数据质量
很重要。至少应该知道每个字段取值来自
哪里、合理的取值的范围、为什么会有缺
失值等。这对数据清理很有帮助。
数据清理
• 数据清理也叫数据清洗。
• 这一步主要针对缺失值、数据噪声、离群
值。
缺失值
• 缺失值很常见。例如,在销售表中的顾客信息
当中,也许除了名字外,其他各个属性都有缺
失值。
• 我们尤其不希望重要属性存在缺失值。
缺失值的成因
• 分析师首先应该了解数据缺失的原因。只
有知道具体缺失原因后,才能有的放矢。
• 产生缺失值的原因很多,可能是:
– 这些数据并没被记录下来;
– 测量设备出现故障;
– 对数据错误地更新导致某些字段信息丢失;
– 被测量的对象(头盖骨或植物)损坏或死亡了。
– 有时,还没来得及提供属性值。
缺失值的成因
• 有时,当你从外部数据源中追加人口统计信息到
客户信息中时,你没能找到一部分客户的此类信
息。
• 很多时候,最初收集数据时,有些变量被认为不
太重要,因此留下空白。例如,银行并不特别需
要知道客户的年龄,所以年龄变量会存在许多缺
失值。
• “被掩盖的缺失值”:有时,用户不希望提交个
人信息,就会故意向字段输入不正确的值(例如
把生日设置为1月1日)。一个类似的例子是,数
据中很多客户在1911年出生。为什么呢?其实因
为数据输入界面坚持要出生日期。因此客服人员
在不知道这个日期时,就会键入6个“1”,从而
输入1911年11月11日。
缺失值的处理方法
• 处理方式有多种:
– 有些有缺失值的变量实际上并不需要处理,因为你
其实知道缺失值的实际值是什么。
–删除缺失值较多(例如20%以上的属性都存在缺失
值)的个案(即记录、行、实例、元组) ,尤其
是关键的属性值缺失的个案。
–剔除所有含有缺失值的个案。此法适于有缺失值的
个案的数量占比很小的情况下。此法操作简单方便,
而且留下来的数据全是有完整记录的,数据很干净。
但是,丢弃所有包含缺失值的个案可能会引入偏差,
因为这些个案不一定是随机分布的。
– 删除有大量缺失值的变量。此法适于那些缺失值占
比(例如超过20%)较大的变量。对于缺失值占比
超过50%的变量,则一般建议删除。
缺失值的处理方法
–人工填写缺失值。此法工作量大,对于海量数据可行
性极低。
–使用属性的中心度量来填充。此类指标有平均值、中
位数、众数等。对于接近正态分布的变量来说,平均
值是最佳选择;然而,对于偏态分布的变量来说,中
位数是更好的指标。此种方法偏差大,因为这种替换
毕竟是人为的替换,属于“不得已而为之”的策略。
但其简单、速度快,适用于大数据集。
–使用与给定个案同类的样本的属性的中心度量来填充。
此法与上一种方法类似。例:把顾客按信用风险程度
分类,则用具有相同信用风险的顾客的平均收入或收
入中位数来替换收入中的缺失值。
缺失值的处理方法
–通过两个变量之间的相关关系来填充。如果两
个变量之间的相关系数足够高(例如大于),
我们可以找到两者之间的线性相关关系模型
(一个公式)。我们可以通过这个公式来计算
出一个值,用于填充缺失值。
–通过个案之间的相似性来填充。此法假定如果
两个个案是相似的,那么其中一个个案在某变
量上的缺失值很可能与另一个个案在这个变量
上的值是相似的。最常用的相似性度量指标是
欧式距离。我们可以用欧式距离来找到与含缺
失值的个案最相似的10个个案,用它们的中位
数或均值来填充缺失值。
缺失值的处理方法
– 对缺失值进行赋值(Imputation)。此法通过回
归模型、决策树、贝叶斯定理等去预测缺失值
的最近似的替代值。也就是把缺失数据所对应
的变量当做目标变量,把其他的输入变量作为
自变量,为每个有缺失值的字段分别建立预测
模型。这种方法最严谨,但是成本较高。
– 还有一种办法,是在不同的数据上建立多个模
型。例如,对某几个变量没缺失值的客户建立
一个模型,而对这几个变量有缺失值的客户建
立另一个模型。
数据噪声
• 噪声数据,即数据值错误,不能反映真实的值。
• 数据噪声太多,会导致数据价值大大降低。
• 产生原因可能是:
– 人们在输入个人数据时常常会故意制造一些错误;
– 人们在输入资料时操作失误;
– 在互联网营销中,存在大量虚假的应用下载和使用,
以及虚假的好评差评;
– 数据收集的设备不稳定;
– 数据转化时存在逻辑错误;
– 有时,数据过时了(例如地址过时)。
识别数据噪声
• 还好,噪声数据都是少数!
• 通过数据探索,能很容易发现
噪声数据。比如,在直方图中,
某些值出现的频率非常少,我
们就要怀疑这样的数据是否合
理。
处理数据噪声
• 对噪声数据,我们的处理办法有:
–最广泛应用的处理方式是数据平滑
(Smoothing)。最常用的数据平滑方法
是分箱技术,此法稍后在数据转换中会
介绍。
–其他平滑方法还有:基于时间序列分析,
根据前一段历史趋势数据对当前数据进
行修正。
–删除带有错误的个案。
识别异常个案
• 对于多维数据,异常个案的识别可以通过聚类技
术。
• 异常个案(孤立点、离群点、outlier)跟噪声数
据不完全是一回事。离群点能从表象上判别出来,
而噪声则是随机的、取值是没有规律的。
• 噪声的取值不一定看起来异常;而离
群点虽然取值异常,但不一定都是噪
声。对于取值正常的噪声点,我们还没办法检测。
• 可以选取一些字段来对个案进行聚类。从而识别
出异常程度较高的个案,即落在簇集合之外的个
案。
处理异常个案
• 特别要注意的是,这些数据点不一定是噪声。
我们要从中剔除真正不正常的数据,而保留看
起来不正常,但实际上真实的数据。有时,这
些并非噪声的异常点包含着重要的信息,例如
信用卡用户恶意欺诈检测就需要保留异常点。
• 处理离群点的另一种办法是对变量进行标准化,
从而缩小值域。
• 对于时间序列数据和空间数据,则采用其他方
法进行异常点的检测。
识别异常值
• 除了上述办法,还可以仅凭单个变量所提供的信息
来识别异常值。
• 对于异常值,处理办法是:
– 一般建议剔除。
– 此外,在聚类分析中,可以采用随机抽样。这样,作为
稀有事件的数据噪声和异常值能被抽进样本的概率会很
小,这样样本就比较干净。
• 判断方法如下:
– 对于类别型变量,是否某个类别出现的次数太少、
太稀有?比如其占比不到1%。
– 对于数值型变量,是否某些取值太大?比如,一
般的客户平均每天买2次,而某几个客户每天买
100次。又如,年龄为140岁无疑是个异常值。
重复数据
• 重复数据主要有两种:
–个案可能会重复。比如,输入数据时,意外地多次
输入了同一个个案。
• 属性也可能会冗余。在集成多个数据库时,同一个属
性在不同的数据库中会有不同的字段名(例如
birthday和生日),这时我们只要保留其中一个字段
就可以。这种冗余通常在数据集成的步骤中就解决了。
数据转换
• 数据转换(即数据变换、Data
transformation)
• 主要是利用现有的字段进行运算来得到新
的字段。通常说到数据变换,包括四种:
– 数据离散化(采用分箱等方式)、
– 产生衍生变量、
– 使变量分布更接近正态分布、
– 数据标准化。
数据转换——离散化
• 如果对连续变量进行离散化,可以避免引
入任何分布假设。这样就不需要符合正态
分布了。
数据转换——离散化
• 数据分箱(Binning)是对连续数据进行离散化、增加
粒度的主要办法,这是一种很典型的数据变换。它把
一个连续性的数值字段根据其值分组,转换成一个拥
有几个不同类别的字段。分箱的主要目的是去除噪声。
• 具体取值方式有:按箱平均值平滑、按箱中值平滑以
及按箱边界值平滑。
• 举例:
• 假设有8、24、15、41、7、10、18、67、25等9个
数,分为3箱。
– 箱1: 8、24、15
– 箱2: 41、7、10
– 箱3: 18、67、25
• 按箱平均值求得平滑数据值:箱1: 16、16、16,
平均值是16,这样该箱中的每一个值被替换为16。其
他两个箱与此类似。
数据转换——离散化
• 对于决策树算法,往往需要对连续变量进
行离散化,从而使输出的决策树通俗易懂。
• 具体办法可以是:把各属性所在区间平均
分成8份,每一份对应1个离散值。
数据转换——产生衍生变量
• 具体有两种:
1. 把非数值型数据转换成数值型。例如:把“
男”转换成1,“女”转换成0;根据用户出
生年月日得到其当前的年龄。
2. 采用简单的数学公式,产生更加有商业意义
的衍生变量。主要有均值、占比、比率等种
类。例如家庭人均年收入、用户年均消费金
额。
– 分析人员常常容易从现有的数据库中直接提取
现成的字段,而经常忘记一些衍生的新字段,
这需要有业务知识来支持。
数据转换——使变量分布更接近正
态分布
• 最常见的改善变量分布的转换方法是对变量取
对数(take log)。
• 在实践中,很多数值型变量的分布都偏斜、不
对称,这会干扰模型的拟合,影响变量的预测
性能。
• 此种转换和分箱有异曲同工之处,都具有提高
变量的预测能力,强化自变量与因变量的关系,
从而提高预测模型的拟合效果。因此,在实践
中,经常对这两种方式分别进行尝试,采用其
中的一种。
• 不过,这种非线性转换的含义缺少清晰的商业
逻辑,商业应用者可能不太能理解。
数据标准化
• 数据标准化(Data rescale、规范化):
是把区间较大的数据按比例缩放,使之落
入一个比较小的区间中,比如0~1或-1~1。
• 标准化可以提高涉及距离度量的算法的准
确率和效率。比如,当创建一个聚类模型
时,我们需要确保所有字段都有近似的标
度。标准化能够避免出现聚类结果完全由
某个具有很大变化范围的属性主导的情况。
数据标准化
• 最常用的数据标准化方法有两种:
– 标准差标准化(Z-score
transformation、零均值法、Zero-
mean normalization)。经过这种
方法处理后的变量符合标准正态分
布,均值为0,标准差为1。
– 最小最大值法(Min/Max
transformation、Min-Max标准化)
能把各变量的值归一化到[0,1]范围
之内。
数据归约
• 数据归约属于数据预处理,但不属于数据清
理。这一步也叫数据简化。
• 数据归约(data reduction):在保持数据的
完整性的前提下,把需要分析的数据量大幅
减小,从而加快算法运行速度,但能够产生
几乎同样质量的分析结果。
• 包括两类:属性筛选和数据归约。
数据归约——抽样
• 抽样可看作数据归约(numerosity reduction)的一
种。
• 抽样的主要原因是如果数据全集的规模太大,运算
资源的消耗会很大,而且运算时间很长。
• 另一个常见原因是:在很多小概率、稀有事件(例
如信用卡欺诈)的预测建模中,如果按原始数据来
分析,是很难得到有意义的预测的。因此,需要人
为增加样本中稀有事件的浓度和在样本中的占比。
• 抽样需要注意尽量保持样本和总体的一致性。例如
样本中变量的值域和分布、缺失值的分布都应该与
总体尽量高度相似。
• 尽量采用简单随机抽样或分层随机抽样。否则可能
会有样本偏差(sample bias)。
数据归约——不平衡数据的抽样
• 在不平衡数据中,两组群体的成员数量相差甚远,例
如对直邮促销做出响应者比无响应者少很多、信用卡
欺诈者比正常的信用卡持有者少很多、流失可衡山的
数量往往只有非流失客户数量的百分之几甚至千分之
几。
• 如果两组群体的成员数量大致相当,分类算法的性能
最好。
• 对于偏斜数据,在抽样方面,通常可以采取几种办法
使得两组群体占比更为平衡:最常用的一种是对占比
较少的实例进行过抽样(oversampling)。其他方法
有:对占比较多的实例进行欠抽样,从而得到一个虽
然较小、但是更平衡的样本;添加一个加权因子,让
常见组的成员的权重小于罕见组的成员的权重。
• 这样抽样之后,预测模型的效果往往更好。
数据归约——属性筛选
• 在互联网行业,数据归约主要是维度归约
(dimensionality reduction),即特征归约、变量
筛选。也就是把多维数据压缩成较少维度的数据。
这就需要进行特征选择(feature selection),即属
性筛选。
• 按说信息比较多应该是好事才对,所以我们尽量不
使用特征归约,因为这对于原始数据通常都是有损
的。但是:
– 过多的特征会使得机器学习的训练变慢。有些数据挖掘
算法比较复杂,在高维度情况下运行的时间是天文数字,
不可能实现;
– 过多的输入变量容易带来过度拟合和共线性的风险,这
会降低分类模型的预测能力。
属性筛选的方法
• 首先,可以删除明显无价值的变量,例如
缺失值比例很高的变量,以及常数变量,
还有取值太泛的类别型变量(例如邮政编
码)。
• 然后,可以结合业务经验进行筛选。这是
最关键、最重要的筛选自变量的方法。很
多时候,业务专家一针见血的商业敏感性
可以有效缩小自变量的考察范围。
属性筛选的方法——线性相关性
• 最简单、最常用的方法就是通过自变量之
间的线性相关性指标进行初步筛选。其中,
以Pearson相关系数最为常用。
• 如果多个自变量之间线性相关性很强,只
需要保留一个就可以了。
属性筛选的方法——互信息
• 线性相关系数可以检测出特征之间是否有
线性相关关系。但是,它不适于检测非线
性关系。
• 互信息则适合检测非线性关系。它基于信
息熵的概念,计算出两个特征所共有的信
息量,即一个特征使另一个特征的不确定
性减少的程度。
属性筛选的方法——R平方
• 在上述步骤结束之后,
– 仍然可能有些特征,它们虽然彼此之间独立,并
且和目标变量有一定的依赖关系,但是把它们放
在一起来看,跟目标变量就没有依赖关系;
– 而另一些特征,则虽然单独看起来跟目标变量没
有依赖关系,但把它们放在一起就能看出与目标
变量有依赖关系。
• R平方(R-Square)借鉴多元线性回归的算法
来判断对目标变量有重要预测意义的自变量,
也就是找出哪些自变量能显著地解释目标变
量的变异性。
属性筛选的方法——特征抽取法
• 这类方法不是要删减特征,而是把原
有的特征组合成少量特征。
• 可以分为线性的和非线性的。
–线性的:主成分分析。
–非线性的:多维标度法。
• 以上两种方法是典型代表。但还有其
他方法。
属性筛选的方法——主成分分析
• 主成分分析是最常用的特征抽取方法。
• 主成分分析(PCA)是用少量指标(即主成分)
来表示原先较多的指标。这少量指标尽可能多
地反映原来较多指标的有用信息(所保留下的
方差尽量多),且相互之间又是无关的。每个
主成分都是由多个原始变量线性组合而成的。
这种分析在基本未损失数据集的信息的情况下
降低了数据集的维数。
• PCA适于处理稀疏数据。
• PCA的不足是会造成结论的可解释性上相对于
原始变量而言更复杂。
属性筛选的方法
• 还有其他一些属性筛选方法,此处不
详细讲,例如:
–聚类
–线性判别式分析(LDA)
–多维标度法(MDS)
–卡方检验。
–小波变换。适用于多维数据。其典型应
用是图像压缩。
后续步骤
数据挖掘
• 这是最核心的一步。
• 根据数据仓库中的数据,用合适的
数据挖掘算法进行分析,得出有用
的信息。
评估
• 在这一步,我们验证数据挖掘结果的正确
性。
• 其中,模型算法质量的评价是很重要的一
部分。对分类模型和聚类模型的评价方法
是不同的。
• 分类模型很重视采用一些指标来进行模型
评价和选择。
• 对分类模型,通常采用的指标有: ROC曲
线、Lift曲线。其本质都是与预测的准确性
有关的。
分类算法评估的主要宗旨
• 主要宗旨就是:
• 减少误判(假阳性)和漏判(假阴性)。
• 在疾病预测、欺诈识别等领域,漏判带来
的危害远大于误判。当然,误判会带来干
预成本的提高,比如会增加就诊成本。
分类算法评估——一个比喻
• 怀孕检测:
• 假阴性:怀孕了但没检测
出来。
分类算法评估——混淆矩阵
• 混淆矩阵(Confusion matrix)
• 例如,TP表示实际是正例预测也为正例的
实例个数。其他以此类推。
分类算法评估——混淆矩阵
• 可见,预测正确的实例数量远远多于预测错
误的实例数量。
分类算法评估—— ROC曲线
• FP:假阳性,即实际是负例却预测成正例的个数
• TP:真阳性,即实际是正例且预测成正例的个数
• 横轴是假阳性率(假正率),即FPR(False
Positive Rate)或1-Specificity(即1-真负率),即
实际为负例预测为正例的概率,即:
– FP/(FP+TN),即实际为负例预测为正例的个数除以实
际为负例的个数。
• 纵轴是真阳性率(真正率),即TPR(True
Positive Rate)或Sensitivity,即实际为正例预测也
是正例的概率,即:
– TP/(TP+FN),即实际为正例预测也为正例的个数除以
实际为正例的个数。
分类算法评估—— ROC曲线
• 我们希望分类器的
TPR尽量高,FPR尽
量小。
• 即,用尽量低的假阳
性率为代价来换取尽
量高的真阳性率。
• 所以,我们希望
ROC曲线离纵轴近。
分类算法评估—— ROC曲线
• 曲线下方的面积(也
叫AUC)越大越好。
一般超过就说明分
类器有一定效果。
• 我们经常用AUC来比
较各种分类器的效果。
• 优先采用AUC面积比
较大的模型。
分类算法评估——Lift曲线
• Lift曲线显示了采用模型后与没采用模型相比的改进。
• 含义是:分类器获得的正类数量和不使用分类器随
机获取正类数量的比例。后者是指不使用模型时,
正例在样本中的占比,也叫random rate。
• 换言之,lift值是指,如果使用分类器分类,会使得
正类产生的比例增加多少。
– 例如,与直接随机抽取一些用户发放促销邮件相比,
采用分类器会给公司带来多少响应客户。
• Lift值在实践中可能是用得最多的。它直观易懂。
• 它的重要的好处是直接显示对应于不同的促销目标
群体规模的模型效果,便于挑选适当的目标群体规
模。
分类算法评估——Lift曲线
• 横轴是样本大小在所有潜在用户中的占比;纵轴是所得到的回应数
量。对角线表示的是不同大小的随机样本的结果。
• 我们用的不是随机样本,而是通过数据挖掘模型选择出来的那些最
可能做出回应的客户的样本。我们希望得到的曲线在对角线上方,
而且越靠近左上角越好,也就是用很少的样本就能得到很多回应。
• 从图中可见,绿色线条代表的那个模型的表现比较好。
分类算法评估——成本收益分析
• 我们可以假定通过邮件推荐新产品时,发
邮件的费用是元,而一旦用户相应则会
得到10元的收益。那么,发送多少封邮件
比较合适呢?
• 如果给全部用户都发送,会赔钱。
• 我们可以设置费用和收益的参数。
分类算法评估——其他
• 其他有代表性的模型评估的方法还有10折交叉验证:
• 3折交叉验证(cross-validation):在交叉验证中,
先要确定一个固定的折数(number of folds),比
如3折。那么数据将被大致均分成3部分,每部分轮
流用于测试而其余部分则用于训练。重复此过程3
次,从而每个实例恰好有一次是用于测试的。
• 10折交叉验证:它是衡量将某学习方法应用在某数
据集上的误差率的标准方法。数据被分成10部分。
每部分依次用于测试,而其余部分用于训练。测试
集用来计算误差率。之后,把10个误差率估计值平
均,从而得到一个最终的误差估计值。
分类算法评估的目的
• 我们可以对不同的分类算法,设置不同的
参数,进行反复比较,根据在多个效果指
标(比如Lift)上是否有稳定的好的表现,
选择一个最终落地应用的模型。
• 注意,我们不只是关注模型的准确度和效
果,还要关注模型的表现是否稳定,因此,
我们需要抽取不同的时间段的数据,进行
比较,看模型是否稳定。
知识表示
• 知识表示:将数据挖掘所得到的知识信息
用可视化或知识表达呈现给用户。
• 这些知识可能是:哪些客户可能会流失、
哪些客户可能会响应促销短信等。也可能
是哪些属性比较重要、有哪些规则。
数据挖掘结果的应用和效果评估
• 比如,我们通过数据挖掘识别出
一些潜在顾客,然后我们对这些
顾客进行促销。在促销两周后,
我们发现成交顾客数量显著提升。
• 在互联网行业的运营效果评估中,
常用的方法是AB Test,即对相似
群体(可以分为运营组和对照组)
在不同运营方案实施后的实际效
果进行对比。
数据挖掘是一个反复循环的过程
• 数据挖掘是一个反复循环的过程。经常会
回到前面的步骤。
分类的一个常见问题——过度拟合
• 对于有监督学习的算法,要非常重视过度拟合
(overfitting、过拟合)的风险。含义是:模型对训
练集拟合得很好,但对新的数据拟合得并不好。
对训练集
数据学习
太过亦步
亦趋,造
成不能反
映真实的
输入和输
出之间的
关系,不
利于预测
未来数据。
如何避免过度拟合?
• 交叉验证可能是业界防止过拟合的最常用手段。
它可看作一种变通的方法,它不使用全部的历
史数据,而是把过去的数据分成两份,其中一
份当做训练集,另一份当做测试集(用来模拟
“未来的”数据)。通常,我们会将大多数数
据作为训练集(比如80%),而少数数据作为
测试集。
• 在交叉验证时,我们可以准备几个不同时间窗
口、不同范围的测试集和验证集,在不同的数
据集里面对模型进行交叉检验。
• 要注意建模所用的历史数据和未来数据是否存
在明显差异。例如,业务是否发生了显著变化。
如何避免过度拟合?
• 样本要足够大。
–特别是神经网络,如果数据少就不宜使用。
• 注意选择合适的抽样方法。
• 减少样本中的噪声数据。
–模型过分记住了噪声的特征,以至于忽略了真
实的输入输出间的关系。
• 输入变量不要太多。
–新手往往不筛选输入变量,而是一股脑把所有
变量交给软件去撞大运。