मैं कुछ डेटा को वर्गीकृत करने के लिए SVM बनाने के लिए R में kernlab पैकेज का उपयोग कर रहा हूं ।
एसवीएम अच्छी तरह से काम कर रहा है कि यह एक सभ्य सटीकता की 'भविष्यवाणियां' प्रदान करता है, हालांकि इनपुट चर की मेरी सूची मेरी पसंद से बड़ी है और मैं विभिन्न चर के सापेक्ष महत्व के अनुसार अनिश्चित हूं।
मैं एक आनुवंशिक-एल्गोरिथ्म लागू करना चाहता हूं जो कि सबसे अच्छे प्रशिक्षित / योग्यतम एसवीएम का उत्पादन करने वाले इनपुट चर के उप-सेट का चयन करे।
मैं इस GA कार्यान्वयन का प्रयास करते समय कौन से R पैकेज का उपयोग करना चाहता हूं (और संभवतः एक संक्षिप्त उदाहरण-उदाहरण) का उपयोग करने के साथ कुछ मदद चाहूंगा।
मैं बाहर वहाँ (आर जीए / पी संकुल की एक सबसे देखा है आरजीपी , genalg , सबसिलेक्ट , GALGO ), लेकिन मैं यह देखने के लिए कि कैसे मैं फिटनेस फंक्शन और इनपुट मेरी के हिस्से के रूप में मेरे ksvm समारोह में पास होता धारणात्मक संघर्ष कर रहा हूँ चर पूल जनसंख्या पूल के रूप में ...?
कोई मदद, विचार, या सही दिशा में आभार प्राप्त किया।
धन्यवाद
कोड जो इसे हल करता है उसे बाद में EDIT में जोड़ा गया है
# Prediction function to be used for backtesting
pred1pd = function(t) {
print(t)
##add section to select the best variable set from those available using GA
# evaluation function - selects the best indicators based on miminsied training error
mi.evaluate <- function(string=c()) {
tmp <- data[(t-lookback):t,-1]
x <- string
tmp <- tmp[,x==1]
tmp <- cbind(data[(t-lookback):t,1],tmp)
colnames(tmp)[1] <- "targets"
trainedmodel = ksvm(targets ~ ., data = tmp, type = ktype, kernel="rbfdot", kpar=list(sigma=0.1), C = C, prob.model = FALSE, cross = crossvalid)
result <- error(trainedmodel)
print(result)
}
## monitor tge GA process
monitor <- function(obj) {
minEval = min(obj$evaluations);
plot(obj, type="hist");
}
## pass out the GA results; size is set to be the number of potential indicators
gaResults <- rbga.bin(size=39, mutationChance=0.10, zeroToOneRatio=10, evalFunc=mi.evaluate, verbose=TRUE, monitorFunc=monitor, popSize=50, iters=3, elitism=10)
## now need to pull out the best chromosome and rebuild the data frame based on these results so that we can train the model
bestChro <- gaResults$population[1,]
newData <- data[,-1]
newData <- newData[,bestChro==1]
newData <- cbind(data[,1],newData)
colnames(newData)[1] <- "targets"
print(colnames(newData))
# Train model using new data set
model = trainSVM(newData[(t-lookback):t, ], ktype, C, crossvalid)
# Prediction
pred = as.numeric(as.vector(predict(model, newData[t+1, -1], type="response")))
# Print for user inspection
print(pred)
}