以一個資料科學家來說說我的弱點

yuwei
Jacky’s blog
Published in
Oct 31, 2018
source

在10/31,我將留下一些記錄給你們, 揭露我的弱點,將在接下來的兩個月將這些弱點盡力的補齊。

大家好,這次的文章有點特別,這次的文章靈感啟發於William Koehrsen在不管是找工作或者是申請學校的過程中,在要求簡歷的部分通常都不建議我們把弱點暴露出來,如果我們不學承認我們的不足,我們便無法有效地述說和改進我們缺點,我也願意把我接下來努力的方向分享給各位,

努力去變得更好的過程是很簡單的:

  1. 辨認出你的弱點
  2. 制定計畫去解決你的弱點
  3. 執行這個計畫

身為一個資料科學家, 檢討自己是很重要的,在這永遠學不完的過程中,保持自己對資料和coding的熱情,將自己每天的效率發揮到最好,並不要急於成功,每天都讓自己能夠進步才是最重要的,當你碰到困難時,記住,不要慌張,退一步去了解事情的全貌並思考如何克服問題才是最重要的

在這段日子中,我每天都不斷嘗試著去了解我如何我自己變得更好,所以,我提出了三塊拼圖準備在這段日子中實踐,使我成為一個更好的Data Scientist:

  • 對基本的程式語言的知識嚴重不足
  • 資料分析的深度不足
  • 統計觀念的應用不足

我的目的去寫這篇敘說我的弱點的文章,第一, 我是真的很想越變越好,所以我真誠地承認我的弱點,藉由撰寫我的弱點,我的目標是使我自己保持動力使我完成我的學習目標

William Koehrsen文章中裡面有提到,你不必知道全部的知識才能成為一個成功的資料科學家,資料科學領域裡包含了無數的資料科學/機器學習知識,而你只能了解裡面有限的知識。很常會聽到beginners被非常多的topics淹沒,認為他們學也學不完,我的建議都是一樣,從基本開始和了解到你真的不必每一個知識都了解

針對每個問題,我會試著去闡述這個問題和提出我會如何處理去嘗試解決和使我變得更好。

  1. 對基本的程式語言的知識嚴重不足

因為我不是本身沒有經過大學資工系的洗禮,在後來自學資料科學的過程中,常常在撰寫資料科學project時,為了完成一個複雜的資料處理,我必須撰寫複雜的for loop或迂迴的code,在以後的資料科學生涯裡,工作或在學讀書時,你的code是非常有可能會經過很多人的閱讀的,所以藉由學會基本的程式語言之後,對寫一個簡潔有力和低運行時間的程式碼是相當有效的

因為project,我碰到了需要撰寫非常多變數的時候,在這個過程中,我常常因為太多的變數,導致最後整個script非常的混亂,雜亂無章,我可能沒有辦法藉由簡的尋找和取代因為這個變數被我取得太複雜’LebronTimeBegin’,還有以後如果有機會去美國工作的話,了解正確的資料結構和眾多的演算法對準備要刷題的我是非常valuable的。

不管如何的注意,常常我寫的code都很像一個data scientist而不是一個software engineer,如果你的code不是非常的強壯,你的model是不會被正確執行或fit進一個好的結構裡

我會怎麼解決

如同我之前的文章,沒有什麼方法會比你實際操作來的更快學習,實作實作實作!!!

(1) 實作python的資料結構和資料分析語法,並撰寫在medium上

透過實作資料結構和分析語法,你可以更深刻的記住如何使用python和寫出一個簡單卻非常有效的一行code,也能更有效率的掌握,在資料分析過程中,我如何將腦中的想法即時轉換成code並且也是簡潔的code,這一切都必須是在你長年累月的coding練習下練習出來的

(2) 透過九章算法班學習演算法

對演算法的知識嚴重不足, 所以去有名的中國演算法課程去彌補之後刷題會碰到的演算法難題

(3) 於leetcode進行刷題

開始每日與leetcode上進行刷題,先以每日2題為主,刷easy和medium的題目為主,並針對解法去做深入的了解,將code以時間和空間複雜度最低的狀況呈現

