阿里云机器学习平台使用——协同过滤推荐算法快速应用

标签: 数加


概述

PAI机器学习平台是构建在阿里云ODPS计算平台之上,集数据处理、建模、离线预测、在线预测为一体的机器学习平台。 该平台为算法开发者提供了丰富的MPI、PS、BSP等编程框架和数据存取接口,同时为算法使用者提供了基于Web的IDE+可视化实验搭建控制台。平台目前整合了阿里集团内最先进的算法,为用户提供算法服务。

今天做了一件事情来体验PAI,就是拿最经典的电影推荐场景来做协同过滤算法的测试。

数据准备

电影数据来源于http://grouplens.org/datasets/movielens/,本文的例子采用最小的数据集——MovieLens 100k,总共有100,000个评分,每个评分都是在 (1-5)范围内,供有943个用户对1682部电影进行评分。movielens最新的数据已经扩大了好多,有兴趣的同学可以去实验。

工作流开发

  1. 在数加DataIDE里建立一个工作流:电影预测。我们为这个工作流来搭建一个框架。
  2. 添加第一个节点,一个ODPS SQL节点,命名为data_prepare,准备预测的输入输出数据。
  3. 添加第二个节点,一个机器学习节点,命名为recommend,这个节点用来关联PAI平台的算法工作流。
  4. 添加最后一个节点,另一个ODPS SQL节点,命名为view_result,用来查看推荐结果数据。

工作流组成如下:

data_prepare节点的代码如下:

CREATE TABLE IF NOT EXISTS movie_data (
    user_id STRING COMMENT 'user id',
    item_id STRING COMMENT 'movie id',
    rating BIGINT COMMENT 'rating',
    rating_timestamp STRING COMMENT 'rating timestamp'
)
LIFECYCLE 33;

CREATE TABLE IF NOT EXISTS movie_recommend_output (
    item_id STRING COMMENT 'movie id',
    recommend_list STRING COMMENT 'recommend list'
)
LIFECYCLE 33;

这里说明一下,movie_data是输入数据表,就是movielens的100k数据集。movie_recommend_output是协同过滤算法的输出数据表。

建完表后很重要的一步是把数据添加到ODPS里,当然方法有上千种,最简单的一种就是直接通过DataIDE提供的数据上传功能。
点击这个红圈里的小图标就能看到了。

选择导入本地数据,将之前下载好的movielens 100k的目录里的u.data文件上传(这里需要注意的是DataIDE不识别.data后缀的文件,需要将文件rename到u.txt就ok了)。后面选择tab分隔,首行不导入,点击下一步就可以导入到对应的表了。

view_result的代码如下:

SELECT *
FROM movie_recommend_output
LIMIT 10;

算法workflow

框架搭好了,数据也准备好了。最关键的体验时刻到了,我们来看看PAI究竟是如何玩算法的。
点击DataIDE上方的“机器学习平台”打开平台,进去时候需要选择租户。浏览一下,一个基于画布组件拖拽的界面展示在眼前。

第一步要建立一个实验,本文建立一个实验叫做rec_test

一个最简单的算法工作流也要包含几个步骤:
1. 数据输入
2. 算法运行
3. 数据输出

数据输入我们先从左侧导航栏里拖一个“源/目标”组件——“读ODPS表”到画布中,点击组件,在右侧配置表名——刚才已经在DataIDE加工好的movie_data。

接下来从左侧“机器学习”-“关联推荐”里拉一个“协同过滤etrec”组件到画布中。点击后在右侧配置协同过滤算法需要的参数。

etrec是阿里巴巴集团搜索算法团队开发的运行于ODPS上的基于商品的协同过滤算法。
etrec接受一个两列或者三列的表输入,也就是inputTableName为两列或者三列,对应inputColNames为两列或者三列也可。如果是三列的情况下,要求第三列为数值类型。
第一列对应user,第二列对应item,第三列对应payload。输出表第一列对应main item, 后续的列对应main item的topN个推荐item list。这个list以kv形式存储。两个kv之间用','分割,k-v之间用':'分割。

对etrec有兴趣的同学,我们可以后续邀请etrec的作者将更多的内容输出到。

首先要配置etrec算法的输入,要选择user-item-payload形式的字段。

