天天看點

趨勢預測方法(四)高斯過程回歸_時序機率性預測高斯過程回歸(GPR)

高斯過程回歸(GPR)

a基本原理:

利用高斯過程回歸将可能的資料趨勢曲線都儲存下來(每條趨勢曲線都有自己的置信度,在區間内呈高斯分布),最後在一張圖中顯示出來,再判斷總體的趨勢情況。

趨勢預測方法(四)高斯過程回歸_時序機率性預測高斯過程回歸(GPR)

b算法原理:

高斯過程GP

趨勢預測方法(四)高斯過程回歸_時序機率性預測高斯過程回歸(GPR)

高斯過程回歸GPR

趨勢預測方法(四)高斯過程回歸_時序機率性預測高斯過程回歸(GPR)

核函數Kernel

支援向量機(SVM)通過某非線性變換 φ( x) ,将輸入空間映射到高維特征空間。特征空間的維數可能非常高。如果支援向量機的求解隻用到内積運算,而在低維輸入空間又存在某個函數 K(x, x′) ,它恰好等于在高維空間中這個内積,即K( x, x′) =<φ( x) ⋅φ( x′) > 。那麼支援向量機就不用計算複雜的非線性變換,而由這個函數 K(x, x′) 直接得到非線性變換的内積,使大大簡化了計算。這樣的函數 K(x, x′) 稱為核函數。

推薦幾種可以用到時序預測的核函數。

RBF(徑向基核函數)

Rational Quadratic (有理二次核函數)

Dot Product (點乘核函數)

White (白噪聲核函數)

c方法優缺點:

優點

  1. 預測值是觀察值的插值,觀察起來相對容易。
  2. 預測值在置信區間内是承高斯分布的,可以選出自己感興趣的組重新拟合。
  3. 可以根據不同的特征資料來選擇合适的核函數。

缺點

  1. 需要使用大量的樣本資料。
  2. 特征數量過多的時候,在高維空間失去了有效性。

d算法入口:

sklearn.gaussian_process.GaussianProcessRegressor(Kernel,Alpha,n_restarts_optimizer,nor malize_y)

Kernel核心函數,輸入一個帶參數的核心函數。

Alpha拟合期間将一個高斯白噪聲添加到核矩陣的對角線上,防止拟合過程中潛在的數 值問題。

n_restarts_optimizer 優化器的啟動次數,用來查找最大化對數邊際可能性的核心參 數。注:n_restarts_optimizer == 0表示執行了一次運作。

normalize_y 無論目标值y是否被歸一化,目标值的均值和方差分别設定為等于0和1。 對于使用零均值,機關方差先驗的情況,建議使用此方法。

e執行個體參考:

'''
    高斯過程回歸,Kernel為徑向基核函數
'''

import numpy as np
import matplotlib.pyplot as plt
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C
from sklearn.gaussian_process import GaussianProcessRegressor

# 生成高斯過程回歸模型
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (0.5, 2))  # 常數核*徑向基核函數
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)

# 生成曆史資料
xobs = np.array([1, 1.5, -3]).reshape(-1, 1)
yobs = np.array([3, 0, 1])

# 使用曆史資料拟合模型
gp.fit(xobs, yobs)

# 預測
x_set = np.arange(-6, 6, 0.1).reshape(-1, 1)
means, sigmas = gp.predict(x_set, return_std=True)

# 作圖
plt.errorbar(x_set, means, yerr=sigmas, alpha=0.5)
plt.plot(x_set, means, 'g', linewidth=4)
colors = ['g', 'r', 'b', 'k']
for c in colors:
    y_set = gp.sample_y(x_set, random_state=np.random.randint(1000))
    plt.plot(x_set, y_set, c + '--', alpha=0.5)

plt.show()
           

運作結果

趨勢預測方法(四)高斯過程回歸_時序機率性預測高斯過程回歸(GPR)

f參考文獻:

通俗了解高斯過程及其應用 https://zhuanlan.zhihu.com/p/73832253

高斯過程的優點和缺點 https://blog.csdn.net/raby_gyl/article/details/72957483

高斯過程 Gaussian Processes 原理、可視化及代碼實作 https://zhuanlan.zhihu.com/p/75589452

高斯過程回歸(三)貝葉斯定理 https://blog.csdn.net/qq_42295125/article/details/116763149

高斯過程回歸GPR(sklearn.gaussian_process+python實作)https://blog.csdn.net/A_L_A_N/article/details/93888883