炼数成金 门户 商业智能 数据挖掘 查看内容

面向产品经理的数据预处理

2018-5-24 14:23| 发布者: 炼数成金_小数| 查看: 14193| 评论: 0|原作者: 李鑫|来自: 前沿技墅

摘要: 数据预处理中的“预”表示预先、预备、预热,指明了处理的时机,表明要从技术上为接下来的工作做些准备,也使整个团队在思想上经过了kick-off(项目开机仪式)之后能够重视起来。预处理的内容也包罗万象,大致说来包 ...

数据库 存储 大数据 数据分析 学术

李鑫
于中国科学技术大学获计算机科学博士学位,悉尼科技大学访问学者,大数据分析与应用安徽省重点实验室研究员,中国互联网协会青年专家。现任科大讯飞研究院研究主管,先后负责大数据与人工智能技术在教育、脑科学等领域落地的业务,在国际知名学术会议与期刊发表论文近30篇。

数据分析和挖掘领域有一句话叫作“Rubbish In,Rubbish Out”。意思是,对于算法和模型来说,如果输入的数据是低质量的,输出的结果质量也高不到哪里去。因此,对数据进行预先处理十分重要。

数据预处理中的“预”表示预先、预备、预热,指明了处理的时机,表明要从技术上为接下来的工作做些准备,也使整个团队在思想上经过了kick-off(项目开机仪式)之后能够重视起来。预处理的内容也包罗万象,大致说来包括清洗、集成、变换与规约。下面一起来看。

淘洗数据沙砾(数据清洗)
大部分数据就像砂砾一样,要从中找到金粒一般有价值的数据,才能够做出卓越的数据产品。在海量数据中,许多数据是有缺陷的。这样的缺陷主要体现在数据项有缺失值,数据值出现异常,数据之间没有归一化从而不具有可比性等。

缺失值
对于很多产品中并非必填的用户信息来说,由于填与不填获得的产品与服务前后差异不大,因此用户往往会忽略填写,甚至进行一些恶作剧,产生异常值,造成数据缺失。对待数据缺失要分三步走,分别是定、删、补。

定就是要定性与定量了解数据的情况。对于已经收集回来并存储在数据库中的数据,了解数据库中哪些字段有缺失,缺失比例如何,这是一种定量的了解。明确有缺失数据的字段重要性如何,这是一种定性的描述。定量的描述相对容易进行,定性的描述则需要与业务场景相结合。

缺失的数据项就像是后进的士兵,要么丢弃,要么拉他一把。删字段便是丢弃的策略。如果一个字段对于后续的业务没有太多的帮助,便可以直接删除。有的时候,即便一个数据项目对业务很有帮助,但若难以直接或通过间接方式补齐,也只能作罢。

对于数据补充来说,有三个方式。一是业务知识/经验填充。例如,我们可以根据学生6~7岁上学这一常识对相应年级学生的年龄缺失情况进行补全。二是使用均值、中位数、众数进行填充和补全。以均值为例,我们可以使用全体用户的收入均值来补全那些尚未填写收入的数据。三是使用其他渠道补充。很多数据包含一些隐性的意义,例如手机号可以反映用户的归属地。

异常值
收集到的数据来自于采集,旦通常很难保证所有采集到的数据都是统一的。这种不统一性会为数据处理带来冲突,进而产生异常值。从整体上来说,数据出现异常主要体现在四个方面,分别是格式、字符、合理性与一致性。

格式不统一包括时间日期、数值以及其他一些固定格式的差异。例如,可能会出现多种日期表示格式——   

“2017-3-14”“2017/3/14”以及“14/Mar/2017”

遇到这样的情况就要使用统一的方式来进行规整,如使用UNIX时间戳。

以姓名为例来说明字符不统一。有的时候可能有半角空格与全角空格的区别,有时由于用户填写错误或者后台处理程序读取与编写的错误,使得姓名、年龄、手机号码等位置错乱,这也势必使数据分析多了一层障碍。

很多时候数据并没有缺失或异常,但却由于不符合常理而被审查清洗。例如,年龄填写200,手机号码填写13000000000等。一般情况下,产品经理可以对数据进行一些常识性的推理,但在具体的业务场景下,还应该尽可能地给出更多检验其是否合理的约束条件。

