常用包和函数总结总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本包和函数
R语音里面不同模型,参数type取值也不同。
例如,可能取值有prob、posterior、raw(朴素贝叶斯)、probability(请参考使用包的帮助文档确定),type="class"表示结果为分类。
mice包中的mice(data, m)函数:通过链式方程产生多个虚值。
data为数据框或包含不完整数据的矩阵,缺省值为NA;m为多重插补数,默认为5。
(随机森林)
R语言plyr等包合并、排序、分析数据并编制香农-威纳指数
常用包:
1、caret包中的train(formula, data, method, metirc, trControl, tuneGrid, preProcess)函数(不同调谐参数的预测模型):设置一个网格的调整参数的一些分类和回归例程,适合每个模型,并计算基于重采样的性能测量。
method指定分类或回归模型的字符串;metric指定将用于选择的最佳模型的概要度量的字符串;trControl定义该函数行为值的列表;tuneGrid可能调整值的数据框;preProcess为指定的预处理参数。
caret包中的trianControl(method, number, repeats, selectionFunction)函数:训练控制参数。
method为重采样方法,有
boot/boot632/cv/repeatedcv/LOOCV/LGOCV/none/oob/adaptive_cv/adaptive_boot/adaptive_L GOCV;number为重采样的迭代次数;repeats为几重交叉验证;selectionFunction选择最佳调整参数的函数。
caret包中的findCorrelation(x, cutoff)函数:确定高度相关变量。
x为相关系数矩阵;cutoff 成对相关系数绝对值的截止值。
caret包中的rfeControl(functions, method, number)函数:控制特征选择算法。
functions为一个模型拟合、预测和变量重要性的函数列表;method为外部的重采样方法(boot、cv等);number为N-fold CV或重采样迭代次数。
caret包中的rfe(x, y, sizes, rfeControl)函数:一个简单的逆向选择,即递归特征选择(RFE)。
x为预测模型的数据库或矩阵;y为训练集的输出;sizes是应保留特征数的整数数字向量;rfeControl为一个包含拟合和预测函数的选择列表。
2、R语言sqldf包的sqldf()函数:对数据框做SQL操作
newdf <- sqldf("select * from mtcars where carb=1 order by mpg",s = TRUE)
3、R中常用的几个扩展包,其中包括用ggplot2包来绘图,用glmnet包做回归,用tm包进行文本挖掘,用plyr、reshape、lubridate和stringr包进行数据预处理,stringr包处理字符串。
4、在数据分析的过程中,我们经常需要对数据建模并做预测。
在众多的选择中,randomForest, gbm和glmnet是三个尤其流行的R包,它们在Kaggle的各大数据挖掘竞赛中的出现频率独
占鳌头,被坊间人称为R数据挖掘包中的三驾马车。
根据我的个人经验,gbm包比同样是使用树模型的randomForest包占用的内存更少,同时训练速度较快,尤其受到大家的喜爱。
一、线性回归
R 中的工具:
regsubsets函数进行feature选择;
glmnet包用于ridge,lasso;
pls包中的pcr()函数用于PCR,plsr()函数用于PLS;
mgcv包用于GAM;
lme4包用于mixed effects model
1、通过car(DAAG)包的vif()函数,返回的是方差的膨胀因子,如果膨胀因子大于10,则说明有多重共线性(用于解决多重共线性,判断膨胀因子)。
用法如下:
> library(DAAG)
> lm.reg<-lm(Employed~GNP+Unemployed+Armed.Forces+Population+Year,data=longley)
> vif(lm.reg, digits=4)
GNP Unemployed Armed.Forces Population Year
1034.000 23.260 3.152 225.700 732.600 膨胀因子大多大于10,存在严重的相关性
一般来说kappa大于1000,或vif大于10说明存在复共线性。
(car包中的)回归诊断实用函数
car包中的qqPlot(x, labels, id.method, simulate)函数:分位比较图。
x为lm对象;labels
为文本字符串向量;id.method为点识别方法;simulate为T,计算置信区间。
2、car包的scatterplotMatrix()函数:返回的是N*N的散点图矩阵。
增强的散点图矩阵单因
素显示沿着对角线;SPM是scatterplotmatrix(散点图矩阵)缩写。
此功能只需设置一个与
自定义面板功能对的调用(用于画图判断)。
例如:
states<-as.data.frame(state.x77[,c("Murder","Population", "Illiteracy","Income","Frost")])
#简化数据框
cor(states) #相关性检测
library(car)
scatterplotMatrix(states,spread=F,lty.smooth=2) spread=T为方差函数的估计;
car包中的scatterplot()函数:可以很容易、方便地绘制二元关系图;增强的散点图
car包的vif()函数:用于计算膨胀因子(用于解决多重共线性)。
car包中的outlierTest(model)函数:Bonferrnoi离群点检测。
model为lm或glm对象。
是根据单个最大(或正或负)残差值的显著性来判断是否有离群点,若不显著,则说明数据集
中没有离群点,若显著,则必须删除该离群点,然后再检验是否还有其他离群点存在。
car包中的influencePlot()函数,可将离群点、杠杆点和强影响点的信息整合到一幅图
形中
car包中的influencePlot(mdoel, id.method)函数:回归影像图。
model为线性或广义线性模型;id.method为“identify”为交互点识别。
3、psych包用于主成分分析
psych包中的princomp()函数:可以根据原始数据或相关系数矩阵做主成分分析。
格式为:principal(x,nfactors=,rotate=,scores=)
其中:x是相关系数矩阵或原始数据矩阵;nfactors设定主成分个数(默认为1);rotate指定旋转的方式(“none”或“varimax”)*默认最大方差旋转(varimax);scores设定是否需要计算主成分得分(“T”或”F”)(默认不需要)。
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为:fa.parallel(x, fa = , n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
4、利用MASS包中的函数lm.ridge()来实现岭回归
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
通过effects包中的effect()函数,可以用图形展示交互项的结果
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
5、lars包提供了lasso()函数(lasso:套锁算法,用于解决多重共线性):Lasso算法则是一种能够实现指标集合精简的估计方法。
并利用AIC准则和BIC准则给统计模型的变量做一个
截断,进而达到降维的目的。
因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。
lars包提供的lars()函数:这些是套索所有的变种,并提供系数和适合整个序列,从零开始,以最小二乘法拟合。
lars包的rs()函数:计算交叉验证误差曲线的Lars。
cva <- rs(x2, y, K = 10, plot.it = TRUE) #10折叠交叉验证,并绘制cv(交叉验证)的变化图。
lars包中的rs()函数或者rs()函数:从拟合的lars模型预测或提取系数;当lars()生产解决方案的整个路径,rs允许提取沿着路径在特定的点预测。
coef <- rs(laa, mode = "fraction", s = best) #获取使得CV最小时的系数(请参考多重共线性中的lasso算法)
S 一个值,或一个向量值,索引路径。
它的值取决于mode= argument。
默认情况下(mode= “step”),应该采取p和0之间的值
Mode Mode="step"是指S =参数指标的Lars的步数,系数将返回相应的值对应于step s。
如果mode="fraction",然后应该是0和1之间的数,它指的是系数向量范数比,相对为了规范在全最小二乘解。
Mode="norm"指的是指L1范数的系数向量。
Mode="lambda"用套索正则化参数的;其他型号是最大相关(不让Lars /逐步模型)。
允许缩写。
共glmnet包实现lasso套锁算法,用cv.glmnet()函数来实现cv(交叉验证):做为glmnet K-fold 交叉验证,产生了一个图,并返回一个值λ。
gla <- cv.glmnet(x2, y, nfolds = 10) #cv做交叉验证来确定模型,nfolds=10其实是默认值
折叠数-默认为10。
虽然折叠数可以当样本容量大(留一CV),这是不推荐用于大型数据集。
最小值是允许nfolds = 3
二、主成分分析
1、psych包的实例请参照主成分分析2:psych包
psych包中的常用函数:
principal()含多种可选的方差放置方法的主成分分析
fa()可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析
fa.parallel()含平等分析的碎石图
factor.plot()绘制因子分析或主成分分析的结果
fa.diagram()绘制因子分析或主成分分析的载荷矩阵
scree()因子分析和主成分分析的碎石图
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为:
fa.parallel(x, fa = , n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
psych包中的principal( )函数:可以根据原始数据或相关系数矩阵做主成分分析,其使用格式为:
principal(x, nfactors =, rotate =, scores =)
其中,x是原始数据或相关系数矩阵,nfactors指定主成分个数,rotate指定旋转的方法(“none”或“varimax”),scores为是否需要计算主成分得分(“T”或”F”)。
使用fa()函数提取相应的因子,fa()函数的格式如下:fa(r,nfactors=,n.obs=,rotate=,scores=,fm=) r是相关系数矩阵或者原始数据矩阵;
nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写);
rotate设定旋转的方法(默认互变异数最小法);
scores设定是否计算因子得分(默认不计算);
fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)未旋转的主轴迭代因子法
三、贝叶斯
1、e1071包的naiveBayes函数提供了naive bayes的具体实现,其用法如下:
## S3 method for class 'formula'
naiveBayes(formula, data, laplace = 0, ..., subset, na.action = na.pass)
## Default S3 method:
naiveBayes(x, y, laplace = 0, ...) x:表示数字矩阵或数字变量的数据框;y:表示类向量;object:“NaiveBayes”类的对象
predict(object, newdata, type) object:naveBayes模型;newdata:测试数据;type:预测类型,type如果为class代表是分类,如果是raw则代表概率的计算predict函数分类需要指定type="class"
klaR包中的NaiveBayes()函数:因为该函数比e1071包的naiveBayes()函数增加了两个功能,一个是可以输入先验概率,另一个是在正态分布基础上增加了核平滑密度函数。
predict()预测函数需要指定type="class"来分类
2、tm包通常用于文本的分析:
tm包中的函数Corpus()(或VCorpus):导入数据。
函数的用法如下:Corpus(x,readerControl = list(reader = x$DefaultReader, language = "en"),...)
对于这些资料来源(x),tm 包提供了一些相关的函数,比如:DirSource(处理目录)、VectorSource(由文档构成的向量)、DataframeSource(数据框)等。
tm 包中的tm_map()函数:可以通过maps 方式将转化函数实施到每一个单上。
m_map()的主要用法如下:tm_map(x, FUN, ..., useMeta = FALSE, lazy = FALSE)
再介绍字符串的处理,分割函数:strsplit。
使用格式为:
strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
主要参数说明:
X:字串向量,每个元素都将单独进行拆分。
Split:为拆分位置的字串向量,默认为正则表达式匹配(fixed=FALSE)fixed=TRUE,表示使用普通文本匹配或正则表达式的精确匹配。
Perl:表示可以选择是否兼容Perl的正则表达式的表述方式。
findFreqTerms(x, lowfreq, highfreq)函数:在文档术语或术语文档矩阵中查找频繁项。
x为一个术语文档矩阵;lowfreq为一个数字,表示较低的频繁项;highfreq为一个数字,表示较高的频繁项
3、caret包的函数:(有K近邻算法的函数knn3)
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。
y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F 是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
caret包中的knn3(formula, data, subset, k)函数:K近邻分类算法。
formula为模型公式;data 为数据集;subset为自数据集;k为选择的近邻个数
caret包中的predict.knn3(object, newdata, type)函数也可以写成predict():K近邻算法的预测函数。
object为knn3类对象(K近邻算法模型);newdata为要观测数据的数据框;typetype 如果为class代表是分类,如果是prop则代表概率的计算
4、gmodels包的CrossTable(x, y, prop.chisq, prop.t, dnn)函数:独立试验因素的交叉制表。
x 为向量或矩阵,如果y指定,必须是一个向量;y为一个矩阵或数据框的向量;prop.chisq 为T时,每个单元的卡方贡献将被包括;prop.t为T时,t分布的分布率将被包括;dnn在结果的尺寸中被给予的名称。
四、K近邻(KNN)算法
1、class包的knn(train, test, cl, k=1)函数:tarin为训练集数据矩阵或数据框;test为测试集数据矩阵或数据框;cl为训练集的真实分类数据,应是因子类型的;k为选择的近邻个数class包中的knn1(train, test, cl)函数:即knn 中选择k = 1 的情况,因此knn1 是knn 的一个退化情况。
class包中的knn.cv(train, cl, k, prob):K最近邻交叉验证函数。
train为训练集数据;cl为训练集的真实分类因子;k为选择的近邻个数;prob为T时,投票获胜类将以概率返回。
其使用的方法是leave-one-out cross validation。
即所有的样本点都算到训练集中去,不设置测试集。
对每个训练集中的样本点,都使用剩余的样本点中的k 个最近邻来进行投票,从而决定该样本点的分类。
2、R语言里的kknn包也可以实现最邻近算法——使用kknn函数
kknn(formula = formula(train),train, test, na.action = na.omit(), k= 7, distance = 2, kernel = "optimal", ykernel = NULL, scale=TRUE, contrasts= c('unordered' = "contr.dummy", ordered
="contr.ordinal")):为K最近邻算法。
其中,formula表示训练集的表达式对象;train为训练集的数据框或矩阵;test为测试集的数据库或矩阵;distance为明科夫斯基距离;na.action 缺失值处理,默认为去掉缺失值;kernel内核使用,可能的选择是“rectangular”(这是标准的加权KNN),"triangular", "epanechnikov"(或β(2,2)),"biweight"(或β(3,3)),“triweight”(或β(4,4)),"cos", "inv", "gaussian", "rank" and "optimal";k为考虑的邻近数量
s ample(x, size, replace=F, prob=NULL):采样函数。
x表示要取样的源数据集,为一个向量;size 非负整数,要采样的大小;replace表示是否为有返回采用,为F表示不返回采样;prob用
于获取被采样的向量的元素的概率权重向量
fitted():提取模型拟合值。
assign(x, value)赋值函数。
x为变量名;value要赋值给x的值。
assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7)) 与x <- c(10.4,5.6, 3.1, 6.4, 21.7)等价注意:assign()函数赋值的变量需要用get()函数来
读取,例如get(data[1])
list.files(path, ignore.case):列出文件夹或目录中的文件。
path表示文件夹或路径;ignore.case 为T表示忽略大小写。
read.fwf(file, widths):读取固定格式宽度的文件到一个数据框中。
file为要读取的文件;widths 给出宽度。
3、MASS包中的lda(x, grouping)函数:线性判别分析。
x为包含解释性变量的矩阵或数据框;grouping为一个指定了观测类因子
lad(formula, data, na.action)函数:formula为分类公式;data为需要分类的数据;na.action
是否忽略NA值
4、caret包的函数:(有K近邻算法的函数knn3)
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。
y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F 是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
caret包中的knn3(formula, data, subset, k)函数:K近邻分类算法。
formula为模型公式;data 为数据集;subset为子数据集;k为选择的近邻个数
caret包中的predict.knn3(object, newdata, type)函数也可以写成predict():K近邻算法的预测函数。
object为knn3类对象(K近邻算法模型);newdata为要观测数据的数据框;typetype 如果为class代表是分类,如果是prop则代表概率的计算
五、决策树:
1、rpart包的rpart(formula, data, method, control, parms)函数:拟合rpart模型。
formula为
拟合公式;data为数据集;method:树的末端数据类型选择相应的变量分割方法:连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”;
parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information);control:为rpart算法的控制细节选项;cost我觉得是损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”
rpart函数用来实现CART(分类回归树)
rpart包的rpart.control(minsplit, minbucket, maxdepth, cp, xval=10)函数:对树进行一些设置。
minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止;minbucket:叶子节点最小样本数;maxdepth:树的深度;cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,将要被修剪的rpart复杂性参数;xval是10折交叉验证。
rpart.plot包的rpart.plot(x, type, extra, branch)函数:画出rpart(决策树)模型。
x为rpart模型;extra在节点上显示额外的信息,不同的数字代表不同的类型(请参考帮助);branch控制分支线的形状,指定一个值在0(V形分支)和1(方形分支),默认情况下(fallen.leaves)为1否则为2;type为画图的类型,分为5种:
0默认。
画一个分裂的标签,在叶子的每一个分裂标签和一个节点标签。
1标签所有节点,不只是树叶。
2像1,但绘制的标签下面的节点标签。
3为左、右方向画单独的拆分标签。
4像3,但标签的所有节点,不只是叶子节点,类似于文本。
rpart包的printcp(model)函数:显示优化剪枝后的复杂参数表格。
x表示拟合的模型对象。
rpart包的prune(model, cp)函数:选择具有最小xerror的cp(复杂性参数)函数。
tree 为拟合的模型对象;cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,将要被修剪的rpart复杂性参数。
2、C50包中的C5.0(x, y, trials=1, costs)函数:x要预测的数据框或矩阵;y为因子类型的预测分类;trials一个整数时为指定的迭代次数,一个值表示一个单一的模型;costs
表示与可能出现的错误相关的成本矩阵。
该矩阵应具有碳列和行,其中,C是类级别的数predict()预测函数需要指定type="class"来分类
3、在R中我们使用rpart包中的rpart()函数实现树回归(CART)
使用tree包中的tree()函数实现CART算法
4、party包中的ctree(formula, data, controls)函数:决策树。
formula为模型拟合公式;data 为训练数据集;controls为树的控制条件,为ctree_control类。
party包中的ctree_control(minsplit, minbucket, maxsurrogate, maxdepth)函数:party包中决策树的控制条件。
minsplit控制一个最小权重和的节点以便进行分割;minbusket设置了一个最小权重和的叶子节点;maxsurrogate表示替代分裂点的数量以便用于评估;maxdepth控制决策树的深度。
其中,minsplit/minbusket可以设置为训练集的1/100,这些参数的值可以根据商业问题、领域专家的经验、数据、执行算法需要的合理时间以及决策树的期望规模来设置。
六、随机森林
1、R语言中有两个软件包可以运行随机森林,分别是randomForest(Liaw,2012)和party randomForest包中的randomForest(formula, data, ntree, nPerm, mtry, proximity, importace)函数:随机森林分类与回归。
ntree表示生成决策树的数目(不应设置太小);nPerm表示计算importance时的重复次数,数量大于1给出了比较稳定的估计,但不是很有效(目前只实现了回归);mtry表示选择的分裂属性的个数;proximity表示是否生成邻近矩阵,为T 表示生成邻近矩阵;importance表示输出分裂属性的重要性。
函数randomForest()中有两个非常重要的参数,而这两个参数又将影响模型的准确性,它们分别是mtry和ntree。
一般对mtry的选择是逐一尝试,直到找到比较理想的值,ntree的选择可通过图形大致判断模型内误差稳定时的值。
randomForest包无法处理包含缺失值或者拥有超过32个等级水平的分类变量。
randomForest包中的rfImpute(formula, data)函数:填补缺失值的预测数据使用接近于随机森林。
randomForest包中的varImpPlot(x)函数:变量重要性图,变量的重要性dotchart通过随机森林测量。
x为randomForest模型对象。
importance()函数用于计算模型变量的重要性
MDSplot()函数用于实现随机森林的可视化
rfImpute()函数可为存在缺失值的数据集进行插补(随机森林法),得到最优的样本拟合值treesize()函数用于计算随机森林中每棵树的节点个数
2、party包中的cforest(formula, data, controls)函数:随机森林模型。
formula为建模公式;data为训练数据;controls为随机森林生长的参数。
party包中的cforest_unbiased(mtry, ntree)函数:随机森林生长的控制参数。
mtry为随机森林算法随机采样输入的变量数;ntry为随机森林的树数目。
七、支持向量机
1、e1071包中的svm()函数,如下:
svm(formula, data = NULL, ..., subset,na.action =na.omit, scale = TRUE)
svm(x, y = NULL, scale = TRUE, type = NULL,kernel ="radial", degree = 3, gamma = if(is.vector(x)) 1 else 1 / ncol(x),coef0 = 0, cost = 1, nu = 0.5,class.weights = NULL, cachesize = 40,tolerance = 0.001, epsilon = 0.1,shrinking = TRUE, cross = 0, probability =FALSE, fitted = TRUE, seed = 1L,..., subset, na.action = na.omit)
主要参数说明:
Formula:分类模型形式,在第二个表达式中使用的的x,y可以理解为y~x。
Data:数据集
Subset:可以指定数据集的一部分作为训练集
Na.action:缺失值处理,默认为删除数据条目
Scale:将数据标准化,中心化,使其均值为0,方差为1.默认自动执行。
Type:SVM的形式,使用可参见上面的SVMformulation,type的选项有:C-classification,nu-classification,one-classification (for novelty detection),eps-regression,nu-regression。
后面两者为利用SVM做回归时用到的,这里暂不介绍。
默认为C分类器,使用nu分类器会使决策边界更光滑一些,单一分类适用于所有的训练数据提取自同一个类里,然后SVM建立了一个分界线以分割该类在特征空间中所占区域和其它类在特征空间中所占区域。
Kernel:指的是支持向量机的类型。
在非线性可分时,我们引入核函数来做非线性可分,R 提供的核介绍如下:线性核linear:使用它的话就成为线性向量机,效果基本等价于Logistic 回归。
但它可以处理变量极多的情况,例如文本挖掘;多项式核(polynomial):n次多项式核函数,适用于图像处理问题。
选择n的好方法是从1(一个线性模型)开始,然后递增至估计误差不再改进为止。
通常,相当小的数目就足够了;高斯核(radial):高斯核函数,最流行易用的选择。
参数包括了sigma,其值若设置过小,会有过度拟合出现;Sigmoid核(sigmoid):反曲核函数,多用于神经网络的激活函数,默认为高斯核(RBF);
在kernlab包中,可以自定义核函数,实践中,核函数的选择一般并不导致结果准确率的很大差别(也有特例!)。
Degree:多项式核的次数,默认为3
Gamma:除去线性核外,其他的核的参数,默认为1/数据维数
Coef0,:多项式核与sigmoid核的参数,默认为0
Cost:C分类的惩罚项C的取值,是违反约束时的成本函数。
Nu:nu分类,单一分类中nu的取值
Cross:做K折交叉验证,计算分类正确性。
class.weights用来指定各类别的权重(可用在各类数目不相同时)。
probability:是否允许概率预测。
e1071包中的 tune.svm(formula, data, gamma, cost)函数:调整函数。
fitted(object, ...)返回模型在训练集上的预测值。
predict (object, ...)返回模型的预测结果。
当x是训练集时,pred <- predict(model, x)相当于pred <- fitted(model) predict函数分类需要指定type="class"
klaR包的svmlight()函数也可以实现SVM(支持向量机)算法。
2、kernlab包中的ksvm(formula, data, kernal, type, kpar, C, prob.model)函数:支持向量机模型。
C约束违约成本(默认值:1)这是'C'的正规化长期在拉格朗日公式;kernel用于训练和预测的核心功能。
这个参数可以被设置为任何函数,类的内核参数,它计算的内部产品在特征空间中的向量参数。
kernlab提供最流行的核心功能,可以通过设置内核参数的字符串:rbfdot径向基核“高斯”
polydot多项式核函数
vanilladot线性核
tanhdot双曲正切核
laplacedot拉普拉斯核
besseldot贝塞尔核
anovadot ANOVA RBF核函数
splinedot样条核
type表示是用于分类还是回归,还是检测,取决于y是否是一个因子。
缺省取C-svc或eps-svr。
可取值有
• C-svc C classification
• nu-svc nu classification
• C-bsvc bound-constraint svm classification
• spoc-svc Crammer, Singer native multi-class
• kbb-svc Weston, Watkins native multi-class
• one-svc novelty detection
• eps-svr epsilon regression
• nu-svr nu regression
• eps-bsvr bound-constraint svm regression
kpar超参数(核参数)的列表。
这是一个列表,其中包含了用于内核函数的参数。
对于现有内核的有效参数:
sigma inverse kernel width for the Radial Basis kernel function "rbfdot" and the Laplacian kernel "laplacedot".
degree, scale, offset for the Polynomial kernel "polydot"
scale, offset for the Hyperbolic tangent kernel function "tanhdot"
sigma, order, degree for the Bessel kernel "besseldot".
sigma, degree for the ANOVA kernel "anovadot".
length, lambda, normalized for the "stringdot" kernel where length is the length of the strings considered, lambda the decay factor and normalized a logical parameter determining if the kernel evaluations should be normalize
prob.model如果设置为true,建立一个模型类的概率或在回归计算,计算拟合残差的拉普拉斯分布的尺度参数。
对输出数据进行拟合,对训练数据进行交叉验证了3倍。
默认为F。
二分类问题:
> x <- rbind(matrix(rnorm(120), ,2), matrix(rnorm(120, mean=3), , 2))
> y <- matrix(c(rep(1,60), rep(-1, 60)))
> svp <- ksvm(x, y, type="C-svc", kernel="rbfdot", kpar=list(sigma=2))
> plot(svp)
八、神经网络:
1、nnet包中的class.ind(cl)函数:从一个因子生成类指标矩阵。
cl为类的因子或向量。
返回值为:除了与类对应的列外,该矩阵为0。
生成类别的示性函数
nnet包中的nnet(x, y, size, rang, decay, maxit, skip, Hess, trace)函数:单层的前向神经网络模型。
size神经网络隐藏层的神经元个数;rang初始随机权值[-rang, rang];decay经元输入权重的一个修改偏正参数,表明权值是递减的(可以防止过拟合);maxit最大反馈迭代次数;skip是否允许跳过隐藏层;Hess是否输出Hessian值;trace指出是否要最优化。
适用于神经网络的方法有predict,print和summary等,nnetHess函数用来计算在考虑了权重参数下的Hessian矩阵,并且检验是否是局部最小。
2、AMORE包中的
newff(n.neurons, learning.rate.global, momentum.global, error.criterium, Stao, yer, out yer, method)函数:创建多层前馈神经网络。
n.neurons是个数值向量,包含在每个层的神经元的数目,第一个数是输入神经元的数量,最后是输出神经元的数量,其余的都是隐藏层神经元的数量;learning.rate.global全局的学习率;momentum.global全局的动量值(有的学习算法需要设置这个值貌似是步长);error.criterium误差衡量算法,我用误差平方和,所以选“LMS”,“LMLS”为对数平方差,“TAO”为TAO Error;yer隐藏层激活函数;yer输出层激活函数;method学习方法,翻译过来都是梯度下降,不是BP最速下降;Stao 为Taobao错误判断标准。
AMORE包中的train(net, P, T, error.criterium, report, show.step, n.shows)函数:神经网络训练函数。
对于一个给定的数据集(训练集),此功能修改的神经网络的权重和偏差的近似的训练集中存在的变量之间的关系。
这些可以满足一些需要,即拟合非线性函数。
其中,net为神经网络训练;P为输入的训练集;T为输出的训练集;error.criterium为衡量拟合优度的标准(LMS、LMLS、TAO);report表示训练函数是否保持安静(或应在训练过程中提供图形/文字信息);show.step直到训练函数给出结果的最大值;n.shows报告训练的次数。
AMORE包的sim(net, P)函数:计算给定数据集神经网络的输出值。
net模拟神经网络;P输入数据集。
3、neuralnet包中的neuralnet(formula, data, hidden)函数:神经网络训练函数。
hidden一个向量的整数,指定在每一层中的隐层神经元(顶点)的数目。
hidden=c(3)表示第一个隐藏层的3个隐藏单元;hidden=c(3, 2)分别表示第一、第二隐藏层的3个和2个隐藏单元。
neuralnet包中的compute(x, covariate):神经网络计算一个给定的变量向量。
x为NN的模型;covariate用来训练神经网络的数据框或矩阵。
相当于predict函数(neuralnet中无predict 函数)
九、聚类:层次聚类、动态聚类Kmeans、
距离和相似系数
stats包中的dist(x, method = "euclidean",diag = FALSE, upper = FALSE, p = 2) :来计算距离。
其中,x是样本矩阵或者数据框。
method表示计算哪种距离,method的取值有:“euclidean”欧几里德距离,就是平方再开方;“maximum ”切比雪夫距离;“manhattan”绝对值距离;“canberra”Lance 距离;“minkowski”明科夫斯基距离,使用时要指定p值;“binary ”定性变量距离.定性变量距离:记m个项目里面的0:0配对数为m0 ,1:1配对数为m1,不能配对数为m2,距离
=m1/(m1+m2);
diag 为TRUE的时候给出对角线上的距离。
upper为TURE的时候给出上三角矩阵上的值。