網(wǎng)絡(luò)預(yù)測實(shí)戰(zhàn):小樣本回歸建模指南)
簡介本資源是一份面向機(jī)器學(xué)習(xí)初學(xué)者與MATLAB實(shí)踐者的PSO-BP混合預(yù)測模型完整實(shí)現(xiàn)代碼包聚焦解決傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)易陷局部極小、收斂慢、泛化能力弱等核心問題。通過粒子群優(yōu)化算法全局搜索最優(yōu)權(quán)重與閾值顯著提升時(shí)間序列預(yù)測精度與訓(xùn)練效率適用于電力負(fù)荷、銷售量、股票趨勢等典型回歸預(yù)測場景。壓縮包共11個(gè)文件10個(gè).m主程序腳本1個(gè).mat數(shù)據(jù)文件涵蓋PSO初始化、適應(yīng)度評估、粒子更新、BP網(wǎng)絡(luò)訓(xùn)練與預(yù)測全流程其中PSO.m、fun.m、Decode.m、data.m等模塊清晰分離算法邏輯與數(shù)據(jù)處理便于理解與二次開發(fā)。資源體積僅54KB輕量易部署已獲1099人學(xué)習(xí)下載。讀者可直接運(yùn)行復(fù)現(xiàn)完整預(yù)測流程深入掌握PSO參數(shù)調(diào)優(yōu)策略、BP網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、誤差反饋機(jī)制及Matlab向量化編程技巧是理論結(jié)合工程實(shí)踐的優(yōu)質(zhì)入門范例。1. PSO-BP預(yù)測不是“換個(gè)優(yōu)化器就變強(qiáng)”而是用粒子群把BP網(wǎng)絡(luò)的權(quán)重和閾值從局部洼地里撈出來你手頭有個(gè)回歸或分類任務(wù)數(shù)據(jù)量不大幾百到幾千樣本特征維度中等1050維用標(biāo)準(zhǔn)BP神經(jīng)網(wǎng)絡(luò)跑出來R2只有0.7、MSE卡在0.08上不去調(diào)學(xué)習(xí)率、加正則、換激活函數(shù)都像在給漏水的桶補(bǔ)膠帶——表面修修補(bǔ)補(bǔ)內(nèi)核還是塌陷。這時(shí)候搜“PSO_BP預(yù)測Matlab源碼”點(diǎn)開一堆壓縮包解壓發(fā)現(xiàn)main.m里寫著pso_optimize_bp但一運(yùn)行就報(bào)錯(cuò)Undefined function pso或者訓(xùn)練完測試集誤差比純BP還高。這不是代碼有bug是沒搞清PSO-BP的真實(shí)定位它不解決BP的根本缺陷梯度消失、過擬合、結(jié)構(gòu)設(shè)計(jì)而是用全局搜索能力繞過反向傳播對初始權(quán)值的致命依賴。粒子群不更新梯度只評估整個(gè)網(wǎng)絡(luò)在當(dāng)前權(quán)重下的輸出誤差它把BP網(wǎng)絡(luò)當(dāng)成一個(gè)黑盒函數(shù)用位置-速度模型在權(quán)值空間里“撒網(wǎng)捕魚”。適合場景很明確小樣本工業(yè)時(shí)序預(yù)測如電機(jī)溫度、軸承振動(dòng)、實(shí)驗(yàn)室級傳感器數(shù)據(jù)建模、教學(xué)演示中對比優(yōu)化效果。不適合大圖像、NLP或在線流式學(xué)習(xí)。本文不講PSO數(shù)學(xué)推導(dǎo)也不堆MATLAB函數(shù)列表只帶你用最簡結(jié)構(gòu)跑通一個(gè)可驗(yàn)證的PSO-BP預(yù)測流程——從初始化粒子群、封裝BP前向計(jì)算、定義適應(yīng)度函數(shù)到收斂判斷與結(jié)果回填每一步都標(biāo)清參數(shù)物理意義和實(shí)測敏感區(qū)間。2. 用PSO在MATLAB里優(yōu)化BP網(wǎng)絡(luò)三步封裝法讓黑盒可調(diào)可控PSO-BP的核心不是“PSOBP”兩個(gè)模塊拼接而是把BP網(wǎng)絡(luò)的權(quán)重/閾值向量作為PSO粒子的位置變量把網(wǎng)絡(luò)預(yù)測誤差作為適應(yīng)度值。關(guān)鍵在于如何把BP網(wǎng)絡(luò)變成一個(gè)可被PSO反復(fù)調(diào)用的純函數(shù)接口。MATLAB里常見錯(cuò)誤是直接在PSO循環(huán)里調(diào)用train函數(shù)導(dǎo)致每次迭代都重新初始化網(wǎng)絡(luò)、重置隨機(jī)種子粒子根本學(xué)不到穩(wěn)定反饋。正確做法是將BP網(wǎng)絡(luò)前向傳播邏輯抽離為獨(dú)立函數(shù)并預(yù)設(shè)好網(wǎng)絡(luò)結(jié)構(gòu)與歸一化規(guī)則。2.1 封裝BP前向傳播函數(shù)避免train()帶來的不可控隨機(jī)性不要在PSO循環(huán)中調(diào)用feedforwardnet或train。我們手動(dòng)構(gòu)建前向傳播確保每次輸入相同權(quán)值輸出絕對確定function y_pred bp_forward(x, W1, b1, W2, b2, transfer_func) % x: 輸入矩陣 [n_samples, n_features] % W1: 輸入層到隱層權(quán)重 [n_features, n_hidden] % b1: 隱層偏置 [1, n_hidden] % W2: 隱層到輸出層權(quán)重 [n_hidden, n_output] % b2: 輸出層偏置 [1, n_output] % transfer_func: tansig 或 logsig % 隱層輸入x * W1 b1 z1 x * W1 repmat(b1, size(x,1), 1); % 隱層輸出激活 a1 feval(transfer_func, z1); % 輸出層輸入a1 * W2 b2 z2 a1 * W2 repmat(b2, size(a1,1), 1); % 輸出層輸出線性激活回歸任務(wù)用 y_pred z2; end提示這里強(qiáng)制使用線性輸出層無激活因?yàn)榻^大多數(shù)預(yù)測任務(wù)溫度、壓力、電量是回歸問題。若做二分類最后一層改用logsig適應(yīng)度函數(shù)需同步改為交叉熵。repmat替代bsxfun兼容R2016b及以上版本feval保證激活函數(shù)可配置避免硬編碼tansig(z1)導(dǎo)致后續(xù)換函數(shù)要改多處。2.2 構(gòu)建PSO適應(yīng)度函數(shù)誤差即成本越小越好PSO粒子位置向量X需編碼全部可優(yōu)化參數(shù)[W1(:); b1(:); W2(:); b2(:)]。適應(yīng)度函數(shù)接收該向量解包后調(diào)用bp_forward返回均方誤差MSEfunction fitness pso_fitness(X, X_train, y_train, n_input, n_hidden, n_output, transfer_func) % X: 當(dāng)前粒子位置向量長度 n_input*n_hidden n_hidden n_hidden*n_output n_output % X_train, y_train: 歸一化后的訓(xùn)練數(shù)據(jù) % 解包權(quán)重與偏置 idx1 1 : n_input * n_hidden; idx2 idx1(end)1 : idx1(end)n_hidden; idx3 idx2(end)1 : idx2(end)n_hidden * n_output; idx4 idx3(end)1 : end; W1 reshape(X(idx1), n_input, n_hidden); b1 X(idx2); W2 reshape(X(idx3), n_hidden, n_output); b2 X(idx4); % 前向計(jì)算預(yù)測值 y_pred bp_forward(X_train, W1, b1, W2, b2, transfer_func); % 計(jì)算MSE回歸任務(wù) fitness mean((y_pred - y_train).^2); end參數(shù)說明n_input必須與X_train列數(shù)嚴(yán)格一致n_hidden建議取sqrt(n_input * n_output)向上取整經(jīng)驗(yàn)公式transfer_func傳入字符串tansig而非函數(shù)句柄避免PSO并行計(jì)算時(shí)句柄失效。此函數(shù)返回標(biāo)量fitnessPSO庫會自動(dòng)最小化它——無需修改目標(biāo)方向。2.3 初始化PSO參數(shù)粒子數(shù)、迭代次數(shù)與邊界設(shè)置的實(shí)測經(jīng)驗(yàn)值MATLAB無內(nèi)置PSO需自行實(shí)現(xiàn)或調(diào)用經(jīng)典開源版本如Kennedy版。關(guān)鍵參數(shù)非理論推導(dǎo)而是基于百次實(shí)驗(yàn)的收斂穩(wěn)定性總結(jié)參數(shù)名推薦值物理意義調(diào)參邏輯n_particles3050粒子數(shù)量30易早熟60收斂慢且內(nèi)存漲小樣本500用30中樣本5002000用40max_iter100200最大迭代輪數(shù)觀察fitness_curve若50輪后下降1e-5可提前終止超過200輪未收斂大概率是邊界設(shè)錯(cuò)w_max,w_min0.9 → 0.4慣性權(quán)重線性衰減高初值助全局探索低終值促局部精調(diào)固定值0.6會導(dǎo)致早熟c1,c22.0, 2.0個(gè)體/群體學(xué)習(xí)因子均設(shè)2.0最穩(wěn)c1c2偏向記憶c2c1偏向跟風(fēng)此處平衡優(yōu)先lb,ub[-3, 3]權(quán)重/偏置邊界BP權(quán)值過大引發(fā)飽和過小無法激活實(shí)測[-5,5]易發(fā)散[-1,1]易陷入平緩區(qū)粒子位置邊界lb/ub必須統(tǒng)一設(shè)為[-3,3]——這是血淚經(jīng)驗(yàn)MATLAB中tansig在±3外梯度0.01logsig在-6或6時(shí)輸出≈0或1權(quán)值超出此范圍BP前向傳播輸出幾乎不變PSO適應(yīng)度平坦粒子失去進(jìn)化方向。3. PSO-BP訓(xùn)練主流程從數(shù)據(jù)準(zhǔn)備到最優(yōu)權(quán)值回填的六步閉環(huán)完整流程不是寫個(gè)pso()調(diào)用就完事。MATLAB里需顯式控制數(shù)據(jù)歸一化、PSO執(zhí)行、最優(yōu)解解包、BP網(wǎng)絡(luò)重建、反歸一化預(yù)測。漏掉任一環(huán)結(jié)果必然失真。3.1 數(shù)據(jù)預(yù)處理歸一化必須雙向且訓(xùn)練/測試集用同一尺度BP對輸入范圍敏感PSO優(yōu)化過程若輸入未歸一化粒子在數(shù)值量級差異大的維度上移動(dòng)效率極低如溫度℃與電壓V并存時(shí)。必須用訓(xùn)練集統(tǒng)計(jì)量對所有數(shù)據(jù)做線性縮放% 假設(shè)X_all為原始輸入矩陣 [n_samples, n_features], y_all為輸出向量 n_train floor(0.7 * size(X_all,1)); % 70%訓(xùn)練 X_train X_all(1:n_train, :); X_test X_all(n_train1:end, :); y_train y_all(1:n_train); y_test y_all(n_train1:end); % 輸入歸一化每列獨(dú)立[0,1]區(qū)間 X_train_norm normalize(X_train, range); X_test_norm (X_test - min(X_train)) ./ (max(X_train) - min(X_train)); % 用訓(xùn)練集min/max X_test_norm max(min(X_test_norm, 1), 0); % 截?cái)嗟絒0,1]防溢出 % 輸出歸一化同樣用訓(xùn)練集y的min/max y_train_norm normalize(y_train, range); y_test_norm (y_test - min(y_train)) ./ (max(y_train) - min(y_train)); y_test_norm max(min(y_test_norm, 1), 0);注意normalize(...,range)在R2018a可用若用老版本替換為(X - min(X)) ./ (max(X) - min(X))。關(guān)鍵點(diǎn)是測試集歸一化必須復(fù)用訓(xùn)練集的min/max否則PSO學(xué)到的權(quán)值在測試時(shí)失效。3.2 執(zhí)行PSO優(yōu)化調(diào)用自定義PSO函數(shù)獲取最優(yōu)位置向量假設(shè)已實(shí)現(xiàn)pso_main函數(shù)含慣性權(quán)重衰減、邊界反射處理主流程如下n_input size(X_train_norm, 2); n_hidden round(sqrt(n_input * 1)); % 單輸出回歸n_output1 n_output 1; % 初始化PSO參數(shù) n_particles 40; max_iter 150; w_max 0.9; w_min 0.4; c1 c2 2.0; lb -3 * ones(1, n_input*n_hidden n_hidden n_hidden*n_output n_output); ub 3 * ones(1, length(lb)); % 執(zhí)行優(yōu)化 options struct(n_particles,n_particles, max_iter,max_iter, ... w_max,w_max, w_min,w_min, c1,c1, c2,c2, lb,lb, ub,ub); [X_best, fitness_curve] pso_main(pso_fitness, X_train_norm, y_train_norm, ... n_input, n_hidden, n_output, tansig, options); % 繪制收斂曲線 figure; plot(fitness_curve); xlabel(Iteration); ylabel(MSE); title(PSO Convergence);邏輯說明pso_main返回X_best最優(yōu)粒子位置向量和fitness_curve每代最優(yōu)適應(yīng)度。此向量長度n_input*n_hidden n_hidden n_hidden*n_output n_output需按2.2節(jié)索引規(guī)則解包。3.3 從X_best重建BP網(wǎng)絡(luò)權(quán)值回填后驗(yàn)證訓(xùn)練集誤差解包X_best構(gòu)建確定性BP網(wǎng)絡(luò)計(jì)算其在訓(xùn)練集上的真實(shí)誤差非PSO適應(yīng)度因適應(yīng)度可能含數(shù)值誤差% 解包X_best同2.2節(jié) idx1 1 : n_input * n_hidden; idx2 idx1(end)1 : idx1(end)n_hidden; idx3 idx2(end)1 : idx2(end)n_hidden * n_output; idx4 idx3(end)1 : end; W1_best reshape(X_best(idx1), n_input, n_hidden); b1_best X_best(idx2); W2_best reshape(X_best(idx3), n_hidden, n_output); b2_best X_best(idx4); % 用最優(yōu)權(quán)值計(jì)算訓(xùn)練集預(yù)測 y_train_pred_norm bp_forward(X_train_norm, W1_best, b1_best, W2_best, b2_best, tansig); train_mse mean((y_train_pred_norm - y_train_norm).^2); fprintf(PSO-BP Train MSE: %.6f\n, train_mse);參數(shù)說明此處train_mse是驗(yàn)證PSO是否真正優(yōu)化成功的黃金指標(biāo)。若train_mse 0.01說明PSO未收斂或網(wǎng)絡(luò)結(jié)構(gòu)不合理需檢查n_hidden或lb/ub。3.4 測試集預(yù)測與反歸一化還原物理量綱才能評估實(shí)際精度預(yù)測值必須經(jīng)反歸一化才能與真實(shí)值比較% 測試集預(yù)測歸一化輸入 → 歸一化輸出 y_test_pred_norm bp_forward(X_test_norm, W1_best, b1_best, W2_best, b2_best, tansig); % 反歸一化用訓(xùn)練集y的min/max還原 y_test_pred y_test_pred_norm .* (max(y_train) - min(y_train)) min(y_train); y_test_true y_test; % 原始測試標(biāo)簽未動(dòng) % 計(jì)算真實(shí)誤差指標(biāo) test_mse mean((y_test_pred - y_test_true).^2); test_mae mean(abs(y_test_pred - y_test_true)); test_r2 1 - sum((y_test_true - y_test_pred).^2) / sum((y_test_true - mean(y_test_true)).^2); fprintf(Test MSE: %.6f | MAE: %.6f | R2: %.4f\n, test_mse, test_mae, test_r2);關(guān)鍵點(diǎn)y_test_pred是最終交付結(jié)果所有評估指標(biāo)MSE/MAE/R2必須基于此計(jì)算。R2接近1.0才說明預(yù)測有效若R20.5大概率是數(shù)據(jù)噪聲大或特征無關(guān)PSO-BP無法挽救。4. PSO-BP落地避坑五條血淚經(jīng)驗(yàn)每一條都讓新手少調(diào)三天PSO-BP在MATLAB里看似簡單實(shí)則處處是坑。以下問題均來自真實(shí)項(xiàng)目調(diào)試記錄現(xiàn)象、原因、解法一一對應(yīng)拒絕模糊描述。4.1 現(xiàn)象PSO運(yùn)行幾秒就停fitness_curve全為Inf或NaN原因bp_forward中tansig或logsig輸入過大如z1 10函數(shù)返回InfMSE計(jì)算得InfPSO判定適應(yīng)度無效而終止。解決在bp_forward函數(shù)開頭添加裁剪z1 min(max(z1, -10), 10); % 限制隱層輸入在[-10,10] z2 min(max(z2, -10), 10); % 限制輸出層輸入為什么是±10tansig(10)0.999999996梯度≈0但非零tansig(15)1梯度0網(wǎng)絡(luò)死亡?!?0是安全閾值。4.2 現(xiàn)象PSO收斂曲線震蕩劇烈100代后仍無下降趨勢原因粒子速度更新公式中v w*v c1*r1*(pbest-x) c2*r2*(gbest-x)未做速度裁剪v爆炸導(dǎo)致位置x越界適應(yīng)度突變。解決在PSO速度更新后強(qiáng)制限幅v min(max(v, v_min), v_max); % v_min/v_max設(shè)為[-1,1]或[-0.5,0.5]實(shí)測參數(shù)v_max 0.5時(shí)收斂最穩(wěn)v_max1.0易震蕩v_max0.1收斂太慢。4.3 現(xiàn)象訓(xùn)練誤差很低MSE0.001但測試誤差極高M(jìn)SE0.1嚴(yán)重過擬合原因PSO優(yōu)化的是訓(xùn)練集誤差未引入任何正則項(xiàng)粒子找到的權(quán)值組合在訓(xùn)練集上完美擬合噪聲。解決改造適應(yīng)度函數(shù)加入L2正則項(xiàng)fitness mean((y_pred - y_train).^2) 0.001 * (sum(W1.^2) sum(b1.^2) sum(W2.^2) sum(b2.^2));λ0.001怎么來在驗(yàn)證集上網(wǎng)格搜索λ[1e-4,1e-3,1e-2]選測試誤差最小者。0.001是中小數(shù)據(jù)集通用起點(diǎn)。4.4 現(xiàn)象多次運(yùn)行PSO最優(yōu)解差異巨大R2從0.6跳到0.9原因PSO隨機(jī)初始化粒子位置不同種子導(dǎo)致搜索路徑迥異小樣本下適應(yīng)度曲面多峰易陷不同局部最優(yōu)。解決固定隨機(jī)種子 多次重啟取最優(yōu)rng(42); % 固定種子保證可復(fù)現(xiàn) best_r2 -Inf; best_model []; for run 1:5 [X_best, ~] pso_main(...); % 計(jì)算本次R2... if r2 best_r2 best_r2 r2; best_model {W1_best,b1_best,W2_best,b2_best}; end end為什么是5次實(shí)測5次已覆蓋95%的性能波動(dòng)區(qū)間10次收益遞減耗時(shí)翻倍。4.5 現(xiàn)象pso_fitness函數(shù)報(bào)錯(cuò)Index exceeds matrix dimensions原因X_train和y_train維度不匹配或n_input傳入值與X_train列數(shù)不符。解決在pso_fitness開頭加斷言assert(size(X_train,2) n_input, n_input must equal number of columns in X_train); assert(size(X_train,1) size(y_train,1), X_train and y_train must have same rows);玄學(xué)提示MATLAB中size(y_train)返回[n,1]size(y_train,1)才是行數(shù)若y_train是行向量先y_train y_train(:)轉(zhuǎn)列向量。5. 進(jìn)階技巧用PSO-BP做滾動(dòng)預(yù)測與不確定性量化告別單點(diǎn)預(yù)測幻覺PSO-BP常被當(dāng)作“一次訓(xùn)練、永久預(yù)測”的黑箱但工業(yè)場景需要滾動(dòng)預(yù)測如預(yù)測未來24小時(shí)溫度和誤差帶如±0.5℃置信區(qū)間。這無需改網(wǎng)絡(luò)結(jié)構(gòu)只需在PSO框架上疊加兩層邏輯。5.1 滾動(dòng)預(yù)測用滑動(dòng)窗口重構(gòu)輸入PSO-BP只訓(xùn)一次單步預(yù)測預(yù)測t1無法滿足長周期需求。滾動(dòng)預(yù)測核心是用歷史窗口構(gòu)造新輸入PSO-BP模型復(fù)用不重復(fù)訓(xùn)練% 假設(shè)已訓(xùn)練好PSO-BP模型 {W1_best,b1_best,W2_best,b2_best} % 原始時(shí)間序列 data [t1,t2,...,tN]窗口長度 win_len 10 % 取最后win_len個(gè)點(diǎn)作為初始窗口 window data(end-win_len1:end); % 列向量 [win_len,1] % 滾動(dòng)預(yù)測h步 h 24; pred_seq zeros(h,1); for i 1:h % 用當(dāng)前窗口歸一化后輸入模型 x_in (window - min_X_train) ./ (max_X_train - min_X_train); % 同3.1歸一化 x_in max(min(x_in,1),0); % 截?cái)?% 預(yù)測下一步 y_pred_norm bp_forward(x_in, W1_best, b1_best, W2_best, b2_best, tansig); y_pred y_pred_norm * (max_y_train - min_y_train) min_y_train; pred_seq(i) y_pred; % 窗口滑動(dòng)丟棄最老值加入新預(yù)測值 window [window(2:end); y_pred]; end關(guān)鍵設(shè)計(jì)window始終是列向量x_in轉(zhuǎn)為行向量適配bp_forward輸入要求滑動(dòng)時(shí)y_pred直接進(jìn)入窗口模擬真實(shí)系統(tǒng)反饋。此法避免了訓(xùn)練h個(gè)獨(dú)立模型的開銷。5.2 不確定性量化用PSO種群多樣性估計(jì)預(yù)測置信區(qū)間PSO最終只返回一個(gè)最優(yōu)解但種群中其他優(yōu)質(zhì)粒子如前10%適應(yīng)度對應(yīng)的權(quán)值組合能生成一批略有差異的預(yù)測結(jié)果構(gòu)成自然的不確定性分布% 在pso_main中保存每代top-k粒子位置如k10 top_positions zeros(k, length(X_best)); % 存儲最后一代top-k位置 % ... PSO循環(huán)中每代結(jié)束按fitness排序取前k個(gè)位置 ... % 對每個(gè)top-k粒子計(jì)算測試集預(yù)測 pred_ensemble zeros(size(y_test_true,1), k); for i 1:k Xi top_positions(i,:); % 第i個(gè)優(yōu)質(zhì)粒子 % 解包Xi調(diào)用bp_forward... pred_ensemble(:,i) y_test_pred_i; % 反歸一化后結(jié)果 end % 計(jì)算分位數(shù)區(qū)間95%置信帶 lower_bound prctile(pred_ensemble, 2.5, 2); % 每行取2.5%分位數(shù) upper_bound prctile(pred_ensemble, 97.5, 2); % 每行取97.5%分位數(shù) mean_pred mean(pred_ensemble, 2); % 繪圖 figure; plot(y_test_true, b-o, MarkerSize,3); hold on; plot(mean_pred, r-*, MarkerSize,3); fill([1:length(y_test_true), fliplr(1:length(y_test_true))], ... [lower_bound; fliplr(upper_bound)], r, FaceAlpha,0.2); legend(True,Mean Prediction,95% CI); title(PSO-BP Uncertainty Quantification);為什么有效PSO種群在收斂末期聚集于最優(yōu)解附近這些鄰近權(quán)值產(chǎn)生的預(yù)測差異本質(zhì)是模型對輸入擾動(dòng)的敏感度即認(rèn)知不確定性。無需貝葉斯或蒙特卡洛零成本獲得實(shí)用誤差帶。我堅(jiān)持用PSO-BP做小樣本預(yù)測不是因?yàn)樗嘞冗M(jìn)而是它把“調(diào)參”這件事從玄學(xué)拉回工程——粒子位置就是權(quán)值適應(yīng)度就是誤差收斂曲線就是進(jìn)度條。過去三年我用這套流程交付了17個(gè)產(chǎn)線預(yù)測模塊最短部署周期3天數(shù)據(jù)清洗2h PSO-BP建模4h 驗(yàn)證報(bào)告2h。它不取代深度學(xué)習(xí)但在傳感器數(shù)據(jù)、PLC日志、實(shí)驗(yàn)室臺賬這類“臟小散”數(shù)據(jù)上是比反復(fù)調(diào)參BP更可靠的后悔藥。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取