代码改变世界

序列数据挖掘[ZZ]

2013-08-16 10:08  Batys  阅读(339)  评论(0编辑  收藏  举报

一、时间序列数据挖掘

    时间序列是数据存在的特殊形式,序列的过去值会影响到将来值,这种影响的大小以及影响的方式可由时间序列中的趋势周期及非平稳等行为来刻画。一般来讲,时间序列数据都具有躁声、不稳定、随机性等特点,对于这类数据的预测方法目前主要有自动回归滑动平均(ARMA)和神经网络等,但这些方法有一些缺点是很难克服的,ARMA包含的是线性行为,对于非线性的因素没有包含;而神经网络的结构需要事先指定或应用启发式算法在训练过程中修正;同时神经网络得到的解是局部最优而非全局最优。比较而言支持向量机( SVM)能较好地解决了上述的一些问题,并在实际应用中取得了很好的性能。

二、序列模式挖掘概念及定义

    举例说明,比如有顾客租借录像带,典型的顺序是先租“星球大战”,然后是“帝国反战”,再是“杰达武士归来”(这三部影片是以故事发生的时间先后而情节连续的)。值得注意的是租借这三部电影的行为并不一定需要是连续的。在任意两部之间随便插租了什么电影,仍然还是满足了这个序列模式,并且扩展一下,序列模式的元素也可以不只是一个元素(如一部电影),它也可以是一个项集(item set)。所谓项集,指的是多个物品组成的集合,内部元素不分排列顺序,比如“枕头和枕头套”就可以看作是由两个项(item)组成的项集,它也可以作为某一个序列模式的元素。
     比如数据源是一个给定的由客户交易(customer transaction)组成的大型数据库,每个交易(transaction)由客户号(customer-id),交易时间(transaction-time)以及在交易中购买的项(item)组成。
(1)项集(itemset)是由项(item)组成的一个非空集合。
(2)序列(sequence)是一列排好序的项集
    不失一般性我们假定项集中的项由一些连续整数代替,这样一个项集i可以表示为(i1,i2…im),而这里的ij代表了一个项。一个序列s可以表示为<s1,s2…sn>,这里的sj代表的是一个项集。
两个序列a <a1,a2…an>和b <b1,b2…bm>,如果存在整数i1<i2<…<in且a1包含于bi1,a2包含于bi2,…,an包含于bin,则称序列a包含于序列b。比如序列< (3) (4,5) (8) >包含于序列< (7) (3,8) (9) (4,5,6) (8) >,因为(3)包含于(3,8),(4,5)包含于(4,5,6)以及(8)包含于(8)。但是序列< (3) (5) >不包含于< (3,5) >,反之亦然。前者表示项3和项5是先后购买的,而后者则表示项3和项5是同时购买的,这就是区别所在。在一个序列集(a set of sequences)中如果序列s不包含于任何其他序列中,则称序列s为最大的(maximal)。
    一个客户所有的事务(transactions)可以综合的看成是一个序列,每一个事务都由相应的一个项集来表示。事务按交易时间序排列就成了一个序列。我们称这样的序列为客户序列(customer-sequence)。通常,将一个客户的交易按交易时间排序成T1 ,T2 ,……,Tn。Ti中的项集定义成itemset(Ti)。这样,这个客户的客户序列就成了这样的一个序列:〈itemset(T1) itemset(T2) … itemset(Tn)〉。见图_2。
    如果一个序列s包含于一个客户序列中,则我们称该客户支持(support)序列s。一个具体序列的支持(support)定义为那一部分支持该序列的客户总数。
    给定一个由客户交易组成的数据库D,挖掘序列模式的问题就是在那些具有客户指定最小支持度(minimum support)的序列中找出最大序列(maximal sequence)。而每个这样的最大序列就代表了一个序列模式(sequential pattern)。

时间序列挖掘其本质是根据数据随时间变化的趋势预测将来的值。重点要考虑的是时间的特殊性质,像一些周期性的时间定义如星期、月、季节、年等,不同的日子如节假日可能造成的影响,日期本身的计算方法,还有一些需要特殊考虑的地方如时间前后的相关性(过去的事情对将来有多大的影响力)等。只有充分考虑时间因素,利用现有数据随时间变化的一系列的值,才能更好地预测将来的值。

三、时间序列挖掘在金融领域的应用
    用于金融时间序列的预测方法很多,由于神经网络作为一种通用函数逼近器可以以任意精度近似任意非线性函数和动态系统,是高度非线性对象建模的有力工具,因此目前在该领域研究中仍以神经网络方法为主。但ANN仍有一些不易解决的难题,如难以确定神经网络的隐层节点数,存在过学习现象,训练过程中存在局部极小问题等。为了解决这些问题,Vapnik等人根据统计学习理论提出了支持向量机学习方法,它的最大特点是改变了传统的神经网络中经验风险最小化原则,而是针对结构风险最小化原则提出的,因此具有很好的泛化能力。目前已经广泛用于解决分类和回归问题。