您当前的位置: 首页 >  算法
  • 3浏览

    0关注

    28博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【第二章 数据预处理】袁博《数据挖掘:理论与算法》

我愚蠢的理想主义_Cheergo 发布时间:2022-01-28 20:23:18 ,浏览量:3

目录

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
  1. 数据清洗(Data Cleansing)
  2. 数据类型转化(Data Transformation)
  3. 数据描述(Data Description)
  4. 特征选择(Feature Selection)      
  5. 特征提取(Feature Extraction)   PCA     LDA
1、数据从哪里来?

金融数据(电子银行)、手机、GPS、传统的调查问卷、超市购物、健康管理(手环等)......

数据来源不同,格式也会有非常大的不同

2、为什么要做数据预处理?

真实的数据是非常 dirty 的,是数据挖掘中最大的挑战

需要借助领域知识,是数据挖掘工作的基础性工作

  • 不完整(Incomplete):问你的职业是什么,你没填
  • 不正确(Noisy):问你的工资是多少,你填了 -100
  • 不一致(Inconsistent):问你的年龄(你填了42),后面又让你填生日(你填了01/09/1985),发现年龄和生日不匹配; 或:小张的个人信息中身份证号倒数第二位是单数,性别为女
  • 冗余(Redundant):数据太多或属性太多,无法处理,或把真实有用的信息淹没了
  • 其他:数据类型、数据集本身的不平衡
3、缺失数据(Missing Data)

(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都一样,所以为了使结果更加逼真,加上一个高斯的概率分布,再采样,这样每次填的数都不一样

4、Outliers(离群点)

离群点(也可称之为噪点)对有些算法的影响是非常大的,如最小二乘、聚类

最小二乘 聚类 5、Anomaly(异常点)

与离群点(Outlier)是两个概念,不能混为一谈

2 异常值与重复数据检测 1、Local Outlier Factor(局部异常因子)

离群与否是一个相对的概念,关于离群点的判定,需要考虑相对距离因素

(1)引入distance

{distance}_k(O):O点的k近邻,如k=3,找3个离O点最近的点,如果第3个点和第4个点是一样远的,那么都算在里面,即实际的点可能>3个。把第3个远的点画一个虚线的圆

d(A,B):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的值越大,是离群点的可能性越大

 当给定一组样本时,对每一个样本都可以计算这样一个相对距离的概念

数字代表 LOF 的值,值越大,圈越大 2、Duplicate Data(重复数据)

(1)不同数据集中可能包含同一个人的信息,但格式可能不同,例如:

  • 性别:有的公司用1/0表示,有的公司用M/F表示
  • 名字:有的直接写名字,有的分 FirstName 和 LastName
  • ID号:有的用CID(ClientID),有的用Cno(ClientNumber)

Q:CaseA:两个人名字不同,身份证号相同     CaseB:两个人同名同姓,身份证号不同

谁为重复数据的可能性大?  A

分析:身份证号重复的概率极低(理论上为0),改名和重名重姓的情况在实际中并不罕见

CID=11 和 Cno=493 其实表示的是一个人

(2) 如何找出其中冗余或一样的信息?      ——滑动窗口

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

生成键值 —> 排序 —> 比较

 对数据库中的每一条记录生成一个键值,根据key去排序

基本原理:如果两个样本非常可能是一样的,那么生成的key要一样或差一点点,这样排完序才能保证这些记录都放在一个滑动窗口里

key如何生成?    ——不容易记错或听错的位数作为key

Q:在记录手机号码时,相对而言前 3 位不容易记错。

例子:

 先看两个人的 last name(姓),两个人的姓如果一模一样,两个人的 first name(名)差一点点,他们的地址又一样,则认为这两个人对应着同一个人 

为什么先比较姓?  ——这与文化背景有关。外国人中,姓更容易区分,名反而没有多少区分度

Q:在记录英语国家人名时,姓容易写错

分析:姓氏种类繁多,容易因为不熟悉写错

3 类型转换与采样
  • 把缺失值填充、重复值剔除之后的数据是 error-free 的,但还是不能直接使用,还需要进行一些类型转换或采样的工作
  • 在实际数据分析工作中,数据类型转换和数据自身的错误是面临的主要挑战之一
1、数据类型
  • 连续型(Continuous):数值,如身高、体重
  • 离散型(Discrete):数值,如人数
  • 序数型(Ordinal):有前后顺序,需要转换成数值,如优良中差、按ABCD打分的考试成绩数据
  • 标称型(Nominal):最麻烦的一种,如职业—老师、工人、销售员等等,颜色—RGB等等,少数民族—56个民族
  • 文本型(String):非结构化,字符串,如朋友圈、日志等
2、类型转换

(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(召回率):事实上有多少篇文章与关键词相关,但只返回了多少篇

5、Over-Sampling(向上采样)

数据集中红色远远多于蓝色,怎么办?

  • 蓝色多采样一些,类似于克隆(多复制),但不是完全克隆(无意义)
  • 一个蓝色点(样本数较少的点),找它的近邻点,在区域中随机生成,类似插值的方法

SMOTE的工作原理是:对少数类样本通过插值进行上采样

6、Boundary Sampling(边缘采样)

只有最外面这层点(边缘点)最有价值,如何找出边缘点?

  • 密度:边缘点一面比较密,一面比较稀
  • 法向量

4 数据描述与可视化 1、标准化(Normalization)

在计算机中,数据本身是无单位的,如身高可以是1.7、170、1700等,需要进行标准化

几种标准化的操作:

(1)把原始数据映射到 [0,1] 区间

 适用于有明确上下界的数据

如:做了一个收入的调研,人群中最低收入12000,最高收入98000,这是一个区间。想把这个区间当中所有的收入都映射到 0和1 之间,如何映射?

 (2)Z-score:计算点偏离均值(μ)多少个 standard deviation(标准方差σ)

高斯分布偏离 3个 standard deviation 以外的点就已经很少了,可以看做离群点

数据无明确上下界,可以无限延伸,如高斯

2、数据描述(Description)

(1)一般性描述(统计信息):

  • 均值(Mean):容易受极端值影响 Q:很多人感觉到自己的收入与官方公布的平均收入相去甚远,最有可能的解释是:个体收入分布极度不均衡 分析:人群的收入分布通常具有长尾特点,因此其均值容易被少数高收入者拉高,显著偏离样本的中位数,不具有代表性
  • 中位数(Median)
  • 众数(Mode):频率最高的数,有可能与均值或中位数重合,如正态分布时三者重合
  • 方差(Variance)

(2)相关性:

皮尔逊相关系数

  • r>0:A和B正相关,如个子越高,体重越高
  • r
关注
打赏
1662226828
查看更多评论
立即登录/注册

微信扫码登录

0.0391s