空數(shù)據(jù)建模教程:Matern與Gneiting時(shí)空協(xié)方差函數(shù)實(shí)戰(zhàn)演練)
GPBoost時(shí)空數(shù)據(jù)建模教程Matern與Gneiting時(shí)空協(xié)方差函數(shù)實(shí)戰(zhàn)演練【免費(fèi)下載鏈接】GPBoostTree-Boosting, Gaussian Processes, and Mixed-Effects Models項(xiàng)目地址: https://gitcode.com/gh_mirrors/gp/GPBoost你是否遇到過這樣的場景氣象站的氣溫觀測、城市空氣質(zhì)量監(jiān)測、農(nóng)作物產(chǎn)量分布——數(shù)據(jù)既隨地理位置變化又隨時(shí)間推移演化這就是典型的時(shí)空數(shù)據(jù)。傳統(tǒng)的機(jī)器學(xué)習(xí)模型往往把空間和時(shí)間當(dāng)作普通特征忽略了它們之間的相關(guān)性結(jié)構(gòu)導(dǎo)致預(yù)測精度不足。GPBoost時(shí)空數(shù)據(jù)建模正是解決這一問題的利器。GPBoost 將 Tree-Boosting梯度提升樹、Gaussian Processes高斯過程和 Mixed-Effects Models混合效應(yīng)模型融為一體專門為帶有空間、時(shí)間和分組結(jié)構(gòu)的復(fù)雜數(shù)據(jù)設(shè)計(jì)。本教程將帶你從零開始實(shí)戰(zhàn)演練 GPBoost 中兩種最強(qiáng)大的時(shí)空協(xié)方差函數(shù)Matern時(shí)空協(xié)方差函數(shù)matern_space_time和Gneiting時(shí)空協(xié)方差函數(shù)space_time_gneiting幫你掌握時(shí)空插值與時(shí)空預(yù)測的核心技能。為什么時(shí)空數(shù)據(jù)建模需要專門的協(xié)方差函數(shù)普通模型假設(shè)樣本之間相互獨(dú)立但時(shí)空數(shù)據(jù)天然存在近朱者赤的相關(guān)性距離越近的觀測點(diǎn)數(shù)值越相似。高斯過程通過協(xié)方差函數(shù)Covariance Function來描述這種空間依賴性而時(shí)空協(xié)方差函數(shù)則進(jìn)一步把時(shí)間鄰近也納入考量。GPBoost 內(nèi)置了豐富的協(xié)方差函數(shù)家族你可以在參數(shù)文檔 docs/Main_parameters.rst 中查看完整列表協(xié)方差函數(shù)類型適用場景exponential指數(shù)型純空間建?;A(chǔ)之選maternMatern純空間建模平滑度可控matern_space_time時(shí)空Matern空間時(shí)間各自獨(dú)立rangespace_time_gneitingGneiting時(shí)空空間時(shí)間非平穩(wěn)相關(guān)性matern_ard各向異性Matern各維度量綱差異大wendland緊支撐型稀疏矩陣加速場景核心實(shí)現(xiàn)代碼位于 include/GPBoost/cov_fcts.h感興趣的話可以深入研讀。第一步準(zhǔn)備時(shí)空數(shù)據(jù)格式使用 GPBoost 時(shí)空協(xié)方差函數(shù)前必須遵守一條鐵律gp_coords的第一列必須是時(shí)間維度其余列才是空間坐標(biāo)。這一點(diǎn)在 python-package/gpboost/basic.py 的文檔字符串中反復(fù)強(qiáng)調(diào)。import numpy as np import gpboost as gpb # 假設(shè) 100 個空間位置觀測 10 個時(shí)間點(diǎn) time np.repeat(np.arange(10), 100) # 第一列時(shí)間 coords np.random.uniform(0, 1, size(1000, 2)) # 第二、三列空間坐標(biāo) gp_coords np.column_stack([time, coords]) # 順序不能錯第二步Matern時(shí)空協(xié)方差函數(shù)實(shí)戰(zhàn)matern_space_timeMatern 協(xié)方差函數(shù)是空間統(tǒng)計(jì)中的萬金油它通過平滑度參數(shù)cov_fct_shape控制表面的粗糙程度。而matern_space_time的特別之處在于它為空間和時(shí)間分別設(shè)置獨(dú)立的 range 參數(shù)讓模型自主學(xué)習(xí)時(shí)間上衰減多快、空間上衰減多快。# 構(gòu)建時(shí)空高斯過程模型 gp_model gpb.GPModel(gp_coordsgp_coords, cov_functionmatern_space_time, cov_fct_shape1.5) # 平滑度默認(rèn)1.5在 R 語言中調(diào)用方式完全一致參考官方演示腳本 R-package/demo/generalized_linear_Gaussian_process_mixed_effects_models.Rtime - rep(1:10, ntrain/10) coords_time_space - cbind(time, coords_train) gp_model - fitGPModel(gp_coords coords_time_space, cov_function matern_space_time, cov_fct_shape 1.5, y y_train, likelihood likelihood) summary(gp_model)擬合完成后用summary()或get_cov_pars()查看估計(jì)出的時(shí)空協(xié)方差參數(shù)你會得到 4 個關(guān)鍵值方差sigma2、時(shí)間range、空間range 和平滑度。如果某個維度range很小說明該維度的相關(guān)性衰減很快數(shù)據(jù)幾乎相互獨(dú)立——這是非常有用的診斷信息。第三步Gneiting時(shí)空協(xié)方差函數(shù)實(shí)戰(zhàn)space_time_gneiting如果說 Matern 時(shí)空版本是空間時(shí)間各管各的那么Gneiting時(shí)空協(xié)方差函數(shù)則更進(jìn)一步它允許空間相關(guān)性與時(shí)間尺度相互耦合能捕捉空間影響范圍隨時(shí)間擴(kuò)大這類真實(shí)世界現(xiàn)象例如污染擴(kuò)散、降雨云團(tuán)移動。該函數(shù)源自 Gneiting (2002) 的經(jīng)典論文在 GPBoost 中對應(yīng)space_time_gneiting共包含7 個參數(shù)順序?yàn)?sigma2, a, c, alpha, nu, beta, delta默認(rèn)全部自動估計(jì)gp_model gpb.GPModel(gp_coordsgp_coords, cov_functionspace_time_gneiting)參數(shù)數(shù)量多意味著模型更靈活但也更容易過擬合。如果你只想估計(jì)其中部分參數(shù)可以在params中使用estimate_cov_par_index指定要估計(jì)的參數(shù)索引其余保持初始值。例如params {estimate_cov_par_index: [0, 1, 2]} # 只估計(jì)前三個參數(shù) gp_model.fit(yy, paramsparams)第四步大規(guī)模時(shí)空數(shù)據(jù)的加速技巧時(shí)空數(shù)據(jù)動輒上萬條觀測直接計(jì)算完整協(xié)方差矩陣需要 O(n3) 的時(shí)間內(nèi)存也難以承受。GPBoost 提供了多種大數(shù)據(jù)近似方法讓百萬級時(shí)空數(shù)據(jù)也能順利建模vecchia最常用的近似通過num_neighbors默認(rèn)20控制每個點(diǎn)的鄰居數(shù)量復(fù)雜度大幅降低full_scale_vecchiaVecchia 誘導(dǎo)點(diǎn)全尺度近似精度更高tapering協(xié)方差函數(shù)乘以緊支撐的 Wendland 函數(shù)強(qiáng)制遠(yuǎn)距離相關(guān)性歸零fitc完全獨(dú)立訓(xùn)練條件近似gp_model gpb.GPModel(gp_coordsgp_coords, cov_functionmatern_space_time, cov_fct_shape1.5, gp_approxvecchia, num_neighbors20)一個經(jīng)驗(yàn)法則數(shù)據(jù)量在幾千以內(nèi)用精確計(jì)算gp_approxnone上萬條果斷啟用 Vecchia。Gneiting 協(xié)方差默認(rèn)按最大絕對相關(guān)選擇鄰居效果通常優(yōu)于歐氏距離選擇。第五步時(shí)空預(yù)測與模型評估訓(xùn)練完成后時(shí)空預(yù)測只需提供新的時(shí)空坐標(biāo)# coords_pred 同樣要求第一列為時(shí)間 pred gp_model.predict(gp_coords_predcoords_pred, predict_varTrue) mu pred[mu] # 時(shí)空預(yù)測均值 var pred[var] # 預(yù)測方差不確定性predict_varTrue能輸出每個預(yù)測點(diǎn)的不確定性這在環(huán)境監(jiān)測、氣象預(yù)報(bào)中至關(guān)重要——知道哪里預(yù)測得準(zhǔn)、哪里不可靠才能做出科學(xué)決策。同時(shí)別忘了用 GPBoost 的樹提升部分gpb.train捕捉非線性趨勢把空間隨機(jī)效應(yīng)與樹模型結(jié)合起來構(gòu)建完整的 GPBoost 時(shí)空建模方案。常見問題速查報(bào)錯維度不對檢查gp_coords第一列是否為時(shí)間兩種時(shí)空協(xié)方差函數(shù)都強(qiáng)制要求這一點(diǎn)。參數(shù)收斂慢為matern_space_time提供合理的init_cov_pars初始值如基于數(shù)據(jù)方差的估計(jì)能顯著加速優(yōu)化相關(guān)示例見測試文件 R-package/tests/testthat/test_GPModel_gaussian_process.R。Gneiting參數(shù)太多怕過擬合用estimate_cov_par_index凍結(jié)部分參數(shù)只估計(jì)關(guān)鍵參數(shù)??偨Y(jié)通過本教程的實(shí)戰(zhàn)演練你已經(jīng)掌握了 GPBoost 時(shí)空數(shù)據(jù)建模的兩大核心武器Matern時(shí)空協(xié)方差函數(shù)matern_space_time空間時(shí)間獨(dú)立range和Gneiting時(shí)空協(xié)方差函數(shù)space_time_gneiting空間時(shí)間耦合相關(guān)。配合 Vecchia 等大數(shù)據(jù)近似技術(shù)即便是大規(guī)模時(shí)空數(shù)據(jù)集也能高效建模。記住三個要點(diǎn)時(shí)間列放第一、合理設(shè)置平滑度與初始參數(shù)、數(shù)據(jù)量大時(shí)啟用近似算法。接下來不妨用你自己的氣象、交通或環(huán)境數(shù)據(jù)試一試感受 GPBoost 時(shí)空預(yù)測的魅力吧【免費(fèi)下載鏈接】GPBoostTree-Boosting, Gaussian Processes, and Mixed-Effects Models項(xiàng)目地址: https://gitcode.com/gh_mirrors/gp/GPBoost創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考