本周要去给培训班的学员总结机器学习算法模型,我与授课小组讨论一下教案,其中一个话题就是如何来区分一个应用是分类问题还是回归问题?如何来正确的选择算法模型?
从这个总结的内容来看,我觉得问题还是很多的,就是说分类还是回归这两种不同的算法,实际区分起来没那么简单。教案里讲,如果输出的是一个可度量的值,它就是一个回归问题,如果输出是一个不可度量的文字标签,它应该是个分类问题。
1. 输出的是数据,还是标签?
比如说我们来预测学生的数学课的考试成绩,它是一个回归还是一个分类啊?如果采用百分制的话,我们可以把它理解成是一个回归问题,输出的呢,是一个度量值。但是如果呢,我们采用ABCD这个等级制的话,那它是算是分类啊还是回归?实际上,如果你把它当作ABCD个分类来处理的话,我感觉这个是明显不妥当的,因为ABCD它们之间的话,实际上是一个隐含着一个数量关系在里边。
实际上类似的例子我们还可以列举很多。比如天气预报,我们预告晴天,多云,阴天,下雨这四种情况。这里面呢,就隐含着一个潜在的数量关系在里边。如果我们把晴天看做是数量零的话,把下雨看作看作数量1的话,那么多云,阴天,在数轴上大概就相当于0.3、0.6这么一个位置关系。
2. Softmax 输出的是回归数据还是分类标签?
说到神经网络,它的最后一层softmax这样一个输出,那么究竟是回归数据还是分类标签?
拿手写题识别为例,我们那个训练样本呢,是0123456789这十个数字,大概有几万张训练样本。这个神经网络的输出,也是有十个,Y0、Y2、一直到Y9。最后一层的激活函数呢,是softmax,所以这个一般来讲是一个非常典型的分类网络。
但是呢,这个网络除了识别这个十个数字之外,我们把手写体的英文字母输进去,它实际上也会有一个输出的。比如说我输入小写的字母a,那么呢,Y0呢,实际上就对应它与数字0的相似度,Y1呢,就是这个字母与数字1的相似度等等,因此的话Y0到Y9啊,这个输出它就变成了这个字母a的十个特征。
因此从特征抽取的这个角度来看,传统这个分类网络就变成了一个回归网络。所以,一个算法模型到底属于什么类型,还要看它用于处理什么问题。像softmax这样的输出,如果我们只关心最大的输出分量,它就是分类模型,如果我们认为每一个输出都代表一个特征,她就成了回归网络。