參與阿里巴巴移動推薦演算法比賽感想與總結

2021-07-04 05:39:52 字數 3035 閱讀 1065

雖然昨晚是提交結果的最後一晚,但對於我們隊而言,比賽已經在前幾天就已經結束了。就像是乙個癌症晚期的病人,深知沒有存活的希望一樣,放棄了掙扎,等待死神降臨。

我們最終的排名是113。不理想的結果。對於一開始就抱著想要拿到乙個好的名次的參賽初衷的自己,不想在這個時候說什麼'重在參與','重在提高',這些都不過是失敗者的自我安慰罷了。自庭(我的隊友)和我的感受是一樣的,只有無奈的接受這個結果。

3個月的過程就像是一次創業的過程,一切都是從無到有。所有辛酸歡樂,都在這個過程中品嚐。寫下來銘記之。

去年的時候,看到阿里的天池大資料競賽,想要參加,這個比賽正是一次將自己想要研究的機器學習方向的知識很好實踐的過程;當時自己基本上什麼都不會,想要過一年再來參加的。不過最終還是被ex說服,和班裡的曉濱以及康哥一起參加了。我們三個都沒有什麼經驗,結果並不理想,在初賽的時候就淘汰了。

今年再次看到這個比賽,沒有任何的猶豫,就報名了。同時還拉攏了實驗室的學霸自庭一起加入。實驗室裡老師不讓參與實習,那麼參加這個比賽獲取乙個好的名次也可以看作是一次與實習相當的經歷。抱著不想讓找工時候簡歷一片空白的願望,我們也成了7000多支參賽隊伍中的一員(初賽時候水軍很多,實際上最多1000多支隊伍)。

將比賽的問題弄清楚,找到解題思路還是花了我們很長一段時間的。最終,和大多數人一樣,我們把這個問題看成是乙個二分類問題,先採用最簡單的logistics回歸模型作為最開始的分類器。這個階段讓我受益最多的是自庭在這個過程中體現出的各種優秀品質:學習python的深入,程式整體框架的構建,視覺化操作,邏輯的嚴謹性等。我們一步步將整個解題框架搭建起來,當終於成績不再是0的時候,我們高興壞了,記得當時寫道:「今天終於有成績了,算是對自庭和我的一次肯定。我們的框架搭建起來了,演算法的完善是日後的重點,工作量也會輕鬆一些。」

那時候的我們白天應付著實驗室的工作,晚上寫程式將心中的想法一一實現。回去的時候差不多12點了,因為晚歸,基本上都要在值班室登記。有乙個樓管阿姨對我特別好,每一次我晚歸,她都會微笑著揮揮手,說:「又做實驗啦?沒事,直接上去吧~」 示意我不用簽名。我心裡默默感激,阿姨的善解人意也算是一種對我的默默支援。我想著當比賽完了要好好謝謝阿姨。可惜的是,前幾個星期回去的時候就發現,發現那位阿姨已經換崗了(可能調走了也可能做別的工作了)。

初賽階段所得到的種種經驗,都是在書本知識上體會不到的,我們接觸的是真實的資料,思路的是否正確,模型的好與壞等都可以直接從結果中得到最直接的反饋。資料清洗、特徵選擇、模型融合等手段都在這個過程中慢慢被我們掌握。兩個人之間的**書寫過程需要不斷溝通,以達到更好的銜接,這個過程讓我切身體會到了自己程式設計寫**的差勁程度。

進入複賽選取的是前500,最終我們是以第146名的身份進入複賽的。不太光明的一點是,為了一天多測試幾組資料,我們開通了幾個小號,這在一定程度上影響了比賽的公平性(當然,對實際結果的影響很微弱)。在此感謝啊謙、智聰、我妹的友情客串,哈哈~

複賽是在阿里的御膳房平台上操作的,這個平台可真的是坑了我們很多。不完善的指導資料,不穩定的執行過程,越來越卡的執行速度。如果悲觀去看,我們可真的就是御膳房平台效能測試的小白鼠,太折騰。我想前500支隊伍當中會有1/10的人會因為無法忍受這個平台而直接放棄吧。但我們接觸到的確實是真正意義上的大資料(50億的資料量),也唯有在它這個平台上才有可能操作。

也正是因為複賽的操作太耗時間了(平台問題,以及程式語言需要重新學(由初賽python轉為sql與mr)),讓我一度有了退出比賽的衝動。我真正在意的是關於機器學習相關的知識,但是實際上大部分時間都是在適應這個平台以及搭建新的實驗框架上。和自庭說過,當比賽的框架在御膳房那裡搭建起來的時候,我就要縮減花在這個比賽上的時間,以增加找工作所需的必備知識的學習與掌握。但是實際上我並沒有這樣做,或許是我無法同時做好多項任務吧。

