如何理解時間序列?— 從 Riemann 積分和 Lebesgue 積分談起
Riemann 積分和 Lebesgue 積分是數學中兩個非常重要的概念。本文將會從 Riemann 積分和 Lebesgue 積分的定義出發,介紹它們各自的性質和聯繫。
積分
Riemann 積分
Riemann 積分雖然被稱為 Riemann 積分,但是在 Riemann 之前就有學者對這類積分進行了詳細的研究。早在阿基米德時代,阿基米德為了計算曲線 在 [0,1] 區間上與 X 坐標軸所夾的圖形面積,就使用了 Riemann 積分的思想。 他把 [0,1] 區間等長地切割成 n 段,每一段使用一個長方形去逼近 這條曲線的分段面積,再把 n 取得很大,所以得到當 n 趨近於無窮的時候,就知道該面積其實是 1/3。
下面來看一下 Riemann 積分的詳細定義。
考慮定義在閉區間 上的函數 ,
取一個有限的點列 , 表示這些區間長度的最大值,在這裡 。在每一個子區間上 上取出一個點 。而函數 關於以上取樣分割的 Riemann 和就是以下公式:
當我們說該函數 在閉區間 上的取值是 的意思是:
對於任意 ,存在 使得對於任意取樣分割,當 時,就有
通常來說,用符號來表示就是:
用幾幅圖來描述 Riemann 積分的思想就是:
Lebesgue 積分
Riemann 積分是為了計算曲線與 X 軸所圍成的面積,而 Lebesgue 積分也是做同樣的事情,但是計算面積的方法略有不同。要想直觀的解釋兩種積分的原理,可以參見下圖:
Riemann 積分是把一條曲線的底部分成等長的區間,測量每一個區間上的曲線高度,所以總面積就是這些區間與高度所圍成的面積和。
Lebesgue 積分是把曲線化成等高線圖,每兩根相鄰等高線的差值是一樣的。每根等高線之內含有它所圈著的長度,因此總面積就是這些等高線內的面積之和。
用再形象一點的語言來描述就是:吃一塊漢堡有多種方式
- Riemann 積分:從一個角落開始一口一口吃,每口都包含所有的配料;
- Lebesgue 積分:從最上層開始吃,按照「麵包-配菜-肉-蛋-麵包」的節奏,一層一層來吃。
再看一幅圖的表示就是:Riemann 積分是按照藍色的數字順序相加的,Lebesgue 積分是按照紅色的數字來順序相加的。
基於這些基本的思想,就可以給出 Lebesgue 積分的定義:
簡單函數指的是對指示函數的有限線性組合,i.e. ,這裡的 是係數, 是可測集合, 表示指示函數。當非負時,令
如果 是一個非負可測函數時,可以定義函數 在可測集合 上的 Lebesgue 積分是:
這裡的 指的是非負簡單函數, 表示零函數,這裡的大小關係表示對定義域內的每個點都要成立。
而對於可測函數時,可以把可測函數 轉換成 ,而這裡的和 都是非負可測函數。所以可以定義任意可測函數的 Lebesgue 積分如下:
Riemann 積分與 Lebesgue 積分的關係
定義了兩種積分之後,也許有人會問它們之間是否存在矛盾?其實,它們之間是不矛盾的,因為有學者證明了這樣的定理:
如果有界函數 在閉區間 是 Riemann 可積的,則它也是 Lebesgue 可積的,並且它們的積分值相等:
左側是表示 Riemann 積分,右側表示 Lebesgue 積分。
用形象化一點的語言描述就是:無論從角落一口一口地吃漢堡,還是從頂至下一層一層吃,所吃的漢堡都是同一個。
但是 Lebesgue 積分比 Riemann 積分有著更大的優勢,例如 Dirichlet 函數,
- 當 是有理數時,
- 當 是無理數時, .
Dirichlet 函數是定義在實數軸的函數,並且值域是 ,無法畫出函數圖像,它不是 Riemann 可積的,但是它 Lebesgue 可積。
時間序列
提到時間序列,也就是把以上所討論的連續函數換成離散函數而已,把定義域從一個閉區間 換成 這樣的定義域而已。所以,之前所討論的很多連續函數的想法都可以應用在時間序列上。
時間序列的表示 --- 基於 Riemann 積分
現在我們可以按照 Riemann 積分的計算方法來表示一個時間序列的特徵,於是就有學者把時間序列按照橫軸切分成很多段,每一段使用某個簡單函數(線性函數等)來表示,於是就有了以下的方法:
- 分段線性逼近(Piecewise Linear Approximation)
- 分段聚合逼近(Piecewise Aggregate Approximation)
- 分段常數逼近(Piecewise Constant Approximation)
說到這幾種演算法,其實最本質的思想就是進行數據降維的工作,用少數的數據來進行原始時間序列的表示(Representation)。用數學化的語言來描述時間序列的數據降維(Data Reduction)就是:把原始的時間序列 用 來表示,其中 。那麼後者就是原始序列的一種表示(representation)。
分段聚合逼近(Piecewise Aggregate Approximation)--- 類似 Riemann 積分
在這種演算法中,分段聚合逼近(Piecewise Aggregate Approximation)是一種非常經典的演算法。假設原始的時間序列是 ,定義 PAA 的序列是:
其中
在這裡 。用圖像來表示那就是:
至於分段線性逼近(Piecewise Linear Approximation)和分段常數逼近(Piecewise Constant Approximation),只需要在 的定義上稍作修改即可。
符號特徵(Symbolic Approximation)--- 類似用簡單函數來計算 Lebesgue 積分
在推薦系統的特徵工程裡面,特徵通常來說可以做歸一化,二值化,離散化等操作。例如,用戶的年齡特徵,一般不會直接使用具體的年月日,而是劃分為某個區間段,例如 0~6(嬰幼兒時期),7~12(小學),13~17(中學),18~22(大學)等階段。
其實在得到分段特徵之後,分段特徵在某種程度上來說依舊是某些連續值,能否把連續值劃分為一些離散的值呢?於是就有學者使用一些符號來表示時間序列的關鍵特徵,也就是所謂的符號表示法(Symbolic Representation)。下面來介紹經典的 SAX Representation。
如果我們希望使用 個符號來表示時間序列,那麼我們其實可以考慮正態分布 ,用 來表示 Gauss 曲線下方的一些點,而這些點把 Gauss 曲線下方的面積等分成了 段。用 表示 個字母。
SAX 方法的流程如下:
- 正規化(normalization):把原始的時間序列映射到一個新的時間序列,新的時間序列滿足均值為零,方差為一的條件。
- 分段表示(PAA):
- 符號表示(SAX):如果 ,那麼 ;如果 ,那麼 ,在這裡 ;如果 ,那麼 。
於是,我們就可以用這 個字母來表示原始的時間序列了。
時間序列的表示 --- 基於 Lebesgue 積分
要想考慮一個時間序列的值分布情況,其實就類似於 Lebesgue 積分的計算方法,考慮它們的分布情況,然後使用某些函數去逼近時間序列。要考慮時間序列的值分布情況,可以考慮熵的概念。
熵(Entropy)
通常來說,要想描述一種確定性與不確定性,熵(entropy)是一種不錯的指標。對於離散空間而言,一個系統的熵(entropy)可以這樣來表示:
如果一個系統的熵(entropy)越大,說明這個系統就越混亂;如果一個系統的熵越小,那麼說明這個系統就更加確定。
提到時間序列的熵特徵,一般來說有幾個經典的熵指標,其中有一個就是 binned entropy。
分桶熵(Binned Entropy)
從熵的定義出發,可以考慮把時間序列的值進行分桶的操作,例如,可以把 [min, max] 這個區間等分為十個小區間,那麼時間序列的取值就會分散在這十個桶中。根據這個等距分桶的情況,就可以計算出這個概率分布的熵(entropy)。i.e. Binned Entropy 就可以定義為:
其中 表示時間序列 X 的取值落在第 k 個桶的比例(概率),maxbin 表示桶的個數,len(X) 表示時間序列 X 的長度。
如果一個時間序列的 Binned Entropy 較大,說明這一段時間序列的取值是較為均勻的分布在 [min, max] 之間的;如果一個時間序列的 Binned Entropy 較小,說明這一段時間序列的取值是集中在某一段上的。
總結
在本篇文章中,筆者從 Riemann 積分和 Lebesgue 積分出發,介紹了它們的基本概念,性質和聯繫。然後從兩種積分出發,探討了時間序列的分段特徵,時間序列的熵特徵。在未來的 Blog 中,筆者將會介紹時間序列的更多相關內容。
推薦閱讀: