【问题标题】:Predicting a users next action based on current day and time根据当前日期和时间预测用户的下一步操作
【发布时间】:2023-04-06 01:16:01
【问题描述】:

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

警告 - 我是 ML 的完全新手,但看过不少视频并学习过电影推荐示例等教程。

我有一个包含 userid、action、datetime 的 csv 数据集,并且想训练一个 matchbox 推荐模型,从我的研究来看,它似乎是最好的模型。我看不到在培训中使用日期/时间的方法。这个想法是,如果我可以传入用户 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

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 是否可以在 ML Studio 中显示您的工作流程?我最初的想法是这些功能是如何构建到模型中的,但不能确定。 :)
  • 当然,但它的价值不大,因为它远不及功能性
  • 我也会向split 推荐您的数据。这在评估模型的性能时应该会有所帮助。

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


【解决方案1】:

也许this answer 可能会有所帮助,你也可以看看on this 在那里你可以阅读:

问题可能在于评级数据的范围。评分范围有一个上限,因为如果最小评分和最大评分之间的范围太大,训练会变得很昂贵。

[...]

一种选择是将评级缩小到更窄的范围。

根据此 MSDN,请注意,最小和最大注释之间的差距不能高于 100

因此,您必须对 csv 文件列数据(用户 ID、操作、日期时间等)进行预处理,以便将所有列数据保持在 [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 可以是浮点数而不是整数

  • Action 是整数(如果您的操作少于 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 分钟的窗口),您也可以使用浮点数作为时间列。

【讨论】:

    【解决方案2】:

    因此,暂时不考虑这个问题,我想我可能会发现问题出在哪里。我认为需要填写 Train Matchbox Recommender 的前三个输入以获得准确的预测。我还会附上用于推荐餐厅的示例截图。

    第一个输入是由用户、项目和评分组成的数据集。

    第二个输入是每个用户的特征。

    第三个输入是每个特征的特征(在这种情况下是餐厅)。

    所以为了帮助解决日期/时间问题,我想知道是否需要对数据进行修改以匹配类似于餐厅和用户数据的内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多