东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

ag亚游开户

15566743218
联系方式
全国服务热线: 15566743218

咨询热线:18895802597
联系人:朱荣富
地址:西藏自治省拉萨市林廓北路

ML.NET 示例:推荐之场感知分解机

来源:ag亚游开户   发布时间:2019-11-25   点击量:84

写在前面

准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正。如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn

Movie Recommender

ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法
v0.7动态 API需要升级到v0.8终端应用程序.csv电影推荐推荐场感知分解机

概述

MovieRecommender是一个简单的应用程序,它构建和使用推荐模型。

这是一个关于如何使用推荐来增强现有ASP.NET应用程序的终端示例。

本示例从流行的Netflix应用程序中汲取了灵感,并且尽管这个示例主要关注电影推荐,但是可以很容易地应用于任何类型的产品推荐。

特点

Web应用程序这是一个终端ASP.NET应用程序,它包含了三个用户"Ankit","Cesar","Gal"。然后,它使用ML.NET推荐模型给这三个用户提供建议。推荐模型应用程序使用MovieLens数据集构建推荐模型。模型训练代码使用基于协同过滤的推荐方法。

它如何工作?

训练模型

Movie Recommender 使用基于协同过滤的推荐方法。

协同过滤的基本假设是,如果A(例如Gal)在某个问题上与B(例如Cesar)具有相同的观点,则A(Gal)更有可能在另一个问题上具有和B(Cesar)相同的意见,而不是一个随机的人。

对于此示例,我们使用 http://files.grouplens.org/datasets/movielens/ml-latest-small.zip 数据集。

模型训练代码可以在MovieRecommender_Model中找到。

模型训练遵循以下四个步骤来构建模型。 您可以先跳过代码并继续。

使用模型

通过以下步骤在Controller中使用训练的模型。

1. 创建ML.NET环境并加载已经训练过的模型

// 1. Create the ML.NET environment and load the MoviesRecommendation Model var ctx = new MLContext(); ITransformer loadedModel; using (var stream = new FileStream(_movieService.GetModelPath(), FileMode.Open, FileAccess.Read, FileShare.Read)) { loadedModel = ctx.Model.Load(stream); }

2. 创建预测函数以预测一组电影推荐

//3. Create a prediction function var predictionfunction = loadedModel.MakePredictionFunction<RatingData, RatingPrediction>(ctx); List<Tuple<int, float>> ratings = new List<Tuple<int, float>>(); List<Tuple<int, int>> MovieRatings = _profileService.GetProfileWatchedMovies(id); List<Movie> WatchedMovies = new List<Movie>(); foreach (Tuple<int, int> tuple in MovieRatings) { WatchedMovies.Add(_movieService.Get(tuple.Item1)); } RatingPrediction prediction = null; foreach (var movie in _movieService._trendingMovies) { // Call the Rating Prediction for each movie prediction prediction = predictionfunction.Predict(new RatingData { userId = id.ToString(), movieId = movie.MovieID.ToString()}); // Normalize the prediction scores for the "ratings" b/w 0 - 100 var normalizedscore = Sigmoid(prediction.Score); // Add the score for recommendation of each movie in the trending movie list ratings.Add(Tuple.Create(movie.MovieID, normalizedscore)); }

3. 为要显示的视图提供评分预测

ViewData["watchedmovies"] = WatchedMovies; ViewData["ratings"] = ratings; ViewData["trendingmovies"] = _movieService._trendingMovies; return View(activeprofile);

替代方法

这个示例显示了许多可以用于ML.NET的推荐方法之一。根据您的特定场景,您可以选择以下任何最适合您的用例的方法。

场景算法示例链接
您想使用诸如用户Id、产品Id、评分、产品描述、产品价格等属性(特性)作为推荐引擎。在这种场景中,场感知分解机是一种通用的方法,您可以使用它来构建推荐引擎场感知分解机当前示例
你有用用户购买行为中的户ID,产品和评分。对于这种情况,您应该使用矩阵分解法矩阵分解矩阵分解 - 推荐
你仅有用户购买行为中用户Id和产品Id,但是没有评分。 这在来自在线商店的数据集中很常见,您可能只能访问客户的购买历史记录。 有了这种类型的推荐,你可以建立一个推荐引擎用来推荐经常购买的物品。One Class 矩阵分解Product Recommender

相关产品

COPYRIGHTS©2017 ag亚游开户 ALL RIGHTS RESERVED 备案号:84