对于一个分类问题,首先要有数据,然后需要找到一个模型f,定义loss function,最后找到表现最好的f的参数。
从概率上讲,分类问题其实就是根据训练数据估计新的数据属于哪一类的概率。
在讲概率生成模型前需要介绍高斯分布函数。
输入是特征向量x,输出是x的概率,高斯函数的形状由均值和协方差矩阵决定。
首先假定训练数据的点服从高斯分布,那么我们需要找到训练数据背后的高斯分布,这样就能够给出新数据的概率。
如何找高斯分布模型呢?——使用极大似然估计的方法。
得到模型后就可以做分类了。
可以设定阈值,比如大于0.5就属于某一类。
事实上,对上述数据的分类准确率只有47%,即使考虑到其他维度的情况,准确率也只有64%.
因此需要改进模型,即两个高斯分布共享协方差矩阵,这样模型的参数就更少了。
改正后的模型准确率提高到74%,有意思的是分类边界变成线性的了。
可能最开始你就有疑问为什么要假定是高斯分布?其实这是视情况而定的,你也可以对二元特征使用伯努利分布。如果各项特征都独立,就变成了朴素贝叶斯分类器。
得到
下面从数学角度看看 z 是什么。
因为两个协方差矩阵是共享参数的:
最终得到z的表达式,其实是线性分类器。在概率模型中通过计算均值、协方差矩阵等来得到模型参数,
所以直接从训练数据中得到线性模型的参数不更好吗?