纺织行业网站怎么做,青海找人做网站多少钱,百度指数怎样使用,天津站内关键词优化本实验选用数据为UCI开源数据集#xff0c;仅用于学习#xff0c;请勿商用#xff09;
WideDeep推荐算法出自一篇论文《WideDeep Learning for RecommenderSystems》#xff0c;WideDeep由两部分组成#xff0c;分别是Wide和Deep。先来说wide#xff0c;…本实验选用数据为UCI开源数据集仅用于学习请勿商用
WideDeep推荐算法出自一篇论文《WideDeep Learning for RecommenderSystems》WideDeep由两部分组成分别是Wide和Deep。先来说wide表示的是generalized的推荐系统传统的推荐系统都是通过线性算法基于离散特征来做推荐的。Wide推荐通常是这样的系统通过获得用户的购物日志数据包括用户点击哪些商品购买过哪些商品然后通过one-hot编码的方式构成离散特征或者通过对业务的理解衍生出一些特征并进行计算类似于本系列文章第二篇。这种wide推荐方式有非常多的好处比如对于大规模的稀疏数据有很好的效果而且模型的解释性很强。什么叫模型的解释性呢以逻辑回归为例每个特征都对应模型中的一个权重值每个特征的权重值的大小跟这个特征对结果的影响是有关的。那么wide方式同样有很多缺点比如我们一直强调的特征衍生需要很多人为操作需要专家经验另外这种推荐只对用户操作过的商品有效。
接着讲下deep这里的deep表示的是通过深度学习学习出来的一些向量这些向量是隐性特征往往是没有明确可解释性的。这些向量也可以作为特征的一部分参与到训练中。通过deep方式产生的特征会有以下好处其一可以拟补人为提取特征造成的人力思考维度的限制试想下一个人可以轻易的思考出二阶乘法的结果如果是五阶呢其二这部分特征是深度学习框架自动生成的无需人力干预。 既然Wide和Deep算法各有千秋那如果可以将两种算法作为组合那么一定可以生成更有效的推荐场景的模型本文就介绍如何在PAI-DSW上实现基于WideDeep的预测。
一、业务场景描述
本节使用的是PAI-DSW云端深度学习训练平台和PAI-EAS模型服务平台使用的是一份开源的基于人的各种背景的统计数据解决的问题是基于人的各种基础数据预测每个人收入是否会超过50K。
本实验的全部代码和数据已经内置于PAI-DSW只要打开DSW就可以安装下方的教程运行实验。 二、数据集介绍
数据源引用UCI开源数据源https://archive.ics.uci.edu/ml/datasets/CensusIncome 具体特征字段如下
字段名含义类型描述age对象年龄double对象的年龄大小workclass工作性质string自由职业者、私企、企业人员、政府工作者、无业游民等fnlwgt连续数据double-education学历string学士、说是、博士、11th、10th、1s-4th等等education-num教育年限double教育年限marital-status婚姻状况string单身、未婚、离异等等occupation职业string工程师、农民、销售等等relatonship家庭角色string妻子、父亲、没家庭等等race人种string亚裔、白人、黑人等等sex性别string女性、男性capital-gain连续数据double-capital-loss连续数据double-hours-per-week连续数据double-native-country祖籍国家string美国、哥伦比亚、英格兰、加拿大等等
目标字段income是否超过50k
三、数据探索流程
首先进入PAI-DSW找到左侧的Demo文件夹下载WideDeep数据集及代码包。 1工程描述
首先看下整个工程
包含一个census_data文件夹里面包含一个训练数据和一个测试数据official文件夹是一个工具包census_main.py为训练脚本2训练模型
打开一个terminal环境执行
python census_main.py --export_dir wide_deep_saved_model
wide_deep_saved_model为输出模型所在的文件夹训练完在文件目录下会找到相应文件打开后可以看到checkpoint 把这个checkpoint的号记住。
3模型预测
现在已经生成了模型的checkpoint输出接下来进入terminal运行以下脚本
saved_model_cli run --dir wide_deep_saved_model/${模型checkpoint号码}/ --tag_set serve --signature_defpredict --input_examples${预测数据}
根据本文的案例可以执行以下脚本拿到预测结果
saved_model_cli run --dir wide_deep_saved_model/1542168326/ --tag_set serve --signature_defpredict --input_examplesexamples[{age:[46.], education_num:[10.], capital_gain:[7688.], capital_loss:[0.], hours_per_week:[38.]}, {age:[24.], education_num:[13.], capital_gain:[0.], capital_loss:[0.], hours_per_week:[50.]}]
输入了两条预测数据最终拿到预测结果 输入了两条预测数据可以得到预测输出第一条预测结果为1第二条结果为0可以通过output key probabilities判断注矩阵第一行对应第一个预测结果第二列0.9599956第一列0.04000434所以第一个预测结果是1。同理第二个预测结果是0。
可以通过代码official/wide_deep/census_dataset.py来看具体的特征工程的特征和目标值的构建目标列50k时目标值为1目标列50k时目标值为0。
于是预测结果第一条的人的预测收入为50k预测结果第二条的人的预测收入50k。
4模型在线部署
生成的模型是Tensorflow的标准模型格式可以通过PAI-EAS将模型部署成Http服务供调用。
后续流程可以参考在线预测文档https://help.aliyun.com/document_detail/92917.html
部署成在线服务之后这样就可以做到模型跟用户自身的业务结合完成PAI模型训练和业务应用的打通。
原文链接 本文为云栖社区原创内容未经允许不得转载。