大数据探索性分析版课件第3章.pptx

上传人:小飞机 文档编号:1329584 上传时间:2022-11-10 格式:PPTX 页数:75 大小:1.75MB
返回 下载 相关 举报
大数据探索性分析版课件第3章.pptx_第1页
第1页 / 共75页
大数据探索性分析版课件第3章.pptx_第2页
第2页 / 共75页
大数据探索性分析版课件第3章.pptx_第3页
第3页 / 共75页
大数据探索性分析版课件第3章.pptx_第4页
第4页 / 共75页
大数据探索性分析版课件第3章.pptx_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《大数据探索性分析版课件第3章.pptx》由会员分享,可在线阅读,更多相关《大数据探索性分析版课件第3章.pptx(75页珍藏版)》请在三一办公上搜索。

1、第三章 大数据的数据预处理,第三章 大数据的数据预处理,本章的主要内容,第1节 整齐数据第2节 数据的管理与清洗第3节 数据的变换第4节 缺失值的处理第5节 异常点的检测第6节 变量选择第7节 数据预处理的综合应用,本章的主要内容第1节 整齐数据,第1节 整齐数据,第1节 整齐数据,整齐数据,整齐数据Tidy data(Wickham,2014)是一类很容易整理、建模和可视化的数据类型。有其特定规范的数据结构:每个变量是一列,每个观测是一行,每个类型的观测单元构成一个表。表3-1的列名其实是income这个变量的取值,而不应该是变量。某些情况下这种格式非常有用,比如列联表分析,但是对于一些做图

2、和分析算法来说并不理想。,整齐数据整齐数据Tidy data(Wickham,2014,整齐数据,这个数据实际上有三个变量:religion,income和frequency。为了得到tidy数据,我们需要将列变成行,使每一行观测都对应三个变量。,整齐数据这个数据实际上有三个变量:religion,inco,示例,函数:reshape2 包 melt 函数melt(data, id.vars, measure.vars, variable.name = variable, ., na.rm = FALSE, value.name = value, factorsAsStrings = TRUE

3、),tb - read.csv(file = tb.csv,header = TRUE, stringsAsFactors = FALSE)tail(tb) #查看数据的最后几列,问题:1.列名m04,m514并不是真正的变量,而是病人性别与年龄的取值。2.并且两个变量性别(gender)和年龄(age)是混在一起的。,这不是一个tidy data!,示例函数:reshape2 包 melt 函数tb - r,示例,解决方案:第一步:library(reshape2)tb_tidy - melt(data = tb, id = c(iso2, year), variable.name = ge

4、nder_age,value.name = cases, na.rm = TRUE) #其中,标识变量是iso和year,变换之后的新变量命名为“gender_age”head(tb_tidy),iso2 year gender_age cases 16 AD 2005 m04 0 17 AD 2006 m04 0 19 AD 2008 m04 0 43 AE 2006 m04 0 44 AE 2007 m04 0 45 AE 2008 m04 0,效果:将原来的m04,m514等一系列变量名转化成新的变量,另建一个变量对应原来变量的取值。,示例解决方案: iso2 year gender_a

5、g,示例,解决方案:第二步:将年龄与性别变量分离开: library(dplyr) library(stringr) tidy = arrange(tb_tidy, iso2, gender_age, year) tidy$sex = str_sub(tidy$gender_age, 1, 1) ageraw=str_sub(tidy$gender_age, 2) agemap= c(04 = 0-4, 514 = 5-14,014 = 0-14, 1524 = 15-24, 2534 = 25-34,3544 = 35-44, 4554 = 45-54, 5564 = 55-64,65= 6

6、5+, u = NA) age=agemapageraw age=unname(age) tidy$age = factor(age) tidy = tidyc(iso2, year, sex, age, cases) head(tidy),iso2 year sex age cases 1 AD 2005 m 0-4 0 2 AD 2006 m 0-4 0 3 AD 2008 m 0-4 0 4 AD 2005 m 5-14 0 5 AD 2006 m 5-14 0 6 AD 2008 m 5-14 0,最终结果:,示例解决方案: iso2 year sex age c,第2节 数据的管理与

