江門職業(yè)技術(shù)學院 郭亞東
信息科技創(chuàng)新應(yīng)用賦能產(chǎn)業(yè),促進社會數(shù)字化發(fā)展,建設(shè)數(shù)字社會是“十四五”規(guī)劃重點說明的內(nèi)容。大數(shù)據(jù)、機器學習算法、人工智能的創(chuàng)新應(yīng)用是促進傳統(tǒng)產(chǎn)業(yè)與數(shù)字技術(shù)融合的突破口。住房作為百姓重要資產(chǎn),合理的房價關(guān)乎人民福祉,是保持經(jīng)濟健康穩(wěn)定發(fā)展的重中之重。關(guān)于房價影響因素分析、房價預測方面的研究開展的比較早,但多側(cè)重于理論研究,國內(nèi)房屋交易平臺提供的小區(qū)均價參考價值有限。本文重點研究大數(shù)據(jù)、人工智能在房價預測場景的落地應(yīng)用,以市場房屋數(shù)據(jù)為藍本,經(jīng)過數(shù)據(jù)清洗、評估、提取、分析處理形成數(shù)據(jù)集,基于AdaBoost算法擬合,使用分布式系統(tǒng)部署,公布HTTP API方式提供服務(wù)。
基于AdaBoost算法的房價預測服務(wù)平臺按照分層設(shè)計,分別是對外接入層、標準算法層、并行平臺層、基礎(chǔ)資源層,層間功能劃分清晰不耦合,便于模塊化開發(fā)。公共組件模塊作為平臺支撐貫穿各層次,為平臺提供日志監(jiān)控、權(quán)限控制、集群管理和環(huán)境切換方法,增強系統(tǒng)穩(wěn)定性和易用性。系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
對外接入層用于公布房價預測服務(wù)平臺訪問方式,HTTP通信協(xié)議簡單易用,擁有較高的跨平臺特性和通用性,因此對外接入層采用HTTP API方式提供服務(wù),依靠Authorization Header傳遞授權(quán)Token,實現(xiàn)鑒權(quán)。依據(jù)訪問壓力動態(tài)調(diào)整集群規(guī)模,提高節(jié)點使用率,有效控制成本。
標準算法層研究并實現(xiàn)房價預測模型核心算法,獲取市場房屋數(shù)據(jù)后,通過數(shù)據(jù)清洗檢查數(shù)據(jù)一致性,處理無效值、缺失值情況數(shù)據(jù);應(yīng)用數(shù)據(jù)評估進行數(shù)據(jù)集主成分分析得到數(shù)據(jù)集主要特征分量,將數(shù)據(jù)集映射到K維上完成數(shù)據(jù)提??;將數(shù)據(jù)集劃分為訓練集和測試集輸入到模型算法模塊實現(xiàn)最優(yōu)模型擬合。對類別性特征應(yīng)用One-Hot Encoding進行編碼,使用GridSearchCV算法調(diào)參獲取AdaBoostRegressor模型最優(yōu)參數(shù),并持久化保存。
并行平臺層為房價預測模型部署落地提供開發(fā)、運營、管理服務(wù),使用Flask搭建HTTP API服務(wù)框架,通過Docker安裝分布式鏡像實現(xiàn)標準算法層服務(wù)模型彈性部署,應(yīng)用MongoDB創(chuàng)建房屋數(shù)據(jù)非關(guān)系型數(shù)據(jù)庫,用來保存結(jié)構(gòu)復雜的房屋數(shù)據(jù)。
基礎(chǔ)資源層為上層提供所需的存儲和計算等資源,通過遠程Internet進行管理,保障服務(wù)快速部署和平臺資源按需分配。
經(jīng)過對比多種算法的評估性能和穩(wěn)定性后選擇AdaBoostRegressor算法作為核心算法,AdaBoost算法是最具代表的提升(Boosting)算法,其中心思想是經(jīng)過多次迭代得到n個弱學習器,最后將n個弱學習器通過集合測量整合成強學習器。在房價預測模型中算法訓練過程如圖2所示,輸入n_estimators、learning_rate、learning_rate參數(shù)集,使用GirdSearchCV算法遍歷參數(shù)獲取最優(yōu)參數(shù)組合,模型性能評估指標選擇R2_Score,一次參數(shù)組合性能評估中,第i次迭代輸出弱學習器Gi(x),第i+1次訓練調(diào)整樣本權(quán)重使得弱學習器i中誤差率高的樣本在i+1弱學習器中得到重視,以此類推完成每次迭代。完成訓練后持久化最優(yōu)模型供房價預測服務(wù)平臺部署使用。
圖2 AdaBoost算法訓練過程
房屋數(shù)據(jù)集按照城市進行分類,避免因城市房屋數(shù)量和價格分布不平衡引起誤差,比如使用一個模型訓練評估經(jīng)濟發(fā)達地區(qū)與欠發(fā)達地區(qū)房屋數(shù)據(jù)集,數(shù)據(jù)量和價格區(qū)間的不平衡會降低模型的預測性能。圖3為各個城市最優(yōu)模型調(diào)參過程R2_Score變化情況,橫軸代表n_estimators,縱軸代表R2_Score,實線表示訓練集,虛線表示測試集,圖中標注了最優(yōu)模型參數(shù)點。
圖3 模型訓練過程R2_Score變化
AdaBoostRegressor算法發(fā)布提供服務(wù),使用容器云平臺技術(shù)實現(xiàn)。首先需要使用Docker技術(shù)構(gòu)建服務(wù)環(huán)境鏡像。將鏡像推送到遠程倉庫中,便于平臺運行實例規(guī)模擴容時自動化創(chuàng)建實例。集群管理采用開源Kubernetes系統(tǒng)實現(xiàn),使用ClusterAutoScaler擴展實現(xiàn)集群縮容和擴容,配置定期檢測任務(wù)每20s檢查節(jié)點資源利用率,長時間低于50%時自動停止資源所在實例,在剩余節(jié)點間完成調(diào)度提供服務(wù),實現(xiàn)縮容。當資源緊缺時,自動觸發(fā)CloudProvider服務(wù)接口使用遠程鏡像創(chuàng)建新的節(jié)點,實現(xiàn)擴容。將模型訓練過程構(gòu)建為鏡像發(fā)布到遠程倉庫,在Kubernetes中配置定期任務(wù),考慮到房價在短時間內(nèi)不會出現(xiàn)劇烈震蕩,任務(wù)配置為按月觸發(fā),定期使用市場房屋數(shù)據(jù)訓練模型,更新最優(yōu)模型參數(shù),從而達到房價預測服務(wù)平臺按照市場變化自動更新。在發(fā)生特殊情況比如城市建設(shè)規(guī)劃、周邊配套升級時也可以采用手動觸發(fā)的方式執(zhí)行計算更新模型參數(shù)。部署完成后通過接口訪問返回數(shù)據(jù)如圖4所示。
圖4 服務(wù)訪問響應(yīng)
基于AdaBoost算法的房價預測服務(wù)平臺設(shè)計方案合理實現(xiàn)了人工智能在房價預測場景下的落地應(yīng)用。設(shè)計并實現(xiàn)數(shù)據(jù)處理流程完成市場房屋數(shù)據(jù)的清洗、評估、主成分分析;完成使用GridSearchCV搜索AdaBoostRegressor模型最優(yōu)參數(shù),數(shù)據(jù)集按城市分類,做到一城市一模型;結(jié)合Docker容器技術(shù)構(gòu)建房價預測模型服務(wù)鏡像,使用Kubernetes實現(xiàn)云平臺集群管理。部署完成后使用平臺公布的HTTP API接口進行了訪問測試,達到設(shè)計要求。系統(tǒng)架構(gòu)設(shè)計對大數(shù)據(jù)、人工智能理論研究落地提供服務(wù)方面有重要意義。未來深入研究側(cè)重兩個方面,第一是提升模型預測準確度,第二是降低部署方案與算法耦合度,提升方案自動化成分,簡化操作步驟,增加部署方案通用性適應(yīng)多種應(yīng)用場景。