上週是淘寶穿衣搭配算法大賽開始評測後的第一週,周冠軍是來自浙江大學的"FUC AUTH"隊。他們在奪得本週冠軍以後,還將本身的獲勝經驗分享給了你們,究竟有什麼祕訣呢?python
阿里巴巴天池大數據競賽在浙大師兄們的口碑中一直很不錯,它真正意義上地爲咱們提供了海量數據源和大數據處理平臺,尤爲是大數據處理平臺是在高校實驗室中很難提供。對於之後走向大數據方向的研究人員而言也很具有科研價值,大數據比賽確實也鍛鍊大數據挖掘算法和程序優化,讓咱們受益不淺。算法
因爲咱們團隊也差很少都是新手,能取得這樣的成績,確實激勵咱們,讓咱們更有信心面對未來的挑戰。在高興的同時咱們也深入地意識到到目前比賽剛開始,許多大牛還未真刀真槍開始幹,咱們如今取得的成績也不可驕傲。編程
而在比賽期間,咱們確實遇到過不少困難:緩存
1程序運行時間過長數據結構
程序運行時間過長,尤爲是本文挖掘部分,因爲咱們採用的比較詞向量TF/IDF的類似度的方法,然而詞向量維度過高,計算量大。若是採用常規方法計算須要整整1天多,爲了解決計算速度問題,咱們採用能預先計算的結果預先緩存到內存字典中,線下用python實現相似基於內存迭代的多進程Map/Reduce方案,開出16進程進行計算,將時間縮短到1.5小時左右。機器學習
2評價想法的可行性編程語言
想法不少,如何評價想法的可行性,咱們將套餐數據分開爲訓練數據和測試數據,並生成測試數據的標準答案,在線下搭建一個線下評價系統。通過第一天的提交結果反饋,咱們發現咱們的線下評價系統是合理且有效的,線上領先線下0.2%。評價系統能評價出咱們的想法的好壞。比賽就是不斷驗證想法,提出去好的想法並分析其中的緣由,並加以改變。工具
3關於調參問題學習
關於調參問題,以前一直是手工調參,發現效率過低,人工干預麻煩。咱們就採用暴力調參法,先粗條後細調,或者直接採用登山法以及模擬退火法,甚至咱們也開發出一套隨機蒙特卡洛方法。發現蒙特卡洛的方法效率最低,參數維度較少優先選擇暴力法,參數維度較多選用登山法或者模擬退火法。測試
4團隊協做
最後關於團隊協做問題,因爲你們習慣的編程語言不一樣,有C/C++、matlab、python等,爲了更好的協做須要有人能翻譯其餘人的編程語言實現統一版本的語言,好比python,版本統一能不少好處,集體參數調優。相對而言我以爲python很是適合做爲編程工具,拋開其運行效率問題不說,是一種很好的交互式語言,相對於C/C++而言,能夠分步執行,隨時查看結果,與matlab相似。可是matlab有沒有相似python的強大數據結構,字典和列表,還有python機器學習支持很強大,編程很是方便,代碼簡潔。
5給你們的建議
結合上述的困難,我主要給其餘選手的建議:
1. 不斷優化代碼,能預先計算的可重複使用的數據儘可能預先計算好,多用相似hash字典的數據結構緩存變量數據,運行效率提高很大一部分都是在於數據的查詢
2. 想法能夠不少,都須要創建有效的線下評價系統對其進行驗證
3. 模型以前的重要程度能夠簡單設置參數體現,並經過程序調參選擇出最佳參數,每次迭代過程要往評價好的方向走
4. 儘可能不要重造機器學習算法,通常來講各大語言算法都有寫好的計算學習版本,好比python的sklearn,裏面就封裝好本次要使用的TF/IDF模型。
文/天池大數據科研平臺
移動推薦算法賽答辯會Top5選手PPT截圖
(下載方式見底部)