代码之家  ›  专栏  ›  技术社区  ›  Florida Man

KERA的输入组合:时间序列和功能

  •  0
  • Florida Man  · 技术社区  · 7 年前

    我有几个时间序列特征(ECG、HRV和呼吸)和从这些时间序列中生成的单独特征(例如SDNN、RMSSD等)。

    我跟随弗朗索瓦·乔利特的名字。对于3D时间序列输入张量,他们使用[样本、时间步长、特征]

    时间序列每个时间步有15000个值(样本)[15000x1],[15000x1],…]而单独的功能每个时间步有1个值(示例)。长度为[1]的额外特性对于每个时间步都是不同的。[[0.3],[0.35],[0.34],…]。

                         ECG,      HRV,   F1,   F2,  ...
    -------------------------------------------------------------
    Sequence 1 |
        Step 1 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 2 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 3 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
    
    Sequence 2 |
        Step 1 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 2 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 3 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
    

    您如何以最佳方式学习Keras的所有这些输入?

    1. 只需将1到15000个单独的功能归零,然后将它们添加到时间序列中
    2. 将单独的特征填充在一起(重复使用一个值)
    3. 由于数据在0和1之间进行规范化,所以使用超出要填充的额外特征范围的值方式。E、 g.1000
    4. 仅将时间序列作为三维张量输入,将单独的特征作为附加输入(作为附加层),并将其合并到学习者中(多输入)

    额外问题。由于“错误”的附加信息,零填充如何影响学习者?特别是对于1到15000个零件,用于从上面分离特征。另一个例子:由于采样频率不同,HRV和呼吸信号比ECG短。这里我宁愿使用插值,而不是零填充。你同意吗,还是零填充对学习者没有影响?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Community CDub    5 年前

    假设1

    由于模棱两可,我假设是这样(如果不是,请评论,我会更改)

    • 我打电话给ECG、HRV等。 功能 每一步都不同
    • 频率最高的功能有15000个步骤,而其他功能的步骤较少
    • 您有一个独立的功能,它不是连续的,没有步骤。(我称之为 单独的功能 在此答案中)

    额外问题:

    对插入频率较低的特征,并生成类似以下的输入张量:

    • (numberOfSequences_maybePatient, 15000 steps, features_ECG_HRV_etc)

    您需要保持功能之间的相关性 什么时候 它们会发生,这是通过同步这些步骤实现的。

    零填充是否会影响结果?

    是的,除非使用“掩蔽”(掩蔽层)。但这只对处理有意义 样品 (不同的序列或患者)具有不同的长度,而不是 功能 具有不同的长度/采样率。

    例如,以下情况适用于零填充和掩蔽:

    • 序列1:长度100(包括所有特征,ECG、HRV等)
    • 序列2:长度200(包括所有特征,ECG、HRV等)

    如何处理 separate feature ?

    有许多可能的方法。最简单的方法之一,可能也是非常有效的方法,就是让它成为一个包含所有15000个步骤的恒定序列。这种方法不需要考虑特征与其余数据的关系,而是将任务留给模型

    假设第一个序列的单独特征值为2,第二个序列的单独特征值为4,则生成此数据数组:

                              ECG, HRV, separate
    --------------------------------------------------------
                 |   [
    sequence 1:  |      [
    step 1       |            [ecg1, hrv1, 2],
    step 2       |            [ecg2, hrv2, 2],
    step 3       |            [ecg3, hrv3, 2]
                 |      ]
                 |
    sequence 2:  |      [
    step 1       |            [ecg4, hrv4, 4],
    step 2       |            [ecg5, hrv5, 4],
    step 3       |            [ecg6, hrv6, 4]
                 |      ]
                 |   ]
    

    您还可以输入is作为模型中的附加输入:

    regularSequences = Input((15000,features))
    separateFeature = Input((1,)) #assuming 1 value per sequence    
    

    然后决定是否要在某处求和、在某处相乘等。如果您知道此功能的含义以及它与其余数据的关系,以选择最佳操作和位置,则此方法可能比其他方法更有效。

    假设2

    从更新的答案中提取以下描述:

                         ECG,      HRV,   F1,   F2,  ...
    -------------------------------------------------------------
    Sequence 1 |
        Step 1 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 2 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 3 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
    
    Sequence 2 |
        Step 1 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 2 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
        Step 3 |     [[15000x1],[1000x1],[1x1],[1x1],...] 
    

    然后:

    • ECG中的单个时间步长有15000个功能。(您确定这不是15000个步骤的序列吗?)
    • HRV中的一个时间步有1000个功能。(您确定这不是1000个步骤的序列吗?)
    • 每个时间步有几个其他单独的功能。

    好的,组织这些数据很容易(但请记住我上面提出的问题),只需在每个时间步骤中将所有功能打包在一起:

    输入数据的形状为: (sequences, steps, 16002)

                         ECG,      HRV,   F1,   F2,  ...
    -------------------------------------------------------------
                  [
    Sequence 1 |    [
        Step 1 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
        Step 2 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
        Step 3 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
                    ]
    Sequence 2 |    [
        Step 1 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
        Step 2 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
        Step 3 |     [ecg1,ecg2,...,ecg15000,hrv1,hrv2,...hrv1000,F1,F2,...]
                    ]