我正在为具有多个类的特定应用程序评估一堆分类算法。我正在考虑的分类算法是:
- 多项逻辑回归(Matlab 的“mnrfit”)
- 多类 SVM(K. Crammer 和 Y. Singer。关于多类 SVM 的算法实现,JMLR,2001)。我将使用作者提供的代码,因为 Matlab 的“svmtrain”只进行二进制分类。
- 神经网络(Matlab 的“nprtool”)
- 决策树(来自 Matlab 的“classregtree”的 C4.5 和 CART)
- k-最近邻(Matlab's 'ClassificationKNN')
- 朴素贝叶斯分类器(Matlab 的“naiveBayes”)
- 判别分析(Matlab 的“ClassificationDiscriminant”)
- 随机森林(Matlab 的“TreeBagger”)
我有以下问题:
- 我是否遗漏了任何必须尝试的“明显”多类分类算法?或者,是否有任何二进制分类器可以很容易地用于具有一对多方法的多类。
- 其中哪些是线性分类器,哪些是非线性分类器?我知道 3、4 和 5 本质上是非线性的,而 2 在内核技巧中可能是非线性的。
- 其中哪些是离散分类器,哪些是概率分类器?例如,逻辑回归给出每个类的概率,而决策树只给出一个类。在相关说明中,如果我想使用 ROC 曲线进行比较,我如何将离散分类器与概率分类器进行比较,因为前者只在 ROC 图上给出一个点?
- 其中哪些是确定性分类器,哪些是随机分类器?换句话说,哪些分类器会在多次运行中产生完全相同的结果?这对我来说很重要:例如,在逻辑回归中,我只需运行一次即可完成,而对于神经网络,我将不得不多次训练网络以避免有偏差的结果。
最后,是否有任何好的论文展示了如何比较各种分类算法。我发现这个非常好。