大数据应用基础-数据挖掘流程77.ppt_第1页
大数据应用基础-数据挖掘流程77.ppt_第2页
大数据应用基础-数据挖掘流程77.ppt_第3页
大数据应用基础-数据挖掘流程77.ppt_第4页
大数据应用基础-数据挖掘流程77.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据挖掘流程 大数据应用基础 第三次课魏炜weiwei 数据挖掘的基本流程 数据挖掘的基本流程 高度重视以下同义词 以下术语大致是同一个意思 表格中的行 个案 实例 记录 样本点 数据点表格中的列 属性 特征 字段 维度 预测变量 自变量 数据预处理 数据预处理的步骤 主要包括 数据集成数据清理数据归约 抽样和属性筛选 数据变换 数据质量有很多方面问题 数据准备 在数据挖掘过程中 数据准备工作占用的时间往往在一半甚至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 是对连续数据进行离散化 增加粒度的主要办法 这是一种很典型的数据变换 它把一个连续性的数值字段根据其值分组 转换成一个拥有几个不同类别的字段 分箱的主要目的是去除噪声 具体取值方式有 按箱平均值平滑 按箱中值平滑以及按箱边界值平滑 举例 假设有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 女 转换成0 根据用户出生年月日得到其当前的年龄 采用简单的数学公式 产生更加有商业意义的衍生变量 主要有均值 占比 比率等种类 例如家庭人均年收入 用户年均消费金额 分析人员常常容易从现有的数据库中直接提取现成的字段 而经常忘记一些衍生的新字段 这需要有业务知识来支持 数据转换 使变量分布更接近正态分布 最常见的改善变量分布的转换方法是对变量取对数 takelog 在实践中 很多数值型变量的分布都偏斜 不对称 这会干扰模型的拟合 影响变量的预测性能 此种转换和分箱有异曲同工之处 都具有提高变量的预测能力 强化自变量与因变量的关系 从而提高预测模型的拟合效果 因此 在实践中 经常对这两种方式分别进行尝试 采用其中的一种 不过 这种非线性转换的含义缺少清晰的商业逻辑 商业应用者可能不太能理解 数据标准化 数据标准化 Datarescale 规范化 是把区间较大的数据按比例缩放 使之落入一个比较小的区间中 比如0 1或 1 1 标准化可以提高涉及距离度量的算法的准确率和效率 比如 当创建一个聚类模型时 我们需要确保所有字段都有近似的标度 标准化能够避免出现聚类结果完全由某个具有很大变化范围的属性主导的情况 数据标准化 最常用的数据标准化方法有两种 标准差标准化 Z scoretransformation 零均值法 Zero meannormalization 经过这种方法处理后的变量符合标准正态分布 均值为0 标准差为1 最小最大值法 Min Maxtransformation Min Max标准化 能把各变量的值归一化到 0 1 范围之内 数据归约 数据归约属于数据预处理 但不属于数据清理 这一步也叫数据简化 数据归约 datareduction 在保持数据的完整性的前提下 把需要分析的数据量大幅减小 从而加快算法运行速度 但能够产生几乎同样质量的分析结果 包括两类 属性筛选和数据归约 数据归约 抽样 抽样可看作数据归约 numerosityreduction 的一种 抽样的主要原因是如果数据全集的规模太大 运算资源的消耗会很大 而且运算时间很长 另一个常见原因是 在很多小概率 稀有事件 例如信用卡欺诈 的预测建模中 如果按原始数据来分析 是很难得到有意义的预测的 因此 需要人为增加样本中稀有事件的浓度和在样本中的占比 抽样需要注意尽量保持样本和总体的一致性 例如样本中变量的值域和分布 缺失值的分布都应该与总体尽量高度相似 尽量采用简单随机抽样或分层随机抽样 否则可能会有样本偏差 samplebias 数据归约 不平衡数据的抽样 在不平衡数据中 两组群体的成员数量相差甚远 例如对直邮促销做出响应者比无响应者少很多 信用卡欺诈者比正常的信用卡持有者少很多 流失可衡山的数量往往只有非流失客户数量的百分之几甚至千分之几 如果两组群体的成员数量大致相当 分类算法的性能最好 对于偏斜数据 在抽样方面 通常可以采取几种办法使得两组群体占比更为平衡 最常用的一种是对占比较少的实例进行过抽样 oversampling 其他方法有 对占比较多的实例进行欠抽样 从而得到一个虽然较小 但是更平衡的样本 添加一个加权因子 让常见组的成员的权重小于罕见组的成员的权重 这样抽样之后 预测模型的效果往往更好 数据归约 属性筛选 在互联网行业 数据归约主要是维度归约 dimensionalityreduction 即特征归约 变量筛选 也就是把多维数据压缩成较少维度的数据 这就需要进行特征选择 featureselection 即属性筛选 按说信息比较多应该是好事才对 所以我们尽量不使用特征归约 因为这对于原始数据通常都是有损的 但是 过多的特征会使得机器学习的训练变慢 有些数据挖掘算法比较复杂 在高维度情况下运行的时间是天文数字 不可能实现 过多的输入变量容易带来过度拟合和共线性的风险 这会降低分类模型的预测能力 属性筛选的方法 首先 可以删除明显无价值的变量 例如缺失值比例很高的变量 以及常数变量 还有取值太泛的类别型变量 例如邮政编码 然后 可以结合业务经验进行筛选 这是最关键 最重要的筛选自变量的方法 很多时候 业务专家一针见血的商业敏感性可以有效缩小自变量的考察范围 属性筛选的方法 线性相关性 最简单 最常用的方法就是通过自变量之间的线性相关性指标进行初步筛选 其中 以Pearson相关系数最为常用 如果多个自变量之间线性相关性很强 只需要保留一个就可以了 属性筛选的方法 互信息 线性相关系数可以检测出特征之间是否有线性相关关系 但是 它不适于检测非线性关系 互信息则适合检测非线性关系 它基于信息熵的概念 计算出两个特征所共有的信息量 即一个特征使另一个特征的不确定性减少的程度 属性筛选的方法 R平方 在上述步骤结束之后 仍然可能有些特征 它们虽然彼此之间独立 并且和目标变量有一定的依赖关系 但是把它们放在一起来看 跟目标变量就没有依赖关系 而另一些特征 则虽然单独看起来跟目标变量没有依赖关系 但把它们放在一起就能看出与目标变量有依赖关系 R平方 R Square 借鉴多元线性回归的算法来判断对目标变量有重要预测意义的自变量 也就是找出哪些自变量能显著地解释目标变量的变异性 属性筛选的方法 特征抽取法 这类方法不是要删减特征 而是把原有的特征组合成少量特征 可以分为线性的和非线性的 线性的 主成分分析 非线性的 多维标度法 以上两种方法是典型代表 但还有其他方法 属性筛选的方法 主成分分析 主成分分析是最常用的特征抽取方法 主成分分析 PCA 是用少量指标 即主成分 来表示原先较多的指标 这少量指标尽可能多地反映原来较多指标的有用信息 所保留下的方差尽量多 且相互之间又是无关的 每个主成分都是由多个原始变量线性组合而成的 这种分析在基本未损失数据集的信息的情况下降低了数据集的维数 PCA适于处理稀疏数据 PCA的不足是会造成结论的可解释性上相对于原始变量而言更复杂 属性筛选的方法 还有其他一些属性筛选方法 此处不详细讲 例如 聚类线性判别式分析 LDA 多维标度法 MDS 卡方检验 小波变换 适用于多维数据 其典型应用是图像压缩 后续步骤 数据挖掘 这是最核心的一步 根据数据仓库中的数据 用合适的数据挖掘算法进行分析 得出有用的信息 评估 在这一步 我们验证数据挖掘结果的正确性 其中 模型算法质量的评价是很重要的一部分 对分类模型和聚类模型的评价方法是不同的 分类模型很重视采用一些指标来进行模型评价和选择 对分类模型 通常采用的指标有 ROC曲线 Lift曲线 其本质都是与预测的准确性有关的 分类算法评估的主要宗旨 主要宗旨就是 减少误判 假阳性 和漏判 假阴性 在疾病预测 欺诈识别等领域 漏判带来的危害远大于误判 当然 误判会带来干预成本的提高 比如会增加就诊成本 分类算法评估 一个比喻 怀孕检测 假阴性 怀孕了但没检测出来 分类算法评估 混淆矩阵 混淆矩阵 Confusionmatrix 例如 TP表示实际是正例预测也为正例的实例个数 其他以此类推 分类算法评估 混淆矩阵 可见 预测正确的实例数量远远多于预测错误的实例数量 分类算法评估 ROC曲线 FP 假阳性 即实际是负例却预测成正例的个数TP 真阳性 即实际是正例且预测成正例的个数横轴是假阳性率 假正率 即FPR FalsePositiveRate 或1 Specificity 即1 真负率 即实际为负例预测为正例的概率 即 FP FP TN 即实际为负例预测为正例的个数除以实际为负例的个数 纵轴是真阳性率 真正率 即TPR TruePositiveRate 或Sensitivity 即实际为正例预测也是正例的概率 即 TP TP FN 即实际为正例预测也为正例的个数除以实际为正例的个数 分类算法评估 ROC曲线 我们希望分类器的TPR尽量高 FPR尽量小 即 用尽量低的假阳性率为代价来换取尽量高的真阳性率 所以 我们希望ROC曲线离纵轴近 分类算法评估 ROC曲线 曲线下方的面积 也叫AUC 越大越好 一般超过0 7就说明分类器有一定效果 我们经常用AUC来比较各种分类器的效果 优先采用AUC面积比较大的模型 分类算法评估 Lift曲线 Lift曲线显示了采用模型后与没采用模型相比的改进 含义是 分类器获得的正类数量和不使用分类器随机获取正类数量的比例 后者是指不使用模型时 正例在样本中的占比 也叫randomrate 换言之 lift值是指 如果使用分类器分类 会使得正类产生的比例增加多少 例如 与直接随机抽取一些用户发放促销邮件相比 采用分类器会给公司带来多少响应客户 Lift值在实践中可能是用得最多的 它直观易懂 它的重要的好处是直接显示对应于不同的促销目标群体规模的模型效果 便于挑选适当的目标群体规模 分类算法评估 Lift曲线 横轴是样本大小在所有潜在用户中的占比 纵轴是所得到的回应数量 对角线表示的是不同大小的随机样本的结果 我们用的不是随机样本 而是通过数据挖掘模型选择出来的那些最可能做出回应的客户的样本 我们希望得到的曲线在对角线上方 而且越靠近左上角越好 也就是用很少的样本就能得到很多回应 从图中可见 绿色线条代表的那个模型的表现比较好 分类算法评估 成本收益分析 我们可以假定通过邮件推荐新产品时 发邮件的费用是0 5元 而一旦用户相应则会得到10元的收益 那么 发送多少封邮件比较合适呢 如果给全部用户都发送 会赔钱 我们可以设置费用和收益的参数 分类算法评估 其他 其他有代表性的模型评估的方法还有10折交叉验证 3折交叉验证 cross validation 在交叉验证中 先要确定一个固定的折数 numberoffolds 比如3折 那么数据将被大致均分成3部分 每部分轮流用于测试而其余部分则用于训练 重复此过程3次 从而每个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论