回顾一下我们的learning flow。面对不同的问题,我们设计的演算法是不同的,但是基本的处理思路是一致的,我们的演算法利用输入的训练集,在设置的hypothesis set中寻找一个最接近目标函数的hypothesis 。因此,我们需要收集训练数据,设计出符合训练数据的hypothesis set,根据给定问题设计演算法来pick一个最好的hypothesis 。
这篇文章将阐述机器学习中一个最最基本的问题:binary classification,如何设计hypothesis set 及演算法?(以及从理论上证明设计方法的正确性)
分类问题:
为什么不直接写程序进行分类呢?不同的任务,需要设定不同的阈值,而且特征各不相同,一个个去写累不累啊?复杂的问题,我们自己都无法设计出合适的阈值!因此,我们需要利用样本进行学习。
一、设计hypothesis set(perceptron hypothesis 登场)
针对二元分类问题,输出仅有两类 ,输入的样本有多个特征,我们的hypothesis 能够在给定输入时产生输出。hypothesis 长什么样?
类比于将我们的成绩分为及格和不及格两个类,我们会先求出成绩再设定threshold,当我们的成绩大于60,我们输出及格;否则输出不及格。
对样本进行分类时,我们想先对样本打分(样本特征的加权和score),当score大于threshold时标记样本为一类;小于threshold 时标记样本为另一类。这时我们需要一个数学表达式来描述上述的文字,想想sign函数刚好能满足我们的需要,输出1或-1(这也是为什么输出空间我们使用1和-1来表示)。而这些的hypothesis set ,我们成为perceptron。