使用模型生成器训练建议模型

了解如何使用模型生成器训练推荐模型来推荐电影。

在本教程中,你将:

  • 准备和了解数据
  • 创建模型生成器配置文件
  • 选择场景
  • 加载数据
  • 训练模型
  • 评估模型
  • 使用模型

先决条件

有关先决条件和安装说明的列表,请访问 Model Builder 安装指南

创建 C# 类库

创建名为“MovieRecommender”的 C# 类库

准备和了解数据

有多种方法可以解决推荐问题,例如推荐电影列表或推荐相关产品列表,但在这种情况下,你将预测用户向特定电影提供什么评级(1-5),如果电影高于定义的阈值(评分越高,用户喜欢特定电影的可能性越高),建议该电影。

右键单击 recommendation-ratings-train.csv 并选择“保存链接(或目标)...”。

数据集中的每个行都包含有关电影分级的信息。

userId movieId rating timestamp
1 1 4 964982703
  • userId:用户的 ID
  • movieId 电影的 ID
  • 评级:用户对电影进行的评分
  • timestamp:进行评价的时间戳

创建模型生成器配置文件

首次将模型生成器添加到解决方案时,系统会提示你创建 mbconfig 文件。 mbconfig 文件跟踪模型生成器中所做的一切,以便重新打开会话。

  1. 在解决方案资源管理器中,右键单击 MovieRecommender 项目,然后选择添加 > 机器学习模型
  2. 在对话框中,将模型生成器项目命名为 MovieRecommender,然后单击 添加

选择情境

模型生成器方案屏幕

若要训练模型,需要从模型生成器提供的可用机器学习方案列表中选择。

对于此示例,任务是推荐。 在 Model Builder 工具的“方案”步骤中,选择“推荐”方案

选择环境

模型生成器可以根据所选方案在不同的环境中运行训练。

选择 本地 作为环境,然后单击 下一步 按钮。

加载数据

  1. 在 Model Builder 工具的数据步骤中,选择“选择文件夹”文本框旁边的按钮
  2. 使用文件资源管理器浏览并选择下载的文件 - recommendation-ratings-train.csv
  3. 请选择 “下一步” 按钮以进入模型生成器的下一步。
  4. 加载数据后,在“要预测的列”下拉列表中选择“评级”
  5. 对于“用户列”下拉列表,选择“userId”
  6. 对于“项列”下拉列表,选择“movieId”

训练模型

用于训练建议模型的机器学习算法是矩阵分解。 在模型训练过程中,模型生成器对算法使用不同的设置来查找数据集的性能最佳的模型。

模型训练所需的时间与数据量成正比。 模型生成器根据数据源的大小自动为 训练时间(秒) 选择默认值。

  1. 模型生成器将 训练时间(秒) 的值设置为 60 秒。 训练时间较长,模型生成器可以探索更多算法和参数组合,以搜索最佳模型。
  2. 单击“开始训练”

在训练过程中,进度数据显示在训练步骤中的 Training results 部分。

  • 状态显示训练过程的完成状态。
  • “最佳品质”是截至目前由 Model Builder 找到的性能最佳的模型的 R2。 较低的 R Squared 表示模型在测试数据上预测得更正确。
  • 最佳算法显示模型生成器迄今执行的最佳性能算法的名称。
  • 最后一个算法显示模型生成器最近用于训练模型的算法的名称。

训练完成后,mbconfig 文件将会生成一个名为 MovieRecommender.zip 的模型,并附带两个 C# 文件:

  • MovieRecommender.consumption.cs:此文件包含一个公开方法 Predict,用于加载模型并创建 PredictionEngine 以进行预测。 PredictionEngine 是一种方便的 API,可用于对单个数据实例进行预测。
  • MovieRecommender.training.cs:此文件包含模型生成器想出用于生成最佳模型的训练管道,包括它使用的任何超参数。

单击 下一步 按钮导航到评估步骤。

评估模型

训练步骤的结果将是一个具有最佳性能的模型。 在 Model Builder 工具的评估步骤中,“最佳模型”部分将包含“模型”项中性能最佳的模型使用的算法,并包含“RSquared”中的指标

此外,在 Visual Studio 的“输出”窗口中,会有一个包含顶级模型及其指标的汇总表

在本部分中,还可以通过执行单个预测来测试模型。 它为你提供了文本框来输入每个特征列的值,并且你可以选择预测按钮,使用最佳模型来获得预测结果。 默认情况下,数据集中的第一行将填充此项。

(可选)使用模型

此步骤将包含可用于使用模型的项目模板。 此步骤是可选的,可以选择最适合你如何为模型提供服务的方法。

  • 控制台应用
  • 网络应用程序接口 (Web API)

控制台应用

将控制台应用添加到解决方案时,系统会提示你为项目命名。

  1. 对于控制台模板,请选择“添加到解决方案”。

  2. 将控制台项目命名为 MovieRecommender_Console

  3. 单击“添加到解决方案”以将项目添加到当前解决方案。

  4. 运行应用程序。

    程序生成的输出应类似于以下代码片段:

    UserId: 1
    MovieId: 1
    Rating: 4
    
    Predicted Rating: 4.577113
    

Web API(网络应用程序接口)

将 Web API 添加到解决方案时,系统会提示你为项目命名。

  1. 对于 Web API 模板,请选择“添加到解决方案”。

  2. 将 Web API 项目命名为 MovieRecommender_WebApi

  3. 单击 "添加到解决方案"*,将项目添加到您的当前解决方案中。

  4. 运行应用程序。

  5. 打开 PowerShell 并输入以下代码,其中 PORT 是应用程序正在侦听的端口。

    $body = @{
        UserId=1.0
        MovieId=1.0
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  6. 如果成功,输出应类似于下面的文本。 分数输出将是请求的用户 ID 和电影 ID 的预测评级。

    score
    -----
    4.577113
    

祝贺! 你已成功生成机器学习模型,以使用Model Builder对健康违规的风险进行分类。 可以在 dotnet/machinelearning-samples GitHub 存储库中找到本教程的源代码。

其他资源

若要详细了解本教程中提到的主题,请访问以下资源: