卷積平滑數據原理(有邊緣效應)

一、離散卷積的求法
假設兩組數據
A(原始數據):[a b c d], B(平滑窗口)[1/2 1/3]
則A卷積B等於
(1) A*1/2 = a/2 b/2 c/2 d/2 (空) 不移位
(2) A*1/3 = (空) a/3 b/3 c/3 d/3 向右移一位
(3) (1) + (2) = a/2 b/2+a/3 c/2+b/3 d/2+c/3 d/3
二、卷積平滑數據
基於一的離散卷積求解過程,則卷積可以利用與平滑數據。
1、假設t的取值範圍爲-4~4平均分成100份,y = sin(t) + randn(100), randn(100)爲100個標準正太分佈中的隨機取值(randn(100)爲一個向量),則利用卷積來平滑數據的結果,其中平滑窗口爲[1/10…..1/10] (10個1/10組成的向量):這裏寫圖片描述
如圖所示,原始數據爲黑點,平滑數據爲紅色+號,在邊緣部分數據變化趨勢不準確,這是由於這裏面使用的 python語句爲:

convolution(y,window,'same') 
'''結果爲數據集中間長度爲Max(y,window)的結果,因此會有邊緣效應'''

解釋:由於平滑窗口爲[1/10 1/10 1/10…..1/10],則基於一種離散卷積求解過程可得,其平滑結果爲取本點與前面9個點之和的平均值。也就相當與每個點的增幅都被縮小了,因此可以用來平滑數據。居於此可得,當平滑窗口向量值越少時,數據越不平滑(每個點的增幅值被考慮的權重增大),如下例所示,平滑窗口爲[1/2 1/2]:

這裏寫圖片描述
解釋:平滑數據爲該點於前面一點的平均值,即每兩點取一個平均值。
因此當平滑窗口越長時,數據越平滑,因爲選取了更多的點取平均值,因此每一點的增幅權重將被降低,如圖所示,平滑窗口爲[1/50…1/50]
這裏寫圖片描述
解釋:如圖所示平滑窗口爲[1/50…1/50],此情況與原始數據形狀偏離較大,因爲數據越幅度越大的地方,增幅越小,再被平均了之後權重就變得更小。
爲了更好的理解卷積平滑過程,令y = 2*t + randn(100),t的取值範圍與正弦函數相同。如圖所示
這裏寫圖片描述
解釋:平滑窗口爲[1/10…/10]。
這裏需要注意,無論平滑窗口中每一個元素取多小,結果都不會變成一條水平直線,因爲一條直線每一點的增幅都是不變的,例如假設原始數據形狀類似一條直線,且每一點增幅爲0.1,則
(1)前一點原始:a(n);
卷積平滑之後(a(1)+a(2)+…+a(n))/n;
(2)本點a(n+1)
卷積平滑之後(a(2)+a(3)+…+a(n+1))/n
(3)兩點之差(增幅):
原始:a(n+1)-a(n) = 0.1;
平滑:(a(n+1)-a(1))/n = n*0.1/n = 0.1;
所以卷積平滑數據只是平均每一點的增幅,當每一點的增幅都一樣時,無論平滑窗口元素的值多小,都不會得到一條水平的直線(不考慮邊緣效應),如圖所示:
這裏寫圖片描述
解釋:平滑窗口爲[1/50 1/50…1/50],且對應點與平滑窗口[1/10…1/10]的相同。這也解釋了爲什麼正弦離散點平滑數據會與原始正弦離散點的圖像有所不同,因爲正弦函數每一點的增幅不同,其導數爲cos(t),0點的增幅最大,pi/2點的增幅點最小,因此如果平滑窗口元素值過小時,越靠近極值點,由於其增幅很小,所以其平滑結果越偏離原始離散點。

三、結論
卷積平滑數據方法平滑的是每一點的增幅,且本點的平滑結果爲前n點的平均值。適用於原始數據震動幅度不太大於理想數據的情形。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章