在一些情况下,不同字段间的数据有相互印证的可能,这便是一致性的体现。譬如年龄或出生年月数据与身份证号,就可以相互对照检查数据正误。

归一化
这里说的“归一”来自于英文normalization,本质是指将多个有量纲的数变成一个没有量纲的数。换言之,就是把的数量改变成相对的数量。

怎么理解变相对,有量纲变无量纲呢?假设一个班里有三名同学,身高分别是100cm、90cm与95cm,这里的量纲指的就是单位,即厘米(cm)。当需要变为无量纲的情况时,就可以将上述三位同学的身高数据转化成1.0、0.9与0.95。经过这样的变换,我们可能并不清楚这些数值的意义,但却能很清晰知道它们的相对大小和比例关系。

除了去量纲,进行归一化还有一个好处,就是避免极值问题。例如一个统计指标是10,而另一个是100 000,如果要在同一个图标上进行展示,则几乎看不到10这个数据,因为已经被10 000倍的比例所稀释了。而如果进行归一化,就可以缩小这样的比例差距。我们可以采用log运算进行非线性归一化,就变成了——

log(10)=1<log(100 000)=5

这样两个数在图标上就可以等量齐观地进行展示了。

聚细沙成佛塔(数据集成)
在大数据时代,我们时常听到如打通数据孤岛、链接数据块、横向贯穿数据烟囱等概念。这些概念虽略有差异,但其都包含同样的含义,即数据分散不如数据汇聚在一起时价值高。要想把不同孤岛数据汇聚在一起,就必须解决数据的聚变现象,而发生数据聚变的情况有两种,一是指向同一实体,二是出现冗余。

实体识别
实体就是名词,人名、地名、物名都是实体。在计算机领域进行实体识别是一项复杂的工作,我们需要清楚在数据清洗的过程中应如何对待实体。大致说来,在数据清洗的时候需要把两个原本不是同一内容的实体区别开,也需要把原本是同一内容的实体整合起来。

有的实体有着相同的名称但意义却不同。例如苹果既可以代表手机也可以代表水果。再比如张亮是一个很常见的名字,但是它表示不同的实体。

有的实体可以用多种名称表示,但意义相同。例如“李白”和“诗仙”指的是同一个人,我们要将这些称谓与之真实姓名对应起来。

用于描述同一个实体的属性有的时候可能会出现单位不统一的情况,也需要统一起来,计算机在进行处理的时候是没有量纲的,如1200cm与1.2m,要么统一量纲,要么进行归一化。

冗余性识别
在数据极度丰富的时代,数据量过大已经是被公认的事实。产生数据冗余性大致有两个原因,一个是无意中存多了,一个是故意存多了。

对于无意存多了,举个最简单的例子。在 2016 年下半年的统计数据中,QQ和微信都声称自己的月活用户有8亿多,但这里面必然有重合的,还有一个人有多个账号的情况。

还有一种情况就是故意存多了,主要是为了防止灾害而做的备份。将数据放在一个机器上不安全,为防止被黑客黑,被自然灾害弄垮等,于是要复制多份。这些数据放在一起的时候,也要注意去重备份数据。

要想解决数据冗余性,可以从两个方面下手,一个是解决字段冗余,另外一个是解决样本冗余。字段冗余就是指另外一个字段可以从某个字段中推导出来,比如年龄这个字段就可以由身份证或者出生年月这个字段推导出来。而样本冗余就是上述的数据冗余,这个时候需要做的就是识别相同的实体并加以合并。

换个姿势再来一次(数据变换)
从砂砾中淘出来的金子往往都是碎金,熔合成金块后也并不能如我们的意。只有经过锤炼,才能够将其变为配件、饰品等出入商场柜台的商品。对于数据变换来说,主要有两点,一是离散化,二是属性构造。

离散化
离散化就是将数据变为离散的状态。离散化共有四种形式,分别是简单离散、分桶后平滑、聚类离散、回归平滑。

例如将年龄段分成幼儿、青年、中年与老年,这就是简单离散。即通过定义一些划分规则,将原来连续的数据划分成不同的类别,从而将数据离散化。

