優化算法 | 使用Knn算法進行數據預測流程分析

現在給你一組數據{ a 1 ,a 2, ⋯ ,a n},比如這組數據表示的是第1個月到第n個月的電量使用情況

現在讓你根據這組數據使用KNN算法去預測a n+1的值,也就是第n+1個月的電量使用情況

由於任何一個月的用電量總是和前幾個月的用電量關

系最密切 , 所以 , 用長度爲 m 的向量 β 0 = { a n - m +1 , a n - m +2 ,

⋯ , a n - 1 , a n} 來預測 a n +1,由於 a n +1 未知 , 先找出 β 0 =

{ a n - m +1 , a n - m +2 , ⋯ , a n - 1 , a n } 的 K 個最近鄰

在 { a 1 , a 2 , ⋯ , a n } 中 , 以 β 0 = { a n - m +1 , a n - m +2 , ⋯ , a n - 1 ,

a n } 爲基 , 移動時間窗口 , 依次取 n - m 個長度爲 m 的子列 :

β1 = { a n - m , an - m +1 , ⋯ , a n - 1 }, β 2 = { a n - m - 1 , a n - m , ⋯ , a n - 2 },

⋯ , β n - m - 1 ={ a 2 , a 3 , ⋯ , a m +1 }, β n - m = { a 1 , a 2 , ⋯ , a m }, 在這

些子列中找出 β0 = { a n - m +1 , a n - m +2 , ⋯ , a n - 1 , a n } 的

K 個最

近鄰 , 用兩向量夾角的餘弦來描述兩個向量的臨近程度 , 即

cos ( β , β i) =

 

 

其中β ij 表示向量βi 的第j 個分量 . 那麼 , 餘弦值越大 , 兩向

量越接近 . 通過計算 , 我們在

 β 1 , β 2 ,⋯β n - m 中找出了 β 0 =

{ a n - m +1 , a n - m +2 , ⋯ , a n - 1 , a n } 的 K 個最近鄰 , 記爲 α 1 , α 2 ,

⋯ , α k . 因爲是用 { a n - m +1 , a n - m +2 , ⋯ , a n - 1 , a n } 來預測 a n +1 ,

所以這 k 個向量最後一個分量的後緊鄰的一個元素被認爲

是 a n +1 的一個最近鄰

取 a m +1 作爲 a n +1 的一個最近鄰 ( 令 b 1 = a m +1 ) 這樣得到了

a n +1 的 K 個最近鄰 b 1 , b 2 , ⋯ , b k , 然後對這 K 個數加權平均

計算即可算出 a n +1 ,

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