Я хочу настроить параметры наивного байесовского классификатора, который предсказывает имя исполнителя на основе текста песни.
Чтобы построить модель, я преобразовал текст песни в матрицу термина данных, используя create_matrix.
Каждая ячейка содержит «да», если текст содержит слово в столбце, «Нет», если нет.
Эта матрица является вводом модели, а имя исполнителя - классом.
Я добавил параметр Лапласа. Я начал с Лапласа = 0,5.
Но я не знаю, как выбрать подходящее значение Лапласа, как интерпретировать мой результат и убедиться, что классификатор не дает мне результаты по Хасарду или нет.
Кроме того, я не знаю, есть ли другие параметры, которые могут настроить / улучшить мою модель.
Код ниже показывает код, используемый для построения классификатора.
данные - это датафрейм, содержащий тексты песен и имена исполнителей
data.dt_matrix<-create_matrix(data$lyrics,ngramLength=1,weighting = tm::weightTfIdf)
data_training<-apply(data.dt_matrix, MARGIN = 2,convert_values)
data_training<-data_training[sample(nrow(data_training)),]
folds<-folds(data$Class, nfolds = 5, stratified=TRUE, seed = 2016)
for(i in 1:5){
#Segement your data by fold using the which() function
testIndexes <- which(folds==i,arr.ind=TRUE)
testData <- data_training[testIndexes, ]
testLables<-data[testIndexes,]
trainLabels<-data[-testIndexes,]
trainData <- data_training[-testIndexes, ]
model <-
naiveBayes(as.matrix(trainData),as.factor(trainLabels$Class),laplace=0.5)
pred<- predict(model, as.matrix(testData))
true.labels<-as.factor(testLables$Class)
mConfusion<-table(true.labels,pred)
acc<-(mConfusion[1,1]+mConfusion[2,2]+mConfusion[3,3])/sum(mConfusion)
TrainErr<-1-acc
print(TrainErr)
AvgTrErr=TrainErr+AvgTrErr
#Use the test and train data partitions however you desire...
}
print (AvgTrErr/5)
Рассчитанная ошибка обучения составляет 0,66 после 5-кратной перекрестной проверки.