BI轉數據挖掘,我的脫產學習路

blank

BI轉數據挖掘,我的脫產學習路

為了避免文章被誤讀,聲明以下幾點:

不贊成裸辭,並建議不到萬不得已不要裸辭,在另外一個回答解釋過原因Shawn:22歲非計算機專業工科妹子裸辭轉行程序員,已自學Python兩個月準備開始OJ,給自己一年時間可行嗎?

不打廣告。 。 。誤解我打廣告的同學先認真讀文章。 。 。

每個人的基礎和感興趣的方向不一樣,學習計劃應因人而異(我的學習計劃比較亂。。),最好根據自身情況合理制定學習計劃。

共勉。

18年11月1日更


❖辭職心路

簡單交待下本人背景:本科偏商科專業(輔修EE),研究生(一年項目)算正式入IT坑,畢業後有一年全棧開發+1年BI開發(Business Intelligence,商務智能)工作經驗,無統計背景編程很渣(具體體現為面向對像等編程範式不熟練,不懂數據結構和算法)。因為對數據行業的興趣,17年6月底辭職,10月收穫數據挖掘/開發offer。

辭職前在新加坡某地產開發公司做BI開發,主要用BI軟件+數據庫幫公司建立自動化的數據平台,以前幾週才能搞定的Excel報表,分分鐘自動生成推送到boss們的郵箱,不要太方便。但因為各種原因,做這份工作不是很開心,也得不到滿足感。嘗試過一段時間邊工作邊自學後,我發現效率很低,因為工作已經消耗大部分的時間和精力。下定決心後,瞞著家里人裸辭了。

當時計劃在三到四個月的時間內完成數據科學的學習並找到一份相關工作(顯然低估了數據科學的入門門檻,同時對就業市場過於樂觀)。

❖學習計劃制定

數據科學是一個大坑且深不可測,什麼都要懂,什麼都得會。參考過許多知乎跟Quora的相關問答,結合The Data Science Venn Diagram ,我了解到一名合格的數據科學家需要具備五方面的核心能力:

  • 數學和統計(底層建築)
  • 編程(計算工具)
  • 機器學習(黑魔法)
  • 行業知識(商業直覺)
  • 溝通技巧(分享傳授)
blank
THE DATA SCIENCE VENN DIAGRAM

為了記錄學習進度,我把要學習的知識點整理歸納做成了技能樹,每完成一個知識點的學習就點亮對應的分支。

blank
數據科學技能樹

❖自學歷程

for month in range(July, November): work_hard()

▶︎七月

[關鍵詞] Python編程,線性代數基礎,概率統計基礎,機器學習基礎

1. Python學習

R和Python就好比數據科學裡的倚天劍和屠龍刀,幾乎所有招聘單位都要求求職者掌握其中至少一門。我在研究生時期有使用R的經驗,但無法接受其怪異的語法風格。反之,Python作為一門通用的編程語言,其簡明規範的語法加上豐富的第三方數據科學模塊,對我來說更有吸引力。 Python分為2和3兩個版本,如果你像我一樣剛入門學Python,不要猶豫直接學Python3吧(Python核心團隊已經宣布將在2020年停止支持Python 2)。

>>>>用Anaconda管理Python編程環境

Anaconda是Python語言的免費增值開源發行版,用於進行大規模數據處理,預測分析和科學計算,致力於簡化包的管理和部署。 Anaconda使用軟件包管理系統Conda進行包管理,通過Anaconda我們可以很方便的對不同項目的Python編程環境進行管理。

>>>>編輯器選擇

推薦兩個工具:

Pycharm: 非常強大的一款Python IDE,商業版本收費(學校學生和教職人員有免費版),社區版本免費。

Jupyter Notebook或者Jupyter Lab: 相當於R裡面的RStudio,非常適合用來做探索性分析和繪製可視化圖形。

>>>>熟悉Python語

@廖雪峰Python3編程教程是入門的絕佳選擇,教程後面部分難度跳動較大,裝飾器等較難的部分可以先跳過去。認真擼幾遍教程,手動敲幾遍教程代碼後,基本就掌握了Python的基礎語法,可以開始學習更高級的Python編程了。

>>>>了解pandas的使用

pandas是用Python進行科學計算和數據處理一個非常強大的模塊,它提供的DataFrame數據結構以及圍繞DataFrame的一系列數據索引方法,統計函數和繪圖函數,讓數據的提取,清潔,讀寫和可視化變得更簡單。

課程鏈接: Introduction to Data Science in Python

此門課程不需要你有過多統計學基礎,高中數學知識夠用了。

blank
課程證書

>>>>利用Python繪製可視化圖形

無論是初級階段的數據探索分析,還是最終的分析結果呈現,數據可視化都必不可少。 matplotlib , seabornbokeh是Python生態下最常用的幾個可視化庫。

課程鏈接: Applied Plotting, Charting & Data Representation in Python

blank
課程證書

PS: 這門課程可以跳過,在具體項目中練習用Python繪製圖形就好了。

2.線性代數知識的複習

