什么是参数化机器学习算法?它与非参数化机器学习算法有何不同?
在这篇文章中,您将了解参数化和非参数化机器学习算法之间的区别。
我的新书《掌握机器学习算法》将助您启动项目,书中包含分步教程和所有示例的Excel电子表格文件。
让我们开始吧。

参数和非参数机器学习算法
图片由John M.拍摄,保留部分权利。
学习函数
机器学习可以概括为学习一个将输入变量(X)映射到输出变量(Y)的函数(f)。
Y = f(x)
算法从训练数据中学习这个目标映射函数。
函数的具体形式未知,因此我们作为机器学习从业者的工作是评估不同的机器学习算法,看看哪种算法能更好地逼近底层函数。
不同的算法对函数的具体形式以及如何学习它有不同的假设或偏差。
获取您的免费算法思维导图

方便的机器学习算法思维导图样本。
我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。
下载、打印并使用它。
还可以独家访问机器学习算法电子邮件迷你课程。
参数化机器学习算法
假设可以大大简化学习过程,但也可能限制可学习的内容。将函数简化为已知形式的算法称为参数化机器学习算法。
一个用固定大小(独立于训练样本数量)的一组参数来概括数据的学习模型称为参数模型。无论你给一个参数模型多少数据,它都不会改变它对所需参数数量的看法。
— 人工智能:一种现代方法,第737页
这些算法包括两个步骤:
- 为函数选择一种形式。
- 从训练数据中学习函数的系数。
一个易于理解的映射函数形式是直线,如线性回归中所使用的:
b0 + b1*x1 + b2*x2 = 0
其中b0、b1和b2是控制截距和斜率的直线系数,x1和x2是两个输入变量。
假设函数的线性形式大大简化了学习过程。现在,我们所需要做的就是估计直线方程的系数,我们就有了一个用于该问题的预测模型。
通常,假设的函数形式是输入变量的线性组合,因此参数化机器学习算法通常也称为“线性机器学习算法”。
问题是,实际未知的底层函数可能不是像直线这样的线性函数。它可能几乎是一条直线,需要对输入数据进行一些小的转换才能正常工作。或者它可能根本不像一条直线,在这种情况下,假设是错误的,该方法将产生糟糕的结果。
其他一些参数化机器学习算法的例子包括:
- 逻辑回归
- 线性判别分析
- 感知器
- 朴素贝叶斯
- 简单神经网络
参数化机器学习算法的优点
- 更简单:这些方法更容易理解和解释结果。
- 速度快:参数模型从数据中学习的速度非常快。
- 数据量少:它们不需要太多的训练数据,即使与数据的拟合不完美也能很好地工作。
参数化机器学习算法的局限性
- 受限:通过选择函数形式,这些方法高度受限于指定的这种形式。
- 复杂性有限:这些方法更适用于简单的问题。
- 拟合不佳:在实践中,这些方法不太可能与底层映射函数匹配。
非参数化机器学习算法
不对映射函数的形式做强假设的算法称为非参数化机器学习算法。通过不作假设,它们可以自由地从训练数据中学习任何函数形式。
当您拥有大量数据且没有先验知识,并且不想过多担心选择正确的特征时,非参数方法会很有用。
— 人工智能:一种现代方法,第757页
非参数方法力求在构建映射函数时最大程度地拟合训练数据,同时保持对未见数据的泛化能力。因此,它们能够拟合大量的函数形式。
一个易于理解的非参数模型是K近邻算法,它根据与新数据实例最相似的K个训练模式进行预测。该方法除了假设接近的模式可能具有相似的输出变量外,不作任何关于映射函数形式的假设。
其他一些流行的非参数机器学习算法的例子包括:
- k-近邻
- 决策树,如CART和C4.5
- 支持向量机
非参数化机器学习算法的优点
- 灵活性:能够拟合大量的函数形式。
- 强大:对底层函数没有假设(或只有弱假设)。
- 性能:可以产生更高性能的预测模型。
非参数化机器学习算法的局限性
- 更多数据:需要更多的训练数据来估计映射函数。
- 更慢:训练速度慢得多,因为它们通常有更多的参数需要训练。
- 过拟合:过拟合训练数据的风险更大,并且更难解释为什么会做出特定的预测。
进一步阅读
本节列出了一些资源,如果您想了解更多关于参数化和非参数化机器学习算法之间的区别。
书籍
- 《统计学习导论:R语言应用》,第2章
- 《人工智能:一种现代方法》,第18章
文章
- 在机器学习中使用非参数方法的优点是什么? (Quora)
- 在机器学习中使用非参数方法的缺点是什么? (Quora)
- 非参数统计 (维基百科)
- 参数统计 (维基百科)
- 参数化与非参数化 (Stack Exchange)
总结
在这篇文章中,您已经了解了参数化和非参数化机器学习算法之间的区别。
您了解到参数方法对输入变量到输出变量的映射做出了很大的假设,因此训练速度更快,所需数据更少,但可能不够强大。
您还了解到非参数方法对目标函数做出了很少或没有假设,因此需要更多数据,训练速度更慢,模型复杂度更高,但可以产生更强大的模型。
如果您对参数化或非参数化机器学习算法或本文有任何疑问,请留言,我将尽力回答。
更新:我最初将一些算法(如神经网络和朴素贝叶斯)列在了错误的类别下,这造成了一些困惑。现在已全部更正。
嗨,jason
感谢您花时间总结这些主题,即使像我这样的新手也能理解。喜欢您的帖子
不过我对这篇文章有一个疑问,根据我对参数/非参数模型的一点点知识,非参数模型是需要保留整个数据集才能进行未来预测的模型。而且看起来《人工智能:一种现代方法》第18章也同意我的这个事实,其中提到神经网络是参数化的,一旦学习了权重w,我们就可以抛弃训练集了。我认为树/朴素贝叶斯也是如此。
那么您将这些方法归类为非参数化模型的理由是什么?
谢谢,
一位困惑的初学者
确实,简单的多层感知器神经网络是参数模型。
非参数模型不需要保留整个数据集,但K近邻算法就是一个需要保留整个数据集的非参数算法的例子。相反,非参数模型可以改变参数的数量,例如决策树中的节点数量或支持向量的数量等。
决策树中的节点数难道不是超参数吗?
还有一个问题是,如何将非参数机器学习模型部署到生产环境中,因为它们的参数不是固定的?
不是,但树的最大深度是。
您可以完成您的模型,将其保存到文件中,然后稍后加载它以对新数据进行预测。
请看这篇文章
https://machinelearning.org.cn/train-final-machine-learning-model/
这有帮助吗?
优秀……大师级作品
我也很想知道为什么朴素贝叶斯被归类为非参数模型。
是的,朴素贝叶斯通常是一种参数方法,因为我们为输入变量选择了一个分布(高斯分布),尽管也有使用核估计器的非参数形式。
我也很困惑。
据我所知,参数模型具有固定的参数集,即一旦您设计了模型,参数的数量就不会改变,而非参数模型的参数数量是可变的,例如高斯过程和用于协同过滤的矩阵分解等。
如果我错了,请纠正我:)
这是正确的。
这是唯一有用的解释。谢谢。
我认为分类并不真正取决于“参数”是什么。它关乎您在尝试构建模型或函数时所做的假设。参数模型通常背后有一个概率模型(即pdf)来支持函数查找过程,例如正态分布或其他分布模型。
另一方面,非参数模型仅依赖于误差最小化搜索过程来识别与pdf无关的“参数”集。
因此,参数在参数化和非参数化ML算法中都存在。它只是没有额外的假设层来控制ML算法试图确定的pdf的性质。
你好Simon,统计学中参数和非参数的定义与你所说的不同。
定义的关键在于参数数量是否固定。
我们也许可以考虑线性和非线性方法,这可能更有帮助……
参数/非参数模型与惰性/急切学习之间有关系吗?
在机器学习文献中,非参数方法也被
称为基于实例或基于内存的学习算法。
- 将训练实例存储在查找表中,并从中进行预测插值。
- 惰性学习算法,与急切的参数方法相反,后者模型简单,参数数量少,一旦学习了参数,我们就不再
保留训练集。
保留训练集。
参数数量少,一旦学习了参数,我们就不再
保留训练集。
我有关于区分参数算法和非参数算法的问题:1)对于线性回归,我们也可以引入x^2、x^3……以使我们学习到的边界非线性,这是否意味着在这种情况下它变成非参数的?
2)它们之间的主要区别是SVM对我们如何选择超平面施加了额外的约束。为什么感知器被认为是参数的,而SVM不是?
你好Jianye,
归根结底,参数化意味着模型参数的数量是固定的,用于定义建模的决策。
增加更多输入仍然使线性回归方程成为参数化的。
SVM可以根据数据和超参数调优选择支持向量的数量,这使其成为非参数化的。
希望这样更清楚。
嗨,Jason,
这里的内容真棒。有一些建议,
1. 您认为,将直方图作为估计概率分布的简单非参数模型包含在内是否是个好主意?一些初学者可能能够与直方图联系起来。
2. 另外,也许可以更精确地将SVM(RBF核)称为非参数模型。
您怎么看?
你好Pramit,
1. 好建议。
2. 也许,关于SVM的定位存在争议。我确实认为它是非参数的,因为支持向量的数量是根据数据和与参数定义的边距的交互来选择的。
Jason,一如既往,一篇优秀的帖子。
谢谢Manish。
Jason,这是一篇关于参数化和非参数化模型的好文章。
但我仍然困惑。
深度学习应该属于参数化还是非参数化,为什么?
此致
参数化和非参数化之间没有明确的界限。
我个人认为神经网络是非参数的。
看这里
https://www.quora.com/Are-Neural-Networks-parametric-or-non-parametric-models
你好Jason,感谢讨论这个话题。您将神经网络视为非参数模型的观点,根据您的帖子和上述建议,对我来说没有意义。请[在此处阅读](https://stats.stackexchange.com/questions/322049/are-deep-learning-models-parametric-or-non-parametric)并[在此处听](r/MachineLearning – 人工神经网络是参数方法还是非参数方法?(https://www.reddit.com/r/MachineLearning/comments/kvkud/is_artificial_neural_network_a_parametric_or/c2noexo))以获得更多清晰度,并纠正我的错误。!
也许您可以为我总结一下这些链接?
嗨
这个答案很有说服力,我只有一个小问题,对于压力分布图,我们应该考虑哪种机器学习算法?
抱歉,我不知道什么是压力分布图。
嗨,Jason,
决策树包含分裂准则、最小大小、最小叶子大小、最小增益、最大深度等参数,那为什么它被称为非参数的呢?请对此进行解释。
它们被认为是模型的超参数。
选定的分裂点是模型的参数,其数量可以根据具体数据而变化。因此,决策树是一种非参数算法。
这有道理吗?
您能否简要告诉我以下模型中的参数和超参数是什么?
1. 朴素贝叶斯
2. KNN
3. 决策树
4. 多元回归
5. 逻辑回归
是的,请在博客中搜索关于这些算法的帖子。
你好 Jason!不错的博客。
我对“简单神经网络”有一个疑问,它不应该泛指“神经网络”吗?参数的数量是事先确定的。
此外,我认为线性支持向量机可以被视为参数模型,因为尽管支持向量的数量随数据而变化,但最终的决策边界可以用固定数量的参数来表示。
我知道参数和非参数之间的区别有点模糊,但我说的有道理,对吗?
同样对这个问题感到困惑!我对线性SVM也有同样的疑问。
问候!
你好 Jason,我想知道,尽管不需要
大量的训练数据,参数算法也会导致过拟合吗?或者它们会反而导致欠拟合吗?
这两种算法都可能出现过拟合和欠拟合。
更常见的情况是参数化算法欠拟合,非参数化算法过拟合。
你好 Jason,感谢您的帮助,但我有一个请求,希望您也看看我上面提出的问题,因为这是一个关于参数与非参数之间区别的好问题,我非常想知道您对 Guiferviz 在2017年11月3日提出的这个问题的看法。请回答这个问题……
你好 Jason,您提到简单的多层感知器神经网络是参数模型。我理解这一点,但是哪些神经网络是非参数模型呢?我假设例如带有 dropout 的神经网络是非参数的?
也许吧。算法分类会变得很混乱。
如果我们在决策树中进行回归
我们需要检查特征之间的相关性吗?
当我们谈论非参数或参数时,我们是在谈论CART这样的方法还是在谈论数据。
如果我的数据不是正态分布的,我是否必须进行数据转换以使其正态分布,如果我想使用参数或非参数
最好让模型的问题尽可能简单。
非线性方法不需要正态分布的数据。
嗨,Jason,
好帖子。您能否通过一个例子来解释参数化和非参数化方法?
对参数(什么是参数,模型参数)有点困惑。例如,在脚本中,X和y值是参数吗?
很好的问题,这篇文章会有帮助
https://machinelearning.org.cn/difference-between-a-parameter-and-a-hyperparameter/
嗨 Jason
你能发布或告诉我关于参数调优的信息吗?
是的,我有很多帖子,可以搜索“网格搜索”
你好 Jason,你能解释一下半参数模型以及它们的例子吗?
我以前没听说过它们。
您有示例吗?
嗨,Jason,
如果你只是用 K-NN、朴素贝叶斯、简单感知器和多层感知器来构建一个基于网络的实时预测系统,你会用哪种算法进行分类,为什么?你能告诉我这种算法在这种情况下有什么优缺点吗?
谢谢你。
我会测试每一种,并选择表现最好的那一种。
嗨,Jason,
总结得很好,例子也很清楚。
但我有一个理解上的问题……
为什么将模型分为参数和非参数只以参数数量是否固定以及我们是否对函数有假设作为标准?
难道不应该有一个关于属性分布是否已知的标准吗?
我知道如果我们知道参数,比如正态分布中的均值和方差,我们就可以用这些参数完全确定它。
但这里我们有一个例子,假设 (b) 它有一个给定的均值但未指定的方差是一个参数假设。
https://en.wikipedia.org/wiki/Nonparametric_statistics
模型分为参数和非参数与统计方法分为参数和非参数有区别吗?
这是一个论点,即这些是不同的东西,模型用于预测,而方法用于假设检验?对于某些情况,需要知道分布,而对于另一些情况则不需要?
获得更多关于分布形状的信息难道不是一个优势吗?有些模型是否暗示了某种分布(例如正态分布),或者它们只是在某种分布下给出更好的结果?
我知道并非所有分布都可以转换为正态分布而不损失点之间的本质距离。通过对所有数值属性进行对数变换(尝试转换为正态分布)来预处理以提高模型性能是否有意义?
这里有一些关于这个话题的讨论
https://www.kaggle.com/getting-started/47679
谢谢。
这只是思考不同类型算法的一种方法,而不是唯一的方法。
是的,它与此相关——例如,我们是否知道并指定了关系的函数形式。
谢谢 Jason 您的出色网站。
我感谢您丰富的经验和见解,因此我确信可以向您提出一个机器学习问题。
我想根据每个车轮(8个车轮)的9个测量参数(例如,轮缘磨损、踏面磨损等)来确定铁路货车的剩余使用寿命。我没有任何标记数据,因此我知道这是一个无监督学习问题。回归无法预测所需时间。我尝试了k-means,其中k=5(根据肘部法则的最佳k),但无法理解结果。您对这种情况下我可以使用哪种算法有什么建议吗?
谢谢!
这可能会帮助您定义您的问题
https://machinelearning.org.cn/how-to-define-your-machine-learning-problem/
也许可以研究使用生存分析或风险模型
https://en.wikipedia.org/wiki/Survival_analysis
很高兴阅读这篇。但我对参数化方法有一个疑问。
在某些机器学习案例中,参数化方法为何如此出色?
我能知道答案和例子吗?
不胜感激
好问题,参数化方法在你解决的问题中表现良好时非常出色。它们可以是最高效和最有效的。
你太棒了,我之前很困惑,但因为你,我现在很清楚了。
再次感谢……
不客气!
你好 Jason,这篇很棒的文章简短明了地解释了主题。但根据我对这些算法,特别是 KNN 的理解,我对本文中提出的优点和局限性有不同的看法(这可能是错误的),如果 cited 的三个例子都是非参数的(它们确实是非参数的)。对于优点/性能,并不适用于所有三个例子。KNN 在预测时可能非常慢,数据越多,它就越慢,因为它需要计算每个数据样本的距离然后对其进行排序。相反,局限性/训练慢也不适用于 KNN,因为 KNN 在训练时非常快(实际上它不需要训练任何东西,所以不耗时)。我非常想知道您对此的反馈。
是的,KNN 在训练时很快,但在推理/预测时相对较慢。
嗨,Jason,
根据我的阅读,感知机似乎是非参数的,而不是参数的。
谢谢。
嗨,杰森,
您能否用更简单的方式解释一下您上面提到的这些内容:
“问题是,实际未知的底层函数可能不是像直线一样的线性函数。它可能几乎是直线,需要对输入数据进行一些小的转换才能正常工作。或者它可能根本不像直线,在这种情况下,假设是错误的,并且该方法将产生糟糕的结果。”
你好……请解释你不清楚的部分,以便我更好地帮助你。
你好,
为什么非参数估计没有提到“核密度估计 (KDE)”?它被包含在 SVM 中吗?
祝好,
你好 Elie……你可能会发现以下内容很有趣
https://machinelearning.org.cn/probability-density-estimation/
为什么我不能下载算法的图片?
你好 Elham……请详细说明您正在尝试做什么以及您遇到了什么问题?