参考资料:R语言实战【第2版】
有监督机器学习包含许多可用于分类的方法,如逻辑回归、决策树、随机森林、支持向量机、神经网络等。
有监督机器学习基于一组包含预测变量值和输出变量值的样本单元。将全部数据分为一个训练集和一个验证集,其中训练集用于建立预测模型,验证集用于测试模型的准确性。训练集和验证集的划分非常重要,因为任何分类技术都会最大化给定数据的预测效果。用训练集建立模型并测试模型会使得模型的有效性被过分夸大,而用单独的验证集来测试基于训练集得到的模型则可使得估计更准确,更切合实际。得到一个有效的预测模型后,就可以预测那些只知道预测变量值的样本单元对应的输出值了。
后面的学习中将通过rpart、rpart.plot和party包来实现决策树模型及其可视化,通过randomForest包拟合随机森林,通过e1071包构造支持向量机,通过R中的基本函数glm()实现逻辑回归。
分类学习中的主要的例子是UCI机器学习数据库中的威斯康星州乳腺癌数据。数据分析的目的是根据细胞组织细针抽吸活检所反映的特征,来判断被检者是否患有乳腺癌(细胞组织样本单元由空心细针在皮下肿块中抽得)。本数据集包含699个细针抽吸活检的样本单元,其中458个( 65.5%)为良性样本单元, 241个( 34.5%)为恶性样本单元。数据集中共有11个变量,表中未标明变量名。共有16个样本单元中有缺失数据并用问号( ?)表示。
数据集中包含的变量包括:
ID
肿块厚度
细胞大小的均匀性
细胞形状的均匀性
边际附着力
单个上皮细胞大小
裸核
乏味染色体
正常核
有丝分裂
类别
第一个变量ID不纳入数据分析,最后一个变量(类别)即输出变量(编码为良性=2,恶性=4)。
对于每一个样本来说,另外九个变量是与判别恶性肿瘤相关的细胞特征,并且得到了记录。这些细胞特征得分为1(最接近良性)至10(最接近病变)之间的整数。任一变量都不能单独作为判别良性或恶性的标准,建模的目的是找到九个细胞特征的某种组合,从而实现对恶性肿瘤的准确预测。
下面需要进行数据准备:数据从UCI数据库中抽取,并随机分出训练集和验证集,其中训练集中包含499个样本单元(占70%),其中良性样本单元330个,恶性159个;验证集中包含210个样本单元(占30%),其中良性128个,恶性82个。
# 确保已安装相关分析包
pkgs<-c("rpart","rpart.plot","party",
"randomForest","e1071")
install.packages(pkgs,depend=TRUE)
# 数据准备
loc<-"http://archive.ics.uci.edu/ml/machine-learning-databases/"
ds<-"breast-cancer-wisconsin/breast-cancer-wisconsin.data"
url<-paste(loc,ds,sep="")
breast<-read.table(url,sep=",",
header=FALSE,
na.strings="?")
names(breast)<-c("ID","clumpThickness","sizeUniformity",
"shapeUniformity","maginalAdhesion",
"singleEpitheliaCellSize","bareNucei",
"blandChromatin","normalNucleoli","mitosis","class")
df<-breast[-1]
df$class<-factor(df$class,levels=c(2,4),
labels=c("benign","malignant"))
set.seed(1234) # 设置随机种子用于复现结果
train<-sample(nrow(df),0.7*nrow(df))
df.train<-df[train,] # 训练集
df.validata<-df[-train,] # 验证集
table(df.train$class)
table(df.validata$class)


1105

被折叠的 条评论
为什么被折叠?



