【发布时间】:2018-09-29 16:11:47
【问题描述】:
我有一个机器学习分类问题,有 3 个可能的类别(A 类、b 类和 C 类)。请让我知道哪种方法更好? - 将问题分为 2 个二元分类:首先确定它是 A 类还是“非 A”类。那么如果是Class 'Not A',再进行二分类,分类为Class B或Class C
【问题讨论】:
标签: machine-learning classification
我有一个机器学习分类问题,有 3 个可能的类别(A 类、b 类和 C 类)。请让我知道哪种方法更好? - 将问题分为 2 个二元分类:首先确定它是 A 类还是“非 A”类。那么如果是Class 'Not A',再进行二分类,分类为Class B或Class C
【问题讨论】:
标签: machine-learning classification
您描述的是一种用于多类分类的方法。
它被称为 One vs. All / One vs. Rest。
最好的方法是选择一个具有这两个选项的好的分类器框架,并使用交叉验证过程选择更好的一个。
【讨论】:
二元分类最终可以使用sigmoid函数(从0到1平滑)。这样我们就知道如何对两个值进行分类了。
from keras.layers import Dense
model.add(Dense(1, input_dim=8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
对于多类分类,您通常会在最后一层使用softmax,下一个示例中的神经元数量将是 10,表示有 10 个选择。
from keras.layers import Dropout
model.add(Dense(512,activation='relu',input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
但是,您也可以在最后一层使用softmax 和 2 个神经元进行二元分类:
model.add(Dense(2, activation='softmax'))
希望这对分类器提供一点直觉。
【讨论】: