为10个类的每个PAIR构建逻辑回归模型

时间:2015-08-26 18:52:10

标签: r machine-learning regression subset logistic-regression

我正在研究MNIST digit recognizer数据集

在这里,我有10个类标签,我希望构建和比较所有类对,即运行10c2逻辑回归模型并进行比较。我知道我可以用  combn(unique(mnist$label), 2, function(x) , simplify = TRUE) 在循环中并在函数中写入模型。但是,我卡在这里。

loglist <- list()
for(i in unique(mnist$label)){ 
        tmp <- try(append(loglist, glm(label~.,family=binomial(link=logit),
                   data = mnist[mnist$label == i, ])))
        if (class(tmp) != "try-error") loglist <- append(loglist, tmp)
} 

任何帮助或建议都会有很大的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

对于多个(在您的情况下为10个)类中,有三种方法可以使用逻辑回归模型。

  1. One vs rest
  2. One vs One
  3. 这两种方法对wiki有很好的解释,并且由Andrew NG提供了很好的video lecture

    另一种方法是使用 Softmax回归,可以在给定链接找到A good tutorial。该模型将逻辑回归推广到分类问题,其中类标签y可以采用两个以上的可能值。

    那么,在以下时使用哪种模式:

      

    这取决于这四个类是否相互排斥。   例如,如果您的四个班级是古典,乡村,摇滚和   爵士乐,然后假设您的每个训练样例都标有   正是这四个类标签中的一个,你应该建立一个softmax   分类

         

    但是,如果您的类别是has_vocals,舞蹈,配乐,流行音乐,   那些课程不是互相排斥的;例如,可以   一首流行音乐,来自配乐,另外还有   主唱。在这种情况下,构建4个二进制文件会更合适   逻辑回归分类器。这样,对于每一件新的音乐作品,   你的算法可以分别决定它是否属于每个   四类。