简介

在我们了解了业务背景,确定了需求和分析目标以后,我们接下来要面对的,就是数据的探索了。不论数据的形式是直接连到数据库、还是导出的csv、txt、json等格式,当我们把数据加载到我们的分析利器(excel/spss/r/python/matlab)之后,不需要太多时间,我们就能了解到数据的概貌了,比如维度是N * M,以及各个字段的含义等等。

然而,接下来要做的事情,就不是“不需要太多时间”能够解决的了。数据建模之前(数据挖掘、机器学习等)超过一半的时间,都是在进行数据探索。毕竟这几个领域中都流传着一句话“rubbish in rubbish out”。所以,这样做也是值得的。

个人的理解,数据探索分为两个大部分:

  • 1,数据的预处理
  • 2,数据的统计分析

本文主要先讲一下数据的预处理问题。

正文

数据预处理的主要内容包括

  1. 数据清洗,处理“脏乱差”的数据
  2. 数据集成,把不同来源、格式、特点性质的数据合并到一起
  3. 数据变换,处理数值计算、属性的映射以及维度空间的变换
  4. 数据规约,在尽可能保持数据原貌的前提下,最大限度地精简数据量

数据预处理的顺序

  1. 数据清洗与数据集成并没有严格意义上的先后顺序,究竟是先集成再清洗、还是先清洗再集成可以依照实际情况而定。因为数据集成以后,可能还会涉及到数据清洗的部分环节。
  2. 数据变换与数据规约一般在数据清洗以及集成以后,且两者在处理过程中也是相辅相成的,有的数据规约方法也需要以数据变换为前提。

一,数据清洗,清洗了什么?

从五个方面来进行数据的清洗,个人总结抽象概况为SINCE原则
(看了很多市场营销的书,歪果仁都愿意把一些原则弄成个易记的单词,于是此处提升一下B格).

 1,Simple  简单的:去除冗余与重复
  • 重复即100%的冗余,一般删除即可
  • 而冗余需要提取主要信息,去除次要信息
  • 有些情况还会需要信息融合

举个栗子:

有一个公司引入了供应链金融,于是一个人想要买东西,申请不同渠道的消费贷款时,就会得到不同渠道反馈的对该消费者评级。

假设有甲金融机构,乙金融机构,丙金融机构,
甲反馈结果是对用户进行 A,B,C的评级;
乙反馈结果是对用户进行 0~700分的评级;
丙反馈结果是对用户进行 优秀,良,中,差的评级;

显然,从信息上看,这三个结果的价值是趋同的,合并成一个维度会比留着三个要精简。由于每个渠道的评级结果不同,最终,我们可能合并结果时,就变成了二元变量了,即,好与其他,坏与其他。

 2,Integral  完整的:缺失值的处理
  • 缺失值的处理,需要认真对待

缺失的数据如果占总体比较少,是最好操作的了,可以直接删除。
然而,现实情况下,往往缺失的数据占比很多,缺失的原因又千奇百怪,又的甚至无法知道原因。所以,缺失的处理是非常复杂的,需要单独摘出一章,将在第六章给出对应的方法。

 3,Normal  标准的
  • 名称、类型、单位、格式、长度、缩写、等要符合统一的标准
  • 范围要在业务或常识的标准的值域内
  • 数据大都需要进行标准化处理消除量纲的影响
  • 分类变量虚拟化
  • 连续变量离散化

举个栗子:

日期,有的用’Mon’,有的用’Monday’,有的用’M’,就需要统一。

年龄出现了负数,就需要处理。

  • 分类变量虚拟化 dummy

假设收入与教育和性别有关,则性别在此处需要进行处理。
female=1表示女性,0表示非女性
wage=β0+ξ0⋅female+β1educ+uwage=β_0+ξ_0·female+β_1educ+uwage=β0​+ξ0​⋅female+β1​educ+u

ξ0ξ_0ξ0​仅表示了女性对工资的边际影响,实际上男性的影响与截距项合并了。

实际上ξ0的影响结果是性别之间产生的对模型的截距迁移

其实还有另一种处理方式:两个分类就产生两个虚拟变量

wage=β0+ξ0⋅female+ξ1⋅male+β1educ+uwage=β_0+ξ_0·female+ξ_1·male+β_1educ+uwage=β0​+ξ0​⋅female+ξ1​⋅male+β1​educ+u
假设有5组数据,2组男性、3组女性

