首页 文章

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

提问于
浏览
11

我正在使用Microsoft Azure机器学习工作室尝试一个实验,我使用以前的分析捕获有关用户(一次,一天)尝试预测他们的下一个操作(基于日期和时间),以便我可以调整用户界面相应的 . 因此,如果用户通常每周四下午1点访问某个页面,那么我想预测该行为 .

警告 - 我是一个完全没有ML的新手,但已观看了不少视频,并通过教程如电影推荐示例 .

我有一个带有用户ID,动作,日期时间的csv数据集,并希望训练一个火柴盒推荐模型,从我的研究看起来似乎是最好的模型 . 我无法在培训中看到使用日期/时间的方法 . 我的想法是,如果我可以传入用户ID和日期,那么推荐模型应该能够给我一个用户最有可能做的结果 .

我从预测 endpoints 获得结果,但是训练 endpoints 给出以下错误:

{
    "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 回答

  • 1

    也许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可以是float而不是整数

    • Action是一个整数(如果你有少于100个动作)或float(如果超过100个动作)

    • 日期时间将分为两个整数(或一个整数和一个浮点数),请参阅下面的内容:


    关于:

    (A)在培训中使用日期/时间的方式

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

    • weekday 的一列:

    • 0:星期天

    • 1:星期一

    • 2:星期二

    • [...]

    • 6:星期六

    • time in the day 的一列:

    • 0:00:00至00:15之间

    • 1:00:15至00:30之间

    • 2:00:30至00:40之间

    • [...]

    • 95:23:45至00:00之间

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

  • 2

    所以,从这一段时间搞乱这个问题,我想我可能会看到问题所在 . 我认为需要填写火车火柴盒推荐器的前三个输入以进行准确的预测 . 我还会包含推荐餐馆的样本截图 .

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

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

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

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

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

相关问题