csr算法生成与解析原理:用R包实现SOMTE算法解决数据不平衡的问题
csr算法生成与解析原理:用R包实现SOMTE算法解决数据不平衡的问题install.packages(“DMwR” dependencies=T)rm(list=ls())SMOTE(Synthetic minoritye over-sampling technique SMOTE)是Chawla在2002年提出的过抽样的算法,其核心思想是在一些位置相近的少数类样本中插入新样本来达到平衡样本的目的,特点是算法是增加新的不存在的样例,因此一定程度上避免了分类器过度拟合。这里,主要介绍如何用R包实现SMOTE算法解决数据不平衡的问题:1. 安装载入DMwR。
尔云间 一个专门最科研的团队原创 eryun 云生信学生物信息学
原创不易 请关注和转发支持我们
在数据分析时,往往存在数据的不平衡性。比如我们有600多例良性肿瘤和1800例恶性肿瘤,很明显阳性数据和阴性数据不等,这样必然会使得分析结果产生偏倚。而SMOTE就是一种可以纠正这种不平衡数据偏倚的算法。
处理有不平衡数据的最简单的方法是随机复制,然而随机复制往往会导致过度拟合,从而影响模型效果。现在的做法一般有两种:一是去除训练数据集多数分类中的样本数,即欠抽样;二是形成新的样本从而平衡数据,即过抽样。而欠抽样往往会导致样本中一些隐含的信息丢失,所以过抽样的算法应用地更为广泛。
SMOTE(Synthetic minoritye over-sampling technique SMOTE)是Chawla在2002年提出的过抽样的算法,其核心思想是在一些位置相近的少数类样本中插入新样本来达到平衡样本的目的,特点是算法是增加新的不存在的样例,因此一定程度上避免了分类器过度拟合。
这里,主要介绍如何用R包实现SMOTE算法解决数据不平衡的问题:
1. 安装载入DMwR。
rm(list=ls())
install.packages(“DMwR” dependencies=T)
library(DMwR)
2. 读入数据。
data=read.csv(“data.csv” header=T)
3. SMOTE处理。
在SMOTE算法中,会对多数样本进行欠抽样,少数样本进行过抽样。
newdata=SMOTE(formula data perc.over= perc.under=)
formula:设定数据集中的自变量和分组变量
data:指定处理的数据集
perc.over perc.under选项分别定义过抽样和欠抽样的次数。
4. 整理数据 使用table()查看阳性数据和阴性数据的比例。
table(“data$class”)
有兴趣的读者可尝试以下代码,可以看到样本数目少的分组经过SMOTE算法的处理,实现了样例的增加。