wage=βX+uwage=βX+uwage=βX+u,其中XXX如下表述
(2)X={110educ1110educ2110educ3101educ4101educ5}=(x1,x2,x3,x4)X=\left\{ \begin{matrix} 1 & 1 & 0 & educ_1 \\ 1 & 1 & 0 & educ_2 \\ 1 & 1 & 0 & educ_3 \\ 1 & 0 & 1 & educ_4 \\ 1 & 0 & 1 & educ_5 \end{matrix} \right\} \tag{2}=(x_1,x_2,x_3,x_4)X=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​11111​11100​00011​educ1​educ2​educ3​educ4​educ5​​⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫​=(x1​,x2​,x3​,x4​)(2)

对于所有的样本值 x1=x2+x3=1x_1=x_2+x_3=1x1​=x2​+x3​=1
所以截距项与两个虚拟变量产生了完全的共线性问题

综上:一般虚拟变量如果有m个类别,且模型有截距项的时候,只需引入m-1个虚拟变量。
  • 连续变量离散化

非监督离散化,通常是等宽的,但是易受到离群点的影响,此时等宽或等频更可取;有时甚至可以使用kmeans等聚类方法

 4,Consistent  一致性:不同数据源的数据出现差异,以哪个为准;指标不同,含义相同,或反过来,以哪个为准。
  • 有冲突的情况下,需要修正逻辑与口径

这一点,就需要介入人们的主观判断,哪个数据源是最靠谱的,就以哪个为准。

举个栗子:
数据源A中,标记手机号0061的用户为男性,18岁;
而数据源B中,标记手机号0061的用户为女性,36岁;

到底以哪个为准,就需要查找具体的原因了。

 5,Effective  有效的:处理错误与异常
  • 错误:拼写、属性、编码、格式以及依赖关系不匹配等错误
  • 异常:噪音 vs 异常值 vs 离群点

数据操作的过程中,大都需要人为的介入,只有有人参与,就容易出错。
比如一张门店的表里面有城市编码从 1-10,而城市编码名称的映射表中,只有2-11,那么这种匹配就出现了错误。

关于异常,最简单的方式是通过箱线图判断得到。
超过上下分位数 ± IQR1.5倍的点,一般即认为是异常的。

二,数据集成

在把各数据源合并到一起的时候,也容易出现两个问题

  • 1,属性冗余,就如简单原则中举的例子一样。
  • 2,数据实体出现冲突,就如在一致性原则中的例子一样。

三,数据变换

原始数据是可以被加工成更有意义的数据的,加工后的指标可以与目标值进行分析,看看哪种方式更有效。具体变换的方式有下面四点:

  • 1,维度,是否需要降维,与数据规约相同
  • 2,属性,数值型属性是否需要拆分成离散的更好
  • 3,函数变换,x与y之间的关系是否有,x与log(y)之间的关系更明显
  • 4,聚合,原始数据与其对应的频率、频次、求和、平均等聚合指标相比哪种更有效

四,数据规约

个人理解,规约需要重点解决的其实是"维度灾难"问题。

想象一下,我们的样本数量是有限的,当我们不断的扩充维度(对于离散变量dummy化以后就相当于增加了n-1个变量),我们的变量构成空间将越来越大。这个空间内的样本数量是不变的,这就意味着,样本的分布越来越稀疏。

我们取得的目前的样本,仅相当于在这个空间中的一个超平面上的样本点,然而随着空间维度的增加,这个超平面的情况又如何能够代表总体空间中的情况呢?

所以,数据处理阶段我们需要降维(参见第五章),模型生成阶段我们需要筛选特征子集(参见第四章)

主成分分析是最常用的手段,还有一些其他的算法可以帮助我们挑选特征,我们可以参考第五章的内容。

下一节:第1章-数据探索(2)-数据预处理之Python实现