(4) 廣泛閱讀別人的code

閱讀別人的程式碼是讓自己變得更強的過程中很重要的一環,透過kaggle和leetcode上網友的討論來理解如何從不同的角度來解決問題,實際操作並記錄下來

2. 資料分析的深度不足

在資料分析過程中,我認為我對資料的想法還太過粗淺,之前kaggle比賽中,模型一直無法有妥善進步的原因,很大的因素是來自於在特徵工程上我的處理能力還沒有到非常的好,無法對raw data問出正確的問題,並產生更完美的特徵, 一個模型的好壞,就是取決我在特徵工程上所做的處理,而良好的特徵工程,通常也是來自好的探索性資料分析(Exploratory Data Analysis),環環相扣,從原始的數據,提取出更有用的訊息,這就是我現在必須更加的去精進的

我會怎麼解決

通常要做好特徵工程的部分,你必須要很理解你處理的那個問題的領域,如果不理解,基本上是無法動工的

(1) 對籃球和棒球領域有更好的know-how

進入更多的運動網站去知道更多的數據,問更多的問題去理解資料,面對投手,一定會有不同的狀況,也有分牛棚投手和先發投手, 藉由不斷的問問題,你才能發現資料中的價值, 如何讓投手更好,面對左打手應該主要以哪個球路為主,都可以透過大數據去做解釋, 其他,我會藉由觀看分析影片,像是在棒球數據分析上很有名的youtuber ‘Josh’,便是其中一個我在進入棒球世界後會去深入了解的好頻道

(2) 廣泛閱讀相關書籍和課程

除了對該產業的Know-How以為,資料科學家最應該去學的就是當你拿到資料以後,你會如何的去解讀問題,怎麼讓看起來單調的資料產生revenue,這就是著名的business sense,我強力推薦此書,這本是資料科學的聖經,我也正在閱讀此書中,將其完成,當此書完成之後,具備初步的business sense,並開始上課程,此為微軟所開始的課程,是在你資料科學走到最後一個階段時,你必須將你手上辛苦建立起來的data product表達給別人聽,make for impact

3. 統計觀念的應用不足

在前幾篇的專案中,你們可以注意到,我並沒有使用非常多的統計觀念於專案中,並非我不懂得統計,而是,之前在學校習得統計觀念,與在資料科學的實際應用上有很大的出入, 在做特徵工程和選擇中,我應該放入更多的統計應用和統計推論,如果不做這些工作,我無法有效的區分哪些特徵對我建立的模型是有效,哪些事無效的,variance大小,是否有接受虛無假設,R square這些都是我要考慮的

我會怎麼解決

仔細想過為什麼我之前不使用統計在處理特徵值上的原因,我認為有很大的因為是我從來沒有用python來學過統計,沒有用python的套件跑過檢定,所以接下來我會詳讀這本書,而這本書的code example都是R來實踐的,但我會盡力用python來將這些觀念全部實踐,之後也都會紀錄下來放到github來給各位參考的

結論

寫出這篇文章的時候是讓我感到非常不舒服的,除了感覺到奇怪以外,也因為是要勇敢說出自己的弱點,正視面對自己的弱點都是最困難的, 但藉由認識自己在data science上的弱點 — 對基本程式語言的知識嚴重不足,資料分析的深度不足和統計的應用不足,這些都扎扎實實的影響我成為一個更好的資料科學家。雖然反省問題對我來說是痛苦,但是學習新知識而解決問題for me 就是享受的,我也會繼續這個過程, 再不斷往前的過程中,回頭看看自己在這艱辛的過程所獲得的知識和經驗是非常值得的一件事

兩個月之後,我一定會有新的弱點,我也會繼續向你說我新的弱點,和我打算怎麼解決

同樣地,如果你有任何的問題,你都可以透過我的email聯絡我,我的email是jacky308082@gmail.com

--

--

yuwei
Jacky’s blog

Curious Data scientist. Strong Lebron James’s fan. #StriveForGreatness #JustAKidFromTaiwan https://www.linkedin.com/in/yu-wei-chung/