R语言--不均衡问题处理

Python018

R语言--不均衡问题处理,第1张

样本不均衡问题是指在机器学习分类任务中,不同类型的样本占比差距悬殊。

比如训练数据有100个样本,其中只有5个正样本,其余均为负样本,这样正样本:负样本=5%:95%,训练数据中负样本过多,会导致模型无法充分学习到正样本的信息,这时候模型的正确率往往较高,但特异性却很低,即模型识别正样本的能力很差。这样的模型是无法投入实际项目中的,我们需要解决不均衡问题带来的影响。

解决样本不均衡,采用的方法是重采样。根据采样的方法,分为欠采样、过采样和组合采样。

在R语言中, ROSE 包用于处理样本不均衡问题。

安装包

加载示范数据,查看列联表。可以看到训练数据 hacide.train 出现了样本不均衡,正样本1只有20个,负样本0有980个。

欠采样会缩小训练数据。训练数据虽然正负样本均衡了,但由于原始的正样本很少,导致处理后总样本数减少很多。这个方法适用于训练数据很大,且正样本也较大的情况,可以用欠采样来减少训练数据规模,提高训练速度。

过采样会增大训练数据。该方法适用于训练数据中正样本数量较少的情况。

组合采样会同时增加正样本和减少负样本。参数 N 表示处理后样本总数,一般设置为训练数据样本数。

不均衡样本对模型的训练结果会产生较大偏差,以实际分类问题为例,对比一下处理与不处理均衡样本的结果。

从预测的结果来看,均衡处理与不均衡处理的模型准确率都很高,都超过了98%,貌似模型都很好。但均衡处理后模型的特异性达到了73.68%,未采用均衡处理的模型只有36.84%,显然 均衡处理能提高模型的特异性

处理样本不均衡问题是做分类问题不可或缺的的一步,针对训练数据的情况,可以采用不同的均衡处理方法。均衡处理的目的是尽可能多的且高效的利用训练数据里的信息,不至于后续训练出的模型学习的不够充分,出现较大偏差。均衡处理对于既要求准确率高,又要求特异性高的模型来说尤为重要。

老师的吐槽大会,乐死我了。hhh

regression,通常指用一个或者多个预测变量,也称自变量或者解释变量,来预测响应变量,也称为因变量、效标变量或者结果变量的方法

存在多个变量

AIC 考虑模型统计拟合度、用来拟合的参数数目

AIC值越小,越好

更多的变量:

图一:是否呈线性关系, 是

图二:是否呈正态分布,一条直线,正态分布

图三:位置与尺寸图,描述同方差性,如果方差不变,水平线周围的点应该是随机分布

图四:残差与杠杆图,对单个数据值的观测,鉴别离群点、高杠杆点、强影响点

模型建好,用predict函数对剩余500个样本进行预测,比较残差值,若预测准确,说明模型可以。

analysis of variance,简称ANOVA,也称为变异数分析。用于两个及两个以上样本均数差别的显著性检验。广义上,方差分析也是回归分析的一种,只不过线性回归的因变量一般是连续型变量。自变量是因子时,研究关注的重点通常会从预测转向不同组之间的差异比较。也就是方差分析。

power analysis,可以帮助在给定置信度的情况下,判断检测到给定效应值所需的样本量。也可以在给定置信度水平情况下,计算在某样本量内能检测到给定效应值的概率

拓展了线性模型的框架,包含了非正态因变量的分析。线性回归、方差分析都是基于正态分布的假设

-泊松回归 ,用来为计数资料和列联表建模的一种回归分析。泊松回归假设因变量是泊松分布,并假设它平均值的对数可被未知参数的线性组合建模

-logistic 回归

通过一系列连续型或者类别型预测变量来预测二值型结果变量是,logistic 回归是一个非常有用的工具。流行病学研究中用的多。

Principal Component Analysis,PCA,探索和简化多变量复杂关系的常用方法。 是一种数据降维技巧。可以将大量相关变量转化为一组很少的不相关变量。这些无关变量成为主成分。主成分是对原始变量重新进行线性组合,将原先众多具有一定相关性的指标,重新组合为一组的心得相互独立的综合指标。

探索性因子分析法 exploratory factor analysis,简称为EFA,是一系列用来发现一组变量的潜在结构的方法。通过找寻一组更小的、潜在的活隐藏的结构来解释已观测到的、显式的变量间的关系

因子分析步骤与PCA一致

啤酒与尿布

基于R语言的数据标准化处理脚本

数据标准化(Normalization)

将数据按比例缩放,使之落入一个小的特定区间。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。

数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。

数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

min-max标准化(Min-max normalization)

也叫离差标准化,是对原始数据的线性变换,使结果落在[0,1]区间,转换函数如下:

正向指标:(x-min)/(max-min)

负向指标:(max-x)/(max-min)

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

R语言实现

# 标准化处理

min.max.norm <- function(x){

((x-min(x))/(max(x)-min(x)))

} #正向指标

max.min.norm <- function(x){

((max(x)-x)/(max(x)-min(x)))

} #负向指标

data_1 <- apply(data[,-c(3,4)],2,min.max.norm) #正向指标处理

data_2 <- apply(data[,c(3,4)],2,max.min.norm) #负向指标处理

#注意array只能用在二维及以上

data_t <- cbind(data_1,data_2)