Description Usage Arguments Details Value Note Author(s) References See Also Examples
LiblineaR.ACF
is a modification of the LiblineaR package that
uses the idea of adaptive coordinate frequencies (ACF) method.
Solving the linear SVM problem with coordinate descent
is very efficient and is implemented in one of the most often used packages,
LIBLINEAR (available at http://www.csie.ntu.edu.tw/~cjlin/liblinear).
It has been shown that the uniform selection of coordinates can be
accelerated by using an online adaptation of coordinate frequencies (ACF).
This package implements ACF and is based on LIBLINEAR as well as
the LiblineaR package (https://cran.r-project.org/package=LiblineaR).
It currently supports L2-regularized L1-loss as well as L2-loss linear SVM.
Similar to LIBLINEAR multi-class classification (one-vs-the rest, and
Crammer & Singer method) and cross validation for model selection is
supported. The training of the models based on ACF is much faster than
standard LIBLINEAR on many problems.
1 2 3 |
data |
a nxp data matrix. Each row stands for an example (sample, point) and each column stands for a dimension (feature, variable). A sparse matrix (from SparseM package) will also work. |
target |
a response vector for prediction tasks with one value for
each of the n rows of |
type |
|
cost |
cost of constraints violation (default: 1). Rules the trade-off
between regularization and correct classification on |
epsilon |
set tolerance of termination criterion for optimization.
If
The meaning of |
bias |
if |
wi |
a named vector of weights for the different classes, used for asymmetric class sizes. Not all factor levels have to be supplied (default weight: 1). All components have to be named according to the corresponding class label. |
cross |
if an integer value k>0 is specified, a k-fold cross validation
on |
change_rate |
learning rate of the preference adaptation, default is 0.2 |
pref_min |
lower bound on the preference adaptation, default is 1/20 |
pref_max |
upper bound on the preference adaptation, default is 20 |
max_iter |
the maximum number of iterations, default (from original LIBLINEAR code) is 1000. |
verbose |
if |
... |
for backwards compatibility, parameter |
For details for the implementation of LIBLINEAR, see the README file of the original c/c++ LIBLINEAR library at http://www.csie.ntu.edu.tw/~cjlin/liblinear. The ACF code can be found at http://www.ini.rub.de/PEOPLE/glasmtbl/code/acf-cd.
If cross
>0, the average accuracy (classification) computed over cross
runs of cross-validation is returned.
Otherwise, an object of class "LiblineaR"
containing the fitted model is returned, including:
TypeDetail |
A string decsribing the type of model fitted, as determined by |
Type |
An integer corresponding to |
W |
A matrix with the model weights. If |
Bias |
TRUE or FALSE, according to the value of |
ClassNames |
A vector containing the class names. |
Classification models usually perform better if each dimension of the data is first centered and scaled.
Aydin Demircioglu aydin.demircioglu@ini.rub.de
Based on LiblineaR package by Thibault Helleputte thibault.helleputte@dnalytics.com and
Pierre Gramme pierre.gramme@dnalytics.com.
Based on C/C++-code by Chih-Chung Chang and Chih-Jen Lin
Based on C/C++-code by Tobias Glasmachers and Urun Dogan
For more information on LIBLINEAR itself, refer to:
R.-E. Fan, K.-W. Chang, C.-J. Hsieh, X.-R. Wang, and C.-J. Lin.
LIBLINEAR: A Library for Large Linear Classification,
Journal of Machine Learning Research 9(2008), 1871-1874.
http://www.csie.ntu.edu.tw/~cjlin/liblinear
predict.LiblineaR.ACF
, heuristicC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | data(iris)
attach(iris)
x=iris[,1:4]
y=factor(iris[,5])
train=sample(1:dim(iris)[1],100)
xTrain=x[train,]
xTest=x[-train,]
yTrain=y[train]
yTest=y[-train]
# Center and scale data
s=scale(xTrain,center=TRUE,scale=TRUE)
# Find the best model with the best cost parameter via 3-fold cross-validations
tryTypes=c(1,3,4)
tryCosts=c(1000,1,0.001)
bestCost=NA
bestAcc=0
bestType=NA
for(ty in tryTypes){
for(co in tryCosts){
acc=LiblineaR.ACF(data=s,target=yTrain,type=ty,cost=co,
bias=TRUE,cross=3,verbose=FALSE)
cat("Results for C=",co," : ",acc," accuracy.\n",sep="")
if(acc>bestAcc){
bestCost=co
bestAcc=acc
bestType=ty
}
}
}
cat("Best model type is:",bestType,"\n")
cat("Best cost is:",bestCost,"\n")
cat("Best accuracy is:",bestAcc,"\n")
# Re-train best model with best cost value.
m=LiblineaR.ACF(data=s,target=yTrain,type=bestType,cost=bestCost,bias=TRUE,verbose=FALSE)
# Scale the test data
s2=scale(xTest,attr(s,"scaled:center"),attr(s,"scaled:scale"))
# Make prediction
pr=FALSE
if(bestType==0 || bestType==7) pr=TRUE
p=predict(m,s2,proba=pr,decisionValues=TRUE)
# Display confusion matrix
res=table(p$predictions,yTest)
print(res)
# Compute Balanced Classification Rate
BCR=mean(c(res[1,1]/sum(res[,1]),res[2,2]/sum(res[,2]),res[3,3]/sum(res[,3])))
print(BCR)
#' #############################################
# Example of the use of a sparse matrix:
if(require(SparseM)){
# Sparsifying the iris dataset:
iS=apply(iris[,1:4],2,function(a){a[a<quantile(a,probs=c(0.25))]=0;return(a)})
irisSparse<-as.matrix.csr(iS)
# Applying a similar methodology as above:
xTrain=irisSparse[train,]
xTest=irisSparse[-train,]
# Re-train best model with best cost value.
m=LiblineaR.ACF(data=xTrain,target=yTrain,type=bestType,cost=bestCost,bias=TRUE,verbose=FALSE)
# Make prediction
p=predict(m,xTest,proba=pr,decisionValues=TRUE)
# Display confusion matrix
res=table(p$predictions,yTest)
print(res)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.