第1章-数据探索(1)-数据预处理
简介
在我们了解了业务背景,确定了需求和分析目标以后,我们接下来要面对的,就是数据的探索了。不论数据的形式是直接连到数据库、还是导出的csv、txt、json等格式,当我们把数据加载到我们的分析利器(excel/spss/r/python/matlab)之后,不需要太多时间,我们就能了解到数据的概貌了,比如维度是N * M,以及各个字段的含义等等。
然而,接下来要做的事情,就不是“不需要太多时间”能够解决的了。数据建模之前(数据挖掘、机器学习等)超过一半的时间,都是在进行数据探索。毕竟这几个领域中都流传着一句话“rubbish in rubbish out”。所以,这样做也是值得的。
个人的理解,数据探索分为两个大部分:
- 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+β1educ+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+β1educ+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=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧111111110000011educ1educ2educ3educ4educ5⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫=(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)-数据预处理相关推荐
- 数据探索与数据预处理的实验报告
数据探索与数据预处理 提示 参考书:张良均<Python数据分析与挖掘实战>等. 数据文件:课本自带数据. 使用软件:Pycharm. 类别:实验. 温馨提示:该实验是跟张良均这本书配合使 ...
- 数据挖掘--数据探索与数据预处理
文章目录 数据探索与数据预处理 数据理解 清除变量 分类型自变量 处理时间变量 异常值 极值 数据分箱 缺失数据 降维 过抽样与欠抽样 参考 黑体字为预处理相关的模型,即在使用这些模型时,需要关注到这 ...
- 数据竞赛专题 | 数据探索-从数据中发现隐藏价值
为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.DataFountain 和 Datawhale 联合邀请了数据挖掘,CV,NLP领域多位竞赛大咖,将从赛题理解.数据探索 ...
- 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)
数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...
- 决策树模型回归可视化分析_商业分析过程与数据探索
通常,商业模型以历史数据构建,一旦对模型精确度感到满意,就可以将模型部署到生产中进行实时数据分析. 第一阶段,理解商业问题 在项目初始阶段,重点是从商业角度理解商业问题,商业目标和商业要求,然后将这种 ...
- 数据探索、数据清洗学习笔记
目录 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 ...
- 温故知新:基于R语言的群体药代动力学数据探索
基于R语言的群体药代动力学数据探索 一 .群体药代动力学数据探索目的和方法 数据探索目的 数据来源 方法 二.数据探索过程 PK数据探索 加载的包和设目录 读取数据和数据处理 平均血药浓度计算和作图 ...
- 数据挖掘实战—餐饮行业的数据挖掘之数据探索(EDA)
文章目录 引言 一.前期准备 1.目标定义与任务理解 二.数据采集与抽样 三.数据探索 1.数据质量分析 1.1缺失值分析 1.1.1缺失值可视化 1.1.2描述性统计 1.1.3统计缺失数与缺失率 ...
- 数据探索(数据清洗)①—数据质量分析(对数据中的缺失值、异常值和一致性进行分析)
Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...
最新文章
- 5单个编译总会编译全部_玩转Android10(五)源码编译开发中常用命令
- OPMS 1.2 版本更新发布
- CI框架 -- CLI执行php代码
- win下nginx+php+mysql服务器套装_WNMP(Windows+Nginx+PHP+MySQL)安装
- List的五种去重方式
- Vue生命周期与自定义组件
- 遇见未来 | 软件定义数据中心:人类文明运行在软件之上
- python for 格式化字符串 list.count
- 括号表示法字符串构造二叉树_一篇文章学会二叉树和二叉查找树
- 配置tomcat远程debug
- Ableton Live 11 Suite for Mac(数字音乐音频制作软件)
- Python数据分析与机器学习42-Python库分析科比生涯数据
- 天天快充滚动图片android750x379
- 软件工程 阶段测试三
- 计算机桌面保护时间,电脑处于屏幕保护或者休眠状态的时间怎么自己设置?
- [Python爬虫] 一、爬虫原理之HTTP和HTTPS的请求与响应
- react and reduct 学习手记3
- WPF引入OCX控件
- 大数据培训课程之Flume拓扑结构大数据培训课程之Flume拓扑结构
- Java 随机数生成器 Random SecureRandom 原理分析
热门文章
- 川大 计算机考研 英语复试,川大考研复试经验干货,学长学姐为你加油!
- w ndows10启动黑屏,windows10开机黑屏怎么办
- wpa.php,Wi-Fi技术规范:Protected Setup,WMM及WPA
- 关于Python装饰器的一些理解
- Hippo4j 官宣!Hippo4j 1.4.x 新版本正式发布,探索更多玩法
- 2019最新妙味课堂Javascript实炼高级专题项目实战(完整)
- 5.3 配置Eth-Trunk聚合链路
- linux syscall 输出函数,Golang:如何在Linux上使用syscall.Syscall?
- Scratch少儿编程案例-大鱼吃小鱼-鱼延迟跟随鼠标
- android微信首页切换界面