然后配置参数,为了简单,我修改了默认top 2000的输出,修改为10。

最后拉一个“写ODPS表”的组件到画布中,用来将推荐的结果写到表里。这里表名就配置刚才提到的输出表:movie_recommend_output。

把他们都串起来后,点击屏幕下方的运行,一个算法的workflow就开始运行了。

运行ok后,回到DataIDE,在recommend节点里将rec_test的实验配置进来,同时运行view_result查看数据,发现数据已经算好。

配置IDE里的机器学习节点:

最后view_result查询结果如下:

itemid similarity
1000 304:0.01676046424 327:0.01661129281 690:0.01619649974 319:0.01618656974 307:0.016030702 678:0.01547486618 271:0.01490306017 276:0.01390136223 333:0.01321877343 286:0.009970226923
1015 689:0.02147827862 509:0.02132089743 747:0.02105407976 123:0.01873051453 895:0.0181759286 264:0.01773048459 306:0.01717658334 213:0.01688013218 682:0.01660011464 346:0.01654541667
1020 342:0.01762586756 975:0.01750440284 741:0.01731691169 849:0.01708816675 450:0.0169587199 27:0.01662833382 984:0.01603857983 790:0.01568657541 827:0.0149666991 831:0.01402610377
1035 844:0.0131411652 1142:0.01274707491 303:0.01223879381 813:0.0119001581 896:0.01187640877 261:0.01167792925 297:0.01132058693 872:0.01108132397 887:0.008978056052 311:0.008082707542
1042 59:0.01745097118 1039:0.01701451066 287:0.01673068855 682:0.01636340226 529:0.01608632908 312:0.01556095522 242:0.01312685541 324:0.0129800464 346:0.01170868453 259:0.01088178974
1053 306:0.01704915755 299:0.01701705749 898:0.01668891986 663:0.01602924228 324:0.01514042712 520:0.01390312532 331:0.01200231813 199:0.01197333239 242:0.01171316064 515:0.00992645675
1058 205:0.01937102341 170:0.0188263176 311:0.01861660626 312:0.01841353941 340:0.01808220486 169:0.01800534012 484:0.01735791837 511:0.01731592491 514:0.01635809654 242:0.01478030056
1086 754:0.01912158729 625:0.0191098618 513:0.01883058854 683:0.01878339802 661:0.01875523767 163:0.0177114301 346:0.01755236764 152:0.0172481773 311:0.01680141135 751:0.01342726574
1089 674:0.01703218764 1021:0.01694030231 606:0.01666525177 844:0.01589848019 513:0.01585807491 1065:0.01561581563 499:0.01425892501 131:0.01420383872 647:0.01406376859 19:0.01396364253
1097 280:0.01702140979 157:0.01615647037 660:0.01551820464 225:0.01546419268 38:0.01537917448 316:0.01535439113 66:0.01529470015 449:0.01507021427 1028:0.01295717842 315:0.0115311557

一切结束。

总结

通过这个例子,我们看到,通过阿里云数加大数据平台做机器学习是个非常容易的事情。欢迎大家多体验PAI平台给算法应用带来的便捷。

时间: 2025-01-21 02:56:23

阿里云机器学习平台使用——协同过滤推荐算法快速应用的相关文章

阿里云机器学习平台的思考

最近读了阿里的<大数据之路-阿里巴巴大数据实践>,对于其机器学习平台也蛮感兴趣,正好阿里出了本新书<解析阿里云机器学习平台>,顺便读了下,感触也不少,结合最近团队机器学习的一些思考,特别在此分享于你. 一.机器学习的门槛降得更低了 这本书的第一章是这么描述阿里云机器学习平台的,"阿里云机器学习平台是构建在阿里云MaxCompute计算平台之上,集数据处理.建模.离网预测.在线预测为一体的机器学习算法平台,用户通过拖曳可视化的操作组件来进行试验,使得没有机器学习背景的工程师

阿里云机器学习平台编程模型演进之路

票选最美云上大数据暨大数据技术峰会上,阿里云大数据事业部高级专家九丰为大家带来题为"阿里云机器学习平台编程模型演进之路"的演讲.本文主要从机器阿里云机器学习平台PAI开始谈起,重点分享了PAI分布式机器学习平台的多种编程模型,包括MapReduce.Parameter Server和MPI等,也简谈了TensorFlow和Pluto.   以下为精彩内容整理: 随着训练数据规模的持续扩大,模型特征的持续增长,常用的机器学习算法面临着越来越多的挑战.从很多人熟悉的R语言,到基于MPI的多

