數(shù)學(xué)建模競(jìng)賽優(yōu)秀選年_第1頁
數(shù)學(xué)建模競(jìng)賽優(yōu)秀選年_第2頁
數(shù)學(xué)建模競(jìng)賽優(yōu)秀選年_第3頁
數(shù)學(xué)建模競(jìng)賽優(yōu)秀選年_第4頁
數(shù)學(xué)建模競(jìng)賽優(yōu)秀選年_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

中國(guó)研究生創(chuàng)新實(shí)踐系列大賽題 無線智能模 要由于電磁信號(hào)在過程中容易受到多方干擾,極易發(fā)生透射、繞射、散射、反射、折射等情況,信號(hào)在過程中將會(huì)大量損耗,急需優(yōu)質(zhì)模型來輔助無線網(wǎng)絡(luò)建設(shè)。本文5G ResNet,Net三種經(jīng)典結(jié)構(gòu)設(shè)計(jì)的多種模型;最后使用LightGBM模型進(jìn)行數(shù)據(jù)回歸。經(jīng)過三個(gè)版本的模型結(jié)果對(duì)比可以發(fā)現(xiàn),LightGBMRMSE、PCRR關(guān)鍵字:特征提取特征選擇 平均信號(hào)接收功率RSRP LightGBMCNNPCRR目一、問題重 問題背 問題重 二、模型假 三、參數(shù)與符號(hào)說 參數(shù)說 符號(hào)說 問題一的分 問題一的求 特征的來 異常值檢 特征的選 問題二的分 問題二的求 LightGBM特征選 相關(guān)性分 方差分 問題三的分 問題三的建 模型介 模型結(jié)構(gòu)設(shè) 訓(xùn)練結(jié) 七、模型評(píng) 八、參考文 附錄 問題背景

一、問題重前,我國(guó)的公司5G5G是應(yīng)用頻電磁波進(jìn)行的,頻率越高速度越快,因此5G何挑選模型并合理有效地選擇地址則成為安裝最大的問題。在整個(gè)無線網(wǎng)絡(luò)規(guī)劃流程中,高效的網(wǎng)絡(luò)估算對(duì)于解決選址問題有著重要的意義。無線模型正是通過對(duì)目標(biāo)通信覆蓋區(qū)域內(nèi)的無線電波特性進(jìn)行預(yù)測(cè),使得小區(qū)覆蓋范圍、小區(qū)間網(wǎng)絡(luò)干在現(xiàn)實(shí)情況中,無線網(wǎng)絡(luò)已經(jīng)遍及全球,與人們生活關(guān)。我們每天都在運(yùn)用網(wǎng)5G等,對(duì)模型進(jìn)行校正與改進(jìn)。問題重述5G(測(cè)試集數(shù)據(jù)中的覆蓋區(qū)域?yàn)橛脩粜^(qū))內(nèi)的站址,進(jìn)而通過科學(xué)地部署來降低成本的同時(shí),能夠最大限度滿足用戶的通信需求。圍繞選址問題的任務(wù)規(guī)劃,本文依次解決以下問題:問題1:測(cè)試集數(shù)據(jù)中提供了4000個(gè)小區(qū)的各類數(shù)據(jù),我們需要分析數(shù)據(jù),并根據(jù)已知的Cost231-Hata分析并設(shè)計(jì)合適的特征,在后續(xù)建立預(yù)測(cè)模型是會(huì)以這些特征作問題2:根據(jù)測(cè)試集中的小區(qū)數(shù)據(jù),我們分析并設(shè)計(jì)出多個(gè)合適的特征,題目要求我們計(jì)算這些特征與目標(biāo)(平均信號(hào)接受功率)理特征數(shù)據(jù)。問題3:我們?cè)诮鉀Q了前兩個(gè)問題之后,確定了建模所需要的特征。我們通過建立不同的預(yù)測(cè)模型來計(jì)算平均信號(hào)接收功率和均誤差的值,并進(jìn)行比較,分析模型的預(yù)水平以及模型優(yōu)缺點(diǎn)。二、模型假設(shè)量時(shí),兩個(gè)小區(qū)的RSRP值不會(huì)疊加。假設(shè)35化,因此可以假定柵格左上角的位置就代表了處于該柵格的用戶或者的實(shí)際位置。三、參數(shù)與符號(hào)說明參數(shù)說明含單柵格與用戶柵m小區(qū)發(fā)射機(jī)相對(duì)地m小區(qū)發(fā)射機(jī)水平方向角Electrical小區(qū)發(fā)射機(jī)垂直電Frequency小區(qū)發(fā)射機(jī)中心頻RS小區(qū)發(fā)射CellAttitude+高度+位置海拔高mHeight與用戶的真實(shí)mNewClutter小區(qū)用戶所在柵格-NewCellClutter所在柵格地物類型索-符號(hào)說明符意x神經(jīng)網(wǎng)絡(luò)的任意層輸入n神經(jīng)網(wǎng)絡(luò)輸入的樣c神經(jīng)網(wǎng)絡(luò)中的特征h神經(jīng)網(wǎng)絡(luò)中任意層的高w神經(jīng)網(wǎng)絡(luò)中任意層的寬k卷積m卷積卷積層輸入卷積層輸出自定義殘差塊的大卷積尺自定義殘差塊的通道數(shù)自定義inception模塊的輸真陽性假陽性假率四、問題一的分析與求解問題一的分析為“特征”。特征工程的本質(zhì)是從原始數(shù)據(jù)中轉(zhuǎn)換得到能夠最好表征目標(biāo)問題的參數(shù),并使得各個(gè)參數(shù)的動(dòng)態(tài)范圍在一個(gè)相對(duì)穩(wěn)定的范圍內(nèi),從而提高機(jī)器學(xué)習(xí)模型訓(xùn)練的效率。問題一的求解特征的來源坐標(biāo)距