7、清洗,第2节 数据的管理与清洗,数据的管理与清洗,数据源:原材料,可视化结果,统计模型:产品,实际工作中,常难以直接获取格式规整,取值明晰的数据集。从互联网的各种途径及数据库中获得的数据(原材料)难以直接使用,它们只有做过清洗加工后才能被利用起来。数据预处理:数据格式调整,变量重命名,变量取值调整,长宽格式数据互化,筛选有用的变量行列,数据的管理与清洗数据源:原材料可视化结果,统计模型:产品实际,数据清洗与管理,数据清洗与管理数据读入、预览清晰地浏览数据结构、变量类型,数,数据读入、预览,示例:数据集介绍: Lending Club 自2007年到2015年成功申请到贷款人的信息(表LoanS

8、tats)和被拒绝的用户信息(表格RejectStats),不同年份的数据分散在不同的excel文件中。任务:将散落在不同excel文件中的数据读入R中并合并为同一个数据集,数据读入、预览示例:,数据读入,thefilesL=dir(pattern=Loan) #读入各数据并将其放在同一个列表(list)LoanList0=lapply(thefilesL,read.csv,stringsAsFactors=FALSE) #按行合并列表中的元素Loan=do.call(rbind,LoanList0thefilesR=dir(pattern=Reject) RejectList0=lapply