阿里云机器学习平台——PAI平台

在云栖TechDay第十五期活动上,阿里云iDST资深技术专家褚崴给大家带来了<阿里云机器学习平台>的分享,他以机器学习的概念入手展开了此次分享,演讲中他重点介绍了阿里云机器学习平台的基础架构和产品特点,并结合阿里内部的芝麻信用分.推荐系统等场景讲解了PAI平台的具体应用方案. 下文根据褚崴的演讲内容整理.   机器学习 图一 机器学习分类 机器学习简单来说就是,人教机器在我们积累的数据当中发现规律,然后能够辅助我们来做一些预测和决策. 机器学习笼统地讲可以分为三类: 1)有监督学习(supe

阿里云机器学习平台PAI,助力降低机器学习的成本和技术门槛

摘要:在2017杭州云栖大会机器学习平台PAI专场上,阿里巴巴研究员.阿里云机器学习平台PAI负责人林伟为大家分享了人工智能的发展历史以及阿里云机器学习平台PAI的简单情况和特性.   本文内容根据嘉宾演讲视频以及PPT整理而成.   人工智能发展历史 人工智能是从上个世纪50年代达特茅斯会议开始兴起的,之后马上就达到了一个快速发展的时期,在这个时期奠定了人工智能基础的研究方法,包括像逻辑推演以及一些统计学方法,比如深度学习以及神经网络等.但是当时因为算法和模型的一些局限性,所以找不到比较有效果

基于用户的协同过滤推荐算法原理和实现

      在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法.       本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想       俗话说"物以类聚.人以群分",拿看电影这个例子来说,如果你喜欢<蝙蝠侠&

推荐算法---协同过滤推荐算法

基于用户的协同过滤推荐算法原理和实现       在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法.       本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想       俗话说"物以类聚.人以群分",拿看电影这

阿里云机器学习——让人工智能触手可及

1.概述 近期,阿里云计划将旗下机器学习平台正式商业化发布.说到机器学习可能有些人会比较迷惑,但是提到人工智能,人们马上就联想到了刷脸支付.人机智能交互.商品智能推荐等场景,机器学习算法就是助力这些人工智能应用的底层算法. 最近几年,机器学习发展趋势火热,主要是我们在深度学习技术上取得了一定的进展,总结起来应该是三大因素: 数据:互联网上每天生成海量的数据,有图像.语音.视频.还有各类传感器产生的数据,例如各种定位信息.穿戴设备:非结构化的文本数据也是重要的组成部分.数据越多,深度学习越容易得到

阿里云机器学习8月特别推荐

阿里云机器学习·简介 阿里云机器学习平台是一套基于MaxCompute(阿里云分布式计算引擎)的数据挖掘.建模.预测的工具.它提供算法开发.分享.模型训练.部署.监控等一站式算法服务,用户可以通过可视化的操作界面来操作整个实验流程,同时也支持命令,让用户通过命令行来操作实验. 8月特别推荐 众所周知,在很多业务场景的大数据处理中,经常需要挖掘海量数据背后的商业价值.阿里云数加平台推出机器学习开发工具大大提高了数据挖掘的效率,然而缺乏数据.缺乏场景成为大多数用户学习阿里云数加机器学习平台的难题.没

【玩转数据系列十】利用阿里云机器学习在深度学习框架下实现智能图片分类

伴随着今日阿里云机器学习PAI在云栖大会的重磅发布,快来感受下人工智能的魅力. 一.背景 随着互联网的发展,产生了大量的图片以及语音数据,如何对这部分非结构化数据行之有效的利用起来,一直是困扰数据挖掘工程师的一到难题.首先,解决非结构化数据常常要使用深度学习算法,上手门槛高.其次,对于这部分数据的处理,往往需要依赖GPU计算引擎,计算资源代价大.本文将介绍一种利用深度学习实现的图片识别案例,这种功能可以服用到图片的检黄.人脸识别.物体检测等各个领域. 下面尝试通过阿里云机器学习平台产品,利用深度