云计算百科
云计算领域专业知识百科平台

机器学习 - 自动化工作流

摘要:本文介绍了机器学习管道(Pipeline)的概念及其在数据科学工作流中的重要性。管道通过标准化流程实现从数据摄入到模型部署的全过程自动化,包含数据准备、模型训练、评估和再训练等关键环节。文章分析了数据质量、可靠性和可访问性三大挑战,并通过两个Python实例(使用Scikit-learn的皮马印第安人糖尿病数据集)演示了如何利用管道防止数据泄露:第一个示例展示标准化和线性判别分析的管道实现(准确率77.9%),第二个示例展示通过FeatureUnion结合PCA和特征选择的逻辑回归模型(准确率77.89%)。这些案例验证了管道在确保数据准备和特征提取过程隔离方面的有效性。

目录

引言

机器学习管道的组成部分如下:

机器学习管道面临的挑战

数据质量

数据可靠性

数据可访问性

机器学习管道建模与数据准备

示例

输出结果

机器学习管道建模与特征提取

示例

输出结果


引言

为了成功执行并生成结果,机器学习模型必须自动化一些标准工作流。借助 Scikit-learn 管道(Pipelines),可以实现这些标准工作流的自动化。从数据科学家的角度来看,管道是一个具有普遍性但至关重要的概念。它本质上允许数据从原始格式转化为有用的信息。管道的工作原理可通过以下图表理解:数据摄入→数据准备→机器学习模型训练→模型评估→模型部署→机器学习模型再训练

机器学习管道的组成部分如下:

  • 数据摄入:顾名思义,这是导入数据以供机器学习项目使用的过程。数据可以实时或批量地从单个或多个系统中提取。这是最具挑战性的步骤之一,因为数据质量会影响整个机器学习模型。
  • 数据准备:导入数据后,需要对数据进行预处理,使其适用于机器学习模型。数据预处理是数据准备中最重要的技术之一。
  • 机器学习模型训练:下一步是训练机器学习模型。我们有多种机器学习算法,如监督学习、无监督学习、强化学习等,可用于从数据中提取特征并进行预测。
  • 模型评估:之后,需要对机器学习模型进行评估。在自动化机器学习(AutoML)管道中,可以借助各种统计方法和业务规则对机器学习模型进行评估。
  • 机器学习模型再训练:在自动化机器学习管道中,第一个模型未必是最佳模型。第一个模型会被视为基准模型,我们可以对其进行重复训练,以提高模型的准确性。
  • 部署:最后,需要部署模型。这一步骤包括将模型应用并迁移到业务运营中,供其使用。
  • 机器学习管道面临的挑战

    创建机器学习管道时,数据科学家会遇到诸多挑战。这些挑战主要分为以下三类:

    数据质量

    任何机器学习模型的成功都在很大程度上依赖于数据质量。如果提供给机器学习模型的数据不准确、不可靠且不稳健,那么最终将会得到错误或具有误导性的输出结果。

    数据可靠性

    机器学习管道面临的另一个挑战是所提供数据的可靠性。众所周知,数据科学家可以通过多种来源获取数据,但为了获得最佳结果,必须确保这些数据来源是可靠且可信的。

    数据可访问性

    要从机器学习管道中获得最佳结果,数据本身必须具有可访问性,这就需要对数据进行整合、清洗和整理。由于数据具有可访问性这一特性,元数据会通过新的标签进行更新。

    机器学习管道建模与数据准备

    在为机器学习模型准备数据时,数据科学家需要处理的一个重要问题是训练数据集向测试数据集的数据泄露。通常,在数据准备阶段,数据科学家会在模型训练前对整个数据集使用标准化或归一化等技术。但这些技术无法帮助我们避免数据泄露,因为训练数据集会受到测试数据集中数据尺度的影响。通过使用机器学习管道,可以防止这种数据泄露,因为管道能确保数据准备(如标准化)仅限于交叉验证过程的每个折(fold)。

    示例

    以下是一个 Python 示例,展示了数据准备和模型评估的工作流。本示例使用 Scikit-learn 中的皮马印第安人糖尿病数据集(Pima Indian Diabetes dataset)。首先,我们将创建一个用于标准化数据的管道;然后,构建一个线性判别分析(Linear Discriminant Analysis)模型;最后,使用 20 折交叉验证对管道进行评估。首先,导入所需的库:

    接下来,按照之前的示例加载皮马印第安人糖尿病数据集:

    然后,通过以下代码创建管道:

    estimators = []
    estimators.append(('standardize', StandardScaler()))
    estimators.append(('lda', LinearDiscriminantAnalysis()))
    model = Pipeline(estimators)

    最后,评估该管道并输出其准确率:

    kfold = KFold(n_splits=20, random_state=7, shuffle=True) # 添加shuffle=True以确保结果可复现(Scikit-learn 1.2+版本)
    results = cross_val_score(model, X, Y, cv=kfold)
    print(results.mean())

    输出结果

    plaintext

    0.7790148448043184

    上述输出结果是该设置在数据集上的准确率汇总。

    机器学习管道建模与特征提取

    在机器学习模型的特征提取阶段也可能发生数据泄露。因此,特征提取过程也应受到限制,以防止训练数据集中出现数据泄露。与数据准备阶段类似,通过使用机器学习管道,也可以防止这种数据泄露。管道提供的工具 FeatureUnion(特征联合)可用于此目的。

    示例

    以下是一个 Python 示例,展示了特征提取和模型评估的工作流。本示例同样使用 Scikit-learn 中的皮马印第安人糖尿病数据集。首先,通过主成分分析(PCA)提取 3 个特征;然后,通过统计分析提取 6 个特征;特征提取后,使用 FeatureUnion 工具组合多个特征选择和提取过程的结果;最后,构建一个逻辑回归(Logistic Regression)模型,并使用 20 折交叉验证对管道进行评估。首先,导入所需的库:

    from pandas import read_csv
    from sklearn.model_selection import KFold
    from sklearn.model_selection import cross_val_score
    from sklearn.pipeline import Pipeline
    from sklearn.pipeline import FeatureUnion
    from sklearn.linear_model import LogisticRegression
    from sklearn.decomposition import PCA
    from sklearn.feature_selection import SelectKBest

    接下来,按照之前的示例加载皮马印第安人糖尿病数据集:

    path = r"C:\\pima-indians-diabetes.csv"
    headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
    data = read_csv(path, names=headernames)
    array = data.values
    X = array[:, 0:8]
    Y = array[:, 8]

    然后,创建特征联合:

    features = []
    features.append(('pca', PCA(n_components=3)))
    features.append(('select_best', SelectKBest(k=6)))
    feature_union = FeatureUnion(features)

    接下来,通过以下代码创建管道:

    estimators = []
    estimators.append(('feature_union', feature_union))
    estimators.append(('logistic', LogisticRegression(max_iter=1000))) # 增加max_iter以确保模型收敛
    model = Pipeline(estimators)

    最后,评估该管道并输出其准确率:

    kfold = KFold(n_splits=20, random_state=7, shuffle=True) # 添加shuffle=True以确保结果可复现(Scikit-learn 1.2+版本)
    results = cross_val_score(model, X, Y, cv=kfold)
    print(results.mean())

    输出结果

    plaintext

    0.7789811066126855

    上述输出结果是该设置在数据集上的准确率汇总。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 机器学习 - 自动化工作流
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!