精华内容
下载资源
问答
  • m序列产生原理及其性质

    万次阅读 多人点赞 2019-05-06 21:21:24
    m序列产生原理及其性质 一、m序列的简介 1、m序列是最长线性移位寄存器序列的简称。顾名思义,m序列是由多级移位寄存器或其延迟元件通过线性反馈产生的最长的码序列。在二进制移位寄存器中,若n为移位寄存器的级数...

    m序列产生原理及其性质

    一、m序列的简介

       1、m序列是最长线性移位寄存器序列的简称。顾名思义,m序列是由多级移位寄存器或其延迟元件通过线性反馈产生的最长的码序列。在二进制移位寄存器中,若n为移位寄存器的级数,n级移位寄存器共有 2n 个状态,除去全0状态外还剩下 2n-1 中状态,因此它能产生的最大长度的码序列为 2n-1 位,也就是说,一个n级线性反馈移位寄存器产生的最长周期等于 2n-1 。在码分多址系统中主要采用两种长度的m序列:一种是周期为 215-1的m序列,又称短PN序列;另一种是周期为242-1的m序列,又称为长PN码序列。

       2、m序列是一种基本又典型的伪随机序列。在通信领域有着广泛的应用,如扩频通信、卫星通信的码分多址(CDMA),数字数据中的加密、加扰、同步、误码率测量等领域。

    二、m序列产生的原理

      图(1)示出的是由n级移位寄存器构成的码序列发生器。寄存器的状态决定于时钟控制下输入的信息(“0”或“1”),例如第I级移位寄存器状态决定于前一时钟脉冲后的第i-1级移位寄存器的状态。
    图中C0,C1,…,Cn均为反馈线,其中C0=C1=1,表示反馈连接。因为m序列是由循环序列发生器产生的,因此C0和Cn肯定为1,即参与反馈。而反馈系数C1,C2,…,Cn-1,若为1,参与反馈;若为0,则表示断开反馈线,即开路,无反馈连线。
    在这里插入图片描述

    图(1) n级循环序列发生器的模型

    一个线性反馈移动寄存器能否产生m序列,决定于它的反馈系数Ci ( i=0,1,2,…n) ,下表中列出了部分m序列的反馈系数 ,按照下表中的系数来构造移位寄存器,就能产生相应的m序列。

    表(1) 部分m序列的反馈系数表

    在这里插入图片描述
    根据表1中的八进制的反馈系数,可以确定m序列发生器的结构。以7级m序列反馈系数Ci=(211)8为例,首先将八进制的系数转化为二进制的系数即Ci=(010001001)2,由此我们可以得到各级反馈系数分别为:C0=1,C1=0,C2=0,C3=0,C4=1,C5=0,C6=0,C7=1,由此就很容易地构造出相应的m序列发生器。根据反馈系数,其他级数的m序列的构造原理与上述方法相同。

    三、m序列的产生与本原多项式

      由n级串联的移位寄存器和反馈逻辑线路可组成动态移位寄存器,如果反馈逻辑线路只由模2和构成,则称为线性反馈移位寄存器。带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位后各级寄存器会发生变化,其中任何一级寄存器的输出,随着时钟节拍的推移都会产生一个序列,该序列称为移位寄存器序列。n级线性移位寄存器如下图所示:
    在这里插入图片描述

    图(2)n级线性移位寄存器

      图中Ci表示反馈线的两种可能连接方式,Ci=1表示连线接通,第n-i级输出加入反馈中;Ci=0表示连线断开,第n-i级输出未参加反馈。因此,一般形式的线性反馈逻辑表达式为
    在这里插入图片描述
    将等式左边的an移至右边,并将an=C0an(C0=1)带入上式,则上式可以写成
    在这里插入图片描述
    定义一个与上式相对应的多项式
    在这里插入图片描述
    其中x的幂次表示元素的相应位置。该式为线性反馈移位寄存器的特征多项式,特征多项式与输出序列的周期有密切关系。

       n级线性反馈移位寄存器产生m序列(P=2n-1[m序列的周期])的充要条件:移位寄存器的特征多项式F(x)为本原多项式。

    当F(x)为n次本原多项式,就一定能产生m序列,不过需要满足以下三个条件:

      (1)F(x)是不可约的,即不能再分解多项式;

      (2)F(x)可整除xp+1,这里p=2n-1

      (3)F(x)不能整除xq+1,这里q<p.

    满足上述条件的多项式称为本原多项式,这样产生m序列的充要条件就变成了如何寻找本原多项式。

    本原多项式的寻找

    一、求n次本原多项式F(x)的方法:

    (1)将xP+1(xP-1)(P=xn-1)因式分解到已经不能再分解;
    (2)在得到的因式集合中,排除掉所有少于n次的因式;
    (3)其余的因式若不能整除任何xQ+1(Q<P),则这个因式为本原多项式F(x),可能不止一个。
    (注:这里的n可理解成线性反馈移位寄存器的级数)

    二、本原多项式F(x)与m序列的联系:

    (1)m序列的特征多项式即为n阶本原多项式;
    (2)1/F(x)作多项式长除法得到的商多项式系数序列就是m序列。

    例子:求n=4本原多项式并得到m序列(n=4相当于级数为4)

    xm + 1 = xm - 1=(x4 + x3 + x2 + x + 1) (x4 + x + 1) (x4 + x3 + 1) ( x2 + x + 1) (x+1)
    其中 ( x2 + x + 1) 、(x+1)的次数小于4被排除。
    其中(x4 + x3 + x2 + x + 1)可整除x5 + 1 = x5 - 1,也被排除。其长除法如下图(3):

    在这里插入图片描述
    故本原多项式有 x4 + x + 1、 x4 + x3 + 1。F(x)= x4 + x + 1,F1(x)= x4 + x3 + 1 分别对应一个m序列,可以由多项式1/F(x)长除法算出m序列,如下图(4):
    在这里插入图片描述
    q(x)= x-4 + x-7 + x-8 + x-10 + x-12 + x-13 + x-14 + x-15 +x-19+…
    对应m序列:100110101111000(15个码元,即周期为15)…(周期性循环)
    对于长除法得到的m序列只是其中的一种形式,方法有些冗重。大家可以参考下面这位博主的程序(由MATLAB编写)。程序里面的registers = [1 zeros(1, m-2) 1] 含义指的是为寄存器设置初始状态。大家可以随意设置,得出的结果跟书本上是一样的。

    链接: m序列生成函数的MATLAB代码.

    三、 互反多项式

      F1(x)= F(x-1)xn,即F1(x)与 F(x)为 互反多项式,也就是说它们产生的序列顺序互反的,m序列的反序列亦是m序列。

    四、部分阶数本原多项式表

    在这里插入图片描述

    三、m序列的性质

    m序列具有以下性质:
    (1)均衡性
      由m序列的一个周期中,0和1的数目基本相等。1的数目比0的数目多一个。该性质可由m序列1000010010110011111000110111010看出:总共有16个1和15个0。

    (2)游程分布
      m序列中取值相同的那些相继的元素合称为一个“游程”。游程中元素的个数称为游程长度。n级的m序列中,总共有2n-1个游程,其中长度为1的游程占总游程数的1/2,长度为2的游程占总游程数的1/4,长度为k的游程占总游程数的2k。且长度为k的游程中,连0与连1的游程数各占一半。如序列1000010010110011111000110111010中,游程总数为25-1=16,此序列各种长度的游程分布如下:
    长度为1的游程数目为8,其中4个1游程和4个0游程;
    长度为2的游程数目为4,2个11游程,2个00游程;
    长度为3的游程数目为2,1个111游程,1个000游程;
    长度为4的连0游程数目为1;
    长度为5的连1游程数目为1。

    (3)移位相加特性
      一个m序列m1与其经任意延迟移位产生的另一序列m2模2相加,得到的仍是m1的某次延迟移位序列 m3,即m1与m2 异或为m3

    (4)相关特性
      我们可以根据移位相加特性来验证m序列的自相关特性。因为移位相加后得到的还是m序列,因此0的个数比1的个数少1个,所以,当τ0\tau \ne 0时,自相关系数ρ(τ)=1/ρ\rho(\tau)=-1/\rho

    展开全文
  • 数据挖掘——序列

    千次阅读 2016-11-28 13:53:11
    数据挖掘技术一般用于检测数据中的序列或模式。本章中,我们将试图使数据遵循一种模式,在此模式中,一个或一系列事件可以通过一致的方式预测另一个数据点。本文描述了在数据集中查找模式的不同方法: 查找模式 在...

    数据挖掘技术一般用于检测数据中的序列或模式。本章中,我们将试图使数据遵循一种模式,在此模式中,一个或一系列事件可以通过一致的方式预测另一个数据点。

    本文描述了在数据集中查找模式的不同方法:

    • 查找模式
    • 在数据中查找模式
    • 约束条件

    我们可以在很多较大的数据集中查找模式。这涵盖了很多区域,比如混合人口的变化、使用手机的频率、高速公路质量衰退、年龄因素造成的事故等。不过我们能明确地感受到,有很多模式和序列正等待我们去发现。

    我们可以通过使用R编程中的一些工具找到这些模式。大多数模式因约束条件而在一定程度上受到限制,如序列的有用时间。

    1 模式

    我们来回顾一下确定数据中模式的方法:

    模 型 类 别 模型如何工作
    eclat 此模型用于项集模式检测,其中购物车最为常见
    arules 此模型确定数据集中的项目共现
    apriori 此模型学习数据集中的关联规则
    TraMineR 这是一个用于挖掘序列的R功能包

    1.1 Eclat

    Eclat算法用于频繁项集的挖掘。这种情况下,我们寻找行为相似的模式,与之相对的是寻找不规则模式(与处理其他数据挖掘的方法类似)。

    Algorithm通过数据中的交集来估算同时频繁出现事件候选项(如购物车项目)的支持度。然后通过对频繁候选项进行测试来证实数据集中的模式。

    1.用法

    在R编程中使用Eclat就是使用arules功能包中的eclat函数。使用Eclat算法的R编程遵循了此处提出的约定:

    > eclat(data,
      parameter = NULL,
      control = NULL)

    下表对eclat函数的不同参数进行了说明:

    参  数 描  述
    data 待分析的数据矩阵
    parameter ECParameter或列表的对象
    control ECControl或列表的对象

    常见的ECParameter如下所示:

    参  数 描  述
    support 此参数界定了一个项集的最小支持度(默认值为0.1)
    minlen 此参数包含了一个项集的最小容量(默认值为1)
    maxlen 此参数包含了一个项集的最大容量(默认值为10)
    target 此参数界定了待挖掘关联项集的类型:
    ● 频繁项集
    ● 最频繁项集
    ● 频繁闭项集

    ECControl常见值如下所示:

    参  数 描  述
    sort 此参数为下列数值之一:
    ● 1代表升序
    ● -1代表降序
    ● 0代表未分类
    ● 2代表升序
    ● -2代表事务容量和的降序
    verbose 此参数显示进度信息

    调用eclat函数返回数据中出现的频繁项集。

    Eclat的实施包括成年人数据集。成年人数据集包括人口统计局数据中约50000行的数据。

    2.使用eclat找到成年人行为的相似点

    使用下列代码找到成年人行为的相似点:

    > library("arules")
    > data("Adult")
    > dim(Adult)
    [1] 48842  115
    > summary(Adult)
    transactions as itemMatrix in sparse format with
      48842 rows (elements/itemsets/transactions) and
      115 columns (items) and a density of 0.1089939
    most frequent items:
    capital-loss=None                capital-gain=None
    46560                            44807
    native-country=United-States race=White
    43832                           41762
    workclass=Private              (Other)
    33906                           401333
    
    element (itemset/transaction) length distribution:
    sizes
        9     10        11         12              13
       19     971     2067     15623         30162
    
       Min. 1st Qu. Median Mean 3rd Qu. Max
      9.00         100     13.00     153     13.00     13.00
    
    includes extended item information - examples:
                   labels variables        levels
    1            age=Young             age        Young
    2     age=Middle-aged         age Middle-aged
    3          age=Senior             age       Senior
    
    includes extended transaction information - examples:
       transactionID
    1                 1
    2                 2
    3                 3

    检查最终结果时,我们会注意到以下细节:

    • 摘要共48842行,115列。
    • 已列出常见项目:白种人。
    • 有很多描述符,如age=Young。

    3.查找数据集中的频繁项目

    处理数据集时,通过下列代码挖掘出现的频繁项集:

    > data("Adult")
    > itemsets <- eclat(Adult)
    parameter specification:
      tidLists support minlenmaxlen         target     ext
          FALSE         0.1         1     10 frequent itemsets FALSE
    algorithmic control:
    sparse sort verbose
          7   -2     TRUE
    eclat - find frequent item sets with the eclat algorithm
    version 6 (2004.08.16)     (c) 2002-2004     Christian Borgelt
    createitemset ...
    set transactions ...[115 item(s), 48842 transaction(s)] done [0.03s].
    sorting and recoding items ... [31 item(s)] done [0.00s].
    creating bit matrix ... [31 row(s), 48842 column(s)] done [0.02s].
    writing ...     [2616 set(s)] done [0.00s].
    Creating S4 object ...     done [0.00s].

    默认值已发现2616个频繁集合。如果我们寻找前五个集合,将会看到下列输出数据:

    > itemsets.sorted <- sort(itemsets)
    > itemsets.sorted[1:5]
      items                                    support
    1 {capital-loss=None}                 0.9532779
    2 {capital-gain=None}                 0.9173867
    3 {native-country=United-States}    0.8974243
    4 {capital-gain=None,
       capital-loss=None}                 0.8706646
    5 {race=White}                         0.8550428

    以下是对之前输出数据的研究所得:

    • 普查数据中的大多数人未要求资本损失或资本利得(这种财政税收事件并非正常状态)。
    • 大多数人来自美国。
    • 大多数是白种人。

    4.集中于最高频率的示例

    为了进一步证实数据,我们可以将范围缩减至数据集中出现的最高频率(可以通过调节minlen参数直至处理完一项集合来实现操作):

    > itemsets <- eclat(Adult, parameter=list(minlen=9))
    > inspect(itemsets)
      items                                     support
    1 {age=Middle-aged,
       workclass=Private,
       marital-status=Married-civ-spouse,
       relationship=Husband,
       race=White,
       sex=Male,
       capital-gain=None,
       capital-loss=None,
       native-country=United-States}         0.1056673

    按照预期,由一位美国本土且拥有工作的已婚男士填写普查数据表格。

    1.2 arulesNBMiner

    在R中,arulesNBMiner是一个功能包,用于寻找一个集合中两个或两个以上项目的共现。底层模型,即负二项式模型,允许高度偏态次数分配,否则会很难确定最小项集容量。我们在正被挖掘的较大数据集中寻找频繁数据集。当确定使用arulesNBMiner时,您应该看到一些迹象:项目集频率正出现在数据子集合中。

    1.用法

    将arulesNBMiner作为功能包进行操作,并且必须将此功能包安装于您的R编程环境中。可以通过使用任意数据集来学习如何使用模型/函数中包含的工具,如下所示:

    > results <-NBMiner(data, parameter, control = NULL)

    下表对NBMiner函数的不同参数进行了说明:

    参  数 描  述
    data 待分析的数据矩阵
    parameter 参数列表(自动转换为NBMinerParameters的对象)
    control 使用的控制列表(自动转换为NBMinerControl的对象),目前仅verbose和调试逻辑可用

    NBMinerParameters是用于调用NBMiner的参数块,其架构如下所示:

    NBMinerParameters(data, trim = 0.01, pi = 0.99,
      theta = 0.5, minlen = 1, maxlen = 5, rules = FALSE,
      plot = FALSE, verbose = FALSE, getdata = FALSE)

    NBMinerParameters的数值如下所示:

    参  数 描  述
    data 事务
    trim 从数据频率分布尾数修剪的分数
    pi 精度阈值π
    theta 剪枝参数θ

    续表

    参  数 描  述
    minlen 项集中所发现项目的最小数(默认值为1)
    maxlen 项集中所发现项目的最大数(默认值为5)
    rules 包含了布尔值,用于确定是否挖掘NB精确规则而非NB频繁项集
    plot 包含了布尔值,用于确定是否为模型绘图
    verbose verbose输出参数,用于估算程序
    getdata 用于获取研究及估算的计数

    功能包中的Agrawal数据可以直接使用。注意:Agrawal数据是为集中事务通过特别合成而生成的。代码如下所示:

    > data(Agrawal)
    > summary(Agrawal.db)
    
    transactions as itemMatrix in sparse format with
     20000 rows (elements/itemsets/transactions) and
     1000 columns (items) and a density of 0.00997795
    
    most frequent items:
    item540 item155 item803 item741 item399 (Other)
        1848    1477     1332     1295     1264  192343
    element (itemset/transaction) length distribution:
    sizes
       1     2       3         4       5         6      7        8     9     10      11       12    13
      15    88     204       413     737  1233 1802  2217 2452 2444 2304 1858 1492
      14   15      16        17      18        19     20       21    22     23      24       25
    1072  706     431   233     138        83     46       19    10      1       1        1
    
        Min.     1st Qu.     Median     Mean 3rd Qu.        Max.
       1.000     8.000     10.000     9.978  1000     25.000
    
    includes extended item information - examples:
       labels
    1 item1
    2 item2
    3 item3
    
    includes extended transaction information - examples:
       transactionID
    1         trans1
    2         trans2
    3         trans3
    > summary(Agrawal.pat)
    set of 2000 itemsets
    
    most frequent items:
    item399 item475 item756 item594 item293 (Other)
          29         29          29           28      26        3960
    element (itemset/transaction) length distribution:sizes
      1      2      3       4      5     6
    702     733     385     134     34     12
      Min. 1st Qu.     Median     Mean 3rd Qu.     Max.
      1.00    1.00     00   05    3.00     6.00
    
    summary of quality measures:
    pWeightspCorrupts
    Min.:100e-08     Min. :0.0000
     1st Qu.:1.426e-04     1st Qu.    :0.2885
     Median :3.431e-04     Median     :0.5129
     Mean     :5.000e-04     Mean     :0.5061
     3rd Qu.:6.861e-04     3rd Qu.    :0.7232
     Max.     :3.898e-03     Max.     :1.0000
    
    includes transaction ID lists: FALSE

    以下是对之前输出数据的研究所得:

    • 共20000行,1000列。
    • 所有纵列都用项目399、项目475等命名。
    • 2000个子集在少数例子中具有偏态(如容量1有702、容量2有733等)。

    2.为频繁集挖掘Agrawal数据

    如果以Agrawal数据为例,可以得到下列输出数据:

    > mynbparameters <- NBMinerParameters(Agrawal.db)
    > mynbminer <- NBMiner(Agrawal.db, parameter = mynbparameters)
    > summary(mynbminer)
    set of 3332 itemsets
    
    most frequent items:
    item540 item615 item258 item594 item293 (Other)
         69        57       55       50       46        6813
    
    element (itemset/transaction) length distribution:sizes
        1     2      3       4    5
    1000  1287  725  259  61
    
        Min. 1st Qu.     Median     Mean 3rd Qu.     Max.
     1.000     1.000     000     128 3.000     5.000
    
    summary of quality measures:
        precision
    Min.:0.9901
    1st Qu.    :1.0000
    Median    :1.0000
    Mean    :0.9997
    3rd Qu.    :1.0000
    Max.    :1.0000

    以下是对之前输出数据的研究所得:

    • 项目近乎均匀分布。
    • 项集长度1或2有较大偏斜。

    1.3 Apriori

    Apriori是可以帮助了解关联规则的分类算法。与事务的实施方式相对。这种算法尝试找到数据集中常见的子集合,必须满足最小阈值以便核实关联。

    Apriori的支持度和置信度概念十分有趣。Apriori方法会从您的数据集中返回有趣的关联,如当出现Y时,会返回X。支持度是包含X和Y的事务的百分比。置信度是同时包含X和Y的事务的百分比。支持度的默认值为10,置信度的默认值为80。

    1.用法

    apriori方法的使用规则如下所示:

    apriori(data, parameter = NULL, appearance = NULL, control = NULL)

    下表对apriori函数的不同参数进行了说明:

    参  数 描  述
    data 这是所需的数据集
    parameter 这是用于控制处理方式的参数列表。支持度的默认值为0.1,置信度默认值为0.8,maxlen默认值为10
    appearance 控制了所用的数据值
    control 控制了算法,特别是分类的效能

    2.评估购物篮中的关联

    我们正寻找食品超市中典型购物篮内购买的项目之间的关联。为此,我们将按下列步骤进行操作。

    (1)下载下列arules功能包:

    > install.packages("arules")
    > library(arules)

    (2)下载事务,即比利时杂货店数据:

    > tr <- read.transactions("http://fimi.ua.ac.be/data/retail.dat",
    format="basket")

    (3)大概了解数据:

    >summary(tr)
    
    transactions as itemMatrix in sparse format with 
     88162 rows (elements/itemsets/transactions) and 
     16470 colunsis (items) and a density of 0.0006257289
    
    most frequent items:
          39        48        38        32        41     (Other)
      50675     42135     15596     15167     14945     770058
    
    element (itemset/transaction) length distribution:
    sizes
    1    2    3    4    5    6    7    8    9    10    11    12    13
    3016    5516    6919    7210    6814    6163    5746    5143    4660    4086    3751    3285    2866
    14    15    16    17    18    19    20    21    22    23    24    25    26
    2620    2310    2115    1874    1645    1469    1290    1205    981    887    819    684    586
    27    28    29    30    31    32    33    34    35    36    37    38    39
    582    472    480    355    310    303    272    234    194    136    153    123    115
    40    41    42    43    44    45    46    47    48    49    50    51    52
    112    76    66    71    60    50    44    37    37    33    22    24    21
    53    54    55    56    57    58    59    60    61    62    63    64    65
    21    10    11    10    9    11    4    9    7    4    5    2    2
    66    67    68    71    73    74    76                        
    5    3    3    1    1    1    1                        
    
       Min. 1st Qu.  Median  Mean  3rd  QU.   Max.
       1.00    4.00     8.00  10.31  14.00     76.00
    
    includes extended item information - examples: 
       labels 
    1        0
    2        1
    3        10

    以下是对之前输出数据的研究所得:

    -    共88162个购物篮,对应16470个项目。
    -    成对项目很受欢迎(项目39有50675个)。
    

    (4)一起看一下最频繁的项目:

    > itemFrequencyPlot(tr, support=0.1)

    我们可以再次看到少数频率比平常频率更高的项目。

    (5)现在,为合适的关联构建一些规则:

    > rules <- apriori(tr, parameter=list(supp=0.5,conf=0.5))
    
    parameter specification:
    confidenceminvalsmaxaremavaloriginalSupport support minlen
              0.5     0.1        1 none FALSE                  TRUE      0.5   1
    maxlen target ext
         10  rules FALSE
    
    algorithmic control:
     filter tree heap memopt load sort verbose
    0.1 TRUE TRUE FALSE TRUE     2     TRUE
    
    apriori - find association rules with the apriori algorithm
    version 4.21 (2004.05.09)     (c) 1996-2004     Christian Borgelt
    set item appearances ...[0 item(s)] done [0.00s].
    set transactions ...[16470 item(s), 88162 transaction(s)] done
    [0.13s].
    sorting and recoding items ... [1 item(s)] done [0.01s].
    creating transaction tree ... done [0.02s].
    checking subsets of size 1 done [0.00s].
    writing ... [1 rule(s)] done [0.00s].
    creating S4 object     ... done [0.01s].

    (6)然后用一条规则作为结束。规则摘要如下:

    > summary(rules)
    
    set of 1 rules
    
    rule length distribution (lhs + rhs):sizes
    1
    1
       Min. 1st Qu. Median Mean 3rd Qu. Max.
          1        1        1     1       1     1
    
    summary of quality measures:
        support           confidence     lift
    Min.:0.5748     Min. :    0.5748 Min. :1
    1st Qu.    :0.5748   1st Qu. :0.5748     1st Qu.    :1
    Median     :0.5748       Median  :0.5748     Median     :1
    Mean     :0.5748       Mean    :0.5748     Mean     :1
    3rd Qu.    :0.5748   3rd Qu.:0.5748        3rd Qu.    :l
    Max.     :0.5748   Max.    :0.5748      Max.     :1
    
    mining info:
    datantransactions support confidence
       tr          88162       0.5           0.5

    规则的支持度有力,置信度较低。

    (7)具体规则:

    >inspect(rules)
    lhsrhs support confidence lift
    1{}    => {39} 0.5747941    0.5747941    1

    正如我们猜想的那样,大多数人将项目39放入购物篮。

    (8)我们可以寻找更多与规则相关的信息,以便全面了解其产生的影响。

    >interestMeasure(rules, c("support", "chiSquare", "confidence", 
    "conviction", "cosine", "leverage", "lift", "oddsRatio"), tr)
                 sapply(method, FUN = function(m) interestMeasure(x, m, 
    transactions, reuse, ...)) 
    support                    0.5747941
    chiSquareNaN
    confidence                0.5747941
    conviction                1.0000000
    cosine                    0.7581518
    leverage                0.0000000
    lift                    1.0000000
    oddsRatioNaN

    一条派生规则将这些措施的置信度展现得非常全面。

    1.4 用TraMineR确定序列

    TraMineR功能包用于挖掘序列,并将其可视化,其思想是发现序列。可以将序列分布、序列频率及湍流等绘图的图解设备构建到功能包中。此外,还有一些自然出现的项目,其中的数据有重复的序列,如在一些社会科学场地,数据会自然地循环项目。

    通过此文件,我将带您大概了解TraMineR,以便生成一系列用于发现序列的工具。在挖掘操作中选择何种工具取决于您自己。

    您可以同时使用TraMineR功能包及一对内置数据集:

    数 据 集 描  述
    actcal 此数据集包含了2000年以来每月活动单个的状态符号
    biofam 此数据集包含了15岁至30岁期间单个的家庭生活状态
    mvad 此数据集包含了每月活动单个的状态数据

    1.用法

    seqdef函数用于确定数据中出现的序列:

    seqdef(data, var=NULL, informat="STS", stsep=NULL,
      alphabet=NULL, states=NULL, id=NULL, weights=NULL,
      start=1, left=NA, right="DEL", gaps=NA,
      missing=NA, void="%", nr="*", cnames=NULL,
      xtstep=1, cpal=NULL, missing.color="darkgrey",
      labels=NULL, ...)

    下表对seqdef函数的不同参数进行了说明:

    参  数 描  述
    data 矩阵
    var 会有一个纵列列表,其中包含序列或代表所有纵列都存在的“NULL”
    informat 包含了原始数据的格式,可以是下列格式中的任意一种:
     STS
     SPS
     SPELL
    stsep 分隔符
    alphabet 所有可能状态的列表
    states 包含了短时状态的标记

    2.确定训练和职业中的序列

    在这一示例中,我们将看到人们生活中从训练到工作的进程中时间的序列。我们期望看到从失业未经训练的状态至经过训练并最终成为全职员工的进程。        

    TraMineR功能包中的一些函数有助于序列分析。我们使用seqdef来创建数据对象,以便其他函数也可以使用。可以用其他方法设置或保留参数,如下所示:

    seqdef(data, var=NULL, informat="STS", stsep=NULL,
         alphabet=NULL, states=NULL, id=NULL, weights=NULL, start=1,
         left=NA, right="DEL", gaps=NA, missing=NA, void="%", nr="*",
         cnames=NULL, xtstep=1, cpal=NULL, missing.color="darkgrey",
         labels=NULL, ...)

    大多数参数可以在默认值下使用。

    如您所见,seq数据对象是plot函数的第一个参数。您可以用实际想用的plot函数(如下面编码中所用的seqiplot)代替XXX。

    seqXXXplot(seqdata, group=NULL, type="i", title=NULL,
      cpal=NULL, missing.color=NULL,
      ylab=NULL, yaxis=TRUE, axes="all", xtlab=NULL, cex.plot=1,
      withlegend="auto", ltext=NULL, cex.legend=1,
      use.layout=(!is.null(group) | withlegend!=FALSE),
      legend.prop=NA, rows=NA, cols=NA, ...)

    多数参数是您在plot中所需的标准图像的强化形式,如ylab是y轴的标记。

    首先,我们必须用下列编码将TraMineR加载入您的环境中。

    > install.packages("TraMineR")
    > library ("TraMineR")

    我们将使用TraMineR功能包中内置的mvad数据集。mvad数据集追踪了712个个体在20世纪90年代自训练至工作的进程。我们可以按下列形式使用mvad数据集。

    > data(mvad)

    数据摘要如下所示:

    > summary(mvad)
    
          id              weight          male            catholic      Belfast
    Min.: 1.0    Min.:0.1300    no :342      no :368       no :624
    1st Qu.    :178.8     1st Qu.    :0.4500     yes:370    yes:344      yes: 88
    Median     :356.5     Median     :0.6900
    Mean     :356.5     Mean     :0.9994
    3rd Qu.    :534.2     3rd Qu.    :1.0700
    Max.     :710    Max.     :4.4600
    
    N.EasternSouthern S.Eastern Western Grammar funemp
    no :503   no :497     no :629   no :595  no :583  no :595
    yes:209   yes:215     yes: 83   yes:117  yes:129  yes:117
    
    gcse5eqfmprlivboth               Jul.93
    no :452    no :537     no :261      school      :135
    yes:260    yes:175     yes:451      FE          : 97
                                  employment     :173
                                  training      :122
                                  joblessness:185
                                  HE          : 0

    我们可以查看标准标识符来了解体重、性别、宗教等信息。

    截取序列数据(我们正通过86使用17列,因为这适用于人们在数据调查不同点的状态),并将数据的这部分应用于序列确定函数,如下所示:

    > myseq <- seqdef(mvad, 17:86)
    
    [>] 6 distinct states appear in the data:
        1 = employment
        2 = FE
        3 = HE
        4 = joblessness
        5 = school
        6 = training
    [>] state coding:
           [alphabet]     [label]    [long label]
    1 employmentemploymentemployment
    2 FEFEFE
    3 HEHEHE
    4 joblessnessjoblessnessjoblessness
    5 schoolschoolschool
    6 trainingtrainingtraining
     [>] 712 sequences in the data set
     [>] min/max sequence length: 70/70

    这样看来是正确的,我们可以参照相关状态(失业、上学、训练及工作)来获取所需的行序列数据。

    我们可以使用一些内置图表来将已确定的序列可视化。序列如下所示。

    • seqiplot:指数图表。
    • seqfplot:频率图表。
    •   seqdplot:分布图表。

    以指数图表为例:

    > seqiplot(myseq)

    通过参照个人不同状态间界定的转换期,您会发现连续几个月都有训练。您应进行核实,以便数据显示的信息与您对序列数据的理解相一致。

    现在,以频率图表为例:

    > seqfplot(myseq)

    现在我们来看序列在不同时间的频率。多次观看后我们会看到同一序列的人群集,如经过一段时间的训练后会有工作。

    现在,以分布图表为例:

    > seqdplot(myseq)

    我们来看看序列状态在不同时期的分布情况。通常情况下,人们在上学或训练后开始工作。明白了吧!

    通过以下指令我们可以看到序列的熵:

    > seqHtplot(myseq)

    熵在不同时期的变化特点:明显降低后会出现细微的上升。这与不同人群会在最初做出不同选择的情况一致(很多状态),如上学或训练,然后进行工作,成为劳动力(一种状态)。

    有一个有趣的想法为数据湍流。湍流传达出一个信息,即从数据中可见的某个特定事例可以推导出多少不同的后续序列。我们可以用seqST函数将湍流可视化。seqST函数将序列数据作为参数,并返还湍流数据。让我们继续以示例进行说明:

    > myturbulence <- seqSt(myseq)
    > hist(myturbulence)

    我们可以看到带有长尾数的近乎标准化分布。大多数状态分为少量后续状态以及少数状态或多或少的异常值。

    1.5 序列相似点

    TraMineR功能包也可以确定序列的度量,如不同序列间的相异点。

    • 最长公共前缀(LCP):我们可以通过比较相同的最长序列前缀来确定相似点。
    • 最长公共序列(LCS):我们也可以通过查看两个序列之间的相同部分,根据其内部的最长序列来确定相似点。
    • 最佳匹配(OM)距离:指生成一个不同序列的最佳编辑距离,在此距离下,插入及删除的成本最小。

    使用TraMineR中的seqdist函数可以实现所有这些功能。

    1.序列度量

    我们可以用seqdist计算LCP。

    2.用法

    seqdist函数使用规则如下:

    seqdist(seqdata, method, refseq=NULL, norm=FALSE,
       indel=1, sm=NA, with.missing=FALSE, full.matrix=TRUE)

    下表对seqdist函数的不同参数进行了说明:

    参  数 描  述
    seqdata 这是状态序列(用seqdef界定)
    method 包含了待用的LCP方法
    refseq 这是可选参考序列
    norm 将距离标准化
    indel 仅用于OM
    sm 这是替代矩阵(忽略LCP)
    with.missing 如果出现缺失间隙,数值为“TRUE”
    full.matrix 如果数值为“TRUE”,返回全矩阵

    3.示例

    seqdist函数用法示例如下:

    (1)使用被构建到功能包的famform序列:

    > data(famform)

    (2)界定可用的序列对象:

    > seq <- seqdef(famform)
    [>] found missing values ('NA') in sequence data
    [>] preparing 5 sequences
    [>] coding void elements with '%' and missing values with '*'
    [>] 5 distinct states appear in the data:
        1 = M
        2 = MC
        3 = S
        4 = SC
        5 = U
    [>] state coding:
           [alphabet]   [label]   [long label]
    1 MMM
    2 MCMCMC
    3 SSS
    4 SCSCSC
    5 UUU
      [>] 5 sequences in the data set
      [>] min/max sequence length: 2/5
    > seq
         Sequence
    [1] S-U
    [2] S-U-M
    [3] S-U-M-MC
    [4] S-U-M-MC-SC
    [5] U-M-MC

    (3)确定使用序列3和序列4的LCP:

    > seqLLCP(seq[3,],seq[4,])
    [1] 4

    我们可以得到四个前置匹配(S-U-M-MC与S-U-M-MC-SC相比)。

    (4)我们可以直接计算LCS度量:

    > seqLLCS(seq[1,],seq[2,])
    [1] 2

    我们可以在2中找到常用序列。

    (5)也可以直接确定OMD:

    [>] cost <- seqsubm(seq, method-"CONSTANT". Cval=2)
     [>] creating 5x5 substitution-cost matrix using 2 as constant
    value 
    > cost
    M->    MC->    S->    SC->    U->
    M->    0    2    2    2    2
    MC->    2    0    2    2    2
    S->    2    2    0    2    2
    SC->    2    2    2    0    2
    U->    2    2    2    2    0

    OMD仅为2(仅用较小序列来诠释概念)。

    2 问题

    实际问题
    • 怎样不将白种人计入eclat结果内?
    • 描述序列图表中出现的不同转换期。
    • 在TraMineRmvad数据摘要中,地区响应中有显著差异,您能猜出原因吗?
    什么时候做、怎样做以及为什么这样做?
    • 描述seqiplot中少数异常值的情况。有部分不匹配的数据点。
    • 当线向上弯曲时,seqHtplot内呈现的数据会出现什么情况?
    • 如何运用序列查找上述程序?
    挑战
    • 确定项目编号在市场购物篮数据中的含义。
    • 本章的说明只是TraMineR功能包内包含的一小部分。您可以对附加函数性进行进一步调查。

    3 总结

    本章,我们探讨了确定数据序列的不同模式。通过使用eclat函数查找数据集模式,以便寻找人口中的相似模式。使用TraMineR查找购物篮中的项目频集。使用apriori规则确定购物篮中的项目关联。使用TraMineR确定成年人职业转换期的序列,并通过序列数据可用的大量图形特征将其可视化。最后,用seqdist检查序列之间的相似点和不同点。

    本文摘自《数据科学:R语言实战》

    图像说明文字

    本书最大的优点在于其通俗易懂、容易上手,每一个实例都有现成的数据和源代码,读者不仅能理解整个案例的来龙去脉,还可以直接编译本书提供的所有源代码,从而了解怎么从实际问题转变成可实现的代码,感受R语言的魅力,让数据产生价值。这种学习和实践相结合的方式非常适合初学者和有一定经验的数据分析师。

    本书的内容涵盖了基于数据挖掘的常用模型,包括分类、聚类、关联分析、预测、异常检测等,还包括机器学习的常用算法和自然语言处理、数据可视化等内容。本书内容全面,做到了易读、易用、易理解、易实现、易上手,是不可多得的R语言书籍。

    展开全文
  • 时间序列数据分析与Tick数据回测

    千次阅读 2019-09-27 10:00:35
    时间序列数据 时间序列是指在连续的等间隔时间段获取的数据序列。在量化投资中,这些数据主要表现为价格和所跟踪投资标的的数据点的移动。例如股票价格,在指定的时间段内定期记录的时间序列数据可以参照以下的这幅...

    时间序列数据

    时间序列是指在连续的等间隔时间段获取的数据序列。在量化投资中,这些数据主要表现为价格和所跟踪投资标的的数据点的移动。例如股票价格,在指定的时间段内定期记录的时间序列数据可以参照以下的这幅图,读者会得到的更加清晰的认识:

    在这里插入图片描述

    可以看到,日期位于x轴上,价格则显示在y轴上。在这种情况下,“连续间隔时间段”意味着x轴上的天数相隔为14天:注意2005年3月7日和下一个点之间的差异,2005年3月31日 2005年4月5日和2005年4月19日。

    然而,当您使用时间序列数据时,您经常会看到的不仅仅是这种只包含日期和价格两列的数据。大多数情况下,您将使用包含五列数据:数据周期,开盘价,最高价,最低价和收盘价。这意味着,如果您的数据周期设置为日线级别,那么当日的高,开,低,收价格变动就会反应在这个时间序列的数据当中。

    什么是Tick数据

    Tick数据就是交易所中最详尽的交易数据结构。也是上文提到的时间序列数据的一种扩展形态,包括:开盘价、最高价、最低价、最新价、成交量、成交额。如果把交易数据比喻成河流,Tick数据就是这个河流在某个横截面的数据。

    在这里插入图片描述

    如上图所示,国外交易所每个动作都会实时推送到市场上来。而国内交易所,每秒两次进行检查,如果该时间段内有动作,则生成一次快照并且推送出来。相比较而言,数据的推送充其量只能算做 OnTime,而不能叫做OnTick。

    本教程的所有代码和时间序列数据的获取都在发明者量化平台上完成。

    发明者量化的Tick数据

    尽管国内Tick数据并不是真正意义上的 Tick,但是使用这种数据进行回测,至少可以无限接近和还原了现实。每个Tick中显示着当时这个商品在市场中的主要参数,并且在实盘中我们的代码,就是跟着理论每秒 2 次的Tick在进行计算。

    在这里插入图片描述

    不仅如此,在 发明者量化 中即使加载的是1小时周期的数据,依然可以调整数据粒度,比如将数据粒度调整为 1 分钟。此时此刻的1小时K线就是用1分钟数据组成的。当然,粒度越小,精度越高。更为强大的是,如果将数据切换为实盘级Tick,就可以无缝还原真实的实盘环境。即1秒2次Tick交易所的真实数据。

    在这里插入图片描述

    现在,您已经了解了完成本教程所需了解的基本概念。这些概念很快就会回来,您将在本教程的后面部分了解更多相关概念。

    关于这部分的内容,感兴趣的朋友请到:https://www.fmz.com/bbs-topic/1651 查看更多信息

    设置工作环境

    工欲善其事,必先利其器,我们需要先在发明者量化平台部署托管者,关于托管者的概念,各位有编程经验的读者可以把它想象成一种官方封装好的Docker系统,这套系统里面已经封装好了各种主流交易所的公共API接口和以及对于策略编写和回测的细枝末节的技术细节。建立这套系统的初衷即是免去各位量化交易员在使用发明者量化平台的时候,能把精力放在策略的编写和设计上,这些技术细节以封装的形式呈现给策略作者以省去他们很多时间和精力。

    • 发明者量化平台的托管者系统的部署

    托管者的部署分为两种方式

    A方法:用户自己租用或者购买服务器,在各大云计算平台如AWS,阿里云,Digital Ocean和谷歌云上部署。优点是无论策略安全性,还是系统安全性都有保证,对于发明者量化平台来讲,鼓励用户用此方法,这样的分布式部署免去了服务器被攻击的隐患(无论是客户还是平台本身)

    关于这部分内容,读者可以参考:https://www.fmz.com/bbs-topic/2848

    B方法:使用发明者量化平台的公共服务器部署,平台提供香港,伦敦和杭州三地部署,用户可根据想要交易的交易所的位子,按就近原则部署。此方面优点是简单容易,一键完成,特别适合初学者用户,不用去了解购买Linux服务器时的诸多事宜,也免去了学习Linux命令的时间精力,价格也相对便宜,对于资金量不大的用户,平台建议使用这种部署方法。

    在这里插入图片描述

    本文为了照顾各位初学者理解,将采用B方法。

    具体操作为:登陆FMZ.COM,点击控制中心,托管者,在托管者页面点击一键租用托管者。

    输入密码,成功部署后如下图所示:

    在这里插入图片描述

    • 机器人系统的概念与托管者之间的关系

    如上文所述,托管者就像一个docker系统,一个docker系统就像一套标准,我们部署好了这套标准,接下来需要为这个标准产生一个“实例”,这个“实例”就是一个机器人。

    创建机器人很简单,在部署好托管者后,点击左边的机器人栏目,点击创建机器人,在标签名称中填写一个名字,托管主机当中选择刚才部署好的托管者。下边的对话框中的参数选择和K线周期等可根据具体情况进行选择,主要是要配合交易策略选择。

    在这里插入图片描述

    至此,我们的工作环境已经搭建完成,可以看到,十分简单有效,各个功能各司其职。接下来,我们要开始量化策略的编写。

    用Python实现一个简单的均线策略

    上面我们提到了时间序列数据和Tick数据的概念,接下来我们用一个简单的均线策略把这两个概念链接起来。

    • 均线策略的基本原理

    通过一根慢周期均线,比如7日均线,和一根快周期均线,比如3日均线。把他们应用在同一K线图上,当快周期均线上穿慢周期均线,我们称之为金叉;当慢周期均线下穿快周期均线,我们称之为死叉。

    开仓的根据就是金叉开多单,死叉开空单,平仓的道理相同。

    让我们打开FMZ.COM,登陆账号,控制中心,策略库,新建策略,在左上角策略编写语言中,选择Python。以下是这个策略的代码,每一行都有非常详细的注释,请各位读者慢慢体会。此策略非实盘策略,切勿用真钱进行实验,主要是让大家对策略编写又一个大致的概念和学习的模版。

    import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
    
    def main(): # 主函数,策略逻辑从这里开始
        STATE_IDLE = -1 # 标记持仓状态变量
        state = STATE_IDLE # 标记当前持仓状态
        initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
        while True: # 进入循环
            if state == STATE_IDLE : # 这里开始开仓逻辑
                n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
                if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                    opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                    Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                    if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                        opAmount = Dict['amount']
                        state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                        Log("开仓详情",Dict,"交叉周期",n) # 日志信息
            else: # 这里开始平仓逻辑
                n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
                if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                    nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                    Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                    state = STATE_IDLE # 标记平仓后持仓状态。
                    nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                    LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
            Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。
    
    
    • 均线策略的回测

    在策略编辑页面,我们完成了策略的编写,接下来,我们要回测这个策略看其在历史行情中的表现如何,回测在任何量化策略开发中都发挥着重要的作用,但是同时也只能作为重要的参考,回测不等于利润保证,因为市场是不断变化的,回测只是一种事后诸葛亮的行为,任然属于归纳法范畴,市场是演绎的。

    点击模拟回测,可以看到有很多可以调节的参数,可以直接在里面修改,对于以后策略越来越复杂,参数越来越多,这种方式的修改可以帮助用户免去再到代码中逐个修改的烦恼,方便快捷,且条理清晰。

    在这里插入图片描述

    后边的调优选项可以自动优化所设置参数,系统会尝试各种最优的参数,帮助策略开发者找到最优选择。

    通过以上例子,我们可以看到,量化交易的基础即是通过时间序列数据的分析,和tick数据的回测交互进行的,再复杂的逻辑,都离不开这两样基本的要素。差别不过是维度的不同,比如高频交易,就需要更详细的数据切面,更丰富的时间序列数据。再比如套利交易,对于回测样本的数据要求就比较大,可能需要某两个交易标的十几年的连续深度数据以找出他们利差扩大与缩小的统计结果。以后的文章我会陆续介绍高频交易,和套利交易的策略,大家敬请期待。

    展开全文
  • 利用合成数据进行时间序列分类的数据扩充方法 Data augmentation using synthetic data for time series classification with deep residual networks 利用合成数据进行时间序列分类的数据扩充方法 Abstract ...

    利用合成数据进行时间序列分类的数据扩充方法

    Data augmentation using synthetic data for time series classification with deep residual networks

    利用合成数据进行时间序列分类的数据扩充方法

    Abstract

    数据增强技术在计算机视觉方面使用的十分广泛,对于样本数量较少的数据集来说模型很容易达到过拟合,使用数据增强技术可以有效的见识过拟合的程度。然而在时间序列分类方面的数据增强技术很有限,作者提出了一种基于DTW距离的数据增强技术来填补这一方面的空白。

    Introduction

    对于图片来说数据增强技术取得了不错的效果,然而应用在时间序列方面效果却并不理想。这可能是因为,对于图片来说数据增强之后并不会改变图片的类别,例如一张猫的图片,通过对图片进行平移,旋转,缩放等变换并不会将猫变为狗,而对于时间序列来说人们无法轻易地控制这种特殊转换对时间序列性质的影响。

    本文提出了一种基于DTW的时间序列增强技术,通过在UCR数据集上进行实验,实验结果表明数据增强可以极大地提高神经网络模型对某些数据集的精度,同时对其他数据集有较小的负面影响。最后,提出将这两种训练模型的决策结合起来,说明如何在保证数据集的高增益精度的同时,有效地减少数据增加带来的罕见的负面影响。

    Method

    • Architecture

    网络结构采用残差网络,该网络的输入是一个长度为l的单变量时间序列。输出由数据集中C类的概率分布组成。网络的核心包含由3个残差块,之后是1个全局平均池化层和一个softmax分类层。每个残差块包含3个1-D卷积层,卷积层大小分别为8,5,3。每个卷积层之后是一个batch normalization然后是Relu激活单元。3个卷积块中的过滤器数目分别为64,128,128。

    网络所有的参数初始化使用的是Glorot's Uniform初始化方法,优化器使用Adam,学习率设置为0.001,将第一阶矩估计值和第二阶矩估计值的指数衰减率分别设置为0.9和0.999,最后使用cross-entropy作为网络的代价函数。

    • Data augmentation

    作者使用了基于加权形式的DTW重心平均(DBA)技术来进行时间序列数据增强,通过简单地改变这些权重,该方法可以从给定的一组时间序列创建无穷多个新的时间序列。作者在3中加权方法中采用了一种叫做平均选择法的加权方法。

    1. 从训练集中随机选择一个初始时间序列开始,我们赋予它一个等于0.5的权重。这个随机选择的时间序列将作为DBA的初试化时间序列。
    2. 根据DTW距离找到和DBA初试化时间序列最近的5个时间序列。然后在这5个中随机选择两个,并将这两个的权重都设置为0.15。
    3. 为了使权重之和等于1,训练集中剩下的时间序列的权重和为10.1520.5=0.21−0.15∗2−0.5=0.2,将剩下的时间序列平均分配这0.2的权重。
    4. 平均序列的生成使用加权的DBA算法。

    其他平均序列生成的算法将在作者以后的研究中使用。

    Result

    实验结果表明,在最坏的情况下,数据增强可以显著提高深度学习模型的准确性,同时对一些数据集产生较小的负面影响。为了使数据增强更具有泛化性能,作者使用了集成两个残差网络(有数据增强和没有数据增强的),事实上,是对两个分类器输出的每个类的后验概率求平均值,然后为每个时间序列分配平均概率最大的标签,从而为样本外生成的时间序列提供了一种更健壮的方法。结果表明从数据扩充中获益最多的数据集,其精度几乎没有变化。

    [原文地址][https://arxiv.org/abs/1808.02455]

     

    转载于:https://www.cnblogs.com/think90/p/11514826.html

    展开全文
  • 时间序列数据挖掘

    千次阅读 2018-11-14 12:40:44
    时间序列是一种重要的高维数据类型,它是由客观对象的某个物理量在不同时间点的采样值按照...利用时间序列数据挖掘,可以获得数据中蕴含的与时间相关的有用信息,实现知识的提取[1]。时间序列数据本身所具备的高维...
  • Android数据序列化方案研究

    千次阅读 2017-07-12 14:48:06
    数据序列化在Android开发中占据着重要的地位,无论是在进程间通信、本地数据存储又或者是网络数据传输都离不开序列化的支持。而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响。 广义上讲,序列...
  • 上篇文章介绍了人类活动识别常用...会在之后的文章中介绍),本文详细介绍了UCI-HAR数据集,并通过该数据集来探索加载数据集方法、数据可视化流程、问题建模分析以及模型评估思路,为以后的建模实现分类任务打好基础。
  • 序列数据(具有时间依赖性的数据)在业务中非常常见,从信用卡交易到医疗保健记录再到股票市场价格。 但是,隐私法规限制并极大地减慢了对研发至关重要的有用数据的访问。 这就产生了对具有高度代表性但又完全私有的...
  • 时间序列数据挖掘模板: 墨尔本十年气温变化预测

    千次阅读 多人点赞 2020-03-12 23:00:30
    时间序列数据广泛存在于量化交易, 回归预测等机器学习应用, 是最常见的数据类型。所以这里通过墨尔本十年气温变化预测的任务来整理一个时间序列数据挖掘的模板,方便以后查阅方便。这个模板可以用在大部分的时间...
  • 可能就需要用到两种方式来解析传输数据,对应数据格式的字节位来解析,或者是采用数据序列化与反序列化的方式来解析。个人比较倾向于后者的方式,毕竟以前做过Java或C#的项目。也觉得用这种方式比较方便省事。所以就...
  • java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
  • 时间序列数据可能包含一些季节性的成分。 这是一个随时间重复的循环,按照月度或者年度。这种重复的循环可能会对我们想要建模预测的信号产生干扰,反之会给我们的模型带来一个非常强的信号。 在这个教程中,我们会...
  • flink实战--flink数据类型和序列

    千次阅读 2018-12-27 14:45:53
    开始使用 Flink 编写处理逻辑时,总是容易被flink的不同数据类型所混淆: 为什么 Flink 有那么多的类型声明方式? BasicTypeInfo.STRING_TYPE_INFO、Types.STRING 、Types.STRING() 有何区别? TypeInfoFactory ...
  • 问题描述 求取数组中最大连续子序列和,例如给定数组为A={1, 3, -2, 4, -5}, 则最大连续子序列和为6,即1+3+(-2)+ 4 = 6。 (一)穷举法no.1 穷举式的尝试所有可能,这里就不多做解释,这里的算法复杂度...
  • 随着近年来物联网(IoT)的快速发展,时间序列数据出现了爆炸式增长。根据过去两年DB-Engines数据库类型的增长趋势,时间序列数据库的增长是巨大的。这些大型开源时间序列数据库的实现是不同的,并且它们都不是完美...
  • 数字序列随机产生的算法

    千次阅读 2006-11-12 22:39:00
    随机算法 问题产生:看到群里有人这样提问~ * 每次随即产生出1-100数字序列,每次产生都不一样* 而且1-100的数字序列里面不可以有一样的数字。 我就有个写这个算法的想法,同时也把它实现在. 我的理解:...
  • 通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,12小时,7天,1年),因此时间序列可以作为离散时间数据进行分析处理。 例如:某监控系统的折线图表,显示了请求次数和响应时间随时间的变化趋势 2 Pandas...
  • 基于LSTM的股票时间序列预测(附数据集和代码)

    万次阅读 多人点赞 2020-05-20 20:04:01
    LSTM数据集实战 ...既然是时间序列预测,我们最关心的是预测值在时间维度上的走势如何,那我们只要最后一列volume和第一列date这两列就好了。 实战 先是导入相关包,一些常见的包就不详细说了,我们需要的Se
  • 日期和时间数据类型及工具1.1字符串与datetime互相转换二.时间序列基础2.1索引、选取、子集构造2.2 含有重复索引的时间序列三.日期的范围、频率以及移动3.1生成日期范围3.2频率和日期偏置3.3 移位(向前和向后日期)四...
  • Twitter开源云环境时间序列数据断层检测工具BreakoutDetection 发表于4小时前| 703次阅读| 来源Twitter技术博客| 4 条评论| 作者Arun Kejariwal 大数据开源TwitterBreakoutDetection 摘要:近日,...
  • 从股票价格波动,到司机气温变化,从大桥沉降预测,到城市用电预警,时间序列数据广泛存在于量化交易、回归预测等机器学习应用,是最常见的数据类型。 接下来使用Python对一个经典的时间序列数据集:墨尔本十年气温...
  • 最大的子序列之和问题

    千次阅读 2013-05-22 23:18:16
    最大的子序列之和问题 最大子序列问题 问题描述:  输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如: 序列:-2 11 -4 13 -5 -2,则最大子...
  • 时间序列不同于更传统的分类和回归预测建模问题。 时间结构为观察增加了一个顺序。这种强加的顺序意味着需要专门处理关于这些观察的一致性的重要假设。 例如,在建模时,假设观测的汇总统计数据是一致的...
  • Matlab时间序列分析

    万次阅读 多人点赞 2018-11-13 18:53:46
    在引入时间序列前,先介绍几个matlab函数 matlab中的gallery函数简析 Matlab 中的 gallery 函数是一个测试矩阵生成函数。当我们需要对某些算法进行测试的时候,可以利用gallery函数来生成各种性质的测试矩阵。其用法...
  • 异常检测,它的任务是发现与大部分其他对象不同的对象,我们称为异常对象...而在序列数据的异常检测过程中,我们既可以直接使用对序列进行异常检测的算法,也可以先对序列数据进行特征提取然后转化为传统的离群点检测。
  • 介绍 ARIMA模型是时间序列预测中一种常用的统计方法。指数平滑和ARIMA模型是时间序列预测中应用...平稳时间序列数据的性质不依赖于时间,这就是为什么具有趋势或季节性的时间序列不是平稳的。趋势和季节性会在不...
  • Druid是为处理海量时间序列数据而设计的一款开源的OLAP系统。它是分布式处理系统,在设计之初就采纳了线性扩容和高可用的设计方案。集群的规模可以随着业务的增长而动态增加。要查询的数据集都做了分片(partition)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,253
精华内容 71,701
关键字:

容易产生序列相关问题的数据