优化算法 | 使用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 ,

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页