作者superalf (外星人)
看板Soft_Job
標題Re: [請益] 想改行當資料科學家,能否給點建議?
時間Thu May 17 23:47:01 2018
同為物理PhD,分享自己的經驗給你參考
1. 程式語言
Python或R。這兩種并不互斥,我們team不少人兩種都會。個人覺得重點在:
1. 平行計算(concurrent/multi-threading/processing):根據問題是CPU-bound還是I
/O-bound來選擇處理方式
2. iterator/generator:像用deep learning train model時需要的資料都很大,不太
可能全部load到記憶體,以及做data generator讓一筆raw data產生多筆訓練資料時都會
需要用到generator
3. profiling tools:要先知道程式的bottleneck在哪才有辦法優化
Python 我推薦Micha Gorelick跟Ian Ozsvald寫的High performance python這本書
2. 資料庫
SQL跟NoSQL基本上都會用到
3. 統計
重中之重。除了不同的machine learning方法,怎麼處理空值、極端值、unbalanced dat
a、抽樣、假設檢定都很重要。特別是假設檢定,身為data scientist,不管在哪個產業
,基本上都需要回答「根據現有的資料,哪種情況是最可能的」這種類型的問題。
個人推薦 Garett James, Daniela Witten, Trevor Hastie, Robert Tibshirani 寫的 A
n introduction to statistical learning with R 這本書
4. 資料結構跟演算法:要有效率的處理軟體工程方面的問題,這方面的知識很重要。
我推薦Coursera上面Princeton的Robert Sedgewick跟Kevin Wayne開的Algorithms I & I
I。這門課的精華在programming assignment。每個assignment基本上都會有50-70個test
cases來測試時間跟空間複雜度,還有一些corner cases。不同的情況都要考慮到才能拿
到滿分。語言是用Java,但就算沒學過應該也不是問題,我那時也是邊學邊寫。題目通常
要你做一個module,裡面需要好幾個functions 但他只會給你interface,內容都要自己
寫。不像吳恩達的machine learning跟deep learning,很多內容都給了,只要把關鍵的
部份補上。我上了不少online courses,這門課是唯一我認為有難度的。但相對的,通過
的話軟工能力可以提升一個層次。
順便提一下面試的事。我不知道其他公司會怎樣準備跟進行,我們會看面試者的博論跟著
作,這都是網路上找的到的資料。我們會問面試者在工作或研究上使用過的工具,例如你
來,那可能會請你解釋一下基因演算法跟Monte Carlo method,為什麼選擇這個方法?它
的優點跟缺點?有考慮過其他的方法例如X或Y嗎?諸如此類的問題。我們會對面試者當時
做選擇背後的思考過程有興趣,藉此了解他工作或研究的廣度跟深度。
不確定自己有沒有面試過50個人,但30個一定有。結果幾乎都是entry level(可能是敝
司太爛強者不想來面)。有些人對自己使用工具背後的原理、假設、限制都不清楚,單純
call套件下指令。而大部份人選擇工具或方法的原因是「因爲老師/學長說的」。這並不
能怪他們而是我們的文化就是如此,但很難不令人感到絕望。找個mindsets ok的entry l
evel進來自己訓練比較實際。想轉data scientist的人不少,但很多都只是想想,真的有
付出行動的不多。往好處想,在台灣你不用付出太多努力就可以贏過不少人。
另一方面,我也去面過十幾間公司,不少是想成立資料分析的部門(那些單純跟風,沒算
過成本跟效益的就不提了)。所以面試我的人其實并沒有能力評估我究竟適任與否,這也
同樣令人絕望。
最後,講一下資料科學家的工作
1. 資料的清理跟準備
Garbage in garbage out 這可不是說假的。舉凡補空值、trimming、處理unbalanced da
taset、de-noise、normalise、feature selection and generation都在這部份。就我自
己的經驗,這部分對最終結果的影響是最大的,花費的時間也是最多的。
2. Background research。要唸很多papers,將有機會解決手中問題的方法盡可能找出來
3. 設計實驗,包括抽樣範圍跟方法,實驗怎麼進行,結果怎麼評估
4. 結果的解釋跟呈現(資料視覺化)
但在成為資料科學家之前,你必須先是位工程師
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.21.165
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1526572023.A.9D8.html
1F:推 hahaxd78: 推! 05/18 00:01
2F:推 PHEj: 推講得很中肯05/18 00:05
3F:推 errard: 推個05/18 00:09
4F:推 eggy1018: 謝謝提點!05/18 00:33
5F:推 cry004: 推 好清晰05/18 01:27
6F:推 lovepork: 感謝大師分享!05/18 01:33
7F:推 aszx4510: 厲害05/18 04:12
8F:推 bowin: 推分享! 05/18 04:13
9F:推 littleyuan: 謝謝分享!! 05/18 05:11
10F:推 shiauji: 強05/18 05:45
11F:推 chen1025: 推05/18 08:19
12F:推 crow1270: 推 05/18 08:42
13F:推 kekking: 推05/18 09:00
14F:推 chienjens: 推推05/18 09:17
15F:推 billy0131: 推05/18 09:36
16F:推 bcew: 推分享05/18 09:41
17F:推 pig0038: 推05/18 09:50
18F:推 gmoz: NICE05/18 09:54
19F:推 ian90911: 推分享05/18 09:57
20F:推 vn509942: 感謝分享 非常寶貴的經驗05/18 10:25
21F:推 b160160: 推05/18 10:26
22F:推 f496328mm: 大部份人選擇工具或方法的原因是「因爲老師/學長說的」 05/18 10:27
23F:→ f496328mm: 這點真的很中肯 05/18 10:27
24F:推 qazedcrfv: 中肯,推!05/18 10:53
25F:推 yuchio: 推05/18 10:57
26F:推 xavierqqqq: 推推05/18 10:59
27F:推 smalldra: 讚05/18 11:10
28F:推 Fen9ze: 推05/18 11:19
29F:推 Yukirin: 心有戚戚焉05/18 11:21
30F:推 yamakazi: 看來要當資料科學家也是不容易 05/18 12:13
31F:→ yamakazi: 很多物理系的覺得轉職資料科學家不是太困難 但真的轉成 05/18 12:15
32F:→ yamakazi: 功也沒那麼容易05/18 12:15
33F:推 Sunal: 或許覺得比拿物理PhD簡單吧...05/18 14:21
34F:推 az75225: 謝謝分享 05/18 17:43
35F:推 abc53: 推05/18 17:47
36F:推 adsl54010: 謝謝分享05/18 19:12
37F:推 h042910276: 推05/18 20:20
38F:推 orcahmlee: 謝分享!05/18 23:39
39F:推 billy4195: 推中肯05/19 08:08
40F:推 peter308: 感謝原po熱心分享!05/19 10:38
41F:推 wxtn: 推推推05/19 21:28
42F:推 jojojen: 推05/20 10:32
43F:推 Arctica: 感謝分享05/20 14:58
44F:推 ntddt: 大推 05/21 22:19
45F:推 remember69: 豪猛 05/23 00:16
46F:推 lovepork: 請教一下,資料科學家必須先從資料工程師當起嗎?05/23 12:22
47F:→ lovepork: 我近期有去跟資策會的課程經理談過,他說他的課程只能05/23 12:23
48F:→ lovepork: 培訓出資料工程師,但我看那個課程已經是非常硬的了05/23 12:24
49F:→ lovepork: 一到五 0900~1700 密集上五個月才能結業!05/23 12:25
50F:推 lovepork: 所以假設我去上完資策會的資料工程師培訓,還要補足統計05/23 12:28
51F:→ lovepork: 所的一些課程,才有資格去應付資料科學家所賦予的挑戰?05/23 12:28
52F:→ lovepork: superalf大 能否點建議? 感謝! 05/23 12:29
不清楚資策會的課程內容所以沒法給建議。但就是不是要從資料工程師當起這個問題,應
該說資料科學家必須要會資料前處理跟資料準備,而這工作需要工程能力。
真實世界的資料什麼光怪陸離的情況都有。舉個例子,IBM的正式名稱是International B
usiness Machines Corporation,但它在正式專利文件裡面的拼法就有兩百多種。類似的
狀況有些是筆誤,有些則是故意的,刻意讓你無法用keyword search找到。像這種資料正
規化的工作你必須要有能力處理。
再拿影像辨識來說,原始資料可能有肉眼看不出來的背景,但看pixel value就很明顯。
如果不去背就直接拿去當訓練資料,模型可能根本不能用。去背這種事情也是工程問題。
再舉個例子,原始資料如果有雜訊(例如電話號碼不小心跟地址黏在一起),不處理直接
塞進SQL。之後查找時被逼的不得不使用like語法,那效能絕對讓你想哭。
像我也要分析log,但我只對其中一小部分有興趣,所以需要做data ETL,篩選log,做些
簡單的處理放到其他地方,之後再做分析。這也是工程。
機器學習的程式碼中,關鍵的可能只有幾行,要寫出那幾行很吃統計知識。然而另一方面
,要讓那幾行可以work,前面必須做非常多前處理的工作。
之前玩過kaggle上的一個分類問題。沒做前處理,準確率只有7%,做了前處理,就跳到37
%了。這差別是很大的。
※ 編輯: superalf (27.147.21.165), 05/24/2018 00:47:03
※ 編輯: superalf (27.147.21.165), 05/24/2018 00:48:59
53F:推 lovepork: 感謝superalf大的回覆,受益匪淺。 05/24 15:39
54F:→ lovepork: 看樣子,去資策會是勢所難免了。 05/24 15:40
55F:推 voyager520: 朝聖推 05/25 23:32