训练机器学习模型

已完成

训练机器学习模型涉及到使机器学习算法拟合训练数据,以确定可接受的准确函数,该函数可应用于其特征并计算相应的标签。 这在概念上似乎是一个简单的想法:但是,训练一个能在新数据(而不仅仅是训练的数据)上生成准确预测的模型的实际过程可能具有挑战性,并且涉及到使用多种算法和参数重复训练和评估模型的迭代方法。

训练并验证数据

训练机器学习模型的一种常见方法是将数据随机拆分为子集进行训练和验证。 然后,可以使用训练数据集来拟合算法并训练模型,然后测试模型在你保留的验证数据方面的性能。 这有助于确保模型能很好地泛化,换句话说,它能对没有经过训练的训练生成准确的预测。

注意

如果模型针对训练的数据预测良好,但对新数据效果不佳,则描述为过度拟合训练数据。

通常,应使用大约 70% 的数据训练模型,并保留大约 30% 的数据进行验证。

机器学习算法

有许多机器学习算法,它们根据需要解决的机器学习问题类型分组到不同的算法类型。 大多数机器学习框架包括用于回归和分类的多种算法,以及用于聚类分析等非监督式机器学习问题的算法。

在确定了要创建一个模型来解决的问题的类型后,可以从该类型的多种算法中进行选择。 在每个类型中,可能有多个算法可供选择,通常基于不同类型的数学运算。 例如,在用于分类的算法集中,有以下类型的算法:

  • 逻辑回归算法,以迭代方式应用逻辑函数来计算 0 到 1 之间的值,该值表示每个可能类的概率,并根据预测类与实际已知标签值之间的差异优化函数的系数。
  • 基于树的函数,它定义了考虑单个特征的决策树;并根据其值考虑另一个特征,依此类推,直到确定适当的类标签。
  • 集成算法,该算法组合多种技术以找到最佳整体预测函数。

“最佳”算法取决于数据,通常需要迭代试验和错误来确定。

超参数

机器学习算法的参数是其训练的数据特征(和标签)。 此外,大多数机器学习算法都提供超参数,可用于影响算法的工作方式。 超参数使你能够控制想要在模型中允许的随机性级别(使它可以很好地泛化,但仍会生成可接受的准确预测)、为查找最佳模型而执行的迭代次数(使你能够避免过度拟合并优化训练时间)、树模型中考虑的分支数,以及其他特定于算法的因素等。

拟合模型

若要训练模型,需要将算法拟合到数据上。 用于执行此操作的特定语法和数据格式可能因机器学习框架而异,但原则始终相同。 对于监督式机器学习,可以根据已知标签使算法拟合特征。 对于非监督式机器学习,提供特征,算法会尝试将它们分离到离散群集中。

下面的示例展示了使用 Spark MLlib 框架启动逻辑回归模型训练的代码。 训练数据作为数据帧提供,其中标签位于整数值的列中,相应的特征表示为一个单一的值向量(数组)。 在此示例中,还指定了两个超参数(maxIter 和 regParam)。

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(labelCol="label", featuresCol="features", maxIter=10, regParam=0.3)
model = lr.fit(training_df)