您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 大数据应用基础-数据挖掘流程77
数据挖掘流程大数据应用基础——第三次课魏炜weiwei@bjtu.edu.cn数据挖掘的基本流程高度重视以下同义词•以下术语大致是同一个意思:•表格中的行:个案=实例=记录=样本点=数据点•表格中的列:属性=特征=字段=维度=预测变量=自变量数据预处理数据预处理的步骤•主要包括:–数据集成–数据清理–数据归约(抽样和属性筛选)–数据变换。数据质量有很多方面问题数据准备•在数据挖掘过程中,数据准备工作占用的时间往往在一半甚至60%以上!•这些工作对提高数据挖掘结果的准确性是必不可少的。因为,没有高质量的数据,就没有高质量的挖掘结果。•数据挖掘出现错误结果多半是由数据源的质量引起的。因此应该重视原始数据的质量,从源头上减少错误和误差,尤其是减少人为误差。数据准备的重要性数据准备工作占用的时间往往在60%以上!数据集成•数据挖掘或统计分析可能用到来自不同数据源的数据,我们需要将这些数据集成在一起。•如果只有一个数据源,这一步可以省略。数据集成中的实体识别问题•一个重要问题是实体识别问题:在不同的数据源中,相同的字段也许有不同的名称。•我们需要识别数据中能唯一标识实体的字段。我们怎么能确定一个数据源中的customer_id和另一个数据源中的customer_number指的是同一个字段呢?这里我们可以利用字段的元数据信息,例如含义、数据类型、字段允许值的范围等,从而避免在数据集成时出错。•如果我们确定这两个字段是一致的,那么我们就能够把标识相同的客户当作同一个客户。数据集成中的实体识别问题•对于互联网企业来说,一个需要注意的重要问题是如何能把PC端用户、手机端用户给对应起来。•也就是说,如何能保证,用户在不同设备上登录你的网站时的访问记录都能汇总到一起,而不是把这些访问记录当做是多个不同用户的访问记录。数据集成中属性值不一致的问题•同一个人的名字可能在一个数据库中登记为“王思聪”,在另一个数据库中则登记为“SicongWang”。数据集成中的数据值格式不一致问题•对同一个实体,来自不同数据源的属性值可能是不同的。原因可能是各个数据源往往以不同的方式表示相同的数据,或采用不同的度量等。•例如,不同数据源中日期的格式不同。–日期有时是一个数值;–有时是以“XXXX年X月X日”的字符串格式存储;–有时以“YY/MM/DD”的字符串格式存储。•又例如,对同一个省份可能用了不同的名称。•还有,同一个名字的属性sales,在一个数据库中是指一个区域的销量,在另一个数据库中可能是指一个分店的销量。数据集成中的数据值格式不一致问题•重量在一个数据源中的单位可能是千克;在另一处则是斤。一种度量另一种度量数据集成中的属性冗余问题•一个属性可能能由另一个或一组属性导出。•有些冗余可以被相关分析检测到。我们通过相关系数或卡方检验了解两个属性是否是统计相关的。数据探索•在数据集成后,需要数据探索(dataexploring)。这个步骤不是数据预处理,但对数据预处理很重要。•几乎很少有现成的数据能直接使用。数据总是看上去不整洁,例如有脏数据、缺失值等。•怎样能知道数据的质量呢?你需要把自己沉浸在数据中,进行数据探索,从而了解数据质量。数据探索的方法•在R中的summary(变量名)这种指令(在其他软件中有类似指令)能提供诸多基本统计信息。比如:–每个变量的值域区间(最大值和最小值)是否合理?所有的值都落在期望的区间内吗?–平均值与中位数是相等的还是差别很大(这有助于说明变量是否符合正态分布)?数据是对称的还是倾斜的。–每个变量的标准差是多少?(远离属性的均值超过两个或三个标准差的值可能是离群点)–有多少缺失值?直方图箱图箱图散点图•通过直方图,能观察连续型变量的分布是否接近正态分布。对于离散型变量,则可以用频次分析。•通过箱图,能观察到离群值,比如识别出观测值特别高的个案。•通过散点图,能了解属性之间是否有相关性。数据清理(数据预处理)•“数据的重要程度大过算法本身!”•无论专家多有经验,无论算法再完美,也不可能从一堆垃圾中发现宝石。•人们往往没有那么好的运气,有现成的质量好的数据可以直接用。现实世界的数据是“杂乱的”,其中总是有这样或那样的问题。•“经常保持对客户数据的怀疑之心!”“所有的数据都是脏的”•例如,有些数据是缺失的(属性的值是空值),有些是含噪声的(属性的值是错误的,或有孤立点数据),有时同样的信息采用了多种不同的表示方式(在编码或命名上存在不一致)。数据清理•对于在商业中比较重要的字段,系统开发者和系统使用者会尽量确保其正确性。然而,对于在商业中不太重要的字段,人们往往不太重视确保其质量。•通过数据清理,可以确保存入数据仓库中的信息是完整、正确和格式一致的。•如果数据有误,那么所得到的结果很可能有误导性。•但是,数据挖掘者不应该太挑剔,因为我们往往只能得到质量不好的数据。数据清理•如果你的企业中有数据仓库,应弄清楚这些数据是怎样收集的,这对理解数据质量很重要。至少应该知道每个字段取值来自哪里、合理的取值的范围、为什么会有缺失值等。这对数据清理很有帮助。数据清理•数据清理也叫数据清洗。•这一步主要针对缺失值、数据噪声、离群值。缺失值•缺失值很常见。例如,在销售表中的顾客信息当中,也许除了名字外,其他各个属性都有缺失值。•我们尤其不希望重要属性存在缺失值。缺失值的成因•分析师首先应该了解数据缺失的原因。只有知道具体缺失原因后,才能有的放矢。•产生缺失值的原因很多,可能是:–这些数据并没被记录下来;–测量设备出现故障;–对数据错误地更新导致某些字段信息丢失;–被测量的对象(头盖骨或植物)损坏或死亡了。–有时,还没来得及提供属性值。缺失值的成因•有时,当你从外部数据源中追加人口统计信息到客户信息中时,你没能找到一部分客户的此类信息。•很多时候,最初收集数据时,有些变量被认为不太重要,因此留下空白。例如,银行并不特别需要知道客户的年龄,所以年龄变量会存在许多缺失值。•“被掩盖的缺失值”:有时,用户不希望提交个人信息,就会故意向字段输入不正确的值(例如把生日设置为1月1日)。一个类似的例子是,数据中很多客户在1911年出生。为什么呢?其实因为数据输入界面坚持要出生日期。因此客服人员在不知道这个日期时,就会键入6个“1”,从而输入1911年11月11日。缺失值的处理方法•处理方式有多种:–有些有缺失值的变量实际上并不需要处理,因为你其实知道缺失值的实际值是什么。–删除缺失值较多(例如20%以上的属性都存在缺失值)的个案(即记录、行、实例、元组),尤其是关键的属性值缺失的个案。–剔除所有含有缺失值的个案。此法适于有缺失值的个案的数量占比很小的情况下。此法操作简单方便,而且留下来的数据全是有完整记录的,数据很干净。但是,丢弃所有包含缺失值的个案可能会引入偏差,因为这些个案不一定是随机分布的。–删除有大量缺失值的变量。此法适于那些缺失值占比(例如超过20%)较大的变量。对于缺失值占比超过50%的变量,则一般建议删除。缺失值的处理方法–人工填写缺失值。此法工作量大,对于海量数据可行性极低。–使用属性的中心度量来填充。此类指标有平均值、中位数、众数等。对于接近正态分布的变量来说,平均值是最佳选择;然而,对于偏态分布的变量来说,中位数是更好的指标。此种方法偏差大,因为这种替换毕竟是人为的替换,属于“不得已而为之”的策略。但其简单、速度快,适用于大数据集。–使用与给定个案同类的样本的属性的中心度量来填充。此法与上一种方法类似。例:把顾客按信用风险程度分类,则用具有相同信用风险的顾客的平均收入或收入中位数来替换收入中的缺失值。缺失值的处理方法–通过两个变量之间的相关关系来填充。如果两个变量之间的相关系数足够高(例如大于0.9),我们可以找到两者之间的线性相关关系模型(一个公式)。我们可以通过这个公式来计算出一个值,用于填充缺失值。–通过个案之间的相似性来填充。此法假定如果两个个案是相似的,那么其中一个个案在某变量上的缺失值很可能与另一个个案在这个变量上的值是相似的。最常用的相似性度量指标是欧式距离。我们可以用欧式距离来找到与含缺失值的个案最相似的10个个案,用它们的中位数或均值来填充缺失值。缺失值的处理方法–对缺失值进行赋值(Imputation)。此法通过回归模型、决策树、贝叶斯定理等去预测缺失值的最近似的替代值。也就是把缺失数据所对应的变量当做目标变量,把其他的输入变量作为自变量,为每个有缺失值的字段分别建立预测模型。这种方法最严谨,但是成本较高。–还有一种办法,是在不同的数据上建立多个模型。例如,对某几个变量没缺失值的客户建立一个模型,而对这几个变量有缺失值的客户建立另一个模型。数据噪声•噪声数据,即数据值错误,不能反映真实的值。•数据噪声太多,会导致数据价值大大降低。•产生原因可能是:–人们在输入个人数据时常常会故意制造一些错误;–人们在输入资料时操作失误;–在互联网营销中,存在大量虚假的应用下载和使用,以及虚假的好评差评;–数据收集的设备不稳定;–数据转化时存在逻辑错误;–有时,数据过时了(例如地址过时)。识别数据噪声•还好,噪声数据都是少数!•通过数据探索,能很容易发现噪声数据。比如,在直方图中,某些值出现的频率非常少,我们就要怀疑这样的数据是否合理。处理数据噪声•对噪声数据,我们的处理办法有:–最广泛应用的处理方式是数据平滑(Smoothing)。最常用的数据平滑方法是分箱技术,此法稍后在数据转换中会介绍。–其他平滑方法还有:基于时间序列分析,根据前一段历史趋势数据对当前数据进行修正。–删除带有错误的个案。识别异常个案•对于多维数据,异常个案的识别可以通过聚类技术。•异常个案(孤立点、离群点、outlier)跟噪声数据不完全是一回事。离群点能从表象上判别出来,而噪声则是随机的、取值是没有规律的。•噪声的取值不一定看起来异常;而离群点虽然取值异常,但不一定都是噪声。对于取值正常的噪声点,我们还没办法检测。•可以选取一些字段来对个案进行聚类。从而识别出异常程度较高的个案,即落在簇集合之外的个案。处理异常个案•特别要注意的是,这些数据点不一定是噪声。我们要从中剔除真正不正常的数据,而保留看起来不正常,但实际上真实的数据。有时,这些并非噪声的异常点包含着重要的信息,例如信用卡用户恶意欺诈检测就需要保留异常点。•处理离群点的另一种办法是对变量进行标准化,从而缩小值域。•对于时间序列数据和空间数据,则采用其他方法进行异常点的检测。识别异常值•除了上述办法,还可以仅凭单个变量所提供的信息来识别异常值。•对于异常值,处理办法是:–一般建议剔除。–此外,在聚类分析中,可以采用随机抽样。这样,作为稀有事件的数据噪声和异常值能被抽进样本的概率会很小,这样样本就比较干净。•判断方法如下:–对于类别型变量,是否某个类别出现的次数太少、太稀有?比如其占比不到1%。–对于数值型变量,是否某些取值太大?比如,一般的客户平均每天买2次,而某几个客户每天买100次。又如,年龄为140岁无疑是个异常值。重复数据•重复数据主要有两种:–个案可能会重复。比如,输入数据时,意外地多次输入了同一个个案。•属性也可能会冗余。在集成多个数据库时,同一个属性在不同的数据库中会有不同的字段名(例如birthday和生日),这时我们只要保留其中一个字段就可以。这种冗余通常在数据集成的步骤中就解决了。数据转换•数据转换(即数据变换、Datatransformation)•主要是利用现有的字段进行运算来得到新的字段。通常说到数据变换,包括四种:–数据离散化(采用分箱等方式)、–产生衍生变量、–使变量分布更接近正态分布、–数据标准化。数据转换——离散化•如果对连续变量进行离散化,可以避免引入任何分布假设。这样就不需要符合正态分布了。数据转换——离散化•数据分箱(Binning)是对连续数据进行离散化、增加粒度的主要办法,这是一种很典型的数据变换。它把一个连续性的数值字段根据其值分组,转换成一个
本文标题:大数据应用基础-数据挖掘流程77
链接地址:https://www.777doc.com/doc-650070 .html