根据当前日期和时间预测用户的下一个操作

时间:2018-03-19 13:46:14

标签: azure machine-learning analytics azure-machine-learning-studio

我正在使用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

任何帮助都将不胜感激。

感谢。

enter image description here

2 个答案:

答案 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)在培训中使用日期/时间的方式

您可以将日期时间分为两列,例如:

  • 工作日的一栏:

    • 0:星期天
    • 1:星期一
    • 2:星期二
    • [...]
    • 6:星期六
  • 当天时间的一栏

    • 0:00:00之间00:15
    • 1:00:15& 00:30
    • 2:00:30之间00:40
    • [...]
    • 95:23:45之间& 00:00

如果您需要更好的粒度(这里是15分钟的窗口),您也可以使用浮点数作为时间列。

答案 1 :(得分:1)

因此,暂时搞砸这个问题,我想我可能会发现问题所在。我认为需要填写火车火柴盒推荐器的前三个输入以进行准确预测。我还会包含推荐餐馆的样本截图。

第一个输入是由用户,项目和评级组成的数据集。 Ratings data

第二个输入是每个用户的功能。 User data

第三个输入将是每个功能的特征(在这种情况下为餐厅)。 Restaurant data

因此,为了帮助解决日期/时间问题,我想知道是否需要将数据用于匹配与餐馆和用户数据类似的内容。

我知道这并不多,但我希望它能帮助你走上正轨。