我们在机器学习中学习到的很多的算法模型,都可以分为参数(parametric)和非参数(nonparametric)。理解这两个概念,并知道如何区分哪些是非参数,哪些是参数,对于你深入的理解机器学习中的算法,熟悉各算法的优缺点,以及如何在实践中选择合适的算法模型都会有帮助。所以,如果你还不知道这两个概念,还不知道你常用的那些算法属于哪一类,那就好好的看看这篇文章吧。
如果一个模型,能用一个确定的形式(公式)来描述,就可以称之为是参数模型,反之则不是。这个定义可能太过简单,以至于容易让人误解。更准确点的定义可以是:如果一个学习模型,它的参数是固定的,参数的规模跟训练的数据无关系,不会随着训练数据增加而变化,那就是参数模型。
对参数模型补充如下:
参数模型一般包含两步:
1)选择一个确定形式的函数(比如线性的,非线性的,参数多少个等);
2)从训练数据中学习到该函数的系数。
你能想到哪些属于参数算法的机器学习算法呢?
以下这些就是:
- Logistic Regression
- Linear Discriminant Analysis
- Perceptron
- Naive Bayes
- Simple Neural Networks
而相应的,非参数模型就是不会用固定的参数,确定的函数形式描述的模型,模型是跟训练数据有关的,模型的参数会随着训练数据增加而增加。
关于非参数模型的说明,以下这段说的比较清楚:
属于非参数的算法有:
- k-Nearest Neighbors
- Decision Trees like CART and C4.5
- Support Vector Machines
从以上对参数和非参数的描述,我们大概可以想一想参数和非参数算法各自的优缺点:
参数模型的优点:
- 更加的简单:方法更好理解,结果解释性更好;
- 学习的更快;
- 需要更少的数据也可以得到比较好的训练结果
缺点: - 因为一开始已经限定了形式,通常可能并不符合学习的问题的分布,所以偏差会比较大,不适应比较复杂的问题。
综上,如果数据量不大,问题比较简单,应该优先考虑参数模型。
非参数模型的优点:
- 灵活且强大;因为不限定形式,就能够适应更多的分布;
- 训练得到的模型更好。
缺点:
- 需要更多的数据
- 因为一般需要学习更多的参数,所以训练的会更慢
- 解释性更差,更容易过拟合 (方差偏大)