2020華為杯數學建模B題-RON建模 賽后總結與分析


 好久好久沒有寫博客了。。。挺累的,從二月份開始找暑期實習,接着在進行暑期實習,然后馬不停蹄地進行秋招,現在總算結束實習,前兩天又參加了華為杯數學建模競賽,感覺接下來就會很輕松了,希望能好好休息休息。這次的比賽還是挺簡單的,比起以前參加社會性質的比賽不同,這次不管是從題目還是從要求上都簡單幾個檔次。

1. 數據清洗

2.降維

3.模型訓練

4.優化

5.畫圖

6.結論

 

1. 數據清洗

說實話,我是挺費解的,看到論壇上好多人都在罵B題數據不對,數據質量差,其實來說,數據整體還算不錯,只有幾列問題比較大,而且那些列都是異常的大,實際上數值的大小對我們本題影響不大,而且那些異常列並不是大的混亂,他們一般要是異常,都是全部異常,其實這樣子的話,信息量就很少了,他們對我們目標貢獻值也就會很低,建模過程中特征直接去掉就可以了,畢竟就選了30個特征,原特征有300多個。

以上是針對一些討論比較激烈的點的一些個人看法。

接下來針對幾個討論的比較多的點說一下個人看法

1. 首先是數據去空,去0,這里我們主要是看極大值極小值和0的交叉,如果0不在極限值或者極大值內,那么說明這是一個空數據,那我們要么是填充,要么是剔除,我們會發現里面有幾列就異常了幾個數據,我們可以認為這是測量故障,直接用平均值填充就可以了,但是有兩列,他們都有16個點位異常,其實我們仔細觀察一下數據,可以發現他們0出現的還算有規律,我猜測可能是那種周期性排氣,同時我們也要直接對這幾列數據做平均,發現為33 ,也就是313數據周圍的312 314 數據異常不大,因此我們可以認為其是正確的。就不要進行操作了。這就是對空值的處理

2. 對於極大值和極小值,我覺得這里題目有些問題吧,我們即不能完全剔除,本來數據量就不多,再剔除就沒了。。。 所以我采用限幅的辦法,但是這里我還是做了一個騷操作,如果表3某一列都超幅值了,我們用表一周圍的數據進行填充,這樣可以保證我們數據引入的噪聲最小。我覺得這么處理的話,模型訓練下來mse會降低一些,說明是有效的。

3. 異常值篩選,沒啥用吧這個規則。感覺可以忽略。按照我上面這么處理最大值和最小值,然后還有0,改剔除的剔除,改改的改,用這個規則幾乎不刪除數據,所以我覺得我前面處理的還是很有效果的。

我認為這個數據整體質量還算可以,有點小瑕疵,但是很明顯是已經經過幾道處理了。從括號有的中文有的英文就可以看出來,那里其實用一個正則就好了。。。畢竟常規操作。

2. 降維

這一步主要是用祖傳算法,打比賽的那些降維方法一鍵降維,什么卡方,IV 都用上,然后再模型融合一下,再用lightGBM進行特征分裂篩選,就ok了,沒啥好說的。曬特征,沒什么技術含量,都是祖傳代碼。

3. 模型建立

    這里我嘗試了三個模型,lgb,線性回歸,神經網絡,結果是lgb也就比線性回歸好了0.002。。。所以我就有點懷疑是不是我降維的時候特征選的太好了,全是線性的。神經網絡差一些,mse 0.05。所以這里我們就用線性回歸模型,原因嘛,當然是奧卡姆剃刀原則,同時線性回歸參數直接獲得模型權重,為后面兩問打基礎

4. 優化

 這一問特別有意思,我也覺得是拉開差距的點吧。這道題我一看到的思路,就是用第三問的模型結果,因為他們是線性的,所以只要根據模型正負號,取極大值或者極小值就可以了。所以一開始我就是這么做的,確實可以找到一些3個變量,讓損失降低30 以上。 但是這就帶來了一個問題,如果我把所有操作變量都調到最優,我們會發現損失變成負的了。。。這里其實就暗示了我們一個問題。

就是我們的極值的取值范圍需要再去尋找。

想了挺久的,在第三天的時候才想到,S的含量在5以下,因此我按照S進行數據幅值的確定新的極值的選定。這個地方思路是怎么來的呢?主要是畫了S和RON的圖像。

 

我們從這個圖可以看出,在89 到90 這一段, 有一個變量嚴重影響着S和RON,讓S和RON反方向變化。因此想到了用S去限制幅值。而且S最低是3.2,可能因為傳感器最少就是3.2吧我覺得。

那么按照S進行建模,一看,損失有點大,到了0.9,感覺要涼涼,后來想到3.2 的幅值,就把預測結果小於3.2的改成3.2,然后一算,還可以,然后我們就這么做了。

接着這道題就迎刃而解了,我們用S去限制最大值和最小值,然后重用我們的第一個模型,這道題就做出來了,哈哈。

 

還有一個問題,就是如何定義降低了百分之30,我的理解是對整體樣本求平均值,然后修改某一個變量,看看整體樣本下降了多少。其實我還有一個理解,對某一個變量操作,計算出325個樣本中有多少個下降了超過百分之30,我個人覺得都對吧,第二個我沒有去驗證,我用的是第一個。不過我覺得應該都對,結果出來應該差距不大吧。

 

5. 繪圖

  沒什么好說的,按照線性回歸的模型,依照我的第四問選出的操作變量和最大值最小值,進行操作,每次操作det個就可以了,然后對133號樣本預測,畫圖就可以

6. 總結

怎么說呢,我覺得這是我參加的最簡單的一次建模吧,可能因為有基礎,參加過社會上的建模比賽,感覺出題方比較溫和,但是看論壇有的老哥火氣就比較大,還是要好好接受題目然后再去解決問題,而不是一味的向出題方撒氣。

從題目來說,前三問問題不大,第四問是挺有意思的,可惜時間不夠,其實這里可以研究幾個變量對RON損失的變化,然后再結合S含量,建立非線性模型,但是時間不夠了。很可惜。差不多絮絮叨叨就說了這些,主要說一下自己的處理方案和一些感悟吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM