目录
1 数据清洗
Outline
1、数据从哪里来?
2、为什么要做数据预处理?
3、缺失数据(Missing Data)
4、Outliers(离群点)
5、Anomaly(异常点)
2 异常值与重复数据检测
1、Local Outlier Factor(局部异常因子)
2、Duplicate Data(重复数据)
3 类型转换与采样
1、数据类型
2、类型转换
3、采样(Sampling)
4、Imbalanced Datasets(不平衡数据)
5、Over-Sampling(向上采样)
6、Boundary Sampling(边缘采样)
4 数据描述与可视化
1、标准化(Normalization)
2、数据描述(Description)
3、数据可视化(Visualization)
4、两个可视化软件
5 特征选择
1、如何评价属性好与不好?
2、熵(Entropy)
3、Feature Subset Search
6 主成分分析(PCA)
1、Feature Extraction(特征提取)
2、Principal Component Analysis(PCA,主成分分析)
7 线性判别分析(LDA)
1、LDA 和 PCA
2、LDA(Linear Discriminant Analysis,线性判别分析)
3、 可分性的度量
4、数学推导
5、LDA的例子
6、多分类问题的LDA
7、LDA的限制
8 阅读材料
1 数据清洗数据往往是杂乱无章的,不能直接进行分析,需要预处理才能进行后续的工作
Outline- 数据清洗(Data Cleansing)
- 数据类型转化(Data Transformation)
- 数据描述(Data Description)
- 特征选择(Feature Selection)
- 特征提取(Feature Extraction) PCA LDA
金融数据(电子银行)、手机、GPS、传统的调查问卷、超市购物、健康管理(手环等)......
数据来源不同,格式也会有非常大的不同
2、为什么要做数据预处理?真实的数据是非常 dirty 的,是数据挖掘中最大的挑战
需要借助领域知识,是数据挖掘工作的基础性工作
- 不完整(Incomplete):问你的职业是什么,你没填
- 不正确(Noisy):问你的工资是多少,你填了 -100
- 不一致(Inconsistent):问你的年龄(你填了42),后面又让你填生日(你填了01/09/1985),发现年龄和生日不匹配; 或:小张的个人信息中身份证号倒数第二位是单数,性别为女
- 冗余(Redundant):数据太多或属性太多,无法处理,或把真实有用的信息淹没了
- 其他:数据类型、数据集本身的不平衡
(1)为什么会缺失?
- 设备坏了
- 未提供,如隐私数据
- Not Applicable(N/A) 不适用的 如:男女生做体检,体检项目是不同的,没填不代表缺失,而是不适用; 又如:学生小明在调查问卷中没有回答下述问题:“你去年的工资收入和前年相比是否有所增加?”
(2)缺失的类型
- 完全随机缺失:如有一阵风把试卷吹走了,100份只找回来60份,这40份的缺失是完全随机的,概率一样
- 缺失与另外的属性有关:如询问体重,缺失可能跟性别有关(女生可能不愿意回答)
- 缺失与自身取值有关:如询问收入,高收入人群或收入来源复杂的人可能不愿意填
(3)怎样处理缺失数据
具体问题具体分析
More art than science:与其说这个领域的工作是科学研究,不如说是艺术。因为没有严格的标准化流程,更多的是经验形成的结果
- 忽视或删除:缺失太多的情况下,不可以这样做
- 手工填:这个过程是十分麻烦(tedious)的,具体又可分为以下两种—— —重新采集 —领域知识(Domain Knowledge)推测: 如:问你住的房子是租的还是买的(没填),但是有另外一项问你是从什么时候开始住在这个地方的,有一个人填了18年,那么可以推测这个房子是他自己买的,而不是租的 又如:假设男生用1表示,女生用0表示,某人的性别未填,应根据其他信息(如身高、体重)推测
- 计算机自动填:固定值、均值或中位数、最可能的值
(4)例子
两堆数据(男人、女人),两个属性(身高X、体重Y)
现在来了一个新的样本,只有属性X(只知道身高,不知道体重),如何推测Y(体重)?
- 填所有样本的均值,但交叉处没有任何我们已有的样本 ×
- 填蓝色样本的均值 ×
- 填红色样本的均值交叉处的值,但再来一个相同X的未知样本,Y都一样,所以为了使结果更加逼真,加上一个高斯的概率分布,再采样,这样每次填的数都不一样
离群点(也可称之为噪点)对有些算法的影响是非常大的,如最小二乘、聚类


与离群点(Outlier)是两个概念,不能混为一谈
2 异常值与重复数据检测 1、Local Outlier Factor(局部异常因子)离群与否是一个相对的概念,关于离群点的判定,需要考虑相对距离因素
(1)引入distance
:O点的k近邻,如k=3,找3个离O点最近的点,如果第3个点和第4个点是一样远的,那么都算在里面,即实际的点可能>3个。把第3个远的点画一个虚线的圆
:A和B两点之间的欧氏距离
(2)引入lrd
分母:A有多少个近邻
分子:A到每个k近邻的距离之和
若一个点离它的近邻都非常近,则分子会非常小(其实是在算平均距离),整个又分之一,则:若一个点与它周围的点都特别地紧密,那么分之一后就会非常大,即 lrd(A) 特别大。即: lrd(A) 值越大,A与自己的近邻越紧密
(3) 真正判断离群点的方式(引入LOF):
我算算我自己的 lrd 值(我离我自己的近邻有多远),再看看我的近邻到它们的近邻有多远,做一个比值。若 lrd(B) >> lrd(A),即我(A)的近邻(B)和它们的近邻的距离都特别近,而我(A)与我的近邻(B)又相对较远,则我(A)比较不合群
综上:LOF的值越大,是离群点的可能性越大
当给定一组样本时,对每一个样本都可以计算这样一个相对距离的概念

(1)不同数据集中可能包含同一个人的信息,但格式可能不同,例如:
- 性别:有的公司用1/0表示,有的公司用M/F表示
- 名字:有的直接写名字,有的分 FirstName 和 LastName
- ID号:有的用CID(ClientID),有的用Cno(ClientNumber)
Q:CaseA:两个人名字不同,身份证号相同 CaseB:两个人同名同姓,身份证号不同
谁为重复数据的可能性大? A
分析:身份证号重复的概率极低(理论上为0),改名和重名重姓的情况在实际中并不罕见

(2) 如何找出其中冗余或一样的信息? ——滑动窗口
- 窗口较小,容量为w(如100),每次向下移一位,新进来的只与前面的 w-1 进行比较(局部比较)
- 使用假设:真正高度疑似的样本是挨着的(重复记录的样本在数据库中必须是挨着的),这样才可以保证它们在一个滑动窗口当中,才可以比较

对数据库中的每一条记录生成一个键值,根据key去排序
基本原理:如果两个样本非常可能是一样的,那么生成的key要一样或差一点点,这样排完序才能保证这些记录都放在一个滑动窗口里
key如何生成? ——不容易记错或听错的位数作为key
Q:在记录手机号码时,相对而言前 3 位不容易记错。
例子:
先看两个人的 last name(姓),两个人的姓如果一模一样,两个人的 first name(名)差一点点,他们的地址又一样,则认为这两个人对应着同一个人
为什么先比较姓? ——这与文化背景有关。外国人中,姓更容易区分,名反而没有多少区分度
Q:在记录英语国家人名时,姓容易写错
分析:姓氏种类繁多,容易因为不熟悉写错
3 类型转换与采样- 把缺失值填充、重复值剔除之后的数据是 error-free 的,但还是不能直接使用,还需要进行一些类型转换或采样的工作
- 在实际数据分析工作中,数据类型转换和数据自身的错误是面临的主要挑战之一
- 连续型(Continuous):数值,如身高、体重
- 离散型(Discrete):数值,如人数
- 序数型(Ordinal):有前后顺序,需要转换成数值,如优良中差、按ABCD打分的考试成绩数据
- 标称型(Nominal):最麻烦的一种,如职业—老师、工人、销售员等等,颜色—RGB等等,少数民族—56个民族
- 文本型(String):非结构化,字符串,如朋友圈、日志等
(1)RGB三种颜色,如何编码?
若编码为012,暗含了绿色与红色的距离 记录地区(如华南区)的营业额 4、Imbalanced Datasets(不平衡数据)
100个人中只有1个人生病,分类器:无论谁来都判定为健康,准确率为99%,但它是无意义的
- 红和蓝代表两类问题(一维分类),分界面为一根线,线的右手边(RHS)判定为蓝色,左手边(LHS)判定为红色
- 对于A分类器来说,判定所有的样本为蓝色,准确率为95%;B分类器右边全分对,但左边有10%的蓝色被误判了,所以准确率为90%
- 准确率来看A好,但实际效果好的是B
对于极度不平衡的二分类数据集,应特别注意少数类样本的准确率
整体准确率的概念不适用于不平衡数据集(两类数据集差别特别大),应采用新的度量模式:
(1)G-mean:取值0~1之间,要单独看正类准确率和负类准确率,但要G-mean值高,必须在两类上都分的对才可以
(2)F-measure:在信息检索中常用
- Precision(准确率):搜关键词,返回100篇文章,有多少是真正需要的
- Recall(召回率):事实上有多少篇文章与关键词相关,但只返回了多少篇
数据集中红色远远多于蓝色,怎么办?
- 蓝色多采样一些,类似于克隆(多复制),但不是完全克隆(无意义)
- 一个蓝色点(样本数较少的点),找它的近邻点,在区域中随机生成,类似插值的方法
SMOTE的工作原理是:对少数类样本通过插值进行上采样
只有最外面这层点(边缘点)最有价值,如何找出边缘点?
- 密度:边缘点一面比较密,一面比较稀
- 法向量
在计算机中,数据本身是无单位的,如身高可以是1.7、170、1700等,需要进行标准化
几种标准化的操作:
(1)把原始数据映射到 [0,1] 区间
适用于有明确上下界的数据
如:做了一个收入的调研,人群中最低收入12000,最高收入98000,这是一个区间。想把这个区间当中所有的收入都映射到 0和1 之间,如何映射?
(2)Z-score:计算点偏离均值(μ)多少个 standard deviation(标准方差σ)
高斯分布偏离 3个 standard deviation 以外的点就已经很少了,可以看做离群点
数据无明确上下界,可以无限延伸,如高斯
(1)一般性描述(统计信息):
- 均值(Mean):容易受极端值影响
Q:很多人感觉到自己的收入与官方公布的平均收入相去甚远,最有可能的解释是:个体收入分布极度不均衡 分析:人群的收入分布通常具有长尾特点,因此其均值容易被少数高收入者拉高,显著偏离样本的中位数,不具有代表性
- 中位数(Median)
- 众数(Mode):频率最高的数,有可能与均值或中位数重合,如正态分布时三者重合
- 方差(Variance)
(2)相关性:
皮尔逊相关系数
- r>0:A和B正相关,如个子越高,体重越高
- r
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?