1. 程式人生 > >參加2018APMCM B賽題 四天覆述以及對數模和機器學習賽的個人感想

參加2018APMCM B賽題 四天覆述以及對數模和機器學習賽的個人感想

     首先感謝我的隊友——曹學姐以及王學長,讓我第一次數模賽圓滿結束(沒有什麼遺憾吧,盡力了!)。其次,感謝田學長(csdn:Font Tian)給我的兩份題目分析,以及王學長(csdn:那岐)對我演算法的指導。

     這次亞太賽,個人認為AB兩題給的資料集都有問題。但是A總體而言,只要有思路,A賽題就能作出,而且並不複雜。參考神經網路或者是此處部落格:http://blog.sina.com.cn/s/articlelist_5975650474_0_1.html   (如果打數模賽都可以關注這個老師一下!)此處不多複述。再講講B賽題。

     B賽題是人才方面的問題。而我從一進大學開始,就開始著手人才類的研究(因為當初獵場火爆以及搶人才大戰的社會輿論火爆),並且我在暑期做過人才類實地調研。故看到賽題就擬定是B。後來發現,B題和我當初的調研有非常大的不同。B賽題更多的是對崗位應聘人的學歷不同以及時間序列來給的資料集。有三個不同的變數:1,行業(48個可用,有一個行業是空);2,時間(2015到2018,還有一份不懂為什麼用的2011資料集,我們沒有放入使用是一個缺點。);3,應聘人學歷(非常大的問題就是,總需求人數和後面所有學歷相加人的人數不對等)。這樣是我所說,賽題有問題。

    剛開始那天(星期四),我們因上午全有課,改為下午討論,上午各自思考賽題。然後我們在下午做的過程中,我們選擇先清洗資料。這裡因為我以前是先接觸的機器學習後學的數模演算法,故我對資料的質量要求非常高,花了太多太多時間,導致了後面的一些問題(時間消耗嚴重,和隊友上課時間衝突,溝通不夠等等)然後做好資料清洗,時間已經比較晚了。我們開語音聊天后,先選擇多元線性迴歸。但是結果並不理想(我並不知道隊友的做法是如何,溝通不夠,因為並不是我做而後面隊友有事情,好像放棄了導致第一題我到第三題才有完整思路。)然後我們探討了SVM的可行性,發現也不行。第一天陷入困境。我感到非常的焦躁,感覺自己什麼都沒做,拖累了他們。但是隊友還是給於鼓勵。第一天我們的進度,是第一題圈定演算法和第二題演算法設想。

    第二天,我早上一直在搜尋演算法(這裡發現是不能這樣做的,而應該去搜索文獻資料,因為後面瞭解到,有類似現成文章,但是時間已經來不及了。後悔!)我認為第二題可以用時間序列去分析。然後告訴了隊友我的想法後,他表示肯定,然後讓我先做。在這個時間我突然回看第一題,發現如果用聚類降維思路,劃分出行業規則再擬合迴歸線,可能有奇效。然後,下午,我找了kmeans和pca程式碼,降維度後,又陷入困境,因為不知道如何去擬合迴歸線(不知道目標是什麼,約束條件是什麼)到晚上,我突然感覺,如果擬合總需求人數,將後面學歷背景作為引數,擬合,反向求出行業人才學歷結構。(因為機器學習做多了,思想上一直是特徵工程,但其實並不是。後面論述數模和機器學習區別)。發現利用分類後,擬合迴歸的引數比較理想。然後確定,第一題思路——聚類後迴歸。而後回到第二題,因為先前思路是時間序列,我們在第一天嘗試了BP神經網路後,發現結果不理想,後重新找演算法。我當初看到田學長分析,可以藉助ARIMA模型,後找資料(http://www.10tiao.com/html/284/201608/2652390079/1.html  類似文章)發現擬合結果,呈現下降趨勢後平緩。懷疑程式碼問題,但是時間來不及了(我並麼有事先了解時間序列模型。因為機器學習掌握了RNN對這些沒有關注)

    第三天,第二題,白天沒有絲毫進度,自暴自棄打王者去了。晚上觀看部落格,發現灰度預測模型,然後找了一篇matlab程式碼,直接輸入36個時許後,被告知精度等級不夠,改用年為單位輸入,發現精度等級一級,果斷使用,跑出人數,雖然個人感覺非常扯淡。但是時間來不及多想了。期間隊友做了48個行業人數需求圖,9個學歷需求圖。我將此作為依據,逐個分析,然後圈定沿海二線城市(珠三角,長三角),根據IT業發達,手工業沒人的情況,圈定杭州。

   第四天,第四題和第五題思考已經力不從心了。因為隊友臨時有事,不再參與,我就直接套用了我在暑期做的人才吸引力模型以及當初做的資料集。後加班加點,和另一隊友熬夜寫論文。(是的,沒錯!一個晚上,寫好論文提交。估計成績很差。)

  感想以及對數模和機器學習賽的認知:

1.要有耐心。數模賽不是一個長期比賽的東西。他不像機器學習賽,不需要多少可靠的精度要求。所以他的滿足感是缺少的。而且持續時間短,沒有多少時間給你細緻的去思考。最重要的是,他的分析是多變的,可用模型是多量的,沒有正確答案。但是機器學習賽,只需要會python,瞭解keras,sklearn和pandas三個庫就足夠應付所有的比賽了。但是數模,你需要了解10多個不同模型。總體而言,機器學習賽更多偏向是統計模型,而數模是運籌模型。是兩個不對等的比賽。風格類似,其思維大致相同,都是為了解決某個問題去找到優化。所以需要掌握多個模型,以便隨時更換。

2.是最重要的,要能堅持!我看到很多人放棄比賽了。數模賽更多的是對思維的培養。如何找到一個可變數,一個自變數;如果找到一個優化點。是非常主觀的。但是機器學習賽是客觀的,他是冷冰冰的他只管你精度,不管其模型不管其分析思維不管其文案(不用寫論文,適合所有年齡段的學生)。但是數模不僅要知其然還要知其所以然,要能論述要了解這個模型的好處在哪,要指出來。所以,數模獲獎,有一大部分是論文寫的好。這樣側面突出機器學習的客觀和獲獎的難度性(權威性!只有topn,但它是小眾!)數模賽水平參差不齊,很多人是混的,而且有老師暗中幫助,也是我最唾棄的一點。但是沒辦法,真香。所以只要堅持寫完,基本上數模都能獲獎,雖然很水,但也可以有滿足。

3.如果你對資料分析感興趣那就研究機器學習賽吧。如果是為了獲獎,那就參與數模。說句大實話,數模只是將一些論文改掉,就是參賽了。他其實可以完全不懂數學,可以完全不懂程式碼,只要能語文建模,天花亂墜,那就能獲獎。因為分析,可能是非常直觀的,可能就幾句話而已但是要寫成千把來的字。。。(學校老師的參與就像是外掛,而學校、老師為了榮譽,作出如此不公平的選擇真是)

以上是我個人的感覺,不喜勿噴