之前知乎有答主推薦Youtube上一個特別棒的線性代數視頻教程,已經有人搬到了B站,戳: 3Blue1Brow n

認真看了一遍,就算完成線性代數基本概念複習了。

3.概率和統計學知識複習

統計學知識是數據科學的基礎,不懂統計很容易陷入知其然不知其所以然的困境,更無法對模型結果給出具有統計意義的解釋。

為了重拾概率統計學知識,我首先快速過了一遍《head first data analysis》 ,建立對數據分析最基本的認識。接著又閱讀了《head first statistics》 ,這本書結合現實生活中的例子講解了基本的統計學概念和常見概率分佈,值得細讀。

另外還有Udacity的免費課程Intro to Inferential Statistics ,課後練習題幫助我鞏固了之前書上學到的知識點。

4.機器學習入門

課程鏈接: Andrew Ng Machine Learning

雖然碩士階段上過機器學習的課程,但長時間不用都還給老師了。特別推薦Andrew Ng的這門課程,是斯坦福機器學習課程C229的簡化版。課程內容深入淺出,對數學基礎的要求不高,能做簡單的求導和矩陣運算就夠了。課程對幾種傳統機器學習方法的原理和適用場景都作了講解。

區別於其他的機器學習課程,這門課程要求我們用Matlab或Octave動手實現算法,大部分代碼都給了模板,所以不用擔心不會Matlab或者Octave。通過動手實現算法,我們可以對算法原理有更深入了解,所以千萬別偷懶,作業要認真對待。

blank

▶︎八月

[關鍵詞] Udacity機器學習工程師納米學位

1. Udacity機器學習工程師納米學位

考慮過很久報名@優達學城(Udacity)的機器學習納米學位課程。在Quora上做了不少調研,覺得值得一試,恰好8月份的時候他們有促銷活動,前兩個月只要100美元/月,我盤算著兩個月內完成課程(事實證明這完全是可行的),這樣總共只需花費200美元。

很多人抱怨Udacity收費過高,尤其相比Udemy和Coursera等其他網課平台。我個人認為Udacity的課程性價比蠻高的,它提供了其他網課平台沒有的人工服務,比如作業評閱,代碼審閱,簡歷,cover letter和Linkedin檔案修改,甚至還有一對一面試指導等服務。這樣算下來真心划算。

Udacity授課採用小段視頻課程(1~15分鐘)+課後練習+項目的形式,大部分機器學習知識點都有涉及,沒有太難的數學推導,很適合初學者。如果有同學上這個課,一定要重視課後的習題和項目,從我的體驗看,做項目的學習效果要好於看視頻教程。

2.完善簡歷,Linkedin,Github

一直提醒自己,不能等覺得自己準備好了才開始找工作,學習是無窮無盡的。因此從第二個月起就開始為接下來找工作做準備。

Udacity的納米學位除了課程本身外,還提供職業指導服務,我就是在他們的幫助下反復修改和完善了簡歷,Linkedin以及GitHub (老師真的很耐心),對日後順利找到工作很有幫助。

簡歷是找工作的名片,一定要多花時間反復修改。

3.閱讀《Python for Data Analysis》

這本書是pandas的作者寫的,對Numpy和Pandas的使用做了詳細講解,值得花時間讀讀。但不要企圖把裡面的知識點和API都死記硬背下來,最好的閱讀方法是先快速過一遍重要章節,待日後使用時碰到具體問題再回頭翻書。

截止8月底,我的納米學位只剩下一個深度學習的項目,以及最後的大項目沒有完成。根據個人經驗,如果每天能保證至少3個半小時的有效學習時間,2個月是完全可以拿下這門課程的。

PS: 七,八月這兩個月的學習狀態還不錯,心態也較穩。但到了8月末的時候,人變得很焦躁,乃至中斷學習回國玩去了。 。

▶︎九月

[關鍵詞] SQL,數據庫,增長,國內求職

八月底回國後,先陪家人飛重慶,成都玩了一個禮拜。旅行結束後只在家呆了三天便馬不停蹄飛往北京,一呆就是二十天。在北京期間一直發燒生病,見了大學畢業後一直沒見面的幾個好兄弟,也面了幾家互聯網公司,暫且不表。

九月的學習效率非常差,只零零散散的根據國內面試時遇到的問題突擊了部分知識點:

  • 增長黑客(growth hacking)相關知識知識
  • AB test 及其在業界的應用
  • 閱讀《 誰說菜鳥不會數據分析》,熟悉商業分析基本術語

數據庫知識:

▶︎十月

[關鍵詞]算法/數據結構,新加坡求職

九月底回的新加坡,先後拿到了一些面試,包括諮詢公司,互聯網創業公司,石油交易公司,中資企業,大學研究中心。新加坡公司的面試流程不比國內,節奏較慢,整個十月我都是一邊學習,一邊投簡歷,一邊面試。

1.算法和數據結構