1:根據(jù)4CellX與X的差值,CellY與Y的差值為新坐標(biāo),并根據(jù)新坐標(biāo)[(CellX)-X,(CellY)-Y],求出柵格與發(fā)射機(jī)的距離d的數(shù)值,作為一個(gè)備選特征。理由:小區(qū)所屬站點(diǎn)的柵格位置(CellX,CellY)并不是以所在位置為坐標(biāo)原點(diǎn),其數(shù)值絕對(duì)坐標(biāo)沒有任何意義,相對(duì)距離才能決定信號(hào)的質(zhì)量我們隨機(jī)選取一個(gè)小區(qū)(小區(qū)標(biāo)識(shí):112001),以坐標(biāo)[X-(CellX),Y-(CellY)]表示每個(gè)柵格相對(duì)于柵格的位置。這里差值之后,就可以把位置作為坐標(biāo)原點(diǎn),差值坐標(biāo)則表示柵格相對(duì)于原點(diǎn)的位置,每個(gè)柵格有與其對(duì)應(yīng)的RSRP的值,5所示:色的區(qū)域代表RSRP值較小。我們從圖中可以看出如下幾點(diǎn):區(qū)域,因?yàn)榈匦我约敖ㄖ叨鹊淖兓容^頻繁,RSRP值也產(chǎn)生了較大的波動(dòng)。在一些離比較近的區(qū)域,因?yàn)榈匦我约敖ㄖ叨鹊淖兓容^頻繁,RSRP值與用戶所處位置的真實(shí)高度機(jī)到地面的高度),CellAltitudeHeight(記為CA+H)作為一個(gè)備選特征。在第二項(xiàng)數(shù)據(jù)源中,我們注意到所給測(cè)試集數(shù)據(jù)中存在兩個(gè)海拔數(shù)據(jù),小區(qū)站點(diǎn)所在柵格(CellX,CellY)的海拔高度和其他位置柵格(X,Y)空氣度同,磁程中折受到響。置高,氣度稀薄空折射柵格的海拔高度和其上的建筑物高度6此外,選擇所處位置的真實(shí)高度作為特征的另一個(gè)原因:的海拔,發(fā)射與小區(qū)內(nèi)單個(gè)用戶的關(guān)系,那么真實(shí)高度和用戶真實(shí)高度的差值是關(guān)鍵影響這里我們以第一個(gè)特征選取中隨機(jī)抽取的小區(qū)(小區(qū)標(biāo)識(shí):112001)為例,以所在位置為原點(diǎn),也即以上述第一項(xiàng)數(shù)據(jù)源中的坐標(biāo)[X-(CellX),Y-(CellY)]為柵格3:delta_h=(CA+H)-(BH+A)-d*tan(ED+地貌特征編制出表5:表3:不同地物類型出現(xiàn)頻含含1海0城區(qū)建筑2內(nèi)陸湖城區(qū)中建筑3濕0城區(qū)<20m高密度建筑4城郊0城區(qū)<20m多層建5市區(qū)低密度工業(yè)6道路高密度工業(yè)建筑區(qū)7城8灌木植發(fā)達(dá)森林植農(nóng)0由表5可以看出1,3,4,9,19,20這幾個(gè)類出現(xiàn)次數(shù)為零,所以其刪除,所以1-201-14,215->2,6->3,18->14ClutterIndex重新排序如下述表6所示:表4:新排列的地物類型含含1內(nèi)陸湖8城區(qū)中建筑2市區(qū)9城區(qū)<20m高密度建筑3道路城區(qū)<20m多層4低密度工業(yè)5灌木植高密度工業(yè)建筑區(qū)6城區(qū)層建筑城7城區(qū)建筑發(fā)達(dá)此外,所處位置柵格的地貌類型(CellClutterIndex),其處理方法同上天氣因素天氣因素會(huì)影響到信號(hào)的傳輸效率,例如空氣PM2.5、濕度、溫度等的不同,會(huì)影響異常值檢測(cè)檢測(cè)原理:主成分分析(PrincipleComponentysis),簡(jiǎn)稱PCA。PCA的原理是通過構(gòu)造一個(gè)新的特征空間,把原數(shù)據(jù)映射到這個(gè)新的低里。PCA可以提高數(shù)用PCA進(jìn)行異常檢測(cè)的原理是:PCA在做特征值分解之后得到的特征向量反應(yīng)了原始數(shù)檢測(cè)步驟:PCA對(duì)象,用默認(rèn)參數(shù)對(duì)所有成分進(jìn)行保留(注意:這里由于數(shù)據(jù)本2%)。對(duì)標(biāo)準(zhǔn)化后的數(shù)據(jù)進(jìn)行訓(xùn)練,得到基本的PCA模型;③用PCA()對(duì)步驟①中取樣的數(shù)據(jù)進(jìn)行降維,計(jì)算數(shù)據(jù)樣本在該方向上的偏離程0.017。這里的閾值跟歸一圖4:異常異常值標(biāo)為紅點(diǎn),其他樣本標(biāo)為綠點(diǎn)。從圖7中可以看出兩點(diǎn):(1)前三個(gè)主成分所占方差的比例都不算太大;(2)從計(jì)算上來看,異常值確實(shí)是離主成分最遠(yuǎn)的值,但特征的選取表5:整合的特征名含單柵格與用戶柵m小區(qū)發(fā)射機(jī)相對(duì)地m小區(qū)發(fā)射機(jī)水平方向角Electrical小區(qū)發(fā)射機(jī)垂直電Frequency小區(qū)發(fā)射機(jī)中心頻RS小區(qū)發(fā)射CellAttitude+實(shí)際高度=位置海拔高度+度mHeight與用戶實(shí)際高度差=高度與海mNewClutter重新排列的小區(qū)用戶所在柵格地物類型索-NewCellClutter重新排列的所在柵格地物類型索-Electrical小區(qū)發(fā)射機(jī)垂直電下Clutter小區(qū)用戶所在柵格-CellClutter所在柵格地物類型索-CellBuilding位置上的建筑mBuilding用戶柵格位置上的m用戶柵格位置的海拔mX用戶柵格位置,XmY用戶柵格位置,YmCell柵格位置,XmCell柵格位置,Ym平均信號(hào)接 位置海拔高度Cell 格位置的四個(gè)坐標(biāo)點(diǎn)CellX、CellY、X、Y。五、問題二的分析與求解問題二的分析設(shè)計(jì)因素:電磁信號(hào)在過程中導(dǎo)致?lián)p耗的影響可以來源于多個(gè)方面,例如發(fā)射機(jī)的實(shí)際安裝情況,所處地理位置情況等等,我們?cè)诠こ虆?shù)和地圖參數(shù)中可以找到并計(jì)算變用與格相離Distance,的際度HeightDifference,以及各個(gè)柵格位置的地貌特征。另外,發(fā)射機(jī)據(jù)RSRP。我們根據(jù)相關(guān)性的絕對(duì)大小倒序排列后可以大致的對(duì)各個(gè)特征對(duì)平均信號(hào)接收功率RSRPLightGBM問題二的求解LightGBM特征選LightGBM模型原提升樹是一類利用加模型與前向分布算法實(shí)現(xiàn)學(xué)習(xí)的優(yōu)化過程,最具代表性的方法包GBDTXGBoostGBDTXGBoost他們同的不是確定點(diǎn)要掃所樣本在面大數(shù)據(jù)者征度很高在訓(xùn)練過程中,AdaBoost,GBDTlevel(depth)-wise圖5:策略生長(zhǎng)LightGBMleaf-wise圖6:策略生長(zhǎng)樹-最大節(jié)點(diǎn)生以利用額外的參數(shù)max_depth來限制樹的深度。level-wise過一次數(shù)據(jù)可以同時(shí)同一12列,而且經(jīng)過了一些,因此在這個(gè)問題上,并不會(huì)給我們帶來太多的困擾。LightGBM特征選擇原理使用pythonsklearn工具包,lightgbm類自feature_importance()成員函數(shù)。選碼拆分特征;③對(duì)比其他最流行的集成學(xué)習(xí)方法xgboost,速度更快,效果相當(dāng),比tensorflow封裝的集成模型效果好很多。特征選擇結(jié)果圖7:LightGBM特征選擇7,我們可以得出,LightGBMDistance同時(shí)我們還發(fā)現(xiàn),F(xiàn)requencyBand,即小區(qū)發(fā)射機(jī)中心頻率,這個(gè)特征的重要程度極相關(guān)性分析相關(guān)性原理表6:相關(guān)系數(shù)的分類比含含類Pearson相關(guān)反映兩個(gè)變量線性相關(guān)程度的統(tǒng)計(jì)Kendall秩相關(guān)系 個(gè)同類的統(tǒng)計(jì)對(duì)象按特定屬性排序,其他屬性通常是亂Spearman相關(guān)等級(jí)相關(guān),描述兩個(gè)變量之間的關(guān)聯(lián)程度與方向的統(tǒng)相關(guān)性分析基于提供的約4000條各小區(qū)數(shù)據(jù)集,數(shù)據(jù)整理和后,我們共提取出12列特征數(shù)據(jù)。其中,最后一列為數(shù)據(jù)RSRP,即柵格(X,Y)的平均信號(hào)接收功率關(guān)系數(shù)的絕對(duì)值降序排列,如表7所示:表7:特征名稱及其與目標(biāo)的相關(guān)排特征名稱含Pearson相關(guān)1柵格與所處柵格的距-2Height所在柵格實(shí)際高度與用戶所柵格實(shí)際高度3NewClutter新排序的用戶柵格的地貌特-4NewCellClutter新排序的柵格的地貌特-5RS小區(qū)發(fā)射-6Electrical小區(qū)發(fā)射機(jī)垂直電-7Frequency小區(qū)發(fā)射機(jī)中心頻-8Mechanical小區(qū)發(fā)射機(jī)垂直機(jī)械下傾9Cell小區(qū)站點(diǎn)所在柵格小區(qū)發(fā)射機(jī)相對(duì)地面的高-小區(qū)發(fā)射機(jī)水平方向角由表8可以看出:11個(gè)變量相關(guān)系數(shù)絕對(duì)值最大為Distance變量,絕對(duì)值為0.19,其次為HeightDifference變量,絕對(duì)值為0.17,其他變量相關(guān)系數(shù)絕對(duì)值均0.03下。結(jié)果與上述LightGBM特征選擇的結(jié)果基本吻合。方差分析表8:特征數(shù)據(jù)的方排特征名稱含方1柵格與所處柵格的距2Height-在柵格實(shí)際高3NewClutter新排序的用戶柵格的地貌特4NewCellClutter新排序的柵格的地貌特5RS小區(qū)發(fā)射6Electrical小區(qū)發(fā)射機(jī)垂直電7Frequency小區(qū)發(fā)射機(jī)中心頻8Mechanical小區(qū)發(fā)射機(jī)垂直機(jī)械下傾9Cell小區(qū)站點(diǎn)所在柵格小區(qū)發(fā)射機(jī)相對(duì)地面的高小區(qū)發(fā)射機(jī)水平方向角平均信號(hào)接由表8可以看出,方差最大的兩個(gè)特征變量依然是柵格與所處柵格的距離Distance以及所在柵格實(shí)際高度與用戶所在柵格實(shí)際高度的差值HeightDifference,LightGBM特征選擇、相關(guān)性分析、方差分析,三者的結(jié)果是一致的。六、問題三的分析與建模問題三的分析務(wù)?,F(xiàn)在,我們需要建立機(jī)器學(xué)習(xí)模型,來對(duì)無線模型中不同地理位置的RSRP值進(jìn)RSRP同時(shí),RSRP是續(xù)的變量,因此這是一個(gè)回歸問題。問題三的建模模型介紹經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)DNN其實(shí)也是指的一個(gè)東西,DNN有時(shí)也叫做多層感知機(jī)圖8:多層時(shí)去掉的信息只是一些無關(guān)緊要的信息,而留下的信息則是具有尺度不變性的特征,是2x2圖9:池化操作示意數(shù),tanh函數(shù),等等。sigmoid0~1容易梯度。tanh函數(shù)把特征映射到-1~1之間,能夠使特征中心化,但仍然無法避免類似sigmoid的梯度問題。relu函數(shù)在x>0范圍內(nèi)梯度總是1,而且相比其他的激活ExponetialLinearUnit化方法,都是依據(jù)relu作為激活函數(shù)來推導(dǎo)的。卷積神經(jīng)網(wǎng)絡(luò) N)是一種以卷積層為的前饋神經(jīng)網(wǎng)絡(luò),卷積層的人工神經(jīng)元可以語言處理、語音處理、知識(shí)圖譜等領(lǐng)域也開始廣泛使用CNN。窗口中的數(shù)據(jù)做矩陣乘法。相比之下,DNN積操作,變?yōu)?8x28的特征的示意圖。圖11:卷積操作特征的示意在卷積神經(jīng)網(wǎng)絡(luò)CNN中,決定某一層輸出結(jié)果中一個(gè)元素所對(duì)應(yīng)的輸入層的區(qū)域大2x20,如下圖所示,其目的就是把樣本的中心拉回到坐標(biāo)系原點(diǎn)上;(2)歸一化到同樣的范圍,如下所示即減少各維度數(shù)據(jù)取值范圍的差異而帶來的干擾,比AB,A010,B010000,果直接使用這兩個(gè)特征是有問題的,好的做法就是歸一化,即A和B的數(shù)據(jù)都變?yōu)?到1的范圍。去均值與歸一化效果如下圖:

