R的列车算法是否有任何限制?

时间:2014-08-15 14:56:16

标签: r memory-management machine-learning classification r-caret

我使用R(RStudio版本0.98.1017)使用朴素贝叶斯算法训练二元分类器并进行5倍交叉验证。这是我正在使用的代码:

library(caret)
dataset <- read.table("dataFile.csv", header=TRUE, sep = ",")
attributes = dataset[,-3]
labels = as.factor(dataset$Class)
model = train(attributes, labels, method='nb', trControl=trainControl(method='repeatedcv', number=5))
confusionMatrixResults<-table(predict(model$finalModel,attributes)$class,labels)
confusionMatrix(confusionMatrixResults)

以下是dataFile.csv文件的示例数据(仅前10行):

firstName,lastName,Class
ayah,salat,0
abdulahi,youssif,1
yara,abshir,0
sawda,alanazi,1
abubaker,farah,1
yusaira,aden,1
mohammad,okash,0
farhia,alossehy,1
mais,alom,0

如果文件包含2001行(1个标题和2000个记录),代码可以正常工作,并生成以下混淆矩阵和结果:

        labels
      0   1
  0 991   2
  1  17 990

               Accuracy : 0.9905          
                 95% CI : (0.9852, 0.9943)
    No Information Rate : 0.504           
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.981           
 Mcnemar's Test P-Value : 0.001319        

            Sensitivity : 0.9831          
            Specificity : 0.9980          
         Pos Pred Value : 0.9980          
         Neg Pred Value : 0.9831          
             Prevalence : 0.5040          
         Detection Rate : 0.4955          
   Detection Prevalence : 0.4965          
      Balanced Accuracy : 0.9906          

       'Positive' Class : 0

但是,如果我只添加一个额外的行,它将产生非常差的结果(尽管没有错误或警告):

  labels
      0   1
  0 596  78
  1 413 914

               Accuracy : 0.7546          
                 95% CI : (0.7352, 0.7733)
    No Information Rate : 0.5042          
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.5106          
 Mcnemar's Test P-Value : < 2.2e-16       

            Sensitivity : 0.5907          
            Specificity : 0.9214          
         Pos Pred Value : 0.8843          
         Neg Pred Value : 0.6888          
             Prevalence : 0.5042          
         Detection Rate : 0.2979          
   Detection Prevalence : 0.3368          
      Balanced Accuracy : 0.7560          

       'Positive' Class : 0 

我的问题是:一条额外的记录怎么可能导致这种不同的结果。 值得一提的是,我已经尝试了几个具有不同记录的随机测试,并且在所有这些测试中,问题独立于特定记录,并且当文件超过2001行时发生。

我的猜测是内存大小或Naive Bayes库必须有一些限制。

如果您想尝试,请输入以下文件(我重命名了这些属性以保密): https://www.dropbox.com/s/7z39wzxilblo2bm/dataFile.csv 删除最后一行将显着改善结果!

0 个答案:

没有答案