五个机器学习竞赛的好处
原文:
machinelearningmastery.com/5-benefits-of-competitive-machine-learning/
Jeremy Howard, Kaggle 的正式演出于 2013 年中期在旧金山大学进行了演示。在那次演讲中他谈到了机器学习比赛的一些更广泛的好处,比如那些 Kaggle。
在这篇文章中,你将发现我从这次演讲中提取的 5 分,这将激励你想要开始参加机器学习比赛
机器学习竞赛是一种精英统治
摄影作者 PaulBarber ,保留一些权利
南佛罗里达大学的大数据
霍华德的演讲名为“ _Kaggle 的 Jeremy Howard 在旧金山大学 _ 讲述大数据。标题用词不当。这次演讲主要关注霍华德的背景,他是如何进行机器学习以及简单地谈论讨人喜欢的。
霍华德有一个初创企业的背景,这个讲话很好地总结了这一背景以及他必须从那次旅程中传授的教训。
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/OKOlO9nIHUE?feature=oembed” width=“500”></iframe>
在演讲结束时,霍华德接触了 Kaggle 及其使命,这是激发这 5 点的灵感。他们是:
- Meritocracy :状态完全基于能力。
- 角色模型:最佳表演者及其原创故事成为榜样。
- 推送限制:排行榜推动您和群组的功能。
- 创新:竞争导致技术创新。
- 社区:像大脑一样找到对方并分享想法。
1.精英统治
数据科学或机器学习竞赛是一种精英。这意味着等级仅根据优点确定。
所给出的类比是体育运动,其中唯一重要的是运动员所取得的成果。无论你来自哪里,你的性别或你去哪里上学都没关系。重要的是你可以取得的成果。
这样的系统是公平的,像工作场所那样存在的偏差不会影响结果。该系统也是透明的,每个人都可以访问相同的源材料(训练数据)和表现评估(排行榜)。
我们在之前的帖子中已经触及过这个问题应用机器学习是一个 Meritocracy 。
2.角色模型
比赛创造了榜样。
比赛的结果表明,通常不是学术上做得好,但那些具有适应性工程思维的人使用有效的方法来获得最好的结果。具有多样化和有趣背景的人在该平台上的所有数据科学家中排名前 10 位或前 100 名。
这具有创建角色模型的效果。他们的故事是不同的,例如一年前在免费的 Coursera 课程中遇到过机器学习。这些有趣的故事吸引你,“_,如果他能做到,我可以做到 _”。
你还看到,当一位“知名”数据科学家加入竞争时,就像 Netflix 奖中的明星一样,这引起了更多的关注,“_ 我想打败做得好的人在 Nextfix 奖 _ 中。
3.推限制
与体育一样,排行榜可以突破你和团队所能达到的极限。
只要知道一个人知道你所做的事情,即使你已经全部给了它,也可以推动你去寻找那一条额外的信息。
排行榜的实时反馈对可以实现的结果产生心理影响。这可能会像四分一英里那样削减两种方式,直到 Roger Bannister 打破它,证明它可以完成。
4.创新
竞争导致技术创新。
每次都会破坏最先进的基准测试。这种情况最有可能发生,因为问题已明确指定用于机器学习,并且因为参与者不限于在给定领域或研究领域中使用的方法。什么都可以。
这开辟了讨论问题的不同方式,既可以在现场利用,也可以利用未来类似的竞争,加速全面推进。
5.社区
社区围绕着竞争而兴起。
在分享信息方面存在平衡,但在分享竞争中失败的情况下不会分享太多信息。分享您和小组的好处,并且似乎在每场比赛中自动发生。
就像大脑一样,找到彼此并团结起来,利用彼此最好的部分想法,超越他们独立的能力。
社区和信息流是良好竞争的关键因素。它们帮助初学者入门,推动中间体的发展和创新。
摘要
在这篇文章中,您发现了机器学习竞赛的五大好处。它们是:精英管理,榜样,推动极限,创新和社区。
这在机器学习方面并不新鲜,与学术会议合作已有近 20 年的竞争。新的是参与规模和进入门槛低。无论您的背景如何,这都是进入应用机器学习的激动人心的机会主义时刻。
机器学习模型选择的温和介绍
原文:https://machinelearningmastery.com/a-gentle-introduction-to-model-selection-for-machine-learning/
考虑到像 Sklearn 和 Keras 这样易于使用的机器学习库,在给定的预测建模数据集上拟合许多不同的机器学习模型是很简单的。
因此,应用机器学习的挑战就变成了如何在一系列不同的模型中进行选择,以解决你的问题。
天真地,你可能认为模型表现已经足够了,但是你应该考虑其他问题,比如模型需要多长时间来训练或者向项目涉众解释有多容易。如果选择的模型必须在操作中使用数月或数年,他们的担忧会变得更加紧迫。
还有,你到底在选什么:只是用来拟合模型的算法还是整个数据准备和模型拟合流水线?
在这篇文章中,你将发现机器学习模型选择的挑战。
看完这篇文章,你会知道:
- 模型选择是为预测建模问题从众多候选模型中选择一个模型的过程。
- 在执行模型表现之外的模型选择时,可能会有许多相互竞争的问题,例如复杂性、可维护性和可用资源。
- 模型选择技术的两个主要类别是概率度量和重采样方法。
我们开始吧。
机器学习模型选择简介
图片由伯纳德·斯拉格提供。新西兰,保留部分权利。
概观
本教程分为三个部分;它们是:
- 什么是型号选择
- 型号选择的注意事项
- 模型选择技术
什么是型号选择
模型选择是从训练数据集的候选机器学习模型集合中选择一个最终机器学习模型的过程。
模型选择是一个可以跨不同类型的模型(如逻辑回归、SVM、KNN 等)应用的过程。)和配置有不同模型超参数(例如,SVM 中的不同核)的相同类型的模型。
当我们有各种不同复杂度的模型(例如,不同多项式次数的线性或逻辑回归模型,或者 K 值不同的 KNN 分类器)时,我们应该如何选择正确的模型?
—第 22 页,机器学习:概率视角,2012。
例如,我们可能有一个对开发分类或回归预测模型感兴趣的数据集。我们事先不知道哪种模型在这个问题上表现最好,因为它是不可知的。因此,我们在这个问题上拟合和评估了一套不同的模型。
模型选择是选择其中一个模型作为解决问题的最终模型的过程。
模型选择不同于模型评估。
例如,我们评估或评估候选模型,以便选择最佳模型,这就是模型选择。然而,一旦选择了一个模型,就可以对其进行评估,以便传达它的总体表现;这是模型评估。
评估模型表现的过程称为模型评估,而为模型选择适当的灵活性级别的过程称为模型选择。
—第 175 页,统计学习导论:在 R 中的应用,2017。
型号选择的注意事项
拟合模型相对简单,尽管选择模型是应用机器学习真正的挑战。
首先,我们需要克服一个“最佳”模型的想法。
考虑到数据中的统计噪声、数据样本的不完整性以及每种不同模型类型的局限性,所有模型都有一定的预测误差。因此,完美或最佳模型的概念是没有用的。相反,我们必须寻求一个足够好的模型
我们在选择最终车型时关心什么?
项目涉众可能有特定的需求,例如可维护性和有限的模型复杂性。因此,技能较低但更简单、更容易理解的模型可能是首选。
或者,如果模型技能高于所有其他关注点,那么模型在样本外数据上表现良好的能力将是首选,而不考虑所涉及的计算复杂性。
因此,一个足够好的模型可能会涉及很多东西,并且是针对您的项目的,例如:
** 满足项目干系人的要求和约束的模型。
- 考虑到可用的时间和资源,一个足够熟练的模型。
- 与天真的模型相比,这是一个技巧性的模型。
- 一个相对于其他测试模型来说比较熟练的模型。
- 相对于最先进的技术而言,这是一个很有技巧的模型。
接下来,我们必须考虑正在选择什么。
例如,我们没有选择合适的模型,因为所有模型都将被丢弃。这是因为一旦我们选择了一个模型,我们将在所有可用的数据上拟合一个新的最终模型,并开始使用它进行预测。
因此,我们是否在用于拟合训练数据集上的模型的算法中进行选择?
一些算法需要专门的数据准备,以便最好地将问题的结构暴露给学习算法。因此,我们必须更进一步,将模型选择视为在模型开发管道中进行选择的过程。
每个管道可以采用相同的原始训练数据集,并输出可以以相同方式评估的模型,但可能需要不同或重叠的计算步骤,例如:
- 数据过滤。
- 数据转换。
- 特征选择。
- 特色工程。
- 还有更多…
你越仔细地观察模型选择的挑战,你就会发现更多的细微差别。
既然我们已经熟悉了模型选择中涉及的一些注意事项,那么让我们回顾一下选择模型的一些常见方法。
模型选择技术
模型选择的最佳方法需要“”足够的”数据,根据问题的复杂程度,这些数据可能几乎是无限的。
在这种理想的情况下,我们将数据分成训练、验证和测试集,然后在训练集上拟合候选模型,在验证集上评估和选择它们,并在测试集上报告最终模型的表现。
如果我们处于数据丰富的情况下,最好的方法是将数据集随机分成三部分:训练集、验证集和测试集。训练集用于拟合模型;验证集用于估计模型选择的预测误差;测试集用于评估最终选择的模型的泛化误差。
—第 222 页,统计学习的要素:数据挖掘、推理和预测,2017。
这在大多数预测建模问题上是不切实际的,因为我们很少有足够的数据,或者甚至能够判断什么是足够的。
然而,在许多应用程序中,用于培训和测试的数据供应将是有限的,为了构建良好的模型,我们希望尽可能多地使用可用数据进行培训。然而,如果验证集很小,它将给出预测表现的相对噪声估计。
–第 32 页,模式识别和机器学习,2006。
相反,有两类主要的技术来近似模型选择的理想情况;它们是:
- 概率测度:通过样本内误差和复杂度选择模型。
- 重采样方法:通过估计的样本外误差选择模型。
让我们依次仔细看看每一个。
概率测度
概率度量包括使用候选模型在训练数据集上的表现和模型的复杂性对其进行分析评分。
众所周知,训练误差是乐观偏差的,因此不是选择模型的良好基础。可以根据训练误差被认为有多乐观来惩罚表现。这通常使用算法特定的方法来实现,通常是线性的,根据模型的复杂性来惩罚分数。
历史上已经提出了各种“信息标准”,试图通过增加惩罚项来纠正最大似然偏差,以补偿更复杂模型的过度拟合。
–第 33 页,模式识别和机器学习,2006。
具有较少参数的模型不太复杂,因此更受欢迎,因为它可能会更好地概括平均水平。
四种常用的概率模型选择方法包括:
- 阿卡克信息标准(AIC)。
- 贝叶斯信息标准(BIC)。
- 最小描述长度。
- 结构风险最小化。
当使用更简单的线性模型(如线性回归或逻辑回归)时,概率测量是合适的,其中模型复杂性损失的计算(例如在样本偏差中)是已知的且易于处理的。
重采样方法
重采样方法寻求在样本外数据上估计模型(或者更准确地说,模型开发过程)的表现。
这是通过将训练数据集分成子训练集和测试集,在子训练集上拟合模型,并在测试集上对其进行评估来实现的。这个过程可以重复多次,并报告每次试验的平均表现。
这是一种对样本外数据的模型表现的蒙特卡罗估计,尽管每次试验并不是严格独立的,因为根据所选择的重采样方法,相同的数据可能在不同的训练数据集或测试数据集中出现多次。
三种常见的重采样模型选择方法包括:
大多数时间概率测量(在前面部分中描述)不可用,因此使用重采样方法。
到目前为止,最流行的是交叉验证系列方法,包括许多子类型。
估计预测误差最简单和最广泛使用的方法可能是交叉验证。
—第 241 页,统计学习的要素:数据挖掘、推理和预测,2017。
一个例子是广泛使用的 k 折叠交叉验证,它将训练数据集分成 k 个折叠,每个例子在测试集中只出现一次。
另一种是省略(LOOCV),其中测试集由单个样本组成,每个样本都有机会成为测试集,需要构建和评估 N(训练集中样本的数量)个模型。
进一步阅读
如果您想更深入地了解这个主题,本节将提供更多资源。
教程
书
- 应用预测建模,2013。
- 统计学习的要素:数据挖掘、推理和预测,2017。
- 统计学习导论:在 R 中的应用,2017。
- 模式识别与机器学习,2006。
- 机器学习:概率视角,2012。
文章
摘要
在这篇文章中,你发现了机器学习模型选择的挑战。
具体来说,您了解到:
- 模型选择是为预测建模问题从众多候选模型中选择一个模型的过程。
- 在执行模型表现之外的模型选择时,可能会有许多相互竞争的问题,例如复杂性、可维护性和可用资源。
- 模型选择技术的两个主要类别是概率度量和重采样方法。
你有什么问题吗?
在下面的评论中提问,我会尽力回答。*
过拟合的简单直觉,或者为什么测试训练数据是一个坏主意
原文:
machinelearningmastery.com/a-simple-intuition-for-overfitting/
当您第一次开始机器学习时,您加载数据集并尝试模型。您可能会想到,为什么我不能仅使用所有数据构建模型并在同一数据集上对其进行评估?
这看似合理。训练模型的更多数据更好,对吧?在同一数据集上评估模型和报告结果将告诉您模型有多好,对吧?
错误。
在这篇文章中,您将发现这种推理的困难,并发展直觉,为什么在看不见的数据上测试模型很重要。
在同一数据集上进行训练和测试
如果你有一个数据集,比如虹膜花数据集,那个数据集的最佳模型是什么?
鸢尾花
照片来自 dottieg2007 ,保留一些权利
最好的模型是数据集本身。如果您获取给定的数据实例并要求其进行分类,则可以在数据集中查找该实例并每次报告正确的结果。
当您在同一数据集上训练和测试模型时,这是您要解决的问题。
您要求模型对之前“看到”的数据做出预测。用于创建模型的数据。该问题的最佳模型是上述查找模型。
描述性模型
在某些情况下,您确实需要训练模型并使用相同的数据集对其进行评估。
您可能希望简化数据中预测变量的解释。例如,您可能需要一组简单的规则或最能描述您收集的观察结果的决策树。
在这种情况下,您正在构建描述性模型。
这些模型非常有用,可以帮助您在项目或业务中更好地理解属性与预测值的关系。您可以使用您拥有的专业知识为结果添加含义。
描述性模型的重要限制是它仅限于描述训练它的数据。您不知道预测模型的准确程度。
建模目标函数
考虑一个组合分类问题,其目标是将数据实例分类为红色或绿色。
建模目标函数
照片由 seantoyer 拍摄,保留一些权利。
对于这个问题,假设存在一个完美的模型,或者一个完美的函数,它可以正确地将任何数据实例与域区分为红色或绿色。在特定问题的背景下,完美的区分功能很可能在领域专家的问题领域具有深远的意义。我们想要考虑这一点,并尝试挖掘这一观点。我们希望提供这样的结果。
我们为这个问题制作预测模型时的目标是最好地近似这种完美的辨别功能。
我们使用从域中收集的样本数据构建完美辨别函数的近似值。它不是所有可能的数据,它是所有可能数据的样本或子集。如果我们拥有所有数据,则无需做出预测,因为只需查找答案即可。
我们用来构建我们的近似模型的数据包含其中与理想判别函数有关的结构。数据准备的目标是最好地将该结构暴露给建模算法。数据还包含与辨别功能无关的内容,例如数据选择的偏差和扰乱和隐藏结构的随机噪声。您选择用于近似函数的模型必须导航这些障碍。
该框架有助于我们理解描述性和预测性模型之间的深层差异。
描述性与预测性模型
描述性模型仅涉及对观察数据中的结构进行建模。在同一数据集上训练和评估它是有意义的。
预测模型正在尝试一个更加困难的问题,从数据样本中逼近真正的判别函数。我们希望使用不挑选的算法并对我们样本中的所有噪声进行建模。我们确实希望选择超出观察数据的算法。有意义的是,我们只能评估模型从数据样本推广到训练期间之前没有看到的数据的能力。
最佳描述模型对观察到的数据是准确的。最佳预测模型对未观察到的数据是准确的。
过拟合
评估训练数据预测模型的缺陷在于,它没有告诉您模型对新的看不见的数据的概括程度。
选择其在训练数据集上的准确率而不是在未看到的测试数据集上的准确率的模型很可能在看不见的测试数据集上具有较低的准确率。原因是模型不是一般化的。它已经规范了训练数据集中的结构。这被称为过拟合,它比你想象的更加阴险。
例如,一旦精度停止提高,您可能希望停止训练模型。在这种情况下,训练集的准确率将继续提高,但看不见的数据的准确率开始下降。
你可能会想到自己:“_ 所以我会训练训练数据集并在我去 _ 时查看测试数据集”。一个好主意,但现在测试数据集不再是看不见的数据,因为它已经涉及并影响了训练数据集。
解决过拟合问题
您必须在看不见的数据上测试您的模型以反击过拟合。
解决过拟合
照片由 Adrian Fallace Design&amp;摄影,保留一些权利。
将数据分成 66%/ 34%用于测试数据集的训练是一个良好的开端。使用交叉验证更好,并且使用多次交叉验证更好。您希望花时间并在看不见的数据上获得准确的模型的最佳估计。
您可以通过降低模型的复杂性来提高模型的准确率。
例如,在决策树的情况下,您可以在训练后修剪树(删除叶子)。这将减少特定训练数据集中的专业化数量,并增加对看不见的数据的概括。例如,如果您使用回归,则可以使用正则化来约束训练过程中的复杂性(系数的大小)。
摘要
在这篇文章中,您学习了将预测模型的发展作为未知理想辨别函数的近似的重要框架。
在此框架下,您了解到仅仅根据训练数据评估模型是不够的。您了解到,评估预测模型概括能力的最佳和最有意义的方法是在看不见的数据上进行评估。
这种直觉为评估预测模型时测试工具中使用训练/测试分裂测试,交叉验证和理想的多重交叉验证提供了基础。
特征选择简介
原文:
machinelearningmastery.com/an-introduction-to-feature-selection/
您应该使用哪些功能来创建预测模型?
这是一个困难的问题,可能需要深入了解问题领域。
您可以自动选择数据中与您正在处理的问题最有用或最相关的功能。这是一个称为特征选择的过程。
在这篇文章中,您将发现功能选择,可以使用的方法类型以及下次需要为机器学习模型选择功能时可以使用的便捷清单。
特征选择简介
照片由 John Tann 拍摄,保留一些权利
什么是特征选择
特征选择也称为变量选择或属性选择。
它是自动选择数据中的属性(例如表格数据中的列),这些属性与您正在处理的预测性建模问题最相关。
特征选择…是选择用于模型构建的相关特征子集的过程
- 特征选择,维基百科条目。
特征选择不同于降维。两种方法都试图减少数据集中的属性数量,但维度降低方法通过创建新的属性组合来实现,其中特征选择方法包括和排除数据中存在的属性而不更改它们。
维数降低方法的示例包括主成分分析,奇异值分解和 Sammon 映射。
功能选择本身很有用,但它主要用作过滤器,可以清除除现有功能之外无用的功能。
- Robert Neuhaus,回答“您认为特征选择在机器学习中有多重要? “
问题特征选择解决
特征选择方法可帮助您创建准确的预测模型。它们可以帮助您选择能够提供更好或更好准确率同时需要更少数据的功能。
特征选择方法可用于从数据中识别和移除不需要的,不相关的和冗余的属性,这些属性对预测模型的准确率没有贡献,或者实际上可能降低模型的准确率。
较少的属性是可取的,因为它降低了模型的复杂性,更简单的模型更易于理解和解释。
变量选择的目标有三个方面:提高预测变量的预测表现,提供更快,更具成本效益的预测变量,并更好地理解生成数据的基础过程。
- Guyon 和 Elisseeff 的“变量和特征选择介绍”(PDF)
特征选择算法
一般类别的特征选择算法有三种:过滤方法,包装方法和嵌入方法。
过滤方法
过滤器功能选择方法应用统计度量来为每个要素指定评分。功能按分数排序,并选择保留或从数据集中删除。这些方法通常是单变量的,并且可以独立地考虑特征,或者考虑因变量。
一些滤波器方法的一些示例包括卡方检验,信息增益和相关系数分数。
包装方法
包装方法考虑选择一组特征作为搜索问题,其中准备,评估不同组合并与其他组合进行比较。我们用于评估特征组合并根据模型准确度分配分数的预测模型。
搜索过程可以是有条理的,例如最佳优先搜索,它可以是随机的,例如随机爬山算法,或者它可以使用启发法,例如前向和后向传递来添加和移除特征。
如果包装器方法是递归特征消除算法的示例。
嵌入式方法
嵌入式方法了解在创建模型时哪些功能最有助于模型的准确率。最常见的嵌入式特征选择方法是正则化方法。
正则化方法也称为惩罚方法,其将额外约束引入预测算法(例如回归算法)的优化中,该预测算法将模型偏向于较低复杂度(较少系数)。
正则化算法的例子是 LASSO,弹性网和岭回归。
功能选择教程和秘籍
我们在此博客上看到过许多功能选择示例。
- Weka :有关如何使用 Weka 执行特征选择的教程,请参阅“特征选择以提高准确率并缩短训练时间”。
- Scikit-Learn :有关使用 scikit-learn 在 Python 中进行递归特征消除的秘籍,请参阅“使用 Scikit-Learn 在 Python 中使用特征选择”。
- R :使用 Caret R 软件包进行递归特征消除的秘籍,请参阅“使用 Caret R 软件包”选择“特征”
选择功能时的陷阱
特征选择是应用机器学习过程的另一个关键部分,如模型选择。你不能开火和忘记。
将特征选择视为模型选择过程的一部分非常重要。如果不这样做,可能会无意中将偏差引入模型中,从而导致过拟合。
…应该在不同的数据集上进行特征选择,而不是训练[预测模型] …不这样做的效果是你会过度训练你的训练数据。
- Ben Allison 回答“是否使用相同的数据进行特征选择和交叉验证是否有偏差? “
例如,当您使用精确度估计方法(如交叉验证)时,必须在内循环中包含要素选择。这意味着在训练模型之前,在准备好的折叠上执行特征选择。错误是首先执行特征选择以准备数据,然后对所选特征执行模型选择和训练。
如果我们采用适当的程序,并在每个折叠中执行特征选择,则在该折叠中使用的特征的选择中不再存在关于所保持的情况的任何信息。
- Dikran Marsupial 在机器学习中执行交叉验证时回答“最终模型的特征选择”
原因是选择特征的决策是在整个训练集上进行的,而这些决策又被传递到模型上。这可能会导致一种模式,即所选择的特征比其他正在测试的模型增强的模型可以获得看似更好的结果,而实际上它是有偏差的结果。
如果对所有数据执行特征选择然后交叉验证,则交叉验证过程的每个折叠中的测试数据也用于选择特征,这是表现分析的偏差。
- Dikran Marsupial 回答“特征选择和交叉验证”
功能选择清单
Isabelle Guyon 和 Andre Elisseeff 是“变量和特征选择简介”(PDF)的作者提供了一个很好的清单,您可以在下次需要为预测性建模问题选择数据特征时使用它。
我在这里复制了清单的重要部分:
- 你有领域知识吗? 如果是,请构建一组更好的临时“”功能
- 你的功能是否相称? 如果不是,请考虑将它们标准化。
- 你怀疑功能的相互依赖吗? 如果是,请通过构建联合功能或功能产品来扩展功能集,就像计算机资源允许的那样。
- 您是否需要修剪输入变量(例如成本,速度或数据理解原因)? 如果不是,则构造析取特征或特征的加权和
- 您是否需要单独评估功能(例如,了解它们对系统的影响,或者因为它们的数量太大而您需要进行首次过滤)? 如果是,请使用变量排名方法;否则,无论如何都要获得基线结果。
- 你需要预测器吗? 如果不是,请停止
- 你怀疑你的数据是“脏”的(有一些无意义的输入模式和/或嘈杂的输出或错误的类标签)? 如果是,则使用在步骤 5 中获得的排名最高的变量检测异常值示例作为表示;检查和/或丢弃它们。
- 你知道先尝试一下吗? 如果不是,请使用线性预测器。使用具有“探测”方法的前向选择方法作为停止标准或使用 0 范数嵌入方法进行比较,遵循步骤 5 的排序,使用增加的特征子集构建相同性质的预测变量序列。您可以使用较小的子集匹配或改善表现吗?如果是,请尝试使用该子集的非线性预测器。
- 你有新的想法,时间,计算资源和足够的例子吗? 如果是,请比较几种特征选择方法,包括新想法,相关系数,后向选择和嵌入方法。使用线性和非线性预测变量。选择具有模型选择的最佳方法
- 您想要一个稳定的解决方案(以提高表现和/或理解)吗? 如果是,请对您的数据进行子采样并重新分析几个“bootstrap”。
进一步阅读
在特定平台上需要有关功能选择的帮助吗?以下是一些可以帮助您快速入门的教程:
- 如何在 Weka 中执行特征选择(无代码)
- 如何使用 scikit-learn 在 Python 中执行功能选择
- 如何用插入符号在 R 中执行特征选择
要深入了解该主题,您可以选择一本关于该主题的专用书籍,例如以下任何一个:
特征选择是特征工程的子主题。您可能希望深入了解帖子中的特征工程:“
您可能希望在帖子中深入了解功能工程:
作为搜索问题的应用机器学习的温和介绍
原文:
machinelearningmastery.com/applied-machine-learning-as-a-search-problem/
应用机器学习具有挑战性,因为针对给定问题设计完美的学习系统是棘手的。
没有针对您的问题的最佳训练数据或最佳算法,只有您能发现的最佳。
考虑到给定项目可用的知识和资源,机器学习的应用最好被认为是输入到输出的最佳映射的搜索问题。
在这篇文章中,您将发现应用机器学习作为搜索问题的概念化。
阅读这篇文章后,你会知道:
- 应用机器学习是从输入到输出近似未知底层映射函数的问题。
- 诸如数据选择和算法选择之类的设计决策会缩小您最终可能选择的可能映射函数的范围。
- 将机器学习概念化为搜索有助于合理化集合的使用,算法的现场检查以及对算法学习时发生的事情的理解。
让我们开始吧。
应用机器学习作为一个搜索问题的温和介绍
照片由 tonko43 ,保留一些权利。
概观
这篇文章分为 5 部分;他们是:
- 函数逼近问题
- 函数逼近作为搜索
- 数据选择
- 算法选择
- 机器学习作为搜索的意义
函数逼近问题
应用机器学习是开发学习系统以解决特定的学习问题。
学习问题的特征在于观察包括输入数据和输出数据以及两者之间的一些未知但一致的关系。
学习系统的目标是学习输入和输出数据之间的通用映射,以便可以对从输出变量未知的域中提取的新实例进行熟练的预测。
在统计学习中,从机器学习的统计角度来看,该问题被定义为给定输入数据(X
)和相关输出数据(_ 的映射函数(f
)的学习。 ]_ )。
y = f(X)
我们有X
和y
的样本,并尽力提出近似f
的函数,例如fprime
,这样我们可以在未来给出新的例子(Xhat
)做出预测(yhat
)。
yhat = fprime(Xhat)
因此,应用的机器学习可以被认为是函数逼近的问题。
机器学习作为从输入到输出的映射
学习的映射将是不完美的。
设计和开发学习系统的问题是学习将输入变量映射到输出变量的未知底层函数的有用近似的问题。
我们不知道函数的形式,因为如果我们这样做,我们就不需要学习系统;我们可以直接指定解决方案。
因为我们不知道真正的潜在功能,所以我们必须对其进行近似,这意味着我们不知道并且可能永远不知道学习系统与真实映射的近似程度有多接近。
函数逼近作为搜索
我们必须寻找对我们的目的足够好的真正基础函数的近似值。
有许多噪声源会在学习过程中引入错误,这会使过程更具挑战性,从而导致映射不太有用。例如:
- 选择学习问题的框架。
- 选择用于训练系统的观察结果。
- 选择如何准备训练数据。
- 选择预测模型的表示形式。
- 选择学习算法以使模型适合训练数据。
- 用于评估预测技能的绩效指标的选择。
还有更多。
您可以看到学习系统的开发中有许多决策点,并且事先都不知道答案。
您可以将学习问题的所有可能学习系统视为一个巨大的搜索空间,每个决策点都会缩小搜索范围。
搜索从输入到输出的所有可能映射函数的空间
例如,如果学习问题是预测花的种类,数百万可能的学习系统之一可以缩小如下:
- 选择将问题框定为预测物种类标签,例如分类。
- 选择给定物种及其相关亚种的花的测量值。
- 选择一个特定托儿所中的鲜花进行测量,以收集训练数据。
- 选择决策树模型表示,以便可以向利益相关者解释预测。
- 选择 CART 算法以适合决策树模型。
- 选择分类准确度来评估模型的技能。
等等。
您还可以看到,开发学习系统所涉及的许多决策可能存在自然的层次结构,每个决策都会进一步缩小我们可以构建的可能学习系统的空间。
这种缩小引入了有用的偏见,故意选择一个可能的学习系统子集而不是另一个子集,目的是更接近我们可以在实践中使用的有用映射。这种偏差既适用于问题框架的最高层,也适用于低层,例如机器学习算法或算法配置的选择。
数据选择
选择的学习问题框架和用于训练系统的数据是学习系统发展的一个重要杠杆。
您无权访问所有数据:即所有输入和输出对。如果你这样做,你就不需要预测模型来为新的输入观察做出输出预测。
你确实有一些历史输入 - 输出对。如果没有,您将无法获得用于训练预测模型的任何数据。
但也许你有很多数据,你只需要选择一些数据进行训练。或者,您可以随意自由生成数据,并受到生成或收集的数据和数据的挑战。
您选择对您的学习系统进行建模的数据必须充分捕获您可用数据的输入和输出数据之间的关系,以及该模型预期将来预测的数据。
从问题的所有数据的宇宙中选择训练数据
算法选择
您必须选择模型的表示和用于使模型适合训练数据的算法。这再次成为学习系统发展的另一个重要杠杆。
从所有算法的宇宙中选择算法来解决问题
虽然项目利益相关者对项目施加约束是很常见的,但是这种决策通常会简化为选择算法,例如模型能够解释预测,而预测又会对最终模型表示的形式施加约束。反过来你可以搜索的映射范围。
选择从输入到输出的近似映射的效果
机器学习作为搜索的意义
将开发学习系统作为搜索问题的概念化有助于在应用机器学习中明确许多相关问题。
本节将介绍几个。
迭代学习的算法
用于学习映射的算法将施加进一步的约束,并且它与所选择的算法配置一起将控制在模型适合时如何导航可能的候选映射的空间(例如,用于迭代学习的机器学习算法)。
在这里,我们可以看到通过机器学习算法从训练数据中学习的行为实际上导航了学习系统的可能映射的空间,希望从差的映射转移到更好的映射(例如爬山)。
迭代训练学习算法对数据的影响
这为优化算法在机器学习算法的核心中的作用提供了概念上的基本原理,以充分利用特定训练数据的模型表示。
合奏的基本原理
我们还可以看到,不同的模型表示将占据所有可能的函数映射的空间中的完全不同的位置,并且在做出预测时又具有完全不同的行为(例如,不相关的预测误差)。
这为集合方法的作用提供了概念上的理论基础,这些方法结合了来自不同但技巧娴熟的预测模型的预测。
解释组合多个最终模型的预测
现场检查的基本原理
具有不同表示的不同算法可以在可能的函数映射的空间中的不同位置处开始,并且将以不同方式导航空间。
如果这些算法导航的约束空间由适当的框架和良好的数据很好地指定,那么大多数算法可能会发现良好和类似的映射函数。
我们还可以看到一个好的框架和仔细选择的训练数据如何打开一个候选映射的空间,可以通过一套现代强大的机器学习算法找到。
这为在给定的机器学习问题上对一套算法进行抽查,并在显示最有希望的算法上加倍,或者选择最简约的解决方案(例如 Occam 的剃刀)提供了理由。
进一步阅读
如果您希望深入了解,本节将提供有关该主题的更多资源。
- 第二章,机器学习,1997。
- 作为搜索的泛化,1982。
- 第一章,数据挖掘:实用机器学习工具和技术,2016。
- 关于算法选择,应用于组合搜索问题,2012。
- 维基百科上的算法选择
摘要
在这篇文章中,您发现了应用机器学习作为搜索问题的概念化。
具体来说,你学到了:
- 应用机器学习是从输入到输出近似未知底层映射函数的问题。
- 诸如数据选择和算法选择之类的设计决策会缩小您最终可能选择的可能映射函数的范围。
- 将机器学习概念化为搜索有助于合理化集合的使用,算法的现场检查以及对算法学习时发生的事情的理解。
你有任何问题吗?
在下面的评论中提出您的问题,我会尽力回答。
为什么应用机器学习很难
原文:
machinelearningmastery.com/applied-machine-learning-is-hard/
如何处理应用机器学习的难以解决的问题。
应用机器学习具有挑战性。
对于您的具体问题,您必须做出许多已知“_ 正确答案 _”的决定,例如:
- 使用什么框架的问题?
- 要使用哪些输入和输出数据?
- 学习算法使用什么?
- 使用什么算法配置?
对于期望您可以计算或被告知要使用哪些数据或如何最佳配置算法的初学者来说,这是一项挑战。
在这篇文章中,您将发现设计学习系统的难以处理的性质以及如何处理它。
阅读这篇文章后,你会知道:
- 如何为自己和他人制定明确的学习问题定义。
- 在为您的问题设计学习系统时必须考虑的 4 个决策点。
- 您可以使用 3 种策略来专门解决在实践中设计学习系统的棘手问题。
让我们开始吧。
概观
这篇文章分为 6 个部分,灵感来自 Tom Mitchell 的优秀的 1997 年书机器学习的第一章;他们是:
- 良好的学习问题
- 选择训练数据
- 选择目标功能
- 选择目标函数的表示
- 选择学习算法
- 如何设计学习系统
良好的学习问题
我们可以将应用机器学习领域中的一般学习任务定义为根据特定绩效测量从某些任务的经验中学习的程序。
Tom Mitchell 在其 1997 年出版的“机器学习”一书中明确指出:
据说计算机程序从经验 E 中学习关于某类任务 T 和表现测量 P,如果其在 T 中的任务中的表现(由 P 测量)随经验 E 而改善。
- 第 2 页,机器学习,1997。
我们将此作为我们可能对应用机器学习感兴趣的学习任务类型的一般定义,例如预测性建模。 Tom 列举了几个例子来说明这一点,例如:
- 学会识别口语。
- 学习驾驶自动驾驶汽车。
- 学习分类新的天文结构。
- 学习玩世界级的步步高。
我们可以使用上面的定义来定义我们自己的预测性建模问题。一旦定义,任务就变成了设计学习系统来解决它的任务。
设计学习系统,即机器学习的应用,涉及四种设计选择:
- 选择训练数据。
- 选择目标函数。
- 选择表示。
- 选择学习算法。
在给定无限资源的情况下,您可以为给定问题做出最佳选择,但我们没有无限的时间,计算资源以及有关域或学习系统的知识。
因此,虽然我们可以准备一个适当的学习问题的描述,但设计最好的学习系统是难以处理的。
我们所能做的最好的事情就是利用知识,技能和可用资源来完成设计选择。
让我们更详细地看一下这些设计中的每一个。
选择训练数据
您必须选择学习系统将用作学习经验的数据。
这是过去观察的数据。
可用的训练体验类型会对学习器的成功或失败产生重大影响。
- 第 5 页,机器学习,1997。
它很少格式化并且可以随时使用;通常,您必须收集所需的数据(或认为您可能需要)以解决学习问题。
这可能意味着:
- 刮痧文件。
- 查询数据库。
- 处理文件。
- 整理不同的来源
- 合并实体。
您需要将所有数据放在一起并形成标准化形式,以便一个观察代表一个可获得结果的实体。
选择目标功能
接下来,您必须选择学习问题的框架。
机器学习实际上是学习从输入(X)到输出(y)的映射函数(f)的问题。
y = f(X)
然后,此函数可用于将来的新数据,以预测最可能的输出。
学习系统的目标是准备一个功能,在给定可用资源的情况下,将输入最佳地映射到输出。实际存在的基础功能是未知的。如果我们知道这个函数的形式,我们可以直接使用它,我们不需要机器学习来学习它。
更一般地,这是一个称为函数逼近的问题。结果将是近似值,意味着它将有错误。我们将尽最大努力将此错误降至最低,但在给定数据噪声的情况下,总会存在一些错误。
…在这种情况下,我们将学习任务减少到发现理想目标函数 V 的操作描述的问题。一般来说,完全学习 V 的这种操作形式可能是非常困难的。实际上,我们经常期望学习算法仅获得对目标函数的一些近似,因此学习目标函数的过程通常被称为函数逼近。
- 第 8 页,机器学习,1997。
该步骤是关于准确选择要用作该函数的输入的数据,例如,输入特征或输入变量以及准确预测的内容,例如输出变量。
通常,我将此称为学习问题的框架。选择输入和输出基本上选择了我们将寻求近似的目标函数的性质。
选择目标函数的表示
接下来,您必须选择要用于映射功能的表示。
将此视为您希望拥有的最终模型类型,然后您可以使用它来做出预测。您必须选择此模型的形式,数据结构(如果您愿意)。
现在我们已经指定了理想的目标函数 V,我们必须选择一个学习程序将用来描述它将学习的函数 Vprime 的表示。
— Page 8, Machine Learning, 1997.
例如:
- 也许您的项目需要一个易于理解并向利益相关者解释的决策树。
- 也许您的利益相关者更喜欢统计人员可以轻松解释的线性模型。
- 也许您的利益相关者不关心模型表现以外的任何事情,因此所有模型表示都可以争夺。
表示的选择将对可用于学习映射函数的学习算法类型施加约束。
选择学习算法
最后,您必须选择将获取输入和输出数据的学习算法,并学习您首选表示的模型。
如果通常情况下对表示选择的限制很少,那么您可以评估一套不同的算法和表示。
如果对功能表示的选择存在强烈限制,例如加权和线性模型或决策树,然后算法的选择将限于那些可以对特定表示进行操作的算法。
算法的选择可能会产生自己的约束,例如特定的数据准备变换,如数据规范化。
如何设计学习系统
开发学习系统具有挑战性。
在此过程中,没有人可以告诉你每个决定的最佳答案;对于您的特定学习问题,最佳答案是未知的。
Mitchell 帮助澄清了这一点,并描述了设计学习系统以进行跳棋的选择。
设计棋盘游戏学习系统的选择描述。
取自“机器学习”,1997 年。
这些选择充当了设计过程的约束点。米切尔继续说:
这些设计选择以多种方式限制了学习任务。我们已将可获得的知识类型限制为单个线性评估函数。此外,我们将此评估功能限制为仅依赖于所提供的六个特定板功能。如果真正的目标函数 V 确实可以通过这些特定特征的线性组合来表示,那么我们的程序很有可能学习它。如果没有,那么我们所希望的最好的是它将学习一个很好的近似,因为一个程序肯定永远不会学到任何它至少不能代表的东西。
- 第 13-14 页,机器学习,1997 年。
我喜欢这段经文,因为它确实推动了这些约束对于简化问题的重要性,以及做出限制或阻止系统充分了解问题的选择的风险。
通常,您不能分析地计算这些选择的答案,例如:要使用的数据,要使用的算法或要使用的算法配置。
尽管如此,一切都不会丢失;这里有 3 种可以在实践中使用的策略:
- 复制。查看文献或专家,了解与您的问题相同或类似问题的学习系统,并复制学习系统的设计。您很可能不是第一个处理给定类型问题的人。在最糟糕的情况下,复制的设计为您自己的设计提供了一个起点。
- 搜索。列出每个决策点的可用选项,并根据实际情况对每个决策点进行评估,以了解哪些方法最适合您的特定数这可能是应用机器学习中最强大和最实践的方法。
- 设计。通过上面的复制和搜索方法完成许多项目后,您将开发出如何设计机器学习系统的直觉。
发展学习系统不是一门科学;这是工程。
开发新的机器学习算法并描述它们如何以及为什么工作是一门科学,在开发学习系统时通常不需要这样做。
开发学习系统很像开发软件。您必须结合(1)过去设计的工作副本,(2)显示有希望的结果的原型,以及(3)开发新系统以获得最佳结果时的设计经验。
进一步阅读
如果您希望深入了解,本节将提供有关该主题的更多资源。
摘要
在这篇文章中,您发现了在应用机器学习中设计学习系统的难以处理的性质以及如何处理它。
具体来说,你学到了:
- 如何为自己和他人制定明确的学习问题定义。
- 在为您的问题设计学习系统时必须考虑的 4 个决策点。
- 您可以使用 3 种策略来专门解决在实践中设计学习系统的棘手问题。
你有任何问题吗?
在下面的评论中提出您的问题,我会尽力回答。
为什么我的结果不如我想的那么好?你可能过拟合了
原文:
machinelearningmastery.com/arent-results-good-thought-youre-probably-overfitting/
我们都知道运行分析的满意度,并看到结果以我们希望的方式回归:80%的准确度; 85%; 90%?
只是转向我们正在编写的报告的结果部分,并将数字放入其中,这种诱惑很强烈。但是等待:一如既往,这并不是那么简单。
屈服于这种特殊的诱惑可能会破坏其他完全有效的分析的影响。
对于大多数机器学习算法,考虑如何生成这些结果非常重要:不仅仅是算法,而是数据集及其使用方式会对获得的结果产生重大影响。应用于太小数据集的复杂算法可能导致过拟合,从而导致误导性良好的结果。
在隧道尽头的光
照片由 darkday ,保留一些权利
什么是过拟合?
当机器学习算法(例如分类器)不仅识别数据集中的信号而且识别噪声时,发生过拟合。所有数据集都很吵。实验中记录的值可能会受到许多问题的影响:
- 机械问题,例如热量或湿度改变记录装置的特性;
- 身体问题:有些老鼠比其他老鼠大;
- 或者只是被调查系统中的固有噪音。例如,来自 DNA 的蛋白质的产生本质上是有噪声的,不是如通常可视化的那样在稳定的流中发生,而是在一系列步骤中,每个步骤是随机的,取决于在适当时间存在合适的分子。
- 从人类受试者收集的数据同样受到诸如一天中的时间,受试者的健康状况,甚至他们的情感等因素的影响。
随着数据集中参数数量的增加,情况会恶化。例如,具有 100 个记录的数据集(每个具有 500 个观测值)非常容易过拟合,而具有 5 个观测值的 1000 个记录每个将远不是问题。
当您的模型相对于数据点数量的参数太多时,您很容易高估模型的效用。
- Jessica Su in“过拟合的直观解释是什么? “
为什么过拟合问题?
大多数机器学习算法的目的是找到从数据中的信号,重要值到输出的映射。噪声干扰了这种映射的建立。
过拟合的实际结果是,似乎在其训练数据上表现良好的分类器可能对来自同一问题的新数据表现不佳,可能非常糟糕。从数据集到数据集,数据中的信号几乎相同,但噪声可能非常不同。
如果分类器适合噪声和信号,它将无法将信号与新数据上的噪声分开。开发大多数分类器的目的是让它们以可预测的方式推广到新数据。
过拟合的模型通常具有较差的预测表现,因为它可能夸大数据中的微小波动
- 过拟合,维基百科。
克服过拟合
克服过拟合有两种主要方法:三组验证和交叉验证。
三套验证
道德分析师如何克服过拟合的问题?最简单,最难实现的解决方案就是拥有大量的数据。有了足够的数据,分析师就可以在一组数据(训练集)上开发和算法,然后在一个全新的,看不见的数据集上测试其表现,这些数据集由相同的方法(测试集)生成。
仅使用两个数据集的问题是,只要您使用测试集,它就会被污染。对集合 1 进行训练,对集合 2 进行测试,然后使用这些测试的结果来修改算法的过程意味着集合 2 实际上是训练数据的一部分。
为了完全客观,需要第三个数据集(验证集)。验证集应保持光荣隔离,直到所有训练完成。验证集上训练的分类器的结果是应该报告的结果。
一种流行的方法是在训练集上训练分类器,并且每几次迭代,在测试集上测试其表现。最初,当数据集中的信号拟合时,训练集和测试集的误差将下降。
然而,最终,分类器将开始适应噪声,尽管训练集上的错误率仍然降低,但测试集上的错误率将开始增加。此时应停止训练,并将训练好的分类器应用于验证集以估计实际表现。
这个过程因此变成:
- 开发算法;
- 第 1 组训练(训练集);
- 测试第 2 组(测试装置);
- 使用步骤 3 的结果修改算法或停止训练;
- 迭代步骤 1 到 4 直到满意算法的结果;
- 在第 3 组(验证集)上运行算法;
- 报告步骤 6 的结果。
可悲的是,很少有项目产生足够的数据,使分析师能够沉迷于三数据集方法的奢侈品。必须找到一种替代方案,其中每个结果由分类器生成,该分类器在其训练中未使用该数据项。
交叉验证
通过交叉验证,整个可用数据集被分成大小相等或更小的子集。假设我们有 100 个观测数据集。我们可以将它分成 33 个,33 个和 34 个观察值的三个子集。我们将这三个子集称为 set1,set2 和 set3。
为了开发我们的分类器,我们使用了三分之二的数据;说 set1 和 set2,训练算法。然后,我们在 set3 上运行分类器,到目前为止看不见,并记录这些结果。
然后使用另外的三分之二,例如 set1 和 set3 重复该过程,并记录 set2 上的结果。类似地,在 set2 和 set3 上训练的分类器产生 set1 的结果。
然后组合三个结果集,并成为整个数据集的结果。
上述过程称为三重交叉验证,因为使用了三个数据集。可以使用任意数量的子集;十倍交叉验证被广泛使用。当然,最终的交叉验证方案是在除了一个案例之外的所有数据上训练每个分类器,然后在左边的情况下运行它。这种做法被称为留一法验证。
交叉验证对于防止数据建议的测试假设(称为“III 型错误”)非常重要,特别是在进一步的样品有害,昂贵或无法收集的情况下。
— Overfitting, Wikipedia.
交叉验证的优点,以避免过拟合
任何形式的交叉验证的主要优点是每个结果都是使用未经过该结果训练的分类器生成的。
此外,因为每个分类器的训练集由大多数数据组成,所以分类器虽然可能略有不同,但应该大致相同。在留一法的情况下尤其如此,其中每个分类器在几乎相同的数据集上训练。
交叉验证的缺点
使用交叉验证有两个主要缺点:
- 用于生成结果的分类器不是单个分类器,而是一组密切相关的分类器。如前所述,这些分类器应该非常相似,并且这个缺点通常不被认为是主要的。
- 测试集不能再用于修改分类算法。因为算法是针对大多数数据进行训练,然后在较小的子集上进行测试,所以这些结果不再被视为“看不见”。无论结果如何,都应该报告。从理论上讲,这是一个重大缺陷,但在实践中很少出现这种情况。
总之,如果数据充足,则应使用三组验证方法。但是,当数据集有限时,交叉验证会以原则方式最佳地利用数据。
统计方法
由于过拟合是一个普遍存在的问题,因此已经有大量研究使用统计方法来避免这个问题。一些标准教科书对这些方法有很好的报道,包括:
- Duda,R。O.,Hart,P。E.,&amp; Stork,D.G。(2012)。 模式分类:John Wiley&amp;儿子。
- Bishop,C。M.(2006)。 模式识别和机器学习(第 1 卷):施普林格纽约。
避免过拟合的教程
例如,使用 R 统计语言,使用 R 统计语言,请参阅“评估模型表现 - 过拟合和数据大小对预测影响的实际示例”。
有关使用 SPSS 的详细教程,请参阅幻灯片“ 逻辑回归 - 完整问题”(PPT)。
有关 SAS 用户指南的介绍,请参阅“ GLMSELECT 程序”。
进一步阅读
有关过拟合的实际效果的有趣概述可以在麻省理工学院技术评论中找到,题为“大数据临近预报的新兴陷阱”。
来自 CalTech 的优秀入门讲座在 YouTube 上提供,名为“ Overfitting ”:
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/EQWr3GGCdzw?feature=oembed” width=“500”></iframe>
来自阿姆斯特丹自由大学(Vrije Universiteit Amsterdam)的一篇更详细的文章,题为“你看到的可能不是你所得到的:回归型模型过拟合的非技术性介绍”(PDF)。
使用 ROC 曲线评估和比较分类器表现
原文:
machinelearningmastery.com/assessing-comparing-classifier-performance-roc-curves-2/
最常报告的分类器表现测量是准确度:获得的正确分类的百分比。
该度量具有易于理解的优点,并且使不同分类器的表现比较微不足道,但它忽略了在诚实地评估分类器的表现时应该考虑的许多因素。
什么是分类器表现?
分类器表现不仅仅是正确分类的数量。
为了兴趣,考虑筛查相对罕见的病症如宫颈癌的问题,其患病率约为 10%(实际统计)。如果一个懒惰的巴氏涂片筛选器将每个幻灯片归类为“正常”,那么它们的准确度将达到 90%。非常令人印象深刻!但是,这个数字完全忽略了这样一个事实,即 10%确实患有这种疾病的女性根本没有被诊断出来。
一些表现指标
在之前的博客文章中,我们讨论了可用于评估分类器的一些其他表现指标。回顾:
大多数分类器产生分数,然后对其进行阈值处理以确定分类。如果分类器产生的分数在 0.0(绝对为负)和 1.0(绝对为正)之间,则通常将 0.5 以上的任何分数视为正数。
但是,应用于数据集的任何阈值(其中 PP 是阳性群体,NP 是阴性群体)将产生真阳性(TP),假阳性(FP),真阴性(TN)和假阴性(FN) (图 1)。我们需要一种考虑所有这些数字的方法。
图 1.重叠数据集将始终生成误报和否定以及真正的正数和负数
获得所有这些度量的数字后,就可以计算出一些有用的指标。
- 准确度 =(1 - 误差)=(TP + TN)/(PP + NP)= Pr(C),正确分类的概率。
- 灵敏度 = TP /(TP + FN)= TP / PP =测试在患病个体群体中检测疾病的能力。
- 特异性 = TN /(TN + FP)= TN / NP =测试在无病人群中正确排除疾病的能力。
让我们为一些合理的现实世界数字计算这些指标。如果我们有 100,000 名患者,其中 200 名(20%)实际上患有癌症,我们可能会看到以下测试结果(表 1):
表 1.巴氏涂片筛查的“合理”值的诊断测试表现的图示
对于这些数据:
- 灵敏度 = TP /(TP + FN)= 160 /(160 + 40)= 80.0%
特异性 = TN /(TN + FP)= 69,860 /(69,860 + 29,940)= 70.0%
换句话说,我们的测试将正确识别 80%患有该疾病的人,但 30%的健康人将错误地测试阳性。通过仅考虑测试的灵敏度(或准确度),可能丢失重要信息。
通过考虑我们错误的结果以及正确的结果,我们可以更深入地了解分类器的表现。
克服必须选择截止的问题的一种方法是以 0.0 的阈值开始,以便每种情况都被认为是正的。我们正确地对所有阳性病例进行分类,并错误地将所有阴性病例分类。然后,我们将阈值移动到介于 0.0 和 1.0 之间的每个值,逐渐减少误报的数量并增加真阳性的数量。
然后可以针对所使用的每个阈值针对 FP(1-特异性)绘制 TP(灵敏度)。结果图称为接收器工作特性(ROC)曲线(图 2)。 ROC 曲线被开发用于 20 世纪 50 年代雷达回波中的信号检测,并且已经应用于广泛的问题。
图 2. ROC 曲线的示例
对于完美的分类器,ROC 曲线将沿 Y 轴向上,然后沿 X 轴向上。没有力量的分类器将位于对角线上,而大多数分类器位于两者之间。
ROC 分析提供了用于选择可能的最优模型并且独立于(并且在指定之前)成本上下文或类分布的情况下丢弃次优模型的工具
使用 ROC 曲线
阈值选择
很明显,ROC 曲线可用于选择最大化真阳性的分类器的阈值,同时最小化误报。
然而,不同类型的问题具有不同的最佳分类器阈值。例如,对于癌症筛查测试,我们可能准备忍受相对较高的假阳性率以获得高真阳性,最重要的是识别可能的癌症患者。
然而,对于治疗后的随访测试,可能更需要不同的阈值,因为我们希望最大限度地减少假阴性,我们不想告诉患者他们是否清楚,如果事实并非如此。
绩效评估
ROC 曲线还使我们能够评估分类器在整个操作范围内的表现。最广泛使用的衡量指标是曲线下面积(AUC)。从图 2 中可以看出,没有功率,基本上是随机猜测的分类器的 AUC 是 0.5,因为曲线跟随对角线。神秘存在的 AUC,完美的分类器,是 1.0。大多数分类器的 AUC 介于这两个值之间。
AUC 小于 0.5 可能表明发生了一些有趣的事情。非常低的 AUC 可能表明问题已被错误地设置,分类器在数据中找到一个基本上与预期相反的关系。在这种情况下,检查整个 ROC 曲线可能会给出一些线索:正面和负面是否有错误的标签?
分类器比较
AUC 可用于比较两个或更多分类器的表现。可以选择单个阈值并且比较该分类器在该点的表现,或者可以通过考虑 AUC 来比较整体表现。
大多数已发表的报告以绝对值比较 AUC:“_ 分类器 1 的 AUC 为 0.85,分类器 2 的 AUC 为 0.79,因此分类器 1 显然更好 _”。然而,可以计算 AUC 的差异是否具有统计学意义。有关详细信息,请参阅 Hanley&amp; McNeil(1982)的论文如下。
ROC 曲线分析教程
- 使用 SigmaPlot 软件生成 ROC 曲线的教程(PDF)
- TheRMUoHP 生物统计资源频道的 SPSS YouTube 教程
- pROC 包的文档(PDF)
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/_2zN2a3MgmU?feature=oembed” width=“500”></iframe>
何时使用 ROC 曲线分析
在这篇文章中,我使用了一个生物医学的例子,ROC 曲线被广泛用于生物医学科学。然而,该技术适用于为每种情况产生分数的任何分类器,而不是二元决策。
神经网络和许多统计算法是适当分类器的示例,而诸如决策树之类的方法则不太适合。只有两种可能结果的算法(例如此处使用的癌症/无癌症例子)最适合这种方法。
可以将任何种类的数据输入适当的分类器中进行 ROC 曲线分析。
进一步阅读
- 关于使用 ROC 曲线的经典论文,陈旧但仍然非常相关:Hanley,J。A.和 B. J. McNeil(1982)。 “接收器工作特性(ROC)曲线下面积的含义和用途。”放射学 143(1):29-36。
- 还有一篇很好的,最新的评论文章,主要关注医学诊断:Hajian-Tilaki K.“接收器操作特性(ROC)曲线分析,用于医疗诊断测试评估”。 Caspian Journal of Internal Medicine 2013; 4(2):627-635。
- 仅仅是为了证明在金融应用中使用 ROC 曲线:Petro Lisowsky(2010)“寻求庇护:使用财务报表信息”对税收避难所进行实证建模。会计评论:2010 年 9 月,卷。 85,第 5 期,第 1693-1720 页。
BigML 评论:发现机器学习即服务平台的聪明功能
机器学习已经商品化为服务。这是最近的一种趋势,看起来它将像商品化存储和虚拟化一样发展成为主流。这是自然的下一步。
在本次评论中,您将了解 BigML,它提供商品化的机器学习,作为业务分析师和应用程序集成的服务。
关于 BigML
BigML 由一群五人共同创立于 2011 年。 Francisco Martin 似乎积极参与社区评论和推出内容。在撰写本文时,它是一家私人控股公司,在 2013 年中期的一轮融资中获得了 130 万美元。我还可以看到一项名为“方法和设备的可视化和与决策树进行交互,这是一个很好的迹象,表明他们正在推动这项技术的极限。
BigML 和机器学习即服务的承诺
自从他们推出以来,我已经看了几次这项服务,每次我都注意到界面和服务的变化。它正在积极开发并响应用户的反馈。
该服务侧重于决策树,这是一个明智的举措。它们是一种有效的机器学习方法,领域专家可以透明地理解他们的决策。
该服务的标记行包括诸如“_ 高度可扩展的基于云的机器学习服务 ”之类的措辞,重点关注企业及其对大数据和云计算需求的需求,并且“ 预测分析变得容易,美丽而易懂 _“专注于最终用户分析师制作报告和理解业务流程。
关于服务
该服务可用于生产模式或开发模式。开发模式是免费的,但可以完成的任务大小有限。生产模式是付费模式,并且可以在块或订阅的基础上临时购买积分。这是来自其他基于云的服务(如存储或计算服务器)的熟悉模式。
BigML 交互式决策树
BigML 提供了三种使用该服务的主要模式:
- Web 界面:一个快速响应的灵活 Web 用户界面。 Web 界面引导分析人员完成上传数据,制作描述性或预测性模型以及评估模型或根据需要做出预测的过程。这很干净,一旦你购买了管道方法,很有意义。
- 命令行界面:一个名为 bigmler 的命令行工具,它基于服务的成熟 Python API,允许比 Web 界面更灵活,例如选择对构建的模型做出预测本地或远程执行任务,例如交叉验证以近似模型准确率。查看完整的 bigmler 文档。
- API :提供了 RESTful API ,可以直接通过 curl 命令或您喜欢的编程语言中的包装器使用。在撰写本文时, Python API 是最成熟的,但包装也在 Ruby,PHP,Java,C#,NodeJS,Clojure,Bash(curl 调用)和 Objective C 中提供。
管道流程
Web 界面呈现为一系列步骤。您可以根据要查找的内容选择要放入和放出管道的位置。
- 数据来源:这些是正在研究的问题的原始数据。它可能是您上载的原始 CSV 文件,您通过 URL 指定的远程数据文件或指向 Amazon S3 的数据存储。您可以描述属性,为它们命名,并通常管理数据源的解析和呈现方式。
- 数据集:这些是数据源的视图,您可以将其用作构建模型的基础。数据集指定目标属性(分类中的类或回归中的输出)。数据用条形图和五个数字摘要汇总。您还可以将数据集拆分为训练,然后测试模型表现的受控评估。
BigML 数据集
- 模型:这些是从数据集创建的决策树。决策树模型是交互式的。您可以在每个节点的模型中看到反映在训练数据中的信心和支持。您可以通过树的方式工作,并查看前面构建的规则,这是模型的巧妙和干净的表示。可以使用您喜欢的语言下载模型,可以查看其规则并提供其他可视化,例如 sunburst 视图。
- 合奏:这些是由子模型组成的模型。对于描述性模型,集合不太有用,对预测性更有用,理想情况下,从问题域的不同角度对预测组合提供更高的准确率。
BigML 合奏模型
- 预测:模型可用于生成预测。这可以通过构建的决策树模型的分支(如决策支持时间),通过用于指定输入实例的滑块,一次一个,以及通过批量预测来提出问题,其结果可以是被下载到文件。
- 评估:评估表示基于数据集的模型表现的估计。如果将数据集拆分为训练和测试,则可以使用分类准确度,精度,召回等度量来估计模型对看不见的数据的能力。表现也总结在图表中。模型(合奏或其他)的表现也可以并排比较。
BigML 模型评估
- 任务:这是使用该服务执行的任务的日志,仅从服务审计角度来看是有趣的。它可能应该在用户界面中如此突出。
流程似乎在易于使用和可配置性之间走了一些无形的界限。有一些配置选项,我无法想象分析师或初学者想要触摸(例如修剪方法)。
此外,预测和评估之间的区别也可能使初学者感到困惑。我可以想象一个更简单的界面:数据,模型预测和云中的机器人负责确定模型的稳健性并向我报告(对可以调整的所有各种事物进行 n 次交叉验证)和自动模型选择)。
Web 界面中的 5 个聪明功能
Web 界面非常灵敏,并且清楚地使用现代界面设计技术。在使用 Web 界面时,我注意到了 5 个您应该了解的聪明功能。
- 1 - 单击:您可以一键完成有用的任务,如宏。这让我想起亚马逊的一键购买,聪明的营销。例如,您可以从选定的数据集中单击创建模型,集合或将数据集拆分为训练集和测试集。这种命名惯例渗透易用性。
BigML 1-Click Everything
- 交互式树:决策树是最受欢迎的,因为您可以将它们打印出来,主题专家可以很容易地理解它们。您可以毫不含糊地看到如何在域的上下文中做出决策(与不透明的神经网络和 SVM 不同)。使树木互动是下一步的自然过程。您可以整天使用可视化执行假设,并将其与域相关联。
- 可下载树:您可以使用您选择的编程语言下载模型或树本身的规则。非常聪明。可以在 BigML 中创建描述性或预测性模型,下载代码并将其用于您的应用程序(如网站或决策支持工具)。这很有用,我喜欢它。
- Sunburst View :模型的旭日视图提供了一种创新(至少对我而言)思考和探索决策树中开发的规则的方式。
BigML Sunburst 可视化
- 图库:任何模型(可能是任何对象)都可以在图库中公开获取。您可以探索和使用自己开发的其他人员模型和开放数据。可以对模型进行评论,也可以出售对图库中对象的访问,这是一个引人入胜的想法。这是非常聪明且超前的时间,我喜欢它,但我担心像 IBM 的许多眼睛将被利用。如果它是私人的并且在组织内策划,它可能具有更多价值。
BigML 模型库
用例
这是适度技术业务分析师和软件开发人员的服务。该服务的重点是易用性(快速制作模型)和模型透明度(使领域专家能够理解模型)。
以下是我认为 BigML 可能最有用的一些用例。
- 描述性模型:业务分析师(或某些黑客)拥有他们想要描述的复杂数据。可以构造描述性模型来解释属性和预测属性之间的关系并且发挥假设情景。这可以使用网站完成。
- 预测模型:业务分析师(或某些黑客)有一个复杂的问题,希望从过去的例子中预测。可以在网站上构建预测模型,并批量预测并下载为 CSV 文件以供分析和应用。
- 周期性预测:与之前的情景一样,但需要定期做出预测。可以在 BigML 平台上维护模型(在需要时更新),可以通过 Bigmler 命令行界面远程调用以根据需要做出预测。
- 集成:该服务可以集成到脚本,内部网站或桌面应用程序中以供决策支持。这需要使用 API,并且最好在平台上维护模型。
机器学习从业者
机器学习从业者可能会缺乏。没有关注模型选择或表现估计。您将无法在 Web 界面中找到使用交叉验证设计复杂的多次运行实验和分类准确率估算的能力。
在创建模型期间可以执行一些配置,例如,树修剪方法可以在“智能修剪”,统计修剪和无统计修剪之间变化。我只能想象聪明的修剪尝试了一堆方法并选择最好的结果树。合奏仅限于装袋,我看到很好的机会进一步抽象出来,在幕后进行提升和堆叠,阈值处理和其他方法,并展示机器人选择的最佳“合奏方法”。
我可以想象,如果我是一个坚定的核心决策树人,我会因缺乏控制或对选择的洞察而感到沮丧。
托管解决方案的好处是删除技术细节,让大型机器计算所需模型的变化,并为您选择最佳的模型。目前尚不清楚 BigML 中幕后的情况有多少,但可能有机会进一步隐藏这些不再需要的隐藏配置细节 - 让云中的机器人处理模型调整和选择。
这些是有意的设计选择,这是有道理的。该服务负责为问题提供“足够好”的模型,并允许您按需下载或查询该模型的托管版本。
快速模型
对于机器学习从业者来说,这是一个机会,那就是让事情变得非常快,例如:
- 演示:根据客户数据创建模型,并在视频或演示文稿中显示决策树如何工作以及如何处理数据,使他们能够根据域体验获得对模型的深入了解。使用 BigML 的交互式决策树而不是使用由 R 或 scikit-learn 生成的静态树,这更容易。
- 快速模型:你真的需要一个真正快速的模型。 BigML 将创建一个可用于生成预测的树或集合。这将是一个快速而通用的过程,可能会花费脚本版本的 Python API 或命令行界面。比 R,Weka 还是 scikit-learn 更快?也许,如果它是在 S3 上托管的大型数据集(更大的数据甚至是大数据)。
- 在线模型:如果您正在使用 Java,Python 或 Ruby 攻击某些 DSL 或原型应用程序,并且您只需要一个临时或概念验证模型用于演示目的,可以创建和下载 BigML 模型本机代码。契约中非常方便的特征。
- 临时集成:与上述相同,但您可能正在使用模型需要定期更新的流数据,您可以与 BigML API 集成并在原型应用程序中做出预测,直到您自己构建解决方案。
毫无疑问,BigML 正在指望他们的解决方案足够好,你不需要将其切换出来,并且它可能适用于大多数一般情况下的问题。
结论
BigML 非常酷,界面很光滑,非常聪明的想法,如画廊和一键点击一切。值得尝试的是下一个小项目或侧面项目,只是为了看看建模阶段之前和之后关注建模阶段本身的情况。
但是服务中可能缺少某些东西。我不能把手指放在上面。它可能只需要拨打更多一点,无论是为初学者决定还是在云中做更多提升,或者决定它是决策树黑客并提供旋钮和拨号盘的驾驶舱。
机器学习即服务是未来:拥有应用程序复杂数据驱动核心的托管黑盒子。它对许多内部业务应用程序甚至是探索性项目都很有意义。也许这些项目不够分散。您没有在 odesk 上看到工作,也没有在某些数据集上查询描述性或预测性模型。这可能是因为数据是保密的,但也可能是因为问题无法与所需的系统,人员和可视化分离。
无论这些平台不是主流的原因是什么,我希望这些人能够坚持到那时为止。
资源
在本节中,我想为您提供一些指导,您可以在其中了解有关 BigML 的更多信息。
BigML 文档
BigML 在博客上提供了很好的文档和示例,结帐:
- BigML 功能概述了 BigML 可以做什么,重点关注 Web 界面
- BigML API 文档名为 BigML.io
- BigML 开发人员常见问题解答提供有关服务和机器学习的问题和答案
BigML 视频
BigML 有一个健康的 YouTube 频道,其中包括营销视频以及有用的教程视频。下面是一个很好的例子,使用 BigML 对 Kaggle 上的 StumbleUpon 常青分类挑战进行建模和预测。
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“http://www.youtube.com/embed/eU7ayE-U1eg?feature=oembed” width=“500”></iframe>
更多关于决策树
如果您有兴趣深入了解决策树,下面是一些您可能希望了解的经典文本:
BigML 教程:开发您的第一个决策树并做出预测
原文:
machinelearningmastery.com/bigml-tutorial-develop-your-first-decision-tree-and-make-predictions/
BigML 是一家全新的,有趣的机器学习服务公司,总部位于美国俄勒冈州的 Corvallis。
在上一篇文章中,我们审阅了 BigML 服务,关键功能以及您在业务中使用此服务的方式,在您方项目或向客户展示。在本教程中,我们将逐步介绍使用 BigML 平台开发预测模型的分步教程,并使用它来预测未用于创建模型的数据。该模型将是决策树。
您可以通过注册免费试用 BigML 帐户来跟进。将您的帐户配置为“_ 开发模式 _”,您将不需要任何学分来完成本教程中的任务。
虹膜种类分类问题
在本教程中,我们将使用经过充分研究的 Iris 花卉数据集。该数据集由 150 个描述鸢尾花测量的实例组成,每个鸢尾花被归类为三种虹膜中的一种。属性是数字,问题是多分类问题。
Iris 花卉数据集的样本,来自 Wikipedia 的截图
您可以在 Wikipedia 页面上阅读有关此问题的更多信息,并从 UCI 机器学习库上的 Iris 页面下载数据。
1.加载数据和创建数据集
在本节中,您将准备数据源和数据集,以便在 BigML 中使用。
1.1。创建数据源
首先,我们需要创建一个数据源。这是原始数据,我们可以从中创建原始数据的数据集或视图。
- 登录您的 BigML 帐户。
- 单击“
Dashboard
”按钮转到 BigML 仪表板。 - 单击“
Source
”选项卡列出您帐户的所有数据源。 - 单击“链接”按钮以指定远程数据文件。
- 输入网址(
archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
)和说明(“_ 鸢尾花数据源 _] “)用于 UCI 机器学习库中的 Iris 花数据集。 - 单击“
Create
”按钮创建新数据源。 - 点击“_ 鸢尾花数据源 _”进行查看。
BigML 数据源
您将注意到属性数据类型已正确识别为数字,并且类标签是最后一个属性(field5)。
1.2。创建数据集
现在我们已经加载了原始数据的数据源,我们可以创建该数据源的数据集视图。然后,我们将创建另外两个数据集,一个称为训练,我们将用于训练预测模型,另一个称为测试,我们将用它来评估创建的预测模型,并将用作做出预测的基础。
- 点击“_ 来源 ”标签中的“ 鸢尾花数据源 _”打开它,如果尚未打开的话。
- 单击云按钮并选择“_ 单击数据集 _”。
- 这将从数据源创建新数据集。这是对数据源的视图,可以对其进行修改以准备建模。
- 单击或悬停在小 sigma 上以查看给定属性的摘要。
- 单击云按钮并选择“ _1 单击”训练“|测试 _“。
- 单击“_ 数据集 _”选项卡,查看我们创建的 3 个数据集。
BigML 数据集
2.创建和评估模型
在本节中,我们将根据我们准备的训练数据集创建预测模型,并使用我们准备的测试数据集评估模型。
2.1。创建预测模型
现在,您将从训练数据集创建预测模型。
- 点击“_ 虹膜花数据源的数据集|训练(80%)“ 数据集 _”选项卡中的数据集。
- 单击云图标,然后选择“ 1-Click Model ”。
- 将鼠标悬停在模型中的不同节点上,以通过决策树查看数据流。
- 单击“
Sunburst
”按钮打开模型的旭日视图并浏览决策树。 - 单击“_ 模型摘要报告 _”按钮以查看从决策树模型派生的规则的文本描述。
BigML 预测模型
2.2。评估预测模型
现在,您将评估使用测试数据集创建的预测模型的预测准确率。
- 单击“
Models
”选项卡中的虹膜花型。 - 单击云按钮并选择“_ 评估 _”
- 评估将自动选择您之前创建的测试数据集,该数据集包含预测模型之前未见过的原始数据集的 20%。
- 单击“_ 评估 _”按钮以评估模型。
- 根据分类准确度,精确度,召回率,F 分数和 phi 分数来总结模型的准确率。我们可以看到准确率为 93.33%。
- 单击“_ 混淆矩阵 _”以查看模型预测的混淆矩阵。
BigML 评估预测模型,显示混淆矩阵
3.做出预测
现在,您将使用模型之前未见过的数据的预测模型做出预测。
- 单击“
Models
”选项卡中的虹膜花型。 - 单击云按钮并选择“_ 批量预测 _”。
- 单击“_ 搜索数据集…_ ”下拉菜单并键入“
iris
”。 - 选择“_ 鸢尾花数据源的数据集|测试 20%_“数据集。
- 单击“_ 预测 _”按钮
- 单击“_ 下载批量预测 _”文件,以获取测试数据集中每行的预测。
BigML 下载模型预测
摘要
在本教程中,您学习了如何创建数据源,数据集,创建预测模型,评估它,最后使用准备好的预测模型对看不见的数据做出预测。 BigML 是一个易于使用的平台,您应该能够在 5-10 分钟内完成所有这些工作。
从这里开始,您可以做很多事情来扩展本教程:
- 您可以使用不同的修剪方法创建新的决策树,并将其评估与您已创建的决策树进行比较,以查看它是否更准确。
- 您可以使用决策树的集合来对问题进行建模,并通过将集合的评估与您已创建的决策树的评估进行比较来查看是否可以提高分类准确率。
- 您可以编写脚本或使用 BigML 命令行工具(称为 bigmler )在新数据可用时做出预测。
- 您可以使用 BigML API 将远程模型的使用集成到网页中,并在新数据从其他来源提供时自动做出预测。
如果您对使用 BigML 的有趣教程有所了解,请发表评论。让你的想象力疯狂。
构建生产环境的机器学习基础设施
原文:
machinelearningmastery.com/building-a-production-machine-learning-infrastructure/
Midwest.io 于 2014 年 7 月 14 日至 15 日在堪萨斯城召开。
在会议上,Josh Wills 在一个题为“从实验室到工厂:构建生产机器学习基础设施”的演讲中,就如何构建生产机器学习基础设施进行了讨论。
Josh Wills 是 Cloudera 数据科学高级总监,正式参与 Google 的广告拍卖系统。
在这篇文章中,您将了解构建生产机器学习基础架构所需的知识。
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/IgfRdDjLxe0?feature=oembed” width=“500”></iframe>
数据科学
Josh 称自己为数据科学家,负责对数据科学家所做的更为切实的描述。最好表达为推文:
Data Scientist(数据科学家):在统计学方面比任何软件工程师都要好的人,在软件工程方面比任何统计学家都要好。
- Josh Wills(@josh_wills) 2012 年 5 月 3 日
他说,有两种类型的数据科学家,第一种是擅长编程的统计学家。第二个是一个聪明的软件工程师,并参与了有趣的项目。他说他自己就是第二类数据科学家。
学术不是工业机器学习
Josh 还将学术机器学习与工业机器学习区分开来。他评论说,学术机器学习基本上是应用数学,特别是应用优化理论,这就是它在学术环境和教科书中的教学方式。
工业机器学习是不同的。
- 系统来自算法。在学术机器学习中,准确率优先考虑,而不是长时间运行。在工业中,速度越快越好,速度越慢就越合理,这意味着准确率往往会退居二线。
- 目标函数很乱。学术机器学习就是优化目标功能。不存在清洁的目标函数,并且通常存在许多需要帕累托多目标方法的冲突函数(对其中一个进行改进而不会对其他函数产生负面影响)。
- 一切都在改变。系统很复杂,没有人理解所有这些。
- 了解 - 优化权衡。提出假设,测试和改进系统的过程。理解通常比更好的结果更重要。实验推动了解。
工业机器学习框架
Josh 评论说这是工业机器学习的黄金时代。他说这是因为可用的工具以及正在进行的共享和协作的数量。
他接触了 Oryx ,Cloudera 在 Apache Hadoop 之上使用他们的工业机器学习平台。
Josh 在他们的博客文章“构建风险机器学习系统”中谈到 Airbnb 分享其工业机器学习系统的细节。他发现 airbnb 构建一个分析模型离线存储它作为 PMLL 文件并上传它在生产中运行的事实。
Josh 还谈到了 Etsy 的工业机器学习系统猜想,在博客文章“猜想:Hadoop 中的可伸缩机器学习与烫伤”中描述。在他们的系统中,离线准备模型并以 JSON 格式描述,然后转换为 PHP 代码以在生产中运行。
Josh 指出这些系统中的共性是将数据管理为键/值对。他还指出,他所谓的“分析模式”离线模型的准备以及那些用于生产或“生产模式”的模型的转变。
特色工程
Josh 说,他目前的热情是特色工程,这是工业机器学习的黑暗艺术。实际上,他在演讲结束时发表了轻率的评论,人们喜欢最喜欢的算法,所使用的算法并不重要,并且所有的辛勤工作都在于特征工程。
Josh 说,与生产模式相比,分析模型中数据的使用方式非常低效。
模型的分析准备可以离线访问星型模式,以汇集所需的所有数据。生产数据只能访问用户或观察。他的问题是如何将在线使用的线路转换为在线使用而不费力(并且目前没有使用 kludges)。
他说他探索了一种失败的 DSL 方法,但发现了数据模型的核心问题。他说,所需要的是根据固定属性和重复属性对用户实体进行建模。用户实体存储为非规范化,并且诸如事务和日志(重复属性)之类的用户数据存储在数组中。他以 JSON 格式给出了一个示例,并将其称为超新星模式。
Supernova Schema
来自 Josh Wills 2014 年 7 月在 Midwest.io 的演讲
摘要
这是一个引人入胜的演讲,并提醒我们,从像 Cloudera,Airbnb 和 Etsy 那样的大型工业机器学习系统的讨论中可以学到很多东西。
您可以在这里完整地观看演讲:“从实验室到工厂:构建生产机器学习基础设施”。
您可以在 @josh_wills 的 Twitter 上关注 Josh,并在 Linkedin 上查看他的背景。
分类准确率不够:可以使用更多表现测量
当您为分类问题构建模型时,您几乎总是希望将该模型的准确率视为所有预测所做的正确预测的数量。
这是分类准确率。
在之前的文章中,我们研究了评估模型的稳健性,使用交叉验证和多重交叉验证来预测未见数据,其中我们使用了分类准确度和平均分类准确度。
一旦你拥有一个你认为可以做出强有力预测的模型,你需要确定它是否足以解决你的问题。单独的分类准确率通常不足以做出此决定。
分类准确度
摄影:Nina Matthews 摄影,保留一些权利
在这篇文章中,我们将介绍 Precision 和 Recall 表现度量,您可以使用它们来评估模型的二分类问题。
乳腺癌复发
乳腺癌数据集是标准的机器学习数据集。它包含 9 个属性,描述了 286 名患有乳腺癌并且在乳腺癌中存活并且在 5 年内是否复发的女性。
这是一个二分类问题。在 286 名女性中,201 名患者未复发乳腺癌,剩下的 85 名女性患乳腺癌。
我认为对于这个问题,假阴性可能比误报更糟糕。你同意吗?更详细的筛查可以清除误报,但是假阴性被送回家并丢失以进行后续评估。
分类准确率
分类精度是我们的出发点。它是正确预测的数量除以预测的总数,乘以 100 将其变为百分比。
一切都没有复发
仅预测不会复发乳腺癌的模型将达到(201/286)* 100 或 70.28%的准确度。我们称之为“所有不复发”。这是一个高精度,但一个可怕的模型。如果它被单独用于决策支持以告知医生(不可能,但一起玩),它会将 85 名妇女误认为他们的乳腺癌不会再发生(高假阴性)。
所有复发
仅预测乳腺癌复发的模型将达到(85/286)* 100 或 29.72%的准确度。我们称之为“所有复发”。这个模型具有可怕的准确率,并且会让 201 名女性认为乳腺癌复发,但实际上没有(高假阳性)。
大车
CART 或分类和回归树是一种功能强大但简单的决策树算法。在这个问题上,CART 可以达到 69.23%的准确率。这低于我们的“All No Recurrence”模型,但这个模型更有价值吗?
我们可以看出,单独的分类准确率不足以为此问题选择模型。
混乱矩阵
用于呈现分类器的预测结果的清晰且明确的方式是使用混淆矩阵(也称为列联表)。
对于二分类问题,该表有 2 行 2 列。顶部是观察到的类标签,而旁边是预测的类标签。每个单元格包含落入该单元格的分类器所做的预测数量。
真相表混淆矩阵
在这种情况下,一个完美的分类器将正确预测 201 没有复发和 85 复发,这将进入左上角的细胞没有复发/没有复发(真阴性)和右下角细胞复发/复发(真阳性)。
不正确的预测显然会分解为另外两个单元格。假阴性是分类器标记为不再发生的重复。我们没有这些。假阳性不是分类器标记为重复的重复。
这是一个有用的表,它提供了数据中的类分布和分类器预测的类分布以及错误类型的细分。
所有无复发混淆矩阵
混淆矩阵突出显示大量假阴性(85)。
所有无复发混淆矩阵
所有递归混淆矩阵
混淆矩阵突出了大量(201)的误报。
所有递归混淆矩阵
CART 混淆矩阵
这看起来像一个更有价值的分类器,因为它正确地预测了 10 个重复事件以及 188 个没有重复事件。该模型还显示了适度数量的假阴性(75)和假阳性(13)。
CART 混淆矩阵
准确率悖论
正如我们在这个例子中所看到的,准确率可能会产生误导。有时可能需要选择精度较低的模型,因为它对问题具有更强的预测能力。
例如,在存在大类不平衡的问题中,模型可以预测所有预测的多数类的值并实现高分类准确率,问题在于该模型在问题域中没有用。正如我们在乳腺癌中看到的那样。
这被称为准确率悖论。对于类似的问题,需要这些额外的措施来评估分类器。
精确
精度是真阳性的数量除以真阳性和假阳性的数量。换句话说,它是正预测的数量除以预测的正类值的总数。它也被称为阳性预测值(PPV)。
精度可以被认为是分类器精确度的度量。低精度也可以表示大量的误报。
- All No Reurrence 模型的精度为 0 /(0 + 0)或不是数字,或 0。
- All Recurrence 模型的精度为 85 /(85 + 201)或 0.30。
- CART 模型的精度为 10 /(10 + 13)或 0.43。
精度表明 CART 是一个更好的模型,即使它具有较低的准确度,所有重复发生比全无重复模型更有用。 All Reurrence 模型和 CART 之间的精确度差异可以通过 All Recurrence 模型预测的大量误报来解释。
召回
召回是真阳性的数量除以真阳性的数量和假阴性的数量。换句话说,它是正预测的数量除以测试数据中的正类值的数量。它也称为灵敏度或真阳性率。
召回可以被认为是分类器完整性的度量。低召回率表示许多假阴性。
- All No Recurrence 模型的召回是 0 /(0 + 85)或 0。
- 召回全复发模型为 85 /(85 + 0)或 1。
- 召回 CART 为 10 /(10 + 75)或 0.12。
正如您所料,All Reurrence 模型具有完美的回忆,因为它预测所有实例的“重复”。 CART 的召回率低于 All Recurrence 模型的召回率。这可以通过 CART 模型预测的大量(75)假阴性来解释。
F1 得分
F1 分数是 2 ((精确召回)/(精确+召回))。它也被称为 F 分数或 F 量度。换句话说,F1 分数表达了精确度和召回之间的平衡。
- 全无复发模型的 F1 为 2 *((0 * 0)/ 0 + 0)或 0。
- 全复发模型的 F1 为 2 *((0.3 * 1)/0.3+1)或 0.46。
- CART 模型的 F1 为 2 *((0.43 * 0.12)/0.43+0.12)或 0.19。
如果我们希望基于精确度和召回之间的平衡来选择模型,F1 测量表明所有重复模型都是最佳模型,并且 CART 模型还没有足够的竞争力。
摘要
在这篇文章中,您了解了准确率悖论以及类别不平衡的问题,因为单独的分类准确率无法被信任以选择表现良好的模型。
通过示例,您了解了混淆矩阵,以此来描述未见数据集的预测中的错误细分。您了解了总结模型准确率(准确率)和召回(完整性)的措施,以及 F1 分数中两者之间平衡的描述。
一种预测模型的巧妙应用
原文:
machinelearningmastery.com/clever-application-of-a-predictive-model/
如果您可以使用预测模型来查找数据中不存在但可能有价值的新属性组合,该怎么办?
在 Applied Predictive Modeling 的第十章中,Kuhn 和 Johnson 提供了一个案例研究。这是一个如何使用预测模型的迷人和创造性的例子。
在这篇文章中,我们将发现这种不太明显的预测模型的使用以及它所属的实验设计的类型。
湿混凝土
摄影:美国海军官方网页,保留一些权利
混凝土混合料的抗压强度
案例研究中模拟的问题是不同混凝土混合物的抗压强度。数据中的每条记录都由混凝土混合物的成分含量来描述,例如:
- 水泥
- 飞灰
- 高炉渣
- 水
- 减水剂
- 粗骨料
- 细骨料
所得混合物所关注的性质是混凝土的抗压强度。需要具有较少或较便宜成分的强混凝土。
请参阅 Applied Predictive Modeling 的第十章,以深入了解该问题。
预测模型
许多复杂的机器学习方法都会在这个回归问题上进行现场检查,例如:
- 线性回归
- 径向偏置函数支持向量机(SVM)
- 神经网络
- 火星
- 回归树(CART 和条件推理树)
- Bagged 和 Boosted 决策树
根据预测的 RMSE 和 R ^ 2 考虑模型准确率。一些表现更好的方法是神经网络,Boosted 决策树,立体主义和随机森林。
优化压缩强度
这是案例研究的聪明部分。
在创建和选择精确模型(神经网络和立体模型)之后,使用模型来定位新的混合物量,从而提高混凝土压缩强度。
这涉及使用称为 Nelder Mead 算法的直接搜索方法(也称为模式搜索)来搜索参数空间中的混合量的组合,当传递给预测模型时,预测具体压缩强度大于数据集中的任何压缩强度。
发现了许多新的混合物,并在相对于提供的数据的投影域中绘制。这些新混合物代表了可以进行实际商业实验的基础,以便找到改进的混凝土混合物。
响应面方法
该方法与称为响应面方法(RSM)的特定类型的实验设计有关。
当您想要开发,改进或优化新产品或现有产品的流程时,可以使用 RSM。它通常用于工业设置。它用于输入和输出之间的关系不能很好理解并需要估计的问题。
执行设计的实验以收集输入和响应变量或变量的示例。输入变量可以是过程中的数量或时间,输出或响应变量是强度或质量等结果所需的。
构造统计模型以近似自变量和因变量之间的关系,最后优化过程探索输入的新组合以最大化输出变量。
在执行设计实验之前的关键步骤是将变量的数量减少到仅已知影响响应变量的那些因素。这是一种特征选择形式,我们对机器学习非常熟悉。
简单模型用于模拟函数关系,例如一阶或二阶多项式。该方法称为响应面,因为许多问题的响应面的连续性以及如何将其绘制为二维表面。
代理模型
代理建模是指使用 RSM 构建的模型代替问题的模拟。例如,在航空领域,您可以设计和制造飞机机翼,在软件中进行设计并在模拟器中进行测试,并对实验结果或模拟结果进行建模,并估算要测试的新设计。
模型可以更精细地捕获输入和响应变量之间的复杂非线性关系。例如,可以使用支持向量机和神经网络。另外,可以使用更强大的直接搜索方法,其使用随机过程,例如模拟退火或进化算法。
整个过程可能是这样的
- 减少涉及的变量数量
- 设计实验并按顺序执行它们以收集源数据到模型
- 根据实验数据构建代理模型
- 使用代理模型将搜索方法应用于变量
- 基于替代模型的优化预测顺序执行实验
- 迭代步骤 3 到 5,直到满足停止条件
摘要
在这篇文章中,您发现了一种使用预测模型的巧妙方法。
在案例研究中,您了解了使用机器学习算法对混凝土混合物实验结果进行建模的示例,搜索具有最佳抗压强度的混合器的参数空间,可以作为进一步实验的基础。
您了解到这种类型的实验设计称为响应面方法,用于工业问题领域,如混凝土混合物实例。您还了解到,预测模型是本案例研究称为代理模型。
这是一种功能强大的方法,您可以在其他具有大量计算开销的域中使用这些方法来执行模拟。
资源
以下是您可能希望了解的一些书籍,以了解有关此实验设计和优化方法的更多信息。
机器学习项目中常见的陷阱
原文:
machinelearningmastery.com/common-pitfalls-machine-learning-projects/
在最近的一次演讲中, Ben Hamner 描述了他和他的同事在 Kaggle 比赛期间观察到的机器学习项目的常见缺陷。
这次演讲名为“机器学习小鬼”,于 2014 年 2 月在 Strata 的上发表。
在这篇文章中,我们来看看 Ben 的演讲中的陷阱,它们的样子以及如何避免它们。
机器学习过程
在演讲的早期,Ben 介绍了端到端地处理机器学习问题的过程。
机器学习过程
取自 Ben Hamner 的“机器学习小鬼”
此快照包括 9 个步骤,如下所示:
- 从业务问题开始
- 来源数据
- 拆分数据
- 选择评估指标
- 执行特征提取
- 模特训练
- 特征选择
- 型号选择
- 生产系统
他评论说,这个过程是迭代的而不是线性的。
他还评论说,这个过程中的每一步都可能出错,导致整个项目脱轨。
辨别狗和猫
Ben 提出了一个案例研究问题,用于建造一个自动猫门,可以让猫进来并让狗出门。这是一个有启发性的例子,因为它涉及到处理数据问题时的一些关键问题。
辨别狗和猫
取自 Ben Hamner 的“机器学习小鬼”
样本量
这个例子的第一个重要内容是他根据数据样本大小研究了模型的准确率,并表明更多的样本与更高的准确率相关。
然后他添加了更多数据,直到准确度趋于平稳。这是一个很好的例子,可以帮助您了解系统对样本大小的敏感度并进行相应调整。
错误的问题
这个例子的第二个很大的好处就是系统失败了,它让附近的所有猫都吃掉了。
这是一个聪明的例子,强调理解需要解决的问题的约束的重要性,而不是你想要解决的问题。
机器学习项目中的陷阱
在继续研究机器学习问题时,Ben 继续讨论了四个常见的陷阱。
虽然这些问题很常见,但他指出可以相对容易地识别和解决这些问题。
过拟合
取自 Ben Hamner 的“机器学习小鬼”
- 数据泄漏:利用生产系统无法访问的模型中的数据的问题。这在时间序列问题中尤为常见。也可能发生系统 ID 等可能表示类标签的数据。运行模型并仔细查看有助于模型成功的属性。理智检查并考虑是否有意义。 (查看参考文献“数据挖掘漏洞”PDF)
- 过拟合:过于紧密地对训练数据建模,使得模型还包括模型中的噪声。结果是推广能力差。这在更高维度中变得更成问题,具有更复杂的类边界。
- 数据采样和拆分:与数据泄漏有关,您需要非常小心,训练/测试/验证集确实是独立的样本。时间序列问题需要大量的思考和工作,以确保您可以按时间顺序回复数据并验证模型的准确率。
- 数据质量:检查数据的一致性。 Ben 给出了一些飞行数据的例子,其中一些飞机在起飞前着陆。需要识别和明确处理不一致,重复和损坏的数据。它可以直接损害建模问题和模型推广的能力。
摘要
Ben 的演讲“机器学习小精灵”是一个快速而实用的演讲。
您将在我们在处理数据问题时容易受到的常见陷阱中获得有用的速成课程。
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/tleeC-KlsKA?feature=oembed” width=“500”></iframe>
数据清理:将凌乱的数据转换为整洁的数据
原文:
machinelearningmastery.com/data-cleaning-turn-messy-data-into-tidy-data/
数据准备很困难,因为这个过程不客观,或者至少它没有这种感觉。诸如“_ 之类的问题,描述问题的最佳数据形式是什么?_ “不客观。您必须从您想要解决的问题的角度思考,并通过您的管道尝试一些不同的表示。
Hadley Wickham 是莱斯大学的兼职教授和首席科学家以及 RStudio ,他对这个问题非常感兴趣。他撰写了一些最受欢迎的 R 软件包,用于组织和呈现您的数据,例如 reshape,plyr 和 ggplot2。在他的期刊文章 Tidy Data 中,Wickham 展示了他对数据清理的看法,并通过整洁的数据来定义他的意思。
Tidy Data,照片由 Andrew King 拍摄
数据清理
大量的数据分析时间用于数据清理和准备数据,高达 80%的时间。威克姆指出,这不是一次性的过程,它是迭代的,因为你在每次连续传递中更深入地理解问题。目标是构建数据以便于您计划执行的数据分析。
整洁的数据
Wickham 的想法充分利用了关系数据库的思想和计算机科学的数据库规范化,尽管他的受众是统计学家和数据分析师。他从定义术语开始,建议谈论行和列不够丰富:
- 数据是给定类型的值的集合
- 每个值都属于一个变量
- 每个变量都属于一个观察
- 观察是单位的变量(如对象或事件)。
变量是列,观察是行,观察类型是表。传统上,Wickham 将此与关系数据库理论中的第三范式相关联。他还将变量的类型描述为固定和测量,并建议在表中测量之前组织固定。
- 固定变量:一个变量,它是实验设计的一部分,在实验开始之前就已知(如人口统计学)
- 测量变量:在研究中测量的变量。
整洁数据的目标是将数据(语义)的含义映射到数据结构上。
工作的例子
Wickham 说真实数据集违反了整洁数据的原则。他描述了 5 个常见问题:
- 列标题是值,而不是变量名
- 多个变量存储在一列中
- 变量存储在行和列中
- 多种类型的观察单元存储在同一个表中
- 单个观察单元存储在多个表中
然后他继续提供每个问题的工作实例。他提供了每个问题的样本真实世界数据,并演示了修复它的过程,使其整洁。
这些例子非常有启发性,非常值得单独阅读这些工作示例的论文。他接着提供了一份更大的案例研究,其中包含墨西哥的死亡率数据。
Hadley Wickham 提供的整洁数据
整洁的数据工具
只有在数据整洁之后才对数据分析有用。整洁的数据使用专为整洁数据设计的工具轻松执行数据分析任务:
- 操纵:可变操作,如聚合,过滤,重新排序,转换和排序。
- 可视化:使用图形和图表汇总数据以进行探索和展示。
- 建模:这是整洁数据的驱动灵感,建模就是我们要做的。
Wickham 小心地指出,整洁的数据只是数据清理过程的一部分。整洁数据的其他区域包括解析变量类型(日期和数字),处理缺失值,字符编码,拼写错误和异常值。
他评论说,这项工作是基于他自己的咨询和教学经验,而且他的经验是相当可观的,因为他的 R 套餐是下载最多的。
资源
Wickham 似乎在 2011 年发布了这些想法。您可以在题为 Timey Data on Vimeo 和审查幻灯片(PDF)的演示文稿中观看类似想法的演示。
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/TaxJwC_MP9Q?feature=oembed” width=“500”></iframe>
Wickam 还在 2011 年就#HTG0 工程数据分析(使用 R 和 ggplot2)提出了相同的想法。我也建议看这个演讲。他强调了特定领域语言在这项工作中的重要性,如 ggplot2(图形语法)等。他还强调了使用编程语言进行这项工作(而不是 excel)来获得透明度,可重复性和自动化等属性的重要性。使用相同的死亡率案例研究。
Wickam 在他的论文中提到的一些你可能想要研究的好书包括:
- 数据库管理的关系模型:第 2 版关于关系数据库理论和数据规范化。
- 探索性数据挖掘和数据清理关于数据清理和数据准备的最佳实践。
- 图形语法关于 R 和 python 图表库 ggplot 上使用的现在着名的图形语法。
- Lattice:R 的多变量数据可视化(使用 R!)在 Lattice R 软件包上绘制数据图表。
机器学习中的数据泄漏
原文:
machinelearningmastery.com/data-leakage-machine-learning/
在开发预测模型时,数据泄漏是机器学习中的一个大问题。
数据泄漏是指来自训练数据集外部的信息用于创建模型的时间。
在这篇文章中,您将发现预测性建模中的数据泄漏问题。
阅读这篇文章后你会知道:
- 什么是数据泄漏是预测性建模。
- 数据泄漏的迹象以及为什么会出现问题。
- 您可以使用的提示和技巧,以最大限度地减少预测性建模问题的数据泄漏。
让我们开始吧。
机器学习中的数据泄漏
DaveBleasdale 的照片,保留一些权利。
预测性建模的目标
预测性建模的目标是开发一种模型,在训练期间看不到新数据的准确预测。
这是一个难题。
这很难,因为我们无法在我们没有的东西上评估模型。
因此,我们必须通过仅对我们拥有的一些数据进行训练并在其余数据上进行评估来估计模型在看不见的数据上的表现。
这是交叉验证和更复杂技术的基础,这些技术试图减少此估计的方差。
什么是机器学习中的数据泄漏?
如果不是完全无效的预测模型,数据泄漏可能会导致您创建过于乐观。
数据泄漏是指来自训练数据集外部的信息用于创建模型的时间。该附加信息可以允许模型学习或知道否则将不知道的事物,并且反过来使得正在构建的模式的估计表现无效。
如果在您希望使用模型做出预测时实际上实际上不可用的任何其他特征是一个可能会导致模型泄漏的功能
当您用于训练机器学习算法的数据恰好具有您试图预测的信息时
- Daniel Gutierrez,询问数据科学家:数据泄漏
计算机安全中有一个主题称为数据泄漏和数据丢失预防,它与我们所讨论的相关但不相关。
数据泄漏是一个问题
这至少有三个原因是一个严重的问题:
- 如果您正在进行机器学习竞赛,这是一个问题。顶级模型将使用泄漏数据而不是潜在问题的良好通用模型。
- 当您是提供数据的公司时,这是一个问题。撤消匿名化和混淆可能会导致您没有预料到的隐私泄露。
- 当您开发自己的预测模型时,这是一个问题。您可能正在创建过于乐观的模型,这些模型实际上是无用的,不能用于生产。
作为机器学习从业者,我们主要关注最后一个案例。
我有数据泄漏吗?
了解数据泄漏的一种简单方法是,如果您实现的表现似乎有点太好了。
就像你可以预测彩票号码或选择高精度的股票。
“太好了不可能”表现是它存在的“死亡赠品”
- 第十三章,做数据科学:从前线直接谈话
数据泄漏通常是复杂数据集的一个问题,例如:
- 创建训练和测试集时的时间序列数据集可能很困难。
- 图形问题,其中随机采样方法可能难以构建。
- 模拟观察,如声音和图像,其中样本存储在具有大小和时间戳的单独文件中。
建立模型时最大限度地减少数据泄漏的技术
在开发预测模型时,您可以使用两种很好的技术来最小化数据泄漏,如下所示:
- 在交叉验证折叠中执行数据准备。
- 阻止验证数据集,以便对您开发的模型进行最终的健全性检查。
通常,优良作法是使用这两种技术。
1.在交叉验证折叠中执行数据准备
在准备机器学习数据时,您可以轻松泄露信息。
这种影响是过拟合您的训练数据,并且对您在不可见数据上的模型表现进行过于乐观的评估。
例如,如果您对整个数据集进行标准化或标准化,然后使用交叉验证来估计模型的表现,则表明您已经犯了数据泄漏的罪。
在计算缩放因子(如最小值和最大值或平均值和标准差)时,您执行的数据重新缩放过程了解了训练数据集中数据的完整分布。这些知识被标记在重缩放的值中,并被交叉验证测试工具中的所有算法利用。
在这种情况下,机器学习算法的非泄漏评估将计算用于在交叉验证的每个折叠内重新缩放数据的参数,并使用这些参数在每个循环上准备关于保持的测试折叠的数据。
现实情况是,作为一名数据科学家,您在准备,清理数据,估算缺失值,删除异常值等任何时候都存在产生数据泄漏情况的风险。您可能在准备数据时扭曲数据到了你将构建一个在你的“干净”数据集上运行良好的模型,但是在你真正想要应用它的真实情况中应用时会非常糟糕。
- 第 313 页,做数据科学:从前线直接谈话
更一般地说,非泄漏数据准备必须在交叉验证周期的每个折叠内进行。
对于某些问题,您可以放宽此约束,例如,如果您可以自信地估计数据的分布,因为您具有其他领域知识。
但总的来说,最好在交叉验证折叠中重新准备或重新计算任何所需的数据准备工作,包括特征选择,异常值删除,编码,特征缩放和降维等投影方法等任务。
如果对所有数据执行特征选择然后交叉验证,则交叉验证过程的每个折叠中的测试数据也用于选择特征,这是表现分析的偏差。
- Dikran Marsupial,回答 Cross Validated 上的问题“特征选择和交叉验证”。
像 R 中的 R 和 scikit-learn 这样的平台有助于自动化这种良好实践,使用中的插入符包和 scikit-learn 中的管道。
2.阻止验证数据集
另一种可能更简单的方法是将训练数据集拆分为训练集和验证集,并存储验证数据集。
完成建模过程并实际创建最终模型后,在验证数据集上对其进行评估。
这可以为您提供一个完整性检查,以确定您对绩效的评估是否过于乐观并且已经泄露。
基本上,真正解决这个问题的唯一方法是保留一个独立的测试集并保持它直到研究完成并用它进行最终验证。
- Dikran Marsupial 回答问题“我如何帮助确保测试数据不会泄漏到训练数据中? “在 Cross 验证
5 个防止数据泄漏的技巧
- 时间截止。在感兴趣事件发生之前删除所有数据,重点关注您了解事实或观察的时间,而不是观察发生的时间。
- 添加噪音。将随机噪声添加到输入数据以尝试平滑可能泄漏变量的影响。
- 删除 Leaky 变量。使用帐号和 ID 等变量评估简单的基于规则的模型行 OneR,以查看这些变量是否泄漏,如果是,则删除它们。如果您怀疑变量是否泄漏,请考虑将其删除。
- 使用管道。大量使用管道架构,允许在交叉验证折叠中执行一系列数据准备步骤,例如 R 中的插入符包和 scikit-learn 中的管道。
- 使用保持数据集。在使用模型之前,请暂停一个看不见的验证数据集作为模型的最终完整性检查。
进一步阅读数据泄漏
关于数据泄漏的材料并不多,但那些确实存在的珍贵论文和博客文章都是黄金。
以下是一些更好的资源,您可以用它们来了解应用机器学习中数据泄漏的更多信息。
- 数据挖掘中的泄漏:秘籍,检测和避免 [pdf],2011。(推荐!)
- 关于数据怀疑播客数据泄漏的迷你剧集。
- 第十三章:从数据竞争中吸取的教训:数据泄漏和模型评估,来自做数据科学:直接从前线谈话,2013。
- 询问数据科学家:数据泄漏,2014 年
- Kaggle Wiki 上的数据泄漏
- 有关 ICML 2013 鲸鱼挑战赛数据泄漏的精彩讨论
摘要
在这篇文章中,您在开发预测模型时发现了机器学习中的数据泄漏。
你了解到:
- 开发预测模型时会出现什么数据泄漏。
- 为什么数据泄漏是一个问题以及如何检测它。
- 在开发预测模型时,您可以使用的技术来避免数据泄漏。
您对数据泄漏或此帖有任何疑问吗?在评论中提出您的问题,我会尽力回答。
数据,学习和建模
机器学习中的关键概念为理解该领域奠定了基础。
在这篇文章中,您将学习在描述数据和数据集时使用的命名法(标准术语)。
您还将学习用于描述数据学习和建模的概念和术语,这些概念和术语将为您在机器学习领域的旅程提供有价值的直觉。
数据
机器学习方法从实例中学习。掌握输入数据和描述数据时使用的各种术语非常重要。在本节中,您将学习在引用数据时机器学习中使用的术语。
当我想到数据时,我会想到行和列,比如数据库表或 Excel 电子表格。这是一种传统的数据结构,是机器学习领域的常见结构。目前不考虑其他数据,如图像,视频和文本,即所谓的非结构化数据。
显示实例,功能和训练测试数据集的数据表
实例:单行数据称为实例。这是来自领域的观察。
功能:单列数据称为功能。它是观察的一个组成部分,也称为数据实例的属性。一些特征可以是模型的输入(预测变量),而其他特征可以是输出或要预测的特征。
数据类型:功能具有数据类型。它们可以是实数或整数值,也可以具有分类或序数值。您可以使用字符串,日期,时间和更复杂的类型,但在使用传统的机器学习方法时,通常会将它们简化为实际值或分类值。
数据集:实例集合是一个数据集,在使用机器学习方法时,我们通常需要一些数据集用于不同的目的。
Training Dataset :我们提供给我们的机器学习算法的数据集,用于训练我们的模型。
测试数据集:我们用于验证模型准确率但不用于训练模型的数据集。它可以称为验证数据集。
我们可能必须收集实例来形成我们的数据集,或者我们可能会得到一个必须拆分为子数据集的有限数据集。
学习
机器学习确实是关于算法的自动学习。
在本节中,我们将考虑一些关于学习的高级概念。
归纳:机器学习算法通过一个称为归纳或归纳学习的过程来学习。归纳是一种推理过程,它根据特定信息(训练数据)进行概括(模型)。
泛化:需要泛化,因为机器学习算法准备的模型需要根据训练期间未见的特定数据实例做出预测或决策。
过度学习:当模型过于仔细地学习训练数据而不进行概括时,这称为过度学习。结果是除了训练数据集之外的数据表现不佳。这也称为过拟合。
学习不足:当模型没有从数据库中学到足够的结构,因为学习过程提前终止,这称为学习不足。结果是良好的泛化,但所有数据(包括训练数据集)的表现都很差。这也称为欠配合。
在线学习:在线学习是指在域可用时使用域中的数据实例更新方法。在线学习需要对噪声数据具有鲁棒性的方法,但可以生成与域的当前状态更加一致的模型。
离线学习:离线学习是指在预先准备好的数据上创建方法,然后在未观察到的数据上进行操作。由于训练数据的范围是已知的,因此可以控制并且可以仔细调整训练过程。准备好后,模型不会更新,如果域名发生变化,表现可能会下降。
监督学习:这是一个学习过程,用于概括需要预测的问题。 “教学过程”将模型的预测与已知答案进行比较,并在模型中进行校正。
无监督学习:这是一个学习过程,用于推广数据中不需要预测的结构。识别和利用自然结构以将实例相互关联。
在机器学习算法上发表之前,我们已经介绍了有监督和无监督学习。这些术语可用于按行为对算法进行分类。
造型
由机器学习过程创建的人工制品本身可以被视为一个程序。
模型选择:我们可以将模型配置和训练过程视为模型选择过程。每次迭代我们都有一个新模型,我们可以选择使用或修改。甚至机器学习算法的选择也是该模型选择过程的一部分。在针对问题存在的所有可能模型中,所选训练数据集上的给定算法和算法配置将提供最终选择的模型。
感应偏差:偏差是对所选模型施加的限制。所有模型都有偏差,这会在模型中引入误差,并且根据定义,所有模型都有误差(它们是观察的概括)。通过模型中的一般化引入偏差,包括模型的配置和生成模型的算法的选择。机器学习方法可以创建具有低偏差或高偏差的模型,并且可以使用策略来减少高偏差模型的偏差。
模型方差:方差是模型对训练数据的敏感程度。在数据集上创建模型时,机器学习方法可以具有高或低的方差。减少模型方差的策略是在具有不同初始条件的数据集上多次运行,并将平均精度作为模型表现。
偏方差权衡:模型选择可以被认为是偏差和方差的权衡。低偏差模型将具有高差异并且需要长时间或多次训练以获得可用模型。高偏差模型将具有较低的方差并且将快速训练,但是遭受差的且有限的表现。
资源
如果您想深入挖掘,下面是一些资源。
- Tom Mitchell,学习概括中存在偏见的需要,1980
- 了解偏方差权衡
这篇文章提供了一个有用的术语表,您可以随时参考这些术语以获得清晰的定义。
是否缺少条款?您是否对所列条款之一有更清晰的描述?发表评论,让我们都知道。
数据管理至关重要以及为什么需要认真对待它
原文:
machinelearningmastery.com/data-management-matters-and-why-you-need-to-take-it-seriously/
我们生活在一个淹没在数据中的世界。互联网跟踪,股票市场运动,基因组测序技术及其同类产品都会产生大量数据。
这些数据中的大部分都是别人的责任,由其他人生成,存储在别人的数据库中,由数据库保存并提供…你猜对了…别人。
但。每当我们执行机器学习项目时,我们正在处理所有数据的一小部分。
无论您是生成自己的数据,还是使用公开数据,您的结果都必须是可重现的。分析的可重复性主要取决于数据管理。
数据管理事项
摄影: Ken Teegardin ,保留一些权利
什么是数据管理?
数据管理是存储,处理和保护原始数据和任何相关元数据的过程。
这个过程包括:
- 为您的分析确定适当的数据
- 下载数据
- 根据需要重新格式化
- 清理数据
- 将数据存储在适当的存储库中
- 备份数据
- 使用元数据进行批注
- 维护数据
- 将数据提供给您想与之共享的人
- 保护数据免受恶意或意外访问
上面列表中的前四个点已在此博客的其他帖子中得到解决。在这篇文章中,我们将介绍处理工作数据集的过程。
组织良好,文档齐全,保存和共享数据对于推进科学探究和增加学习和创新机会具有不可估量的价值。
为什么不把它留给别人呢?
如果要生成自己的数据,则需要明确数据管理。但是,即使您使用其他人的数据,您仍需要制定经过深思熟虑的数据管理政策和程序。
大多数在线数据库都在不断增长,而且往往呈指数级增长。如果您已经生成了今天可用数据的结果,那么在一个月内,您的数据集将仅代表更大数据集的一部分,并且在两年内它可能只是当前数据库的一小部分。为了产生可重现的结果,您必须下载,清理和保护您自己的数据集。
按数字划分的数据管理流程
1.将数据存储在适当的存储库中
有几种不同类型的数据存储库具有不同的用途。这些包括,从最简单到最复杂:
数据库:“_ 有组织的相关信息 _”(定义)
这里的关键术语是有条理的。简单的关系数据库以明确定义的结构化方式存储记录和记录之间关系的最基本信息。结构是关键,数据库不一定需要掌握有关存储的数据或它们的含义的任何知识。许多类型的数据甚至可以存储为二进制大对象(BLOBS)。
数据仓库:“_ 来自多个可能异构数据源的数据集成存储库,具有一致且一致的语义 _”(定义)
随着数据仓库的语义被添加到数据结构中。语义算法试图通常以本体的形式为数据添加含义。基于受控词汇表的本体,在词汇术语之间具有明确定义的关系(例如,“_ 醇脱氢酶 ”是 A“ 蛋白质 _”)。
数据存档:“_ 保存用于历史或参考目的的文档版本 _”(定义)
数据存档通常保存在可靠的媒体上,并且不一定必须快速访问,因为数据是为了历史目的而保存的。许多组织要求将数据保留一段特定的时间,即使在分析数据并公布结果之后也是如此。
数据集成:“_ 组合驻留在不同来源的数据并为用户提供这些数据的统一视图的过程 _”(定义)
前三种类型的存储库通常处理单一类型的数据:就业记录,或蛋白质 - 蛋白质相互作用数据。数据集成不是一个存储库,而是一组用于将不同数据类型组合到单个数据集中的算法,以便允许更有用的分析。例如,将人口统计量(年龄,性别,BMI 等)与血液检测结果和经济数据相结合,可以让您比单独的血液检查更深入地了解您的健康状况。
2.备份数据
每个人都知道应该定期备份所有硬盘驱动器,尽管可怕的比例人们并不经常这样做。这样做吧!数据备份应包括:
每日增量备份到不同的硬盘驱动器,甚至是 USB 记忆棒。有许多备份解决方案,包括免费和专有。 维基百科有一个相当全面的清单。
文件同步软件不会尝试从一个驱动器备份到另一个驱动器的所有内容,但会跟踪每个文件的上次更新版本,并保存最新版本。如果文件已在两个位置同时更新,则大多数应用程序将询问用户选择哪一个。 请参阅维基百科列表。
对于它的价值,我使用 Unison,并且对它的表现非常满意。
除每日增量备份外,还应定期执行完整备份。备份的一个副本应存储在现场,以便在发生灾难时快速访问,并且至少有一个异地,以防发生真正的灾难。如果您有硬盘故障并需要访问您的文件,它们应该在抽屉中。如果您的办公室烧毁,文件应该在您家或妈妈的家里。
3.使用元数据进行批注
当我们第一次下载数据时,它的来源和含义对我们来说是非常明显的。我们知道为什么我们想要它,我们做了什么,以及它意味着什么。但是,经过几个月,这种理解可能不那么清楚。
元数据是关于数据的数据。元数据可以包括诸如谁生成数据,何时生成数据,何时下载,使用哪些分析,使用了哪些实验条件,使用了哪些文件以及是否存在任何已知问题等信息。数据。
有许多以社区为基础的组织旨在指定复制数据所需的最少信息,特别是现代分子生物学实验产生的复杂数据。
元数据注释看起来像是一个真正的问题,但如果您的结果值得报告,则值得再现,元数据对于长期理解原始数据至关重要。
4.维护数据
一旦您选择,清理,正确存储,注释和备份数据,您可能会认为困难部分已经结束。当然,它不是那么简单,它永远不会。必须保持数据。
维护涉及:
- 添加新数据(和适当的元数据)
- 更新现有数据(和关联的元数据)
- 在错误显现(并更新元数据)时处理错误
如果你有一次性数据集,第一点可能没有实际意义,但最后两点很重要。存储的数据应反映您当前对问题的最佳理解,并且任何更新,更改或丢弃都应记录在元数据中。
数据维护的另一个重要问题是媒体问题。存储介质变得过时,真正令人恐惧。
如今,大多数数据集都存储在硬盘上,并备份到 DVD 或 USB 记忆棒。这些媒体将不可避免地变得过时,在比现在看来可能更少的年代,机器学习从业者必须非常了解这一趋势。特别是在档案数据集(可能无法经常访问)的情况下,定期检查以确保数据仍然可读并且采用现代格式是必不可少的。
十多年来,1976 年维京火星登陆的磁带未经处理。后来分析时,数据是不可读的,因为它是一种未知的格式,原来的程序员已经死亡或者离开了 NASA
- 来自数字黑暗时代的维基百科文章。
5.向那些人提供数据,并且仅向那些与您共享数据的人员提供数据
许多出版论坛坚持认为用于生成报告结果的数据可供感兴趣的读者使用。即使在出版之外,您也可能希望与朋友和同事共享数据,以便进行更深入的分析。
当然,问题在于免费提供的数据可能会被滥用。只读数据可能会被竞争对手或那些歪曲它的人下载和使用,以推进可能不属于您的原因。具有读/写访问权限的数据可能会被恶意个人修改,也可能被您或您的同事意外修改。
数据安全和访问控制是一个巨大的研究领域,而且许多可用的材料都非常技术性。基本上,大多数数据库管理系统都具有不同粒度级别的内置访问控制,通常采用熟悉的帐户和密码形式。通过网站提供的数据可能没有这些内置保护,必须根据具体情况实现适当的保护措施。
每个数据管理员都在安全和共享之间走一条路。
数据管理教程和秘籍
一个绝对的初学者对备份的介绍(这个有点旧,所以技术有所改进,但基本原则是合理的):
<iframe allowfullscreen=“” frameborder=“0” height=“281” src=“https://www.youtube.com/embed/k6dosJ9phWY?feature=oembed” width=“500”></iframe>
密歇根大学的 Todd Austin 撰写的一篇(大部分)计算机安全简介:
<iframe allowfullscreen=“” frameborder=“0” height=“375” src=“https://www.youtube.com/embed/o6pgd8gLFHg?feature=oembed” width=“500”></iframe>
- 英国数据档案馆有一份数据管理清单,可在此处获取。
- 关于数字黑暗时代的优秀文章,当存储媒体变得不可读时可在维基百科上找到。
- 计算机存储介质的老化速度有多快? 查看这篇文章?
- 有关生物学和生物医学最低信息标准的概要,请参阅开放生物学和生物医学本体。
- Web 应用程序访问控制的一个很好的概述,来自名为访问控制备忘单的 Open Web Application Security Project。
将预测模型部署到生产环境中
原文:
machinelearningmastery.com/deploy-machine-learning-model-to-production/
5 个实现机器学习的最佳实践。
并非所有预测模型都是 Google 规模的。
有时,您需要开发一个小型预测模型,并将其放入软件中。
我最近收到了这个读者问题:
实际上,我对机器学习的知识缺少一部分。在构建机器学习模型之前,所有教程都会为您提供相应的步骤。你怎么能用这个模型?
在这篇文章中,我们将介绍一些最佳实践,以简化模型到生产的过渡,并确保您充分利用它。
如何将您的预测模型部署到生产
照片由 reynermedia ,保留一些权利。
我有一个模特。怎么办?
因此,您已经完成了一个系统化的过程,并创建了一个可靠且准确的模型,可以预测您的问题。
你想以某种方式使用这个模型。
- 也许你想创建一个可以进行临时预测的独立程序。
- 也许您希望将模型合并到现有软件中。
我们假设您的软件是适度的。您不是在寻找 Google 规模的部署。也许它只适合你,也许只是一个客户或者可能是一些工作站。
到目前为止还不错?
现在,我们需要了解一些最佳实践,以便将准确可靠的模型投入运营。
5 模型部署最佳实践
为什么不将模型打入您的软件并发布?
你可以。但是,通过添加一些额外的步骤,您可以确信您正在部署的模型是可维护的并且长期保持准确。
您是否已将模型投入生产?
请发表评论并分享您的经历。
在将预测模型部署到生产环境中时,您可以采取以下五个最佳实践步骤。
1.指定表现要求
你需要清楚地说明什么是好的和坏的表现。
这可能是准确率或误报或任何指标对业务都很重要。
拼出,并使用您开发的当前模型作为基线数字。
随着您改进系统,这些数字可能会随着时间的推移而增加。
表现要求很重要。没有它们,您将无法设置确定系统是否按预期运行所需的测试。
在达成最低,平均或表现范围预期之前,请不要继续。
2.从模型系数中分离预测算法
您可能已使用库来创建预测模型。例如,R,scikit-learn 或 Weka。
您可以选择使用该库部署模型,或者在软件中重新实现模型的预测方面。您甚至可能希望将您的模型设置为 Web 服务。
无论如何,最好将从模型内部做出预测的算法分开。这是从训练数据中学习的模型中的特定系数或结构。
2A。选择或实现预测算法
机器学习算法的复杂性通常在模型训练中,而不是在做出预测。
例如,使用回归算法做出预测非常简单,并且易于以您选择的语言实现。这将是重新实现的明显算法的示例,而不是模型训练中使用的库。
如果您决定使用该库做出预测,请熟悉 API 和依赖项。
用于做出预测的软件就像应用程序中的所有其他软件一样。
像软件一样对待它。
实现它,编写单元测试,使其健壮。
2B。序列化您的模型系数
让我们调用模型学习的数字或结构:_ 系数 _。
这些数据不是您的应用程序的配置。
将其视为软件配置。
使用软件项目将其存储在外部文件中。版本吧。将配置视为代码,因为它可以轻松破坏您的项目。
随着您改进模型,您很可能需要在将来更新此配置。
3.为您的模型开发自动化测试
您需要自动化测试来证明您的模型按预期工作。
在软件领域,我们所有这些回归测试。随着我们对系统的不同部分进行更改,它们确保软件未来的行为不会退化。
为您的模型编写回归测试。
- 收集或提供一小部分数据样本做出预测。
- 使用生产算法代码和配置做出预测。
- 确认测试中预期的结果。
这些测试是你的预警警报。如果它们失败,您的模型将被破坏,您无法发布软件或使用该模型的功能。
使测试严格执行模型的最低表现要求。
除了要包含的域中的任何原始数据集之外,我强烈建议设计您理解的测试用例。
我还强烈建议随着时间的推移收集异常值和有趣的案例,这些案例会产生意外结果(或破坏系统)。这些应该被理解并添加到回归测试套件中。
每次代码更改后和每次发布之前运行回归测试。每晚运行它们。
4.开发反向测试和现在测试基础设施
模型将发生变化,软件和正在做出预测的数据也将发生变化。
您希望使用大型数据库上的指定配置自动评估生产模型。
这将允许您有效地回溯测试历史数据模型的更改,并确定您是否真正做出了改进。
这不是可用于超参数调整的小数据集,这是可用的全套数据,可能按月,年或其他一些重要分界进行划分。
- 将当前运营模型运行到基准表现。
- 运行新模型,竞争进入运营的地方。
设置完成后,每晚或每周运行一次,并自动报告。
接下来,添加一个 Now-Test。
这是对最新数据的生产模型的测试。
也许这是今天,本周或本月的数据。我们的想法是获得一个早期警告,即生产模型可能会步履蹒跚。
这可能是由内容漂移引起的,其中模型利用的数据中的关系随着时间的推移而微妙地变化。
如果表现低于最低表现要求,此 Now-Test 还可以吐出报告并发出警报(通过电子邮件)。
5.挑战然后试用模型更新
您需要更新模型。
也许您设计了一个需要新代码和新配置的全新算法。重温以上所有要点。
更小且更易于管理的变化将是模型系数。例如,您可能设置了每晚运行的模型超参数的网格或随机搜索,并吐出新的候选模型。
你应该这样做。
测试模型并且非常关键。给每个模型一个新的模型。
使用上面第 4 点中的 Back-Test 和 Now-Test 基础架构评估新模型的表现。仔细检查结果。
使用回归测试评估更改,作为最终的自动检查。
测试使用该模型的软件的功能。
也许可以将更改推送到某些位置或测试版中以获得反馈,同样可以降低风险。
一旦您确信它满足最低表现要求并且优先于之前的结果,请接受您的新模型。
像棘轮一样,考虑随着模型表现的提高,逐步更新表现要求。
摘要
将小型模型添加到操作软件是非常可行的。
在这篇文章中,您发现了 5 个步骤,以确保您覆盖您的基础并遵循良好的工程实践。
总之,这些步骤是:
- 指定表现要求。
- 从模型系数分离预测算法。
- 为您的模型开发回归测试。
- 开发反向测试和现在测试基础设施。
- 挑战然后试用模型更新。
如果您对有关操作机器学习模型的更多信息感兴趣,请查看帖子:
这更多是关于 Google 规模的机器学习模型部署。观看所提及的视频,并查看 AirBnB 和 Etsy 生产管道的重要链接。
您对此帖子有任何疑问或将您的模型投入生产吗?
在评论中提出您的问题,我会尽力回答。
参数和超参数之间有什么区别?
原文:
machinelearningmastery.com/difference-between-a-parameter-and-a-hyperparameter/
当您开始应用机器学习时,这可能会让您感到困惑。
有许多术语可供使用,许多术语可能无法一致使用。如果您来自另一个可能使用与机器学习相同的术语的研究领域,尤其如此,但它们的使用方式不同。
例如:术语“_ 模型参数 ”和“ 模型超参数 _”。
对这些术语没有明确的定义是初学者的共同斗争,尤其是那些来自统计学或经济学领域的初学者。
在这篇文章中,我们将仔细研究这些术语。
参数和超参数之间有什么区别?
摄影: Bruce Guenter ,保留一些权利。
什么是模型参数?
模型参数是模型内部的配置变量,其值可以从数据中估算。
- 在做出预测时,模型需要它们。
- 它们的值定义了模型对您的问题的技能。
- 它们是从数据中估算或学习的。
- 它们通常不是由从业者手动设置的。
- 它们通常被保存为学习模型的一部分。
参数是机器学习算法的关键。它们是从历史训练数据中学习的模型的一部分。
在经典机器学习文献中,我们可以将模型视为假设,将参数视为对特定数据集的假设的定制。
通常使用优化算法来估计模型参数,该优化算法是通过可能的参数值的有效搜索的类型。
- 统计:在统计中,您可以假设变量的分布,例如高斯分布。高斯分布的两个参数是平均值(
mu
)和标准偏差(sigma
)。这适用于机器学习,其中这些参数可以从数据估计并用作预测模型的一部分。 - 编程:在编程中,您可以将参数传递给函数。在这种情况下,参数是一个函数参数,可以具有一系列值。在机器学习中,您使用的特定模型是函数,需要参数才能对新数据做出预测。
模型是否具有固定或可变数量的参数确定它是否可被称为“_ 参数 ”或“ 非参数 _”。
模型参数的一些示例包括:
- 人工神经网络中的权重。
- 支持向量机中的支持向量。
- 线性回归或逻辑回归中的系数。
什么是模型超参数?
模型超参数是模型外部的配置,其值无法从数据估计。
- 它们通常用于过程中以帮助估计模型参数。
- 它们通常由从业者指定。
- 它们通常可以使用启发式设置。
- 它们经常针对给定的预测性建模问题进行调整。
对于给定问题,我们无法知道模型超参数的最佳值。我们可能会使用经验法则,复制用于其他问题的值,或通过反复试验来搜索最佳值。
当针对特定问题调整机器学习算法时,例如当您使用网格搜索或随机搜索时,您正在调整模型的超参数或命令以发现导致最熟练的模型参数预测。
许多模型具有不能从数据直接估计的重要参数。例如,在 K-最近邻分类模型中…这种类型的模型参数被称为调整参数,因为没有可用于计算适当值的分析公式。
- 第 64-65 页, Applied Predictive Modeling ,2013
模型超参数通常被称为模型参数,这可能使事情变得混乱。克服这种混乱的一个好的经验法则如下:
如果你必须手动指定模型参数,那么
它可能是一个模型超参数。
模型超参数的一些示例包括:
- 训练神经网络的学习率。
- 支持向量机的 C 和 sigma 超参数。
- k-最近邻居中的 k。
进一步阅读
摘要
在这篇文章中,您发现了清晰的定义以及模型参数和模型超参数之间的区别。
总之,模型参数是根据数据自动估算的,模型超参数是手动设置的,并在过程中用于帮助估计模型参数。
模型超参数通常被称为参数,因为它们是机器学习的必须手动设置和调整的部分。
这篇文章是否帮助您消除了困惑?
请在下面的评论中告诉我。
是否存在您仍不确定的模型参数或超参数?
在评论中发布它们,我会尽力帮助进一步澄清问题。