圖12:去均值與歸一化效果LightGBM歸問題,同樣很適合LightGBM建模求解。LightGBM一般集成的就是分類回歸樹,首先,它具有樹模型可解釋性強(qiáng)的優(yōu)點(diǎn)。問題二中,我們使用LightGBM做特征選擇,充分解釋實(shí)際上也是訓(xùn)練了一個(gè)LightGBM模型,通過計(jì)算特征在所有決策樹中被用來分割的總次類別特征、缺失數(shù)據(jù)的處理,而這一點(diǎn)是CNN等深度神經(jīng)網(wǎng)絡(luò)做不到的。實(shí)際上,在這類(random),XGBoost等等,而這其中,LightGBM又是最高效的方法。根據(jù)我們的經(jīng)驗(yàn),LightGBMbaseline。因此,我們希望用LightGBM模型跟神經(jīng)網(wǎng)絡(luò)模型做一個(gè)對(duì)比。模型結(jié)構(gòu)設(shè)計(jì)2~4DNN訓(xùn)練速度拖慢,并且很容易過擬合。我們訓(xùn)練的全連接層采用均方誤差(mse)作為損失卷積神經(jīng)網(wǎng)絡(luò)度,擴(kuò)大感受野,使得輸出的特征包含足夠大范圍的全局信息。此外,CNN尺寸(k,m),輸入通道數(shù)c1,輸出通道數(shù)c2,每一層的特征為一個(gè)具有尺寸(n,h,w,fc,feat_dimLayer1:conv(3,1,1,Layer1:conv(5,1,1,Layer1:conv(5,1,1,Layer2:conv(1,1,32,Layer2:block(3,Layer2:conv(1,1,64,Layer3:conv(1,1,32,Layer3:conv(1,1,64,Layer3:conv(3,1,128,Layer4:conv(3,1,32,Layer4:block(3,Layer4:inceptionblockLayer5:fc(feat_dimx64,Layer5:conv(1,1,128,Layer5:inceptionblockLayer6:block(3,Layer6:inceptionblockLayer7:fc(feat_dimx256,Layer7:fc(feat_dimx256,的卷積層之間加入小的子網(wǎng)絡(luò)(1x1),它是一種加深網(wǎng)絡(luò)深度同時(shí)壓縮參數(shù)數(shù)NIN形式的網(wǎng)絡(luò),所以稱之為naive-network-in-network。progressive-residual-networkResNetResNetCNNx->H(x)ResNetx(H(x)x)xH(x)F(x)x。這樣的網(wǎng)絡(luò)結(jié)構(gòu)可以有效的避免反向過程中的梯度,增加收斂速度,因?yàn)橥ㄟ^如圖CNNresidualblock和bottleneck,使得50層(ResNet-50),101層(ResNet-101),甚至200層以上(ResNet-200)ResNet表格block的參b1,b2)表示兩個(gè)卷積層的參數(shù):conv(1,1,b2,b2),convb1,1,b2b23block5x1好是11,剛剛超過我們使用的特征數(shù)量,這樣網(wǎng)絡(luò)的感受野能完數(shù)據(jù)的所有維度。我們的網(wǎng)絡(luò)寬度(每一層的通道數(shù))1x1progressive-residual-network第三種結(jié)構(gòu)稱之為multi-vie N的幾個(gè)經(jīng)典結(jié)構(gòu)中,除了ResNet之外,最有代表性的應(yīng)當(dāng)屬于Inception(Net)和VGG。在圖像處理問題中,VGG是直接堆疊1x1和3x3卷積,如果說ResNet的思想是如何把網(wǎng)絡(luò)加深,那么Net的思那么應(yīng)該怎么做?Net使用多尺度卷積核為同一個(gè)輸入層提供了不同大小的感受野, Net的其中一層的結(jié)構(gòu)。我們仿照Net的inception結(jié)構(gòu),自定義了一種4個(gè)支路的inceptionblock,帶有一個(gè)參數(shù)b3inceptionblockb3)結(jié)構(gòu)如下表所示10:自定義inceptionconv(1,1,b3,b3/conv(1,1,b3,b3/conv(1,1,b3,b3/conv(1,1,b3,b3/conv(3,1,b3/4,/conv(5,1,b3/4,/dilateconv(3,1,b34,b3/其中卷積層的表示方法與本節(jié)開頭的定義相同,dilateconv2410(1)可解釋性強(qiáng),通過模型內(nèi)部的算法,我們可以很自然地得到每個(gè)特征被作為分,大(可達(dá)到400M或更大),難以在本題的生產(chǎn)環(huán)境部署,等等。因此,這一部分得到的訓(xùn)練結(jié)果弱覆蓋識(shí)別率(PCRRPoorcoveragerecognition均誤差(RMSE:RootmeansquaredRMSE是評(píng)估預(yù)測(cè)值和實(shí)測(cè)值整體偏差的指標(biāo),其大小直觀表現(xiàn)了仿真準(zhǔn)確性。直接計(jì)算待評(píng)估數(shù)據(jù)的RMSE,計(jì)算如下: 為參賽隊(duì)機(jī)器學(xué)習(xí)模型對(duì)于第i組評(píng)審數(shù)據(jù)集的RSRP預(yù)測(cè)值,為第i組評(píng)審數(shù)據(jù)集的RSRP實(shí)際測(cè)量值。在進(jìn)行預(yù)測(cè)的過程中如果可以有效識(shí)別弱覆蓋區(qū)域,能夠更好地幫助運(yùn)營(yíng)價(jià)指標(biāo)。在弱覆蓋識(shí)別率PCRR達(dá)標(biāo)的情況下,我們的主要評(píng)價(jià)依據(jù)均誤差RMSE,其是1神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果我們這首先使用上節(jié)提到的多層感知機(jī)模型,RMSE=10.0python3.6+tensorflow1.8+cuda10.111080tigpu。我們所有模型都使用如下參數(shù):學(xué)習(xí)率(learningrate)0.0001,10輪下降到之前的(batchsize)2048;Adam,自適應(yīng)的優(yōu)化器通常能夠加速收斂,并且受的;批標(biāo)準(zhǔn)化(batchnormalization)層在每一個(gè)卷積層后面使用;激活函數(shù)全部使用20%(Model1Model3次的特征,另一方面,模型的規(guī)模并不能地增加下去,以Model2為例,在實(shí)參數(shù)量增加了接近一倍,但是效果相差不大;(4)CNNLightGBM的行采樣。RMSE6.697,PCRR0.531。圖13:RSRP真實(shí)值和預(yù)測(cè)值的概率分布為了進(jìn)一步LightGBM模型的性能,我們對(duì)模型預(yù)測(cè)的RSRP分布和分布七、模型評(píng)價(jià)別是深度CNN,具有龐大的參數(shù)搜索空間,加之神經(jīng)網(wǎng)絡(luò)本來就不是一個(gè)完美的凸優(yōu)化問題,這就給模型收斂到全局最優(yōu)解造成了非常大的。CNN或者DNN要想順利工作,離不大的。在本題中,我們上部署的CNN模型表現(xiàn)優(yōu)良,在超過2000人參賽的情況下,在本文撰寫完成的時(shí)間節(jié)點(diǎn)能夠在第35位。我們的基于ResNet和Net的CNN模型,下的驗(yàn)證場(chǎng)景中,均方誤差RMSE能達(dá)到7.8左右,弱覆蓋率PCRR接近另一個(gè)解決此類數(shù)據(jù)分析和回歸問題的常用方法就是基于樹的集成學(xué)習(xí)模型。這類方法以隨機(jī)森林、GBDT、XGBoost、LightGBMtLightGBMXGBoostXGBoostLightGBMLightGBM,LightGBMbaseline,LightGBM用LightGBM推RSRPRSRPRMSE6.6PCRR0.53,八、參考文獻(xiàn)[1],,.5G模型分析[J].移動(dòng)通信,2018,42(10):19-[2]ChristianSzegedy,WeiLiu,YangqingJia,PierreSermanet,ScottReed,DragomirAnguelov,DumitruErhan,VincentVanhoucke,AndrewRabinovich CVPR2015,pp.1-9[3]伃.無線網(wǎng)絡(luò)優(yōu)化 模型校正的研究[D].郵電大學(xué),2011:13-成瀾.無線信道仿真與建模 ].:華技大學(xué)館SIGKDDConferenceonKnowledgeDiscoveryandDataMining,Wang.S.S,Wylie-Green.M.P.GeolocationPropagationModelingforCellular-BasedPositioning.In:VehicularTechnologyConference,2004.VTC2004-Fall.2004IEEE60th.Irving:MMalkawi,線通信技術(shù),1003-8329(2015)04-0001-06ZafraA,GibajaEL,VenturaS.Multipleinstancelearningwithmultipleobjectivegeneticprogrammingforwebmining[J]. AppliedSoftComputing,2011,11:93-102.,,等.蜂窩移動(dòng)通信射頻工程[M].第二版.:人民郵電 /2018/01/gradient-boosting-tensorflow-vs-TianqiChenandCarlosGuestrin.XGBoost:AScalableTreeBoostingSystem.InGuolinKe,QiMeng,ThomasFinley,TaifengWang,WeiChen,WeidongMa,QiweiYe,Tie-YanLiu."LightGBM:AHighlyEfficientGradientBoostingDecisionTree".AdvancesinNeuralInformationProcessingSystems30(NIPS2017),pp.3149-3157.韋惠民.蜂窩移動(dòng)通信技術(shù)[M].第一版.西安:西安電子科技大學(xué),2002MinLin,QiangChen,ShuichengYanNetworkInNetworkICLR2014KaimingHeXiangyuZhangShaoqingRenJianSun.DeepResidualLearningforImageRecognition.CVPR2016附錄:importmathimportnumpyasnpimportpandasaspdpreprocessed_data={}filesDatas=[]fork,vinpb_data #刪除通過特征選擇找到的多余特征input_datanp.concatenate((input_data5input_data6axis=1)#使用訓(xùn)練集的特征,減均值除方差歸一化,,,,,,,-,,,,,,,, ,,,filesDatas=np.array(filesDatas,dtype=np.float32).reshape((-1,preprocessed_data['myInput']=filesDatasinfer_output["RSRP"]=results##(X1,Y1),(X2,Y2)->xx=train['CellX']-yy=train['CellY']-train['Y']dist=np.sqrt(xx*xx+yy*yy)##computeheightdifferentfromcellbuildingtocustom&realheightofcellbuildingdiff=(train['CellBuildingHeight']+train['CellAltitude']+train['Height'])\arcs=(train['ElectricalDowntilt']+train['MechanicalDowntilt'])/180*math.pifori,arcinenumerate(arcs):diff[i]-=dist[i]*real_height=train['CellBuildingHeight']+train['CellAltitude']+train['Height']col_name=train.columns.tolist()col_name.insert(9,'CellHeight')col_name.insert(1,'Distance')train1=train1=train1.drop(columns=['CellBuildingHeight','BuildingHeight','CellAltitude','Altitude','CellX','CellY','X',train1['HeightDifference']=difftrain1['Distance']=distcol_name=train1.columns.tolist()col_name.insert(11,'NewCellClutterIndex')col_name.insert(11,'NewClutterIndex')train1=train1.reindex(columns=col_name)clutter_index_dict={2:1,5:2,6:3,7:4,8:5,10:6,11:7,12:8,13:9,14:10,15:11,16:12,17:13,18:new_clutter_index=np.zeros((train1.shape[0],))new_cell_clutter_index=np.zeros((train1.shape[0],))new_clutter_index=train1['ClutterIndex'].map(clutter_index_dict)train1['NewClutterIndex']=new_clutter_indextrain1['NewCellClutterIndex']=new_cell_clutter_indextrain1=train1.drop(columns=['ClutterIndex','CellClutterIndex'])returntrain1importmathimportnumpyasnpimportosimportpandasas importpicklewithopen('./X_train_all.pkl','rb')asf:train_data=pickle.load(f)#train_mean=np.mean(train_data,axis=0)train_var=np.std(train_data,axis=0)train_data-=train_mean#pca=PCA()y=transformed_data#y=dataxPlambdas=M=((y*y)/(lambdas+1e-8))#q=10ponents=M[:,range(q)]ponents=np.sum(M,axis=1)thre=components.ponents>importmathimportnumpyasnpimportosimportpandasaspdimportsysimportlightgbmaslgb positionimportfromsklearn.preprocessingimportOneHotEncoder,path1='./train_set1/'files=X_train_all=np.zeros((0,11))X_val_all=np.zeros((0,11))y_train_all=np.zeros((0,))y_val_all=np.zeros((0,))withopen('./X_train_all.pkl','rb')asf:X_train_all=pickle.load(f)withopen('./X_val_all.pkl','rb')asf:X_val_all=pickle.load(f)withopen('./y_train_all.pkl','rb')asf:y_train_all=pickle.load(f)withopen('./y_val_all.pkl','rb')asf:y_val_all=pickle.load(f)X_train_all=np.concatenate((X_train_all[:,:5],X_train_all[:,6:]),axis=1)X_val_all=np.concatenate((X_val_all[:,:5],X_val_all[:,6:]),axis=1)lgb_train=lgb.Dataset(X_train_all,label=y_train_all)lgb_val=lgb.Dataset(X_val_all,label=y_val_all)param{'num_leaves':15000,#'max_depth':28,'num_threads':4,#'min_data_in_leaf':100,'metric':'l2_root'#}gbm=path1='./train_set1/'files=feature_imp=pd.DataFrame(sorted(zip(gbm.feature_importance(),train1.columns)),columns=['Value','importargparseimportnumpyasnpimportosimporttensorflowastf#getdataimportpicklewithopen('/ghome/zhanght/MathModel/X_train_all.pkl','rb')aswithopen('/ghome/zhanght/MathModel/X_val_all.pkl','rb')asX_val_all=withopen('/ghome/zhanght/MathModel/y_train_all.pkl','rb')aswithopen('/ghome/zhanght/MathModel/y_val_all.pkl','rb')asy_val_all=#X_train_all=np.concatenate((X_train_all[:,:5],X_train_all[:,6:]),axis=1)X_val_all=np.concatenate((X_val_all[:,:5],X_val_all[:,6:]),axis=1)data_mean=np.mean(X_train_all,axis=0)data_var=np.std(X_train_all,axis=0)X_train_all-=data_meanX_train_all/=data_varX_val_all-=data_meanX_val_all/=data_varparser.add_argument('--reg',default=5e-4,type=float)parser.add_argument('--lr',default=2e-4,type=float)parser.add_argument('--dr',default=1.0,type=float)parser.add_argument('--ds',default=1000,type=int)parser.add_argument('--epoch',default=100,type=int)parser.add_argument('--print_freq',default=500,type=int)parser.add_argument('--batch_size',default=2048,type=int)args=parser.parse_args()#trainaspecificmodel#defineourinput(e.g.thedatathatchangesevery#ThefirstdimisNone,andgetssetsautomaticallybasedonbatchsizefedinX=tf.ceholder(tf.float32,[None,10],name="input_X")##definedefX=tf.reshape(X,[-1,10,1,regularizers=#layerWconv1=tf.get_variable("Wconv1",shape=[5,1,1,64])bconv1=tf.get_variable("bconv1",shape=[64])conv1=tf.nn.conv2d(X,Wconv1,strides=[1,1,1,1],padding='SAME')+bconv1#batch1=tf.layers.batch_normalization(conv1,training=is_training)relu1=tf.nn.relu(conv1)bconv2=tf.get_variable("bconv2",shape=[64])conv2=tf.nn.conv2d(relu1,Wconv2,strides=[1,1,1,1],padding='SAME')+bconv2#batch2=tf.layers.batch_normalization(conv2,training=is_training)relu2=tf.nn.relu(conv2)bconv3=tf.get_variable("bconv3",shape=[64])conv3=tf.nn.conv2d(relu2,Wconv3,strides=[1,1,1,1],padding='SAME')+bconv3#batch3=tf.layers.batch_normalization(conv3,training=is_training)conv3+=relu3=tf.nn.relu(conv3)bconv3_2=tf.get_variable("bconv3_2",shape=[128])conv3_2=tf.nn.conv2d(relu3,Wconv3_2,strides=[1,1,1,1],padding='SAME')+bconv3_2#batch3_2=tf.layers.batch_normalization(conv3_2,training=is_training)relu3_2=bconv4=tf.get_variable("bconv4",shape=[128])conv4=tf.nn.conv2d(relu3_2,Wconv4,strides=[1,1,1,1],padding='SAME')+bconv4#batch4=tf.layers.batch_normalization(conv4,training=is_training)relu4=tf.nn.relu(conv4)bconv5=tf.get_variable("bconv5",shape=[128])conv5=tf.nn.conv2d(relu4,Wconv5,strides=[1,1,1,1],padding='SAME')+bconv5#batch5=tf.layers.batch_normalization(conv5,training=is_training)conv5+=relu5=tf.nn.relu(conv5)bconv5_2=tf.get_variable("bconv5_2",shape=[256])conv5_2=tf.nn.conv2d(relu5,Wconv5_2,strides=[1,1,1,1],padding='SAME')+bconv5_2#batch5_2=tf.layers.batch_normalization(conv5_2,training=is_training)relu5_2=tf.nn.relu(conv5_2)bconv6=tf.get_variable("bconv6",shape=[256])conv6=tf.nn.conv2d(relu5_2,Wconv6,strides=[1,1,1,1],padding='SAME')+bconv6#batch6=tf.layers.batch_normalization(conv6,training=is_training)relu6=tf.nn.relu(conv6)bconv7=tf.get_variable("bconv7",shape=[256])conv7=tf.nn.conv2d(relu6,Wconv7,strides=[1,1,1,1],padding='SAME')+bconv6#batch7=tf.layers.batch_normalization(conv7,training=is_training)conv7+=relu7=tf.nn.relu(conv7)#layer5:1W1=tf.get_variable("W1",shape=[10*256,1])b1=tf.get_variable("b1",shape=[1])relu7=tf.reshape(relu7,[-1,10*256])y_out=tf.matmul(relu7,W1)+b1y_out=tf.reshape(y_out,[-1,])returny_out,defX=tf.reshape(X,[-1,10,1,regularizers=#layerWconv1=tf.get_variable("Wconv1",shape=[5,1,1,64])bconv1=tf.get_variable("bconv1",shape=[64])conv1=tf.nn.conv2d(X,Wconv1,strides=[1,1,1,1],padding='SAME')+bconv1#batch1=tf.layers.batch_normalization(conv1,training=is_training)relu1=tf.nn.relu(conv1)#layerbconv2=tf.get_variable("bconv2",shape=[128])conv2=tf.nn.conv2d(relu1,Wconv2,strides=[1,1,1,1],padding='SAME')+bconv2#batch2=tf.layers.batch_normalization(conv2,training=is_training)relu2=tf.nn.relu(conv2)#layer3,withabconv3=tf.get_variable("bconv3",shape=[128])conv3=tf.nn.conv2d(relu2,Wconv3,strides=[1,1,1,1],padding='SAME')+bconv3#batch3=tf.layers.batch_normalization(conv3,training=is_training)#batch3+=relu3=tf.nn.relu(conv3)bconv4_1=tf.get_variable("bconv4_1",shape=[64])conv4_1=tf.nn.conv2d(relu3,Wconv4_1,strides=[1,1,1,1],padding='SAME')+bconv4_1#batch4_1=tf.layers.batch_normalization(conv4_1,training=is_training)relu4_1=tf.nn.relu(conv4_1)conv4_2a=tf.nn.conv2d(relu3,Wconv4_2a,strides=[1,1,1,1],padding='SAME')+bconv4_2a#batch4_2a=tf.layers.batch_normalization(conv4_2a,training=is_training)relu4_2a=tf.nn.relu(conv4_2a)Wconv4_2b=tf.get_variable("Wconv4_2b",shape=[3,1,32,64])bconv4_2b=tf.get_variable("bconv4_2b",shape=[64])conv4_2b=tf.nn.conv2d(relu4_2a,Wconv4_2b,strides=[1,1,1,1],padding='SAME')+bconv4_2b#batch4_2b=tf.layers.batch_normalization(conv4_2b,training=is_training)relu4_2b=tf.nn.relu(conv4_2b)bconv4_3a=tf.get_variable("bconv4_3a",shape=[32])conv4_3a=tf.nn.conv2d(relu3,Wconv4_3a,strides=[1,1,1,1],padding='SAME')+bconv4_3a#batch4_3a=tf.layers.batch_normalization(conv4_3a,training=is_training)relu4_3a=tf.nn.relu(conv4_3a)Wconv4_3b=tf.get_variable("Wconv4_3b",shape=[5,1,32,64])bconv4_3b=tf.get_variable("bconv4_3b",shape=[64])conv4_3b=tf.nn.conv2d(relu4_3a,Wconv4_3b,strides=[1,1,1,1],padding='SAME')+bconv4_3b#batch4_3b=tf.layers.batch_normalization(conv4_3b,training=is_training)relu4_3b=tf.nn.relu(conv4_3b)bconv4_4a=tf.get_variable("bconv4_4a",shape=[32])conv4_4a=tf.nn.conv2d(relu3,Wconv4_4a,strides=[1,1,1,1],padding='SAME')+bconv4_4a#batch4_4a=tf.layers.batch_normalization(conv4_4a,training=is_training)relu4_4a=tf.nn.relu(conv4_4a)Wconv4_4b=tf.get_variable("Wconv4_4b",shape=[3,1,32,64])bconv4_4b=tf.get_variable("bconv4_4b",shape=[64])conv4_4b=tf.nn.atrous_conv2d(relu4_4a,Wconv4_4b,rate=2,padding='SAME')+bconv4_4b#batch4_4b=tf.layers.batch_normalization(conv4_4b,training=is_training)relu4_4b=tf.nn.relu(conv4_4b)relu4=tf.concat([relu4_1,relu4_2b,relu4_3b,relu4_4b],3)#inceptionresiduallayer5bconv5_1=tf.get_variable("bconv5_1",shape=[128])conv5_1=tf.nn.conv2d(relu4,Wconv5_1,strides=[1,1,1,1],padding='SAME')+bconv5_1#batch5_1=tf.layers.batch_normalization(conv5_1,training=is_training)relu5_1=tf.nn.relu(conv5_1)bconv5_2a=tf.get_variable("bconv5_2a",shape=[64])conv5_2a=tf.nn.conv2d(relu4,Wconv5_2a,strides=[1,1,1,1],padding='SAME')+bconv5_2a#batch5_2a=tf.layers.batch_normalization(conv5_2a,training=is_training)relu5_2a=tf.nn.relu(conv5_2a)Wconv5_2b=tf.get_variable("Wconv5_2b",shape=[3,1,64,128])bconv5_2b=tf.get_variable("bconv5_2b",shape=[128])conv5_2b=tf.nn.conv2d(relu5_2a,Wconv5_2b,strides=[1,1,1,1],padding='SAME')+bconv5_2b#batch5_2b=tf.layers.batch_normalization(conv5_2b,training=is_training)relu5_2b=tf.nn.relu(conv5_2b)bconv5_3a=tf.get_variable("bconv5_3a",shape=[64])conv5_3a=tf.nn.conv2d(relu4,Wconv5_3a,strides=[1,1,1,1],padding='SAME')+bconv5_3a#batch5_3a=tf.layers.batch_normalization(conv5_3a,training=is_training)relu5_3a=tf.nn.relu(conv5_3a)Wconv5_3b=tf.get_variable("Wconv5_3b",shape=[5,1,64,128])bconv5_3b=tf.get_variable("bconv5_3b",shape=[128])conv5_3b=tf.nn.conv2d(relu5_3a,Wconv5_3b,strides=[1,1,1,1],padding='SAME')+bconv5_3b#batch5_3b=tf.layers.batch_normalization(conv5_3b,training=is_training)relu5_3b=tf.nn.relu(conv5_3b)bconv5_4a=tf.get_variable("bconv5_4a",shape=[64])conv5_4a=tf.nn.conv2d(relu4,Wconv5_4a,strides=[1,1,1,1],padding='SAME')+bconv5_4a#batch5_4a=tf.layers.batch_normalization(conv5_4a,training=is_training)relu5_4a=tf.nn.relu(conv5_4a)Wconv5_4b=tf.get_variable("Wconv5_4b",shape=[3,1,64,128])bconv5_4b=tf.get_variable("bconv5_4b",shape=[128])conv5_4b=tf.nn.atrous_conv2d(relu5_4a,Wconv5_4b,rate=2,padding='SAME')+bconv5_4b#batch5_4b=tf.layers.batch_normalization(c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論