Looking at your results suggests that differences are probably based on
expected minor numerical inaccuracies and the possibly alternating sign
of the support vectors.
Best,
Uwe Ligges
On 13.01.2011 01:28, mutohrn at chugai-pharm.co.jp
wrote:> Dear all,
>
> I executed svm calculation using e1071 library with a microarray data
(http://www.iu.a.u-tokyo.ac.jp/~kadota/R/data_Singh_RMA_3274.txt).
> Then, I shuffled the data samples and executed svm calculation again.
> The results of 2 calculation were different (in SV, coefs and weights).
>
> I attached the script below. Could please tell me why this happens?
> If possible please tell me how to make them equal.
>
> Best regards,
>
> Hiro
>
> ### Script start ###
>
> library(e1071)
> data<-
read.table('http://www.iu.a.u-tokyo.ac.jp/~kadota/R/data_Singh_RMA_3274.txt',
header=TRUE, row.names=1, sep="\t", quote="")
>
> data.cl<- rep(NA,ncol(data))
> data.cl[grep('Normal',colnames(data))]<- 'Normal'
> data.cl[grep('Tumour',colnames(data))]<- 'Tumour'
>
> s<- sample(ncol(data))
>
> m<- svm(x=t(data ), y=factor(data.cl ), scale=T,
type="C-classification",kernel="linear")
> m.s<- svm(x=t(data[,s]), y=factor(data.cl[s]), scale=T,
type="C-classification", kernel="linear")
>
> w<- t(m $coefs) %*% m$SV
> w.s<- t(m.s$coefs) %*% m.s$SV
>
> # SV and coefs are slightly different
> sum(abs(m$SV[order(rownames(m$SV)),] - m.s$SV[order(rownames(m.s$SV)),]))
> sum(abs(m$coefs[order(rownames(m$SV))]
-m.s$coefs[order(rownames(m.s$SV))]))
>
> # rank of weight are not identical
> all(rank(w)==rank(w.s))
>
> ### Script end ###
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.