前两天面试被问到“哪种机器学习算法没有参数?”回答的不是很好,因此在这里重新梳理一下。
1、参数模型
如果我们对所要学习的问题有足够的认识,具备一定的先验知识,此时我们一般会假定要学习的目标函数f(x)或分布P(y|x)的具体形式。然后,通过训练数据集,基于经验风险最小化(ERM)、结构风险最小化(SRM)、最大似然估计(MLE)、最大后验概率估计(MAP)等学习策略,可以估计出f(x)或P(y|x)中含有的未知参数。一旦未知参数估计完毕,训练数据一般来说,就失去其作用了,因为这些估计出来的参数就是训练数据的浓缩。通过这种方式建立起来的模型就是参数模型。
1.1 常见的参数机器学习算法
- 逻辑回归
- 感知机
- 线性成分分析
- 朴素贝叶斯
1.2 参数模型的优点
- 简单:易于理解和解释结果;
- 快速:参数模型学习和训练的速度都很快;
- 需要的数据少:不需要太多的训练数据,甚至可以很好地拟合有缺陷的数据;
1.3 参数模型的局限性
- 函数约束:以选定函数形式的方式来学习本身就限制了模型;
*复杂度低:这些方法更适合于简单的问题; - 拟合效果较差:在实践中,这些方法不太可能匹配潜在的目标(映射)函数;
2、非参数模型
当我们对所要学习的问题知之甚少,此时我们一般不会对潜在的模型做过多的假设。在面对预测任务的时候,我们通常会用上所有的训练数据,通过这种方式建立的模型就是非参数模型。
非参数模型之所以叫做非参数,并不是因为模型中没有参数。实际上,非参数模型中一般会含有一个或多个超参数,外加无穷多个普通的参数。
非参数模型不存在模型的错误假定问题,可以证明,当训练数据量趋于无穷大的时候,非参数模型可以逼近任意复杂的真实模型。这正是非参数模型诱人的一点。
2.1 常见的非参数机器学习算法
- KNN
- 决策树
- SVM
2.2 非参数模型的优点
- 灵活性:以拟合许多不同的函数形式;
- 模型强大:对于目标函数不作假设或者作微小的假设;
- 性能:可以产生更高性能的预测模型;
2.3 非参数模型的局限性
- 需要更多的数据:需要更多的训练数据用于训练目标函数;
- 训练速度慢:因为需要训练更多的参数,训练过程通常比较慢;
- 过拟合:有更高的风险发生过拟合,对于预测也比较难以解释;
时下流行的深度学习,其本质是一个半参数模型的神经网络。通过加大网络的深度(加大隐层数目)以及宽度(增加每一层神经元的个数),使假设空间的复杂度得到极大的提高。复杂的假设空间有极强的表达能力,当训练数据量很大的时候,不会陷入过拟合。所以,深度学习的成功,从理论上讲,一方面来源于海量的训练数据,另一方面来源于其复杂的网络结构。
参数模型的一个很重要的特点是,如果对于模型的假设正确,那么只需要很少的训练数据就可以从假设空间中学出一个很好的模型。但是,如果模型的假设错误,那么无论训练的数据量有多大,甚至趋于无穷大,学出的模型都会与实际模型出现不可磨灭的偏差。感知机、逻辑斯特回归、高斯判别分析、朴素贝叶斯、线性支持向量机都属于参数模型。对于神经网络来说,当固定了隐层的数目以及每一层神经元的个数,它也属于参数模型。但由于隐层数目与每一层神经元个数的不确定性,很多时候,神经网络都被归类为半参数模型。
3、半参数模型
半参数模型作为非参数模型和参数模型之间的一类模型,既继承了非参数模型的灵活性,又继承了参数模型的可解释性,可以进一步改善非参数模型的缺陷。
对于神经网络来说,当固定了隐层的数目以及每一层神经元的个数,它也属于参数模型。但由于隐层数目与每一层神经元个数的不确定性,很多时候,神经网络都被归类为半参数模型。
[1]:参考文献
[2]:参考文献
[3]:参考文献
[4]:参考文献