我正在使用Microsoft Azure机器学习工作室尝试一个实验,我使用先前捕获的关于用户的分析(一次,一天)来尝试预测他们的下一个行动(基于日期和时间),以便我可以相应地调整UI。因此,如果用户通常每周四下午1点访问某个页面,那么我想预测这种行为。
警告 - 我是一个完全没有ML的新手,但是观看过很多视频,并通过电影推荐示例等教程进行了研究。
我有一个带有用户ID,动作,日期时间的csv数据集,并且想要训练一个火柴盒推荐模型,从我的研究看起来似乎是最好的模型。我无法在培训中看到使用日期/时间的方法。我的想法是,如果我可以传入用户ID和日期,那么推荐模型应该能够给我一个可能的用户最有可能做的结果。
我从预测性终点获得结果,但是训练终点出现以下错误:
{
"error": {
"code": "ModuleExecutionError",
"message": "Module execution encountered an error.",
"details": [
{
"code": "18",
"target": "Train Matchbox Recommender",
"message": "Error 0018: Training dataset of user-item-rating triples contains invalid data."
}
]
}
}
Here is a link to a public version of the experiment
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:2)
也许this answer可能会有所帮助,您也可以查看on this,您可以阅读:
问题可能在于评级数据的范围。评级范围有一个上限,因为如果最小和最大评级之间的范围太大,培训会变得昂贵。
[...]
一种选择是将评级缩小到更窄的范围。
根据此MSDN,请注意,最小和最大音符之间的间隔不能高于100
。
因此,您必须对csv文件列数据(userid,action,datetime等)进行预处理,以便将所有列数据保持在[0-99]
范围内。
请参阅下面的Python实现(分享逻辑):
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
big_gap_arr = [-250,-2350,850,-120,-1235,3212,1,5,65,48,265,1204,65,23,45,895,5000,3,325,3244,5482] #data with big gap
abs_min = abs(min(big_gap_arr)) #get the absolute minimal value
max_diff= ( max(big_gap_arr) + abs_min ) #get the maximal diff
specific_range_arr=[]
for each_value in big_gap_arr:
new_value = ( 99/1. * float( abs_min + each_value) / max_diff ) #get a corresponding value in the [0,99] range
specific_range_arr.append(new_value)
print specific_range_arr #post computed data => all in range [0,99]
哪个给你:
[26.54494382022472, 0.0, 40.449438202247194, 28.18820224719101, 14.094101123595506, 70.3061797752809, 29.71769662921348, 29.76825842696629, 30.526685393258425, 30.31179775280899, 33.05477528089887, 44.924157303370784, 30.526685393258425, 29.995786516853933, 30.27387640449438, 41.01825842696629, 92.90730337078652, 29.742977528089888, 33.813202247191015, 70.71067415730337, 99.0]
请注意,所有数据现在都在[0,99]
范围
遵循这个过程:
用户ID可以是浮点数而不是整数
动作是一个整数(如果你的动作少于100个)或浮动(如果超过100个动作)
日期时间将分为两个整数(或一个整数和一个浮点数),请参见下文:
关于:
(A)在培训中使用日期/时间的方式
您可以将日期时间分为两列,例如:
工作日的一栏:
当天时间的一栏:
如果您需要更好的粒度(这里是15分钟的窗口),您也可以使用浮点数作为时间列。
答案 1 :(得分:1)