আমি কিছু ডেটা শ্রেণিবদ্ধ করার জন্য একটি এসভিএম তৈরি করতে আর এর কার্নলব প্যাকেজটি ব্যবহার করছি ।
এসভিএম ভালভাবে কাজ করছে যে এটি একটি শালীন নির্ভুলতার 'পূর্বাভাস' সরবরাহ করে, তবে আমার ইনপুট ভেরিয়েবলগুলির তালিকা আমার চেয়ে বড় এবং বিভিন্ন ভেরিয়েবলের আপেক্ষিক গুরুত্ব সম্পর্কে আমি অনিশ্চিত।
আমি ইনপুট ভেরিয়েবলের উপ-সেট নির্বাচন করতে জেনেটিক-অ্যালগরিদম প্রয়োগ করতে চাই যা সেরা প্রশিক্ষিত / ফিটনেস এসভিএম উত্পাদন করে।
এই জিএ বাস্তবায়নের চেষ্টা করার সময় কোন আর প্যাকেজটি ব্যবহার করা উচিত (এবং সম্ভবত একটি সংক্ষিপ্ত psuedo- উদাহরণ) চয়ন করতে আমি কিছুটা সহায়তা চাই।
আমি বাইরে সেখানে (রাঃ জি / পি প্যাকেজ একটি সবচেয়ে তাকিয়ে করেছি RGP , genalg , subselect , GALGO ), কিন্তু আমি দেখতে আমি সুস্থতা কার্যকারিতা এবং ইনপুট আমার অংশ হিসেবে আমার ksvm ফাংশন মধ্যে পাস হবে ধারণার দিক থেকে সংগ্রাম করছি জনসংখ্যা পুল হিসাবে পরিবর্তনশীল অ্যারে ...?
সঠিক দিক থেকে কোনও সহায়তা, চিন্তাভাবনা বা ধাক্কা কৃতজ্ঞতার সাথে পেল।
ধন্যবাদ
কোডগুলি যা পরে এটির পরে নীচে যোগ করা সমাধান করে
# 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)
}