使用大量的数据训练一个算法模型,从而得到一个具有泛化能力的能够解决现实问题的模型的过程。
机器学习是关于构建可以从数据中学习的系统。学习意味着在一定的性能指标下,在某些任务上会变得越来越好。
机器学习非常适合没有算法解答的复杂问题,它可以代替一系列需要手动调整的规则,来构建适应不断变化的环境的系统并最终帮助人类(例如,数据挖掘)。
指带有对应标签的训练数据集
带标签的训练集是一个包含每个实例所需要解决方案(也称为标签)的训练集。
两个最常见的有监督任务是回归和分类
常见的无监督任务包括聚类、可视化、降维和关联规则学习
强化学习
强化学习
监督学习、分类算法
如果你不知道如何定义组,则可以使用聚类算法(无监督学习)将客户划分为相似客户集群。但是,如果你知道你想要拥有哪些组,那么可以将每个组的许多实例提供给分类算法(有监督学习),并将所有客户分类到这些组中。
监督学习
垃圾邮件检测是一个典型的有监督学习问题:向该算法提供许多电子邮件及其标签(垃圾邮件或非垃圾邮件)。
实时地边接收数据边训练模型
与批量学习系统相反,在线学习系统能够进行增量学习。这使得它能够快速适应不断变化的数据和自动系统,并能够处理大量数据。
因为内存存储容量有限,无法存储大量的数据,所以将数据切片,分批传入模型进行学习,它是一种离线批处理学习。
核外算法可以处理无法容纳在计算机主内存中的大量数据。核外学习算法将数据分成小批量,并使用在线学习技术从这些小批量数据中学习。
基于实例的学习
基于实例的学习系统努力通过死记硬背来学习训练数据。然后,当给定一个新的实例时,它将使用相似性度量在查找最相似的实例,并利用它们来进行预测。
模型参数是指参与模型训练过程的参数,超参数不参与模型的训练过程,但也能对模型产生影响。
一个模型具有一个或多个模型参数,这些参数确定在给定一个新实例的情况下该模型将预测什么(例如,线性模型的斜率)。一种学习算法试图找到这些参数的最优值,以使该模型能很好地泛化到新实例。超参数是学习算法本身的参数(例如,要应用正则化的数量)。
基于模型的学习算法搜索模型参数的最优值,以便模型可以很好地泛化到新实例。
我们通常通过最小化成本函数(损失函数)来训练这样的系统,该函数测量系统对训练数据进行预测时有多不准确,如果对模型进行了正则化对模型复杂性要加上惩罚。
为了进行预测,我们使用学习算法找到的模型参数值,再将新实例的特征输入到模型的预测函数中。
机器学习中的一些主要挑战是数据的缺乏、数据质量差、数据的代表性不足、信息量不足、模型过于简单而欠拟合训练数据以及模型过于复杂而过拟合数据。
如果模型在训练数据集上表现出色,但在新实例上的泛化效果很差,则该模型可能会过拟合训练数据(或者我们在训练数据上非常幸运)。
过拟合的可能解决方法是获取更多数据、简化模型(选择更简单的算法,减少使用的参数或特征的数量,或对模型进行正则化)或减少训练数据中的噪声。
测试数据集是用于启动生产环境之前,估计模型在新实例上产生的泛化误差。
验证集是用于比较模型。这样就可以选择最佳模型并调整超参数。
当训练数据集与验证数据集和测试数据集中使用的数据之间不匹配时,可以使用train-dev集(该数据集应始终与模型投入生产环境后使用的数据尽可能接近)。
train-dev集是训练集的一部分(模型未在其上训练过)。该模型在训练集的其他部分上进行训练,并在train-dev集和验证集上进行评估。如果该模型在训练集上表现良好,但在train-dev集上表现不佳,则该模型可能过拟合训练集。如果它在训练集和train-dev集上均表现良好,但在验证集上却表现不佳,那么训练数据与验证数据和测试数据之间可能存在明显的数据不匹配,你应该尝试改善训练数据,使其看起来更像验证数据和测试数据。
如果使用测试集来调整超参数,则可能会过拟合测试集,而且所测得的泛化误差会过于乐观(你可能会得到一个性能比预期差的模型)。