9、(thefilesR,read.csv,stringsAsFactors=FALSE)Reject=do.call(rbind,RejectList0)str(Loan),后面省略了52个变量中的几十个变量的输出结果。,问题:数据框太庞大,str()函数的输出结果冗长,并且难以从中辨识出某变量!,数据读入thefilesL=dir(pattern=Lo,数据预览,解决方案:dplyr包中tbl_df()函数,把原数据框打包并创建为更便于打印的数据框。调用tbl对象时,仅有少数观测和自适应窗口宽度的列被显示出来,其余列向量只罗列它们的名称及其类型。,Loan.df=tbl_df(Loan) #生

10、成一个data frame tbl类型Loan.df,数据预览解决方案:dplyr包中tbl_df()函数,把原数,数据预览,输出结果:,可以看到,后面的变量并没有被打印出来,整体的输出结果更加清晰。,数据预览输出结果:可以看到,后面的变量并没有被打印出来,整体,数据预览,其余的数据预览操作:,数据预览其余的数据预览操作:语句功能dim(Loan.df),数据的基本操作,工具:dplyr包。dplyr包常用函数一览:,(1)第一个参数为 data frame 名;(2)接下来的参数是指定函数操作的依据(或条件);(3)通常返回的是一个 data frame。,数据的基本操作工具:dplyr包。

11、函数名称功能filter(,数据的基本操作,选择变量列用指定列参数来选择子数据集,指定方式有:1.列名。2.列序号。能用符号“:”把列名连接,也可以用符号“-”删除变量列。,添加新变量列,Reject.temp=mutate(Reject,dti=as.numeric(sub(%,Debt.To.Income.Ratio)#添加一列名为dti的新变量,它是将变量列Debt.To.Income.Ratio去百分号得到。,Reject.s=select(Reject.temp, Amount.Requested, dti,Risk_Score:State)Reject.s=select(Rejec

12、t.s,-Zip.Code,-Debt.To.Income.Ratio),数据的基本操作添加新变量列Reject.temp=mutat,数据的基本操作,根据变量排序,选择满足条件的观测行,MA_Reject = filter(Reject.s, Risk_Score500&State=MA)#选出risk_score大于500分以及地区在“MA”的观测,arrange(Reject.s,State,Risk_Score,dti,Amount.Requested)#排序优先级从高之低依次为State,Risk_Score,dti,Amount.Requested,按照降序排列。 #排序依据是字符

13、,按字母表的顺序;数字,默认按照从小到大顺序排列。,数据的基本操作根据变量排序选择满足条件的观测行MA_Reje,数据的基本操作,数据的分组汇总汇总的优点:当数据量特别大而原始数据的价值极低时,汇总便于找寻数据内含的规律性,这减少了数据集占用内存以及后续数据分析处理时间。基于分类变量分组汇总得到的统计量具有更小的变异性,如均值,总数等。汇总的缺点:丢失有趣的细节。,数据的基本操作数据的分组汇总,数据的基本操作,工具:group_by()函数、summarise()函数。示例:Loan数据集,summarise(group_by(Loan,grade), #使用分类变量grade分组 ave.a

14、mnt=mean(funded_amnt,na.rm=TRUE), #计算删失数据均值 sd=sd(funded_amnt,na.rm=TRUE), #计算删失标准差 n=sum(!is.na(funded_amnt), #计算各组去除缺失值的样本容量 se=sd/sqrt(n), #计算均值标准误 conf.upper=ave.amnt+qt(0.975,n-1)*se, #计算置信区间上下限 conf.lower=ave.amnt-qt(0.975,n-1)*se),数据的基本操作工具:group_by()函数、summari,数据的基本操作,工具:group_by()函数、summari

15、se()函数。输出结果:,根据grade变量,将观测划分为七类,并统计了样本量,均值,标准差以及均值的置信区间。,数据的基本操作工具:group_by()函数、summari,第3节 数据的变换,第3节 数据的变换,数据变换,数据清洗后,下一步便是统计建模。然而不同的模型对于原始数据格式有特殊要求。K近邻算法要求使用输入变量必须是经过标准化后的。方差分析要求变量误差服从独立同分布的正态分布。数据变换可以改变样本分布,数据的尺度。,数据变换,对于数值型变量的变换,最小值-最大值规范化(Min- Max Normalization)标准化(Standardization)十进制正规化(Decima

16、l Scaling Normalization)Box-Cox变换,对于数值型变量的变换最小值-最大值规范化(Min-,对于数值型变量的变换,最小值-最大值规范化(Min-Max Normalization)适用场景:很多基于距离的数据挖掘算法,诸如:k-means聚类通常,将数据变换到-1,1 或0,1。是一种线性变换,并不改变做变换变量与其余变量的相关性。,对于数值型变量的变换最小值-最大值规范化(Min-Max N,对于数值型变量的变换,标准化(Standardization)有时也用平均绝对离差。目的:为了使变量间具有可比性变换后的变量,均值为0,方差为1。,对于数值型变量的变换标准化

17、(Standardization),对于数值型变量的变换,十进制正规化(Decimal Scaling Normalization)j的取值是使得 最小整数。这样保证了变化后变量的最大值的绝对值总小于1。,对于数值型变量的变换十进制正规化(Decimal Scali,对于数值型变量的变换,Box-Cox变换 开方根变换,对类似于泊松分布的数据很有用; 对应平方变换; 是倒数变换。应用场景:线性回归分析中当误差项不满足正态性或等方差假定,对于数值型变量的变换Box-Cox变换,代码实例,函数工具:caret包preProcess函数以Loan数据集为例library(caret)#最大值最小值变

18、换trans=preProcess(select(Loan,loan_amnt),method=c(range)#trans Created from 550564 samples and 1 variables Pre-processing: - ignored (0) - re-scaling to 0, 1 (1)transformed=predict(trans,select(Loan,loan_amnt) #执行变换head(transformed,1) #显示变换后数据的前6个数 1 0.13043478 0.05797101 0.05507246 0.27536232 0.072

19、46377 0.13043478,代码实例函数工具:caret包preProcess函数,代码实例,#标准化变换trans=preProcess(select(Loan,loan_amnt),method=c(center, scale) transformed=predict(trans,select(Loan,loan_amnt)head(transformed,1) 1 -1.1378351 -1.4382517 -1.4502684 -0.5370019 -1.3781684 -1.1378351#Box-Cox变换library(e1071) skewness(Loan$annual

20、_inc,na.rm=TRUE) #删除缺失值 1 32.01814Loan.num=select(Loan,loan_amnt,funded_amnt,funded_amnt_inv, installment,annual_inc,dti,total_pymnt)#为了直方图显示效果,去除掉年收入超过40万美元的客户Loan.anin=Loan$annual_inc-which(Loan$annual_inc400000) library(caret)BoxCoxTrans(Loan$annual_inc,na.rm=TRUE),代码实例#标准化变换,代码实例,par(mfrow=c(1,2

21、)hist(Loan.anin,xlab=natural units of annual_inc, main=Histogram: Original Data)hist(log(Loan$annual_inc),xlab=log units of annul_inv, main=Histogram: after log transformation),可以观察得到,原来呈现出明显右偏分布的数据,在取对数变换后,比原来更加对称。,代码实例par(mfrow=c(1,2)可以观察得到,原来,数值型数据的离散化,数值型变量 名义类变量目的:符合模型算法对数据的格式要求。如决策树算法一般要求数据是分类

22、属性。缺点:1.损失信息量,进而损失预测性能。2.研究(Austin and Bruner,2004)表明分类型变量中的 冗余变量容易被认定为有用变量。方法:1.组距分组 : 等距分组,不等距分组2.分位数分组3.秩分组4.均值-标准差分组,数值型数据的离散化 数值型变量 名义类变,第4节 缺失值的处理,第4节 缺失值的处理,数据缺失的原因和分类,数据缺失的原因:数据缺失有多种原因。调查者忘记回答某个问题,或拒绝回答敏感问题,或者感觉疲劳乏味而没有完成一份很长的问卷,也可能是调查者错过了约定或过早从研究中退出,都会产生数据缺失。缺失数据的分类完全随机缺失:当某变量缺失值的发生与其他任何观测变量

23、及该变量的任何观测值均无关。这种模式的缺失值产生是一个随机事件,可以将已观测数据的观测看作是总体的一个简单随机抽样。随机缺失:若某变量出现缺失的概率与其他观测变量相关,但与它自己的未观测值不相关。例如,在一次测试中,如果IQ达不到最低要求的100分,那么将不能参加随后的人格测验。非随机缺失:某变量出现缺失的概率与该变量的观测值有关。例如,公司新录用了一批员工,由于6名员工表现较差在试用期内被辞退,试用期结束后的表现评定中,辞退的6名员工的表现分即为非随机缺失。,数据缺失的原因和分类数据缺失的原因:,缺失数据,完整的缺失数据处理方法包括如下:识别缺失数据;分析导致数据缺失的原因;探索缺失值模式;

24、删除包含缺失值的观测或用合理的数值代替缺失值。,下面将用代码来说明R中如何实现识别缺失数据以及如何删除缺失观测或做插补。,缺失数据完整的缺失数据处理方法包括如下:下面将用代码来说明R,R中如何处理缺失值,缺失值识别依然以Loan数据集为例,head(is.na(Loan$annual_inc),10) #显示变量列annual_inc前10个数据的是否缺失 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSEsum(is.na(Loan$annual_inc) #计算变量列annual_inc的缺失值个数 1 23sum(!

25、is.na(Loan$annual_inc) #计算变量列annual_inc的非缺失值个数 1 550560mean(!complete.cases(Loan) #计算Loan数据中完整行的百分比 1 0.9609686naexist_Loan = Loancomplete.cases(Loan), #取出完整观测nanot_Loan = Loan!complete.cases(Loan), #提取出非完整观测,R中如何处理缺失值缺失值识别head(is.na(Loan$,R中如何处理缺失值,探索缺失值模式列表显示缺失值工具:mice包md.pattern()函数,library(mice)

26、md.pattern(Loan.num),R中如何处理缺失值探索缺失值模式library(mice),R中如何处理缺失值,探索缺失值模式图形探索缺失值VIM包aggr()函数,从左图上看,变量annual_inc有最大的缺失值个数(23个)。从右图可以看到有19个客户同时缺失全部(7个)变量,而有4个客户仅在变量dti和total_pymnt上存在缺失。,library(VIM)aggr(Loan.num, prop=FALSE, numbers=TRUE),R中如何处理缺失值探索缺失值模式从左图上看,变量annual,缺失数据的处理,处理手段1:删除缺失值个案删除(行删除法):当缺失数据的记

27、录所占的比例在数据集中非常少(少于10%)时,可以将缺失值直接删除,这样包含一个或多个缺失值的任何一行都会被删除。成对删除法(pairwise deletion):使用所有的可观测数据计算均值和协方差矩阵。如:X的均值估计基于X的所有可观测值。X与Y的协方差和相关系数矩阵的计算则使用X和Y变量均不存在缺失的观测。,缺失数据的处理处理手段1:删除缺失值,缺失数据的处理,处理手段2:填补缺失值填补缺失值具体就是用待研究变量自身已知信息或者与其他变量的关联,基于某种算法规则来补充替代缺失值。可分为:用最高频率值来填补缺失值回归插补(regression imputation)随机回归插补(stoch

28、astic regression imputation)多重插补K-近邻法,缺失数据的处理处理手段2:填补缺失值,缺失数据的处理,用最高频率值来填补缺失值思想是用一些代表变量分布特征的中间趋势的值。近似分布或者其他对称分布可选用均值,偏态分布可以用中位数。案例:R软件自带airquality数据集,data(airquality)mean6=apply(airquality,2,mean,na.rm=TRUE)mean6 Ozone Solar.R Wind Temp Month Day 42.129310 185.931507 9.957516 77.882353 6.993464 15.8

29、03922,缺失数据的处理用最高频率值来填补缺失值data(airqua,缺失数据的处理,airquality$col=c(Mean_imputation,notNA)complete.cases(airquality,1:2)+1 #观测是否插补标识airqualityis.na(airquality$Ozone),Ozone=mean6Ozoneairqualityis.na(airquality$Solar.R),Solar.R=mean6Solar.R#绘制插补后Ozone的直方图与散点图library(ggplot2)ggplot(airquality, aes(Ozone, fil

30、l = col)+geom_histogram(alpha = 0.5, position = identity)ggplot(airquality,aes(x=Solar.R,y=Ozone,colour=col)+geom_point(size=4),可以看到数据的分布形态有明显的改变。,缺失数据的处理airquality$col=c(Mean_,缺失数据的处理,sd(airquality$Ozone) #插补后的标准误1 28.69337cor(airquality$Ozone,airquality$Solar.R) #插补后变量Ozone和Solar.R的相关系数1 0.3029695

31、data(airquality) #重新加载数据airqualitysd(airquality$Ozone,na.rm=TRUE) #插补后的标准误1 32.98788cor(airquality$Ozone,airquality$Solar.R,use=complete.obs) #插补前变量Ozone和Solar.R的相关系数1 0.3483417,均值插补法扭曲了数据的分布,均值插补前后的标准误分别是33和28.7,插补后的标准误明显减少。经过插补后Ozone和Solar.R的相关系数从0.35降到0.3。,缺失数据的处理 sd(airquality$Ozone),缺失数据的处理,回归插

32、补(regression imputation)回归插补通过合并其他变量的信息来产生缺失变量的插补值,建立缺失变量和已观测变量建立回归方程,用缺失变量的预测值进行缺失值的插补。当目标变量是定性数据时,考虑通过Logit变换,做Logistic线性回归来建立回归模型。,data(airquality)mean6=apply(airquality,2,mean,na.rm=TRUE)mean6 Ozone Solar.R Wind Temp Month Day 42.129310 185.931507 9.957516 77.882353 6.993464 15.803922,缺失数据的处理回归插

33、补(regression imputat,缺失数据的处理,library(mice)data(airquality)airquality$col=c(regression_imputation,notNA)as.vector(!is.na(airqualityOzone)+1fit = lm(Ozone Solar.R, data = airquality)a=which(!complete.cases(airquality)airquality$Ozonea=as.vector(predict(fit,newdata=airquality!complete.cases(airquality)

34、,)ggplot(airquality, aes(Ozone, fill = col) + geom_histogram(alpha = 0.5, position = identity)ggplot(airquality,aes(x=Solar.R,y=Ozone,colour=col)+ geom_point(size=4),缺失数据的处理library(mice),缺失数据的处理,随机回归插补(stochastic regression imputation)随机回归插补是对回归插补的改进,在回归预测值上增加了一些随机因素,这样减弱了回归插补对原相关性的影响。该方法的实现步骤是首先估计出

35、回归模型的回归系数和误差项方差,然后根据估计结果生成随机插补值。,缺失数据的处理随机回归插补(stochastic regre,缺失数据的处理,library(mice)imp=mice(airquality,1:2,method=norm.nob,m=1,maxit=1,seed=1) iter imp variable 1 1 Ozone Solar.Rair=complete(imp)air$col=c(imputation,notNA)complete.cases(airquality,1:2)+1ggplot(air, aes(Ozone, fill = col) + geom_hi

36、stogram(alpha = 0.5, position = identity)ggplot(air,aes(x=Solar.R,y=Ozone,colour=col) + geom_point(size=4),缺失数据的处理library(mice),缺失数据的处理,多重插补多重插补是一种基于重复模拟处理缺失值的方法,它使用包含缺失值的原数据集,用蒙特卡罗方法重复多次生成若干组完整数据集,在每一组模拟出来的完整数据集上分别应用标准的统计方法,再通过组合输出结果给出估计的效果,以及引入缺失值后的置信区间。,缺失数据的处理多重插补,缺失数据的处理,library(mice)imp=mice(a

37、irquality,seed=1,print=FALSE)fit=with(imp,lm(OzoneWind+Temp+Solar.R)pooled=pool(fit)round(summary(pooled),3),c(1:3,5) est se t Pr(|t|) (Intercept) -64.331 21.535 -2.987 0.004 Wind -3.053 0.658 -4.641 0.000 Temp 1.612 0.231 6.967 0.000 Solar.R 0.061 0.022 2.731 0.008fit.r=lm(Ozone Wind+Temp+Solar.R,

38、data = airquality)round(coef(summary(fit.r),3) Estimate Std. Error t value Pr(|t|) (Intercept) -64.342 23.055 -2.791 0.006 Wind -3.334 0.654 -5.094 0.000 Temp 1.652 0.254 6.516 0.000 Solar.R 0.060 0.023 2.580 0.011,缺失数据的处理library(mice),缺失数据的处理,air=complete(imp) #complete()函数可以观察m个插补数据集中任何一个air$col=c

39、(imputation,notNA)complete.cases(airquality,1:2)+1ggplot(air, aes(Ozone, fill = col) + geom_histogram(alpha = 0.5, position = identity)ggplot(air,aes(x=Solar.R,y=Ozone,colour=col) + geom_point(size=4),缺失数据的处理air=complete(imp) #com,缺失数据的处理,K-近邻法K近邻法利用样本观测之间的相关性来填补缺失值。假设两个观测是相似的,其中一个观测在某些变量上有缺失值,那么该缺失

40、值很可能与另外一个观测的值是相似的。,缺失数据的处理K-近邻法,缺失数据的处理,library(DMwR)data(airquality)air=knnImputation(airquality,k=10)air$col=c(imputation,notNA)complete.cases(airquality,1:2)+1ggplot(air, aes(Ozone, fill = col) + geom_histogram(alpha = 0.5, position = identity)ggplot(air,aes(x=Solar.R,y=Ozone,colour=col)+ geom_po

41、int(size=4),缺失数据的处理library(DMwR),第5节 异常点的检测,第5节 异常点的检测,变量选择,异常点(又称离群点,outlier)是指既定模型中偏离很大的数据点,或者与绝大多数数据点明显不协调的数据点在探索性数据分析的阶段我们不假定任何模型,所以我们这里讨论的异常点检测指后者,相对绝大多数点明显不协调的数据点。结构:单变量和多变量的离群点检测局部离群点因子检测聚类方法进行离群点检测,变量选择异常点(又称离群点,outlier)是指既定模型中偏,变量选择,单变量和多变量的离群点检测箱线图是一种有效快捷检测离群点的方法。,set.seed(3147) x=rnorm(10

42、0) #生成100个标准正态分布的随机数boxplot.stats(x)$out #检测出来的异常点1 -3.315391 2.685922 -3.055717 2.571203boxplot(x) #绘制箱线图,变量选择单变量和多变量的离群点检测set.seed(3147,变量选择,局部离群点因子检测局部离群因子(LOF)是一种基于密度识别局部离群点的算法(Breuning et al,2000)。使用局部离群因子,这一定义基于局部密度的概念,后者用k个近邻的距离来估计的。将一个点的局部密度与它的k个邻居的比较,如果远小于它的邻居的局部密度,那么LOF值大于1,这一点就是离群点。如图1-*中

43、A点的局部密度要远小于其他点,相对于其邻居,A点位于一个密度更稀疏的区域所以A的LOF值大于1。,变量选择局部离群点因子检测,变量选择,局部离群点因子检测的代码示例,library(DMwR)iris2 - iris,1:4 #删除掉列表量Species,它是一个分类型变量outlier.scores - lofactor(iris2, k=5) #选择k=5作为近邻标准,用于计算LOFoutliers - order(outlier.scores, decreasing=T)1:5 #按LOF因子降序排列print(outliers) #显示异常点的编号1 42 107 23 110 63p

44、ar(mfrow=c(1,2)plot(density(outlier.scores) #绘制异常点的LOF因子密度函数图labels - 1: nrow(iris2) labels-outliers - .biplot(prcomp(iris2), cex=.8, xlabs=labels),变量选择局部离群点因子检测的代码示例library(DMwR,空间数据的展示,聚类方法做离群点检测将数据进行划分,那些没有被划分到任何簇的数据点即为离群点。比如在基于密度的聚类中,如DBSCAN,密度可达的两个对象将被划分到同一组。因此,那些没有被划分到任何一组的对象与其他对象是孤立的,这些孤立的对象被

45、认为是离群点。,空间数据的展示聚类方法做离群点检测,第6节 变量选择,第6节 变量选择,变量选择,数据分析过程中,高维数据是非常棘手的研究对象,特别是在文本挖掘、图像处理和基因数据分析中。过高的维度使得很多方法无法工作或效率降低,这是之所以做变量选择的原因。除此之外,降维能够提高预测精度、减少噪声、方便可视化数据。变量选择的类别:新变量是原变量的组合:主成分分析、因子分析特征选择:选取原始变量集的子集,变量选择数据分析过程中,高维数据是非常棘手的研究对象,特别是,特征选择的常用方法,嵌入(Embed):学习算法中本来就包含特征选择的过程,例如决策树一类的分类器,它们在决定分枝点时就会选择最有效

46、的特征来对数据进行划分。封装(Wrapper): 特征选择过程与训练过程整合在一起,以模型的预测能力作为衡量特征子集的选择标准,例如分类精度,有时也可加入复杂度惩罚因子。多元线性回归中的前向搜索、后向搜索和逐步回归法可以说是封装方法的一种简单实现。封装法可以选择出高质量的子集,但速度会比较慢。过滤(Filter): 特征选择过程独立于训练过程,以分析特征子集内部特点来预先筛选,与学习器的选择无关。过滤器的评价函数通常包括了相关性、距离、信息增益等。在数据预处理过程中删除那些取值为常数的特征就是过滤方法的一种。过滤法速度快但有可能删除有用的特征。,特征选择的常用方法嵌入(Embed):学习算法中

47、本来就包含特,特征选择过滤法,删除方差几乎为零的变量方差为零的变量,可被看作不含有任何有价值的信息,甚至会扰乱模型构建引起计算上的错误。,在文本挖掘的问题中,预测变量(x)表示关键词在文本中的出现次数,某个关键词在531篇文档中,其中523篇文档没有出现这个关键词(x=0),6篇文档中都出现了2次(x=2),一篇文档出现了3次(x=3),一篇文档中出现了1次(x=1)。,侦测方法:第一,不同的变量取值(unique values)个数与样本量之比低于10%。上述的例子中样本量是531,变量取值是4,这个比值是0.75%。第二,频率最高的两个变量值的频数比超过20。在文档的例子中,频率最高的取值

48、是x=0,频数是523,次之是x=2,频数是6,这两个变量值的频数比是523/6=88。,可基本认为x是一个零方差变量。,特征选择过滤法删除方差几乎为零的变量在文本挖掘的问题中,,特征选择过滤法,实例:AppliedPredictiveModeling包中的segmentationOriginal细胞分割数据集(Hill e al,2007)。,本例中,细胞分割数据的所有数值变量,不存在有任何方差为0的变量,结果较好。,library(AppliedPredictiveModeling)data(segmentationOriginal) #加载原始的细胞分隔数据segData - subse

49、t(segmentationOriginal, Case = Train) #提取其中标识为“Train”的训练样本dim(segData) #训练样本有1009个观测,119个特征1 1009 119segData - segData, -(1:3) statusColNum - grep(Status, names(segData)segData - segData, -statusColNum #删掉定性变量列,得到本例用的数据nearZeroVar(segData) #返回该数据中方差为零的变量所在的列数1 0,特征选择过滤法实例:本例中,细胞分割数据的所有数值变量,,特征选择过滤法,

50、去除掉强相关的预测变量强相关意味着他们具有共同的信息,删掉其中一个不会影响模型的性能,反而能得到更精简和解释性更好的模型。解决方法步骤:计算相关系数矩阵。确定最大的成对相关系数对应的预测变量A和预测变量B。计算变量A与其他所有变量之间的平均绝对值相关系数,对变量B也做同样的计算。比较A与B,删除平均绝对值系数大者。重复以上步骤,直到两两之间绝对值相关系数低于某一特定阈值。,特征选择过滤法去除掉强相关的预测变量,特征选择过滤法,library(caret)correlations - cor(segData) dim(correlations) correlations1:4, 1:4libra

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号