第1章-数据探索(1)-数据预处理相关推荐

  1. 数据探索与数据预处理的实验报告

    数据探索与数据预处理 提示 参考书:张良均<Python数据分析与挖掘实战>等. 数据文件:课本自带数据. 使用软件:Pycharm. 类别:实验. 温馨提示:该实验是跟张良均这本书配合使 ...

  2. 数据挖掘--数据探索与数据预处理

    文章目录 数据探索与数据预处理 数据理解 清除变量 分类型自变量 处理时间变量 异常值 极值 数据分箱 缺失数据 降维 过抽样与欠抽样 参考 黑体字为预处理相关的模型,即在使用这些模型时,需要关注到这 ...

  3. 数据竞赛专题 | 数据探索-从数据中发现隐藏价值

    为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.DataFountain 和 Datawhale 联合邀请了数据挖掘,CV,NLP领域多位竞赛大咖,将从赛题理解.数据探索 ...

  4. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  5. 决策树模型回归可视化分析_商业分析过程与数据探索

    通常,商业模型以历史数据构建,一旦对模型精确度感到满意,就可以将模型部署到生产中进行实时数据分析. 第一阶段,理解商业问题 在项目初始阶段,重点是从商业角度理解商业问题,商业目标和商业要求,然后将这种 ...

  6. 数据探索、数据清洗学习笔记

    目录 1.说明 2.作文目的 3.数据探索 3-1.定义 3-2.意义 3-3.方法 3-3-1.数据质量分析 3-3-1-1.定义 3-3-1-2.意义 3-3-1-3.判别(分析)方法 3-3-1 ...

  7. 温故知新:基于R语言的群体药代动力学数据探索

    基于R语言的群体药代动力学数据探索 一 .群体药代动力学数据探索目的和方法 数据探索目的 数据来源 方法 二.数据探索过程 PK数据探索 加载的包和设目录 读取数据和数据处理 平均血药浓度计算和作图 ...

  8. 数据挖掘实战—餐饮行业的数据挖掘之数据探索(EDA)

    文章目录 引言 一.前期准备 1.目标定义与任务理解 二.数据采集与抽样 三.数据探索 1.数据质量分析 1.1缺失值分析 1.1.1缺失值可视化 1.1.2描述性统计 1.1.3统计缺失数与缺失率 ...

  9. 数据探索(数据清洗)①—数据质量分析(对数据中的缺失值、异常值和一致性进行分析)

    Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...

最新文章

  1. 5单个编译总会编译全部_玩转Android10(五)源码编译开发中常用命令
  2. OPMS 1.2 版本更新发布
  3. CI框架 -- CLI执行php代码
  4. win下nginx+php+mysql服务器套装_WNMP(Windows+Nginx+PHP+MySQL)安装
  5. List的五种去重方式
  6. Vue生命周期与自定义组件
  7. 遇见未来 | 软件定义数据中心:人类文明运行在软件之上
  8. python for 格式化字符串 list.count
  9. 括号表示法字符串构造二叉树_一篇文章学会二叉树和二叉查找树
  10. 配置tomcat远程debug
  11. Ableton Live 11 Suite for Mac(数字音乐音频制作软件)
  12. Python数据分析与机器学习42-Python库分析科比生涯数据
  13. 天天快充滚动图片android750x379
  14. 软件工程 阶段测试三
  15. 计算机桌面保护时间,电脑处于屏幕保护或者休眠状态的时间怎么自己设置?
  16. [Python爬虫] 一、爬虫原理之HTTP和HTTPS的请求与响应
  17. react and reduct 学习手记3
  18. WPF引入OCX控件
  19. 大数据培训课程之Flume拓扑结构大数据培训课程之Flume拓扑结构
  20. Java 随机数生成器 Random SecureRandom 原理分析

热门文章

  1. 川大 计算机考研 英语复试,川大考研复试经验干货,学长学姐为你加油!
  2. w ndows10启动黑屏,windows10开机黑屏怎么办
  3. wpa.php,Wi-Fi技术规范:Protected Setup,WMM及WPA
  4. 关于Python装饰器的一些理解
  5. Hippo4j 官宣!Hippo4j 1.4.x 新版本正式发布,探索更多玩法
  6. 2019最新妙味课堂Javascript实炼高级专题项目实战(完整)
  7. 5.3 配置Eth-Trunk聚合链路
  8. linux syscall 输出函数,Golang:如何在Linux上使用syscall.Syscall?
  9. Scratch少儿编程案例-大鱼吃小鱼-鱼延迟跟随鼠标
  10. android微信首页切换界面