【问题标题】:How to handle input data more than 2 dimension in machine learning如何在机器学习中处理超过二维的输入数据
【发布时间】:2018-02-16 00:52:14
【问题描述】:

这些天我正在学习机器学习课程。我发现示例输入数据是这样的(例如,恶性肿瘤分类):

/    size   gender    classification

m1  100     male      malignant

m2   50    female     benign

所有这些数据都可以放入一个m * n矩阵,其中m是样本数,n是特征数。

如果输入的数据不是行列的形式怎么办。例如,我想通过客户的订单历史来预测客户是否恶意。并且输入数据的形式为:

我有多个客户:

[c1, c2, c3]

一个客户有多个订单:

[o1, o2, o3]

每个订单都有属性:

[orderDate, itemName. itemType, isPayed]

所以我认为我不能将这些数据放入矩阵中。在程序代码中,它应该是一个三维数组。

如何处理这种数据?

【问题讨论】:

  • 对于这类问题,理想情况下我会使用时间序列建模。检查流失率预测问题,您可能会得到一些想法。
  • 每个客户的订单数量是否相同?
  • @ashwinids 不,它们是不同的
  • 您可以使用循环神经网络及其变体。

标签: machine-learning neural-network svm


【解决方案1】:

也许您可以为每个订单使用不同的模型。如果客户不是恶意的,则每个订单都应输出 0,否则应输出 1。然后,使用复数投票以获得您的结果。

【讨论】:

  • 嗨 gdaras,你的意思是我应该把我的问题改成恶意订单预测? em...听起来是一种可能的解决方法
  • 是的。实际上,您假设每个订单类别(orderName、itemName 等)都独立地指示客户订单是否是恶意的。所以逻辑是,如果很多订单类别表明你是恶意的,那么你很可能是!
【解决方案2】:

您可以将整个订单集视为可变长度的时间序列,并使用循环神经网络对该序列执行分类/预测。

例如客户 1 的时间步长可能是 o1、o2、o3,而客户 2 有 o1、o2、o3、o4、o5。

每个时间步都有 4 个特征维度(您的订单属性)。客户 1 的完整时间序列输入如下所示(每列是一个时间步长):

+--------------+--------------+--------------+--------------+ 
| o1.orderDate | o2.orderDate | o3.orderDate | o4.orderDate |
+--------------+--------------+--------------+--------------+ 
| o1.itemName  | o2.itemName  | o3.itemName  | o4.itemName  |
+--------------+--------------+--------------+--------------+ 
| o1.itemType  | o2.itemType  | o3.itemType  | o4.itemType  |
+--------------+--------------+--------------+--------------+ 
| o1.isPaid    | o2.isPaid    | o3.isPaid    | o4.isPaid    |
+--------------+--------------+--------------+--------------+

假设训练数据被正确标记,此设置还将发现在事件之间具有某种时间依赖性的欺诈行为。

看看这个教程。

https://r2rt.com/recurrent-neural-networks-in-tensorflow-iii-variable-length-sequences.html

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2011-01-16
    • 2018-08-18
    • 1970-01-01
    • 2017-06-23
    • 2014-06-13
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多