也有過這麼一段時間,家裡面的糾紛、實驗室老師工作的催促、比賽這三件事情一齊壓過來的時候,精神上的壓力真的很大。睡眠時間嚴重不足。好久不見的師弟感慨我這麼憔悴了這麼多,呵呵。不過最終還是挺過來了。

終於重新搭建好了整個框架,也基本上將初賽時候的各種思路在現有平台上得到了實現,得到了4.66%的線上f1的成績,記得當時應該排在50名左右。至少在我看來,依照我們的努力,奔到排名的首頁(前20)應該是乙個可實現的目標。這個時候我們倆對接下來該往那一步走展開了激烈討論,最終決定的是:盡力跨過資料集中雙12這個坎,從而將訓練資料可以盡可能延伸(半個月或者乙個月),並且在特徵選擇上盡可能地增加特徵。大體思路確定下來之後,我們開始著手實現。但是沒有想到的是,花了將近乙個月的時間,實現了以上思路,但是結果僅僅提公升到了4.70%。距離比賽結束的日期已經越來越近了,想要推倒一切重來已經不可能了,那時候的平台越來越卡,留給我們的時間所剩無幾。只有在這個基礎上修修補補,嘗試了平台已有的不同演算法,也嘗試了不同取樣正負比以及不同思路的模型融合方法,希望成績能夠有小幅度提公升(那時候的我們已經跌到了100名左右)。

我在想,如果當時我們採取了另外一種思路:直接在原有資料集上增加特徵,並且注重檢驗特徵的有效性。那麼結果應該會有所不同。當然,這都是事後諸葛,並且所謂的不同思路都是在不斷嘗試過程中才發現的經驗之談。就像所有的決策一樣,很難料到當時的決策會帶來怎樣的影響。也就是從那個時候起,我們漸漸偏離了上公升的軌道,慢慢滑落,與此同時,我們的信心也受到了嚴重的打擊。

如果不參加這個比賽,很難會有這樣一段經歷,我所認為的這就像一次創業的過程(我並沒有創業過),重要的就體現在這樣乙個起起落落的過程。

當然,我們並沒有就此放棄。有那麼幾天,為了加快測試引數的程序,我也試過凌晨3點左右起來跑資料,檢驗不同引數的有效性。我也可以和那個愛裝逼的科比一樣,說:「我見過凌晨4點的華工」。哈哈~

我們的分數也有了緩慢的提高,它是這麼緩慢,以致於我有一天跟自庭講:「很苦逼的感覺,這樣拼命,結果只提公升了0.003%,就有一種你拼死拼活了乙個星期,工資就只**了一毛錢的感覺。。。」

本來已經決定不弄了,沒想到自庭昨晚又給了我乙個新處理過的資料集,嘗試了一些引數,效果比之前的要好一些。最後一次提交的機會了,時間只剩下幾個小時。自我感覺很難弄出乙個很好的引數,但還是無法掩飾心中的激動心情,以前的情緒就像死灰復燃一般,開始了新一輪的調參過程。

結果?結果並沒有超過最好的那一次成績。呵呵,很多次的經歷之後,學會了平靜接受這個結果。

為期3個月的過程,苦逼、充實。感謝學霸隊友的無私指導,感謝舍友對我不規律作息時間的理解,感謝初賽時候的那幾個「搶手」,嘻嘻~同樣的,感謝阿里以及那個坑爹的平台帶給我們的一次嘗試的機會。接下來就要投身到找工的準備過程中去。

**:[

我參與阿里巴巴 ASoC Seata 的一些感悟

看一看日曆 這個不同尋常的 2020 年,馬上就要結束了。這一年,有幸參與阿里巴巴組織 asoc 活動,有一段讓我難忘的不平凡經歷。這一年,卻已可以稱為是國際開源實習發展歷程中不平凡的一年。初心 beginner s mind 唯有守得住初心,才能日益精進。我先來說說 seata 這個專案的 ide...

阿里巴巴編碼規範(JAVA)認證考後感

if語句使用衛語句減少層級巢狀。衛語句就是把複雜的條件表示式拆分成多個條件表示式,比如乙個很複雜的表示式,巢狀好幾層的if then else語句,轉換為多個if語句,實現它的邏輯,這多條的if語句就是衛語句。if obj null 轉換成衛語句以後的 如下 if obj null dosometh...

阿里巴巴演算法崗程式設計題 菜鳥倉庫

菜鳥倉庫是乙個很大很神奇的地方,各種琳琅滿目的商品整整齊齊地擺放在一排排貨架上,通常一種品類的商品會放置在貨架的某乙個格仔中,格仔設有統一的編號,方便工人們挑選。有一天沐哲取菜鳥倉庫參觀,無意中發現第1個貨架格仔編碼為1,第2 3個分別為1,2,第4 6個格仔分別是1,2,3,第7 10個格仔編號分...