高斯過程回歸(GPR)
a基本原理:
利用高斯過程回歸将可能的資料趨勢曲線都儲存下來(每條趨勢曲線都有自己的置信度,在區間内呈高斯分布),最後在一張圖中顯示出來,再判斷總體的趨勢情況。
b算法原理:
高斯過程GP
高斯過程回歸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方法優缺點:
優點
- 預測值是觀察值的插值,觀察起來相對容易。
- 預測值在置信區間内是承高斯分布的,可以選出自己感興趣的組重新拟合。
- 可以根據不同的特征資料來選擇合适的核函數。
缺點
- 需要使用大量的樣本資料。
- 特征數量過多的時候,在高維空間失去了有效性。
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()
運作結果
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