所谓分桶就是先根据数据的情况设置一些阈值,如收入有1k,2k,3k,...,10k,我们就可以划分出——

桶1(1k~3k),桶2(3k~5k),桶3(5k~7k),桶4(7k~9k),桶5(9k+)

这样原来的十个收入数据就会落到5个桶中,在每个桶中可以分别使用落入该桶中所有收入的平均数、中位数以及边界值来替代桶中所有的数值,这三种方式分别称为平均平滑、中值平滑以及边界值平滑。

所谓聚类离散就是把相同、相似以及相近的数据进行聚合。采用的是聚类的算法,对每一个聚类的簇进行命名后就是离散的结果。

回归平滑是指,对两个有相关性的变量进行拟合,用拟合线上的数值代替原来的数值,本质上是进行数据噪声的处理。直观上来讲,这和数据离散没有关系,但是进行回归平滑后的数据已经具备了线性条件,因而可以使用非常明确的边界值对其进行划分。

属性构造
属性构造是非常抽象的词汇。除了属性,相信你还听说过字段、特征,它们其实是同一个意思。假设 Excel表格中存储的是一个学校的学生信息,那么字段(属性、特征)就是姓名、年龄、身高、家庭住址等。

构造属性简单说来有两种方法,即特征工程和随意构造后筛选。

工程实施过程中需要人的参与,而且严重依赖人的参与,通过属性与属性的连接,构造新的属性,这就是特征工程。譬如已经有属性“长”与“宽”,我们就可以构造属性“面积”。 

随意构造与人工构造的区别是,人工构造的属性往往是有意义的,但随意构造的属性往往没有意义。那么构造了这么多的属性,怎么判断该使用哪个属性不该使用哪个属性呢?可以用到XGBoost工具来进行筛选。(大家可以自学,此处不再展开)

少即是美(数据规约)
“山不在高,有仙则名;水不在深,有龙则灵”,数据不在多,有价值就行。大数据时代,我们忧愁的不是数据太少,而是太多。数据规约提供了一种针对数据过多的解决方案。

特征规约
规约有限制的意思,限制有减少范围的意思。因而我们可以认为特征规约就是减少特征。进行特征规约有两种形式,一种称为立方体规约,另外一种称为维度规约。

我们听说过正方体,正方体是一个三维的立方体,意味着特征只有三种,如区域、学生数、产品类型。而对于多维的立方体,则有多个特征。进行立方体规约,就是将N维的立方体变成N-1维的立方体。

以三维立方体(中间的数据是学生数)来说,我们把区域、学生年级、产品类型变化为区域、学生年级,实际上就是统计了每个区域各个年级内使用所有产品的学生数。根据累计统计的目的不同,我们可以减少不同的维度,例如为了统计每个区域内使用各个产品的学生数目,就应该减少学生年级这个维度,进而变为区域、产品类型。

维度规约就是去除与业务分析无关的属性。例如我们要分析和学生学业有关的影响因素,维度中如果有老师的身高这类因素,便可以去除。还可以根据属性的重要程度来评估是否需要去除,凡是不重要的属性都可以尝试去除。

样本规约
一张表格的自我修养应该包括“行”的修养与“列”的修养。如果说特征规约是列的修养,那么样本的规约就是行的修养。因为特征决定了列数,而样本数量则决定了行数。进行样本规约的过程应该做到不丢失信息,且不影响分析结果。样本规约总共有三种类型,分别是去除冗余、抽样与压缩编码。

在样本中必然会有相同数据存放两遍的情况,这时候,如果不是为了数据分析的必要而做的冗余存储,那么就需要去掉冗余的部分,保证相同的数据仅保留一份在数据库中。这种做法便称为去除冗余,这样能够减少样本的数目。

所谓抽样,就是不选取所有的样本数据,而是从中抽出一些样本。抽样又有多种方式,包括有放回抽样、不放回抽样、分层抽样、聚类抽样等。

上述减少数据量的过程本质上是减少了数据的样本数,而压缩编码是将数据进行压缩后再存储,例如采用01的稀疏编码表示。这个技巧太过技术化,产品经理不需要掌握,感兴趣的朋友可以自学。

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2018-10-22 13:18 , Processed in 0.135351 second(s), 23 queries .