了解如何使用模型生成器训练推荐模型来推荐电影。
在本教程中,你将:
- 准备和了解数据
- 创建模型生成器配置文件
- 选择场景
- 加载数据
- 训练模型
- 评估模型
- 使用模型
先决条件
有关先决条件和安装说明的列表,请访问 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
文件跟踪模型生成器中所做的一切,以便重新打开会话。
- 在解决方案资源管理器中,右键单击 MovieRecommender 项目,然后选择添加 > 机器学习模型。
- 在对话框中,将模型生成器项目命名为 MovieRecommender,然后单击 添加。
选择情境
若要训练模型,需要从模型生成器提供的可用机器学习方案列表中选择。
对于此示例,任务是推荐。 在 Model Builder 工具的“方案”步骤中,选择“推荐”方案。
选择环境
模型生成器可以根据所选方案在不同的环境中运行训练。
选择 本地 作为环境,然后单击 下一步 按钮。
加载数据
- 在 Model Builder 工具的数据步骤中,选择“选择文件夹”文本框旁边的按钮。
- 使用文件资源管理器浏览并选择下载的文件 - recommendation-ratings-train.csv。
- 请选择 “下一步” 按钮以进入模型生成器的下一步。
- 加载数据后,在“要预测的列”下拉列表中选择“评级”。
- 对于“用户列”下拉列表,选择“userId”。
- 对于“项列”下拉列表,选择“movieId”。
训练模型
用于训练建议模型的机器学习算法是矩阵分解。 在模型训练过程中,模型生成器对算法使用不同的设置来查找数据集的性能最佳的模型。
模型训练所需的时间与数据量成正比。 模型生成器根据数据源的大小自动为 训练时间(秒) 选择默认值。
- 模型生成器将 训练时间(秒) 的值设置为 60 秒。 训练时间较长,模型生成器可以探索更多算法和参数组合,以搜索最佳模型。
- 单击“开始训练”。
在训练过程中,进度数据显示在训练步骤中的 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)
控制台应用
将控制台应用添加到解决方案时,系统会提示你为项目命名。
对于控制台模板,请选择“添加到解决方案”。
将控制台项目命名为 MovieRecommender_Console。
单击“添加到解决方案”以将项目添加到当前解决方案。
运行应用程序。
程序生成的输出应类似于以下代码片段:
UserId: 1 MovieId: 1 Rating: 4 Predicted Rating: 4.577113
Web API(网络应用程序接口)
将 Web API 添加到解决方案时,系统会提示你为项目命名。
对于 Web API 模板,请选择“添加到解决方案”。
将 Web API 项目命名为 MovieRecommender_WebApi。
单击 "添加到解决方案"*,将项目添加到您的当前解决方案中。
运行应用程序。
打开 PowerShell 并输入以下代码,其中 PORT 是应用程序正在侦听的端口。
$body = @{ UserId=1.0 MovieId=1.0 } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
如果成功,输出应类似于下面的文本。 分数输出将是请求的用户 ID 和电影 ID 的预测评级。
score ----- 4.577113
祝贺! 你已成功生成机器学习模型,以使用Model Builder对健康违规的风险进行分类。 可以在 dotnet/machinelearning-samples GitHub 存储库中找到本教程的源代码。
其他资源
若要详细了解本教程中提到的主题,请访问以下资源: