【问题标题】:How does one store multidimensional features?如何存储多维特征?
【发布时间】:2021-03-09 02:16:07
【问题描述】:

大多数机器学习应用程序的教科书示例使用 2D design matrix 来存储训练数据。例如,iris dataset 是四个单值数字特征的集合。但是,如果其中一个特征是时间序列,即带时间戳的数字特征系列怎么办?可以将这些特征值中的每一个存储在字典中,其中键是时间戳,

time_dep_feature = {'20200103 08:20:04': 5, '20200103 16:54:10': 2, '20200215 14:31:16': 7, ···}

那么问题是设计矩阵的其余部分是二维的,而time_dep_feature 在第三维中上升。上面的字典解决方案很容易被 Python 读取,但仍然很麻烦,特别是如果想要使用可扩展解决方案的强大功能,例如 tf.data.Dataset。 (后者确实允许 N 维设计矩阵/张量,但不清楚它如何跟踪 time_dep_feature 列中的时间戳索引。)

嵌套此类结构化数据的最新技术是什么?显然,必须存在比将 Python 可读字符串存储为上面的字典示例更复杂的东西。

PS:TensorFlow 的 tf.RaggedTensor 似乎是最接近解决方案的东西,但问题是我不太清楚如何存储时间戳,因为它不摄取字典。

【问题讨论】:

    标签: python tensorflow machine-learning dataset tensorflow-datasets


    【解决方案1】:

    使用特征工程可以应用多种技术。两个可能的例子是:

    1. 您可以通过应用均值、中值、最大值、最小值等来汇总单个特征来降低维度。

    2. 假设time_dep_feature 的维度不变:您可以通过为字典中的每个条目声明一个“正常”特征来“展开”这些特征。

    此外,还有一些特定的算法可以帮助您减少特定特征的维数,同时保留尽可能多的信息,您可以参考https://arxiv.org/pdf/1403.2877.pdf

    尤其是,您必须测试您的模型以哪种方式预测效果最好。

    【讨论】:

    • 恐怕这两个选项都不在桌面上,因为 (1) 我们不想降低维度,而只是保持数据原样而不会造成任何损失,以及 (2 ) 尺寸是可变的。 TensorFlows 的 RaggedTensor 是我能想到的最接近的方法,但没有明显的方法来维护时间戳。
    • 我明白了。将 RaggedTensor 与您的字典一起使用:可能是对您的 dict 的循环并创建 2 个 RaggedTensor 一个具有时间戳(键)和一个具有数值的可能解决方案?这样,您只需将每个观察的 dict 拆分为 2 个不同的张量/特征。
    猜你喜欢
    • 2019-02-02
    • 2016-02-25
    • 2018-07-23
    • 2019-02-08
    • 2020-12-30
    • 2019-11-19
    • 2016-11-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多