就算搞機器學習,數據結構/算法也非常重要,使用不同的數據結構和算法,效率可以千差萬別。但那個時候已經沒有時間從頭開始啃算法了,我採取的學習策略是把最基本的知識點啃下來。

  • 熟悉常見排序算法原理和運算複雜度
  • 熟悉Python基本數據結構(LIST, SET, DICTIONARY, TUPLE)的索引,插入,刪除,排序等的運算複雜度
  • 熟悉二叉樹,遞歸算法,隊列,堆棧等

2. Python多線程和多進程的區別及應用

在面試時被問到了,因此花了些時間了解了Multi-Threads和Multi-Processes的區別,以及如何運用它們加快計算。

3. leetcode簡單題的練習

做了部分簡單和中等難度的算法題

4.個人博客的改版

在面試時給面試官看過博客上記錄和展示的幾個項目。

5.鞏固統計學的知識

複習之前學的統計知識。

6. Kaggle項目

做了幾個簡單的Kaggle項目。

7.一個簡單的爬蟲,自然語言處理項目

用Python爬了新加坡某求職網站數據分析方師的相關崗位信息,並做了簡單的數據求職市場分析。

▶︎十一月

[關鍵詞]深度學習,Python爬蟲

11月初的時候終於等來了offer,求職期間一共面了五家公司,最終拿到3個offer(數據挖掘研發工程師,BI開發,數據分析專家),另外兩家也進到最後一輪面試,最終選擇了研發工程師的職位。

拿到工作offer後壓力小了很多,但學習不可以停步。

1. Udacity深度學習項目

通過這個項目學習了用keras和tensorflow構建深度學習模型進行簡單的圖像識別。

2. Python爬蟲

考慮到新工作可能需要寫爬蟲收集數據(後發現並不需要),就想著趁剩餘不多的自由學習時間加強爬蟲方面的能力。以前用R寫過一些簡單的爬蟲腳本,加上有一年的全棧開發經驗,大大降低了我學習爬蟲的難度。

>>>> Youtube上的爬蟲教程

Youtube上有很多非常不錯的教程資源,入門Python爬蟲我看的是Python Web Crawler Tutorial 。講解特別好,雖然視頻不長,但爬蟲基本知識點都講到了,還示範瞭如何實現多線程爬蟲。這個教程我是慢慢慢慢啃完來的,直到能在不看源碼的情況下實現一遍程序。

已經有熱情的同學將視頻搬運到B站了,可惜沒有字幕。 。 B站鏈接

如果想直接參考源代碼,戳Github

>>>>閱讀《Web Scraping With Python》

內容非常全面,看起來也不難,如果想對用Python爬蟲有更全面的了解,推薦抽時間看看這本書。

>>>> Udemy課程Scrapy: Powerful Web Scraping & Crawling with Python

從常用的庫RequestsBeautiful Soup框架Scrapy都有介紹(Scrapy真的很快)

>>>>準備udacity的最後一個項目

計劃做自然語言處理方面的項目

❖ Q&A

⁍我不喜歡現在的工作,要不要裸辭自學?

裸辭有風險,辭職需謹慎,請參考另一個問題下的答案

⁍ Udacity的項目怎麼樣,是不是完成項目就能找到工作了?

不要期望完成一個網上學習項目就能找到工作,Udacity的項目不錯,但是離工作要求還有距離,也許有人完成Udacity的項目後就順利找到了工作,但每個人的基礎不一樣。

⁍我應該學習Python還是R

Python和R都是很好的數據科學編程語言。我的建議是,如果你搞統計或者經濟金融,沒有編程背景,也不想往工程方向走,那就學R。反之,假如你已有一定編程基礎,熱愛編程,那建議你學習Python。時間充足且的話兩樣都學吧,你在職場上的競爭優勢將更加明顯。

⁍學習到什麼程度可以開始找工作?

我的建議是,從開始自學的那一刻開始,你就應該為找工作做準備了。關注招聘信息,修改簡歷,開始動手做小項目。為什麼呢?因為數據科學這個坑太深了,你永遠感覺有東西要學,永遠覺得自己不合格,所以不能等待, fail fast is better than fail late .

⁍我需要投入多少時間才能完成學習?

以我自己為例,我不是一個自控力強的人,為了營造良好的學習環境,我很少呆家裡學。好在新加坡到處有公共圖書館,免費Wi-Fi的速度也還不錯,因此大部分時間都跑圖書館學習,圖書館人多就去星巴克。我的常規學習時間是從早上10點圖書館開門,一直學到下午六,七點,中間的這八個多鐘頭,採用番茄工作法進行記錄,每學習半個鐘頭短休息6分鐘,每學習一個半小時長休息18分鐘。其實,我們每個人的學習效率並沒有自己想像的那麼高。像我自己,一天下來能累積有效學習四個半小時就挺滿意,如果能累積學習6小時甚至會很有成就感。有效學習時間是純學習時間,不玩手機,不刷社交網絡,不離開座位。

blank
番茄時鐘記錄表

What do you think?

blank

點融產品VP 趙徵宇:增長是一個探索人性的過程

運營的價值在於不停找槓桿!