本文由 「AI前線」原創,原文連接: 從底層到應用,那些數據人的必備技能
編輯|Natalie
AI 前線導讀:「謹以此文獻給對數據有熱情,想長期從事此行業的年輕人,但願對大家有所啓發,並快速調整思路和方向,讓本身的職業生涯有更好的發展。 根據數據應用的不一樣階段,本文將從數據底層到最後應用,來談談那些數據人的必備技能。」前端
新年禮物雙手奉上!在 AI 前線公衆號內回覆關鍵字「攜程 2017」能夠下載攜程技術中心精心整理的《攜程技術 2017 年度合輯》迷你書 PDF,內容涵蓋了攜程技術中心微信公衆號在 2017 年發佈的技術乾貨,覆蓋架構、大數據、前端、安全、運維、雲計算、數據庫等領域,也包含了 2017 年八場攜程技術沙龍上的乾貨內容。python
從底層到應用,那些數據人的必備技能面試
大數據平臺算法
目前很火,數據源頭,各類炫酷新技術,搭建 Hadoop、Hive、Spark、Kylin、Druid、Beam~,前提是你要懂 Java,不少平臺都是用 Java 開發的。sql
目前不少企業都把數據採集下來了,對於傳統的業務數據,用傳統的數據是徹底夠用的,但是對於用戶行爲和點擊行爲這些數據或者不少非結構化的數據,文本、圖像和文本類的,因爲數據量太大,不少公司都不知道怎麼進行存儲。數據庫
這裏面要解決的是實時、近實時和離線的大數據框架如何搭建,各數據流之間如何耦合和解耦,如何進行容災、平臺穩定、可用是須要重點考慮的。編程
個人感受是:最近兩三年中,這塊人才仍是很稀缺的,由於大數據概念炒做的這麼厲害,不少企業都被忽悠說,咱們也來開始進入大數據行業吧。進入的前提之一就是須要把數據存儲下來,特別是不少用戶行爲方面的數據,對於業務的提高比較明顯的,若是你能很好的刻畫用戶,那麼對你的產品設計、市場營銷、開發市場都是有幫助的。現階段,不少公司都要作第一步:存儲更多的數據。這也是這塊人員流動性比較高的緣由,都被高薪挖走了。跨域
和傳統的 SQL 不一樣的是,針對大數據量的非結構式數據,咱們所想的就是:用最廉價的成本存儲數據同時可以達到容災、擴展性高、高性能、跨域,從目前來看,分佈式已經被證實是個很好的一個方式。安全
另外,雲端會是個很好的方向,不是每一個公司都養得起這麼多這麼貴的大數據平臺開發人員和運維人員 OPS,從事這個行業的咱們要有很好的危機意識,及時貢獻出本身的價值,積極主動的學習新技術、不然就可能被淘汰了。服務器
此外,花點錢把數據託管給雲服務提供商是對於創業公司或者一些傳統的企業來講是個很好的思路,這樣可以最快速的肯定數據對你的價值是什麼,而不用採購這麼多的服務器、僱傭這麼多的運維人員和網站開發人員。
說了以上這些,主要是想給將來會從事這塊的人或者想存儲數據的公司一點方向。我本身不作這塊,體會不深,你們看看就行。
這塊工做最被吐槽的一點就是:Hive 速度好慢,SQL 查詢好慢,集羣怎麼又掛掉了,hadoop版本升級後,怎麼數據跑出來不對了等等。
所以,在這個領域內工做,須要有強大的攻堅能力,而且還須要有快速定位和解決 bug 的能力,由於有不少工具都是開源的。由於是開源的,因此大家懂得,各類坑爹,甚至出現沒法向下兼容的狀況,因此須要強大的 Java 開發能力。
若是想在這塊作的很好,還須要有整個系統架構的設計能力、比較的強的抗壓能力和解決問題的能力、資源收集的能力,能夠打入開源社區,這樣就能夠隨時 follow 最新的潮流和技術。
數據倉庫 -ETL
確實作倉庫的人很辛苦,單單 Oncall 就會讓人望而卻步。有不少數據庫工程師,晚上睡覺的時候常常被 Oncall 電話吵醒,由於數據流程出問題,須要第一時間去排查,是哪一個數據源出問題,而且要當即解決,不然整個數據流程都會受到影響。
若是數據流程受到了影響,你就可能會被大領導一言不合叫到辦公室說:我要的數據怎麼尚未準備好,個人業務報表今天怎麼沒有發出來。
經過上面這個情景,咱們能夠知道:這是個很重要的崗位,由於數據流程很重要,決定了數據從源頭雜亂無章的情況,經過 ETL 以後變成了整齊的數據,這些整齊一致性的數據可讓你很方便地把各業務的統計結果計算出來,而且可以統一口徑。要否則就會變成有幾個部門,就有幾種統計結果,到時候 A 部門說業務增加了 5%,B 部門說業務漲了 10%,OMG,到底信誰。
至少在如下幾點上,我以爲數據倉庫人員應該要作好:
a、數據字典的完整性,用的人都但願可以清晰的知道這個字段的邏輯是什麼。字段要保持很好的一致性,不要一樣一個字段在不一樣表裏有不一樣的定義。
b、核心流程的穩定性,不要讓天天訂單主表可以使用的時間很不穩定,有的時候很早,有的時候要中午纔出來,若是不穩定就會致使使用數據的人對你很沒有信心。
c、倉庫版本迭代不要過於頻繁,要保持不一樣版本之間的兼容性。不要作好了倉庫 1.0,很快就把原來的推倒重來,變成了 2.0。在數據倉庫中須要考慮到延續性,主表的變更不要太頻繁,不然使用的人會很是痛苦,好不容易纔用習慣了 1.0 的表結構,沒辦法這麼快進行切換。簡單地說,要能向下兼容。
d、保持各業務邏輯的統一性,不要出現一樣的業務邏輯,同一個組別的人統計出來的結果不一樣。緣由在於共同的邏輯沒有落地成通用的東西,因此致使每一個人寫法不一樣。這點其實須要特別注意。
針對以上,這個崗位的技能要求是:不要成爲僅僅會寫 SQL 的人,如今工具都很發達,若是你的技能很單一的話,那麼可替代指數是很是高的,而且你自身也沒有什麼成就感。這裏並非說會寫 SQL 的人很 low,只是說應該多學一些技能,不然會很危險。
倉庫人員應該要經常思考,如何進行架構設計是最合理的,你要考慮是否須要字段冗餘、行存儲仍是列存儲、字段如何擴展最有效,熱數據和冷數據如何拆分等,因此須要有架構思惟。
技能上,除了 SQL 熟練以外,還須要知道如何寫 Transform,MapReduce,由於有不少業務邏輯用 SQL 實現起來很是複雜,可是若是你會其餘腳本語言,那麼就能給你提供便利,讓你的效率提高不少。另外好的倉庫人員須要寫 Java 或者 Scala,經過寫 UDTF 或者 UDAF 來提高你的效率是頗有必要的。
數據倉庫人員也應該經常考慮自動化和工具化方面的事情,須要很好的工具或者模塊的抽象能力,動手實現自動化的工具來提升整個組織效能。針對常常碰到的數據傾斜問題,須要很快定位問題並進行優化。
說完了數據存儲這塊,接下來是數據應用的幾個關鍵職位,在此以前,我想說數據應用的一個最關鍵的前提是:數據質量、數據質量、數據質量!!在每次闡述你的觀點、分析結論或者用算法的時候,都須要先檢查,源頭數據正確性,不然任何結論都是僞命題。
數據可視化
這是個很炫的工做,最好是能懂點前端,好比 js。數據可視化人員須要有很好的分析思惟,不能爲了炫技而忽視對業務的幫助程度。由於我對這個崗位客串的很少,因此沒有特別深刻的感悟,不過我以爲這個崗位須要有分析的能力,才能把可視化作好。
另一方面來講,作數據應用的人都應該懂點數據可視化,要知道觀點表達的素材順序是:圖片>表格>文字,一個可以用圖片來闡述的機會千萬別用文字來描述,由於這樣更易於讓別人理解。要知道,給大領導講解事情的時候,須要把大領導設想成是個「數據白癡」,這樣才能把一件事情說的比較生動。
數據分析師
如今對數據分析的需求是很大的,由於你們都想着說:數據有了,可是能作些什麼呢?這就須要有數據分析師,對數據進行分析和挖掘,而後作數據應用。
對數據分析師吐槽最多的是:你分析出來的不就是正常的業務邏輯嗎,還須要你分析什麼?或者是你分析的結論不對,跟咱們的業務邏輯不符合。特別是:ABTest 的結果和當初設定的預期不相符合的時候,分析師會經常被拉過去說:分析一下,爲何個人 AB 實驗結果不顯著,裏面確定有緣由的。
不少時候,寶寶的內心苦啊,你說這個轉化率降低了,從數據上能夠看出哪一個細分渠道降低了,至於爲何客戶不下單,咱們得去用戶去,不少時候,數據上也體現不出來爲何,只能告訴你現狀是什麼。
若是你一直在寫分析報告,給結論中,持續周而復始,沒有直接在業務中體現成績的時候,數據分析師們該醒醒了,你該想一想這個是你要的崗位嗎?
對於數據分析師的定位:我的認爲,成爲優秀的數據分析師是很是難的,如今市面上也沒有多少優秀的分析師。數據分析師的技能要求,除了會數據分析、提煉結論、洞察數據背後的緣由以外,還須要瞭解業務,懂算法。
只有這樣,當面對一個業務問題時,數據分析師們才能夠針對問題抽絲剝繭,層層遞進去解決問題,再根據定位的問題進行策略的應對,好比是先作上策略進行測試仍是應用算法進行優化,用算法用在哪一個場景上,能不能用算法來解決問題。
一個優秀的數據分析師,是個精通業務和算法的全能數據科學家,不是那個只會遵從業務的需求而進行拉數據、作報表、只作分析的閒雜人等。咱們都說分析要給出結論,優秀分析師的結論就是一個能解決問題的一攬子策略和應對措施,同時不少需求是分析師去主動發現並經過數據來挖掘出來的。
從上述描述中,能夠看到對數據分析師的要求是:會寫 sql 拉數據,精通業務、會數據洞察、精通算法,主動性強,要求仍是很高的。
若是你一直只是忙於應付平常分析需求,熱衷於寫華麗的報告,那麼你要記得,你很危險,由於會有一堆人在那裏質疑你存在的價值,特別是小公司。由於數據人員的薪資是個不小的支出。
大部分不落地的分析都是僞分析,有一些探索性的可行性研究能夠不考慮落地,可是其餘的特定業務需求的分析都須要考慮落地,而後經過實踐來反推你的做用,如此反覆,才能慢慢的給你價值的確定,同時提高你的分析技能,也只有這樣才能證實你做爲分析師、數據落地者的價值。
數據挖掘 / 算法
這塊的話,通過這三年的摸爬滾打,感觸蠻多的。體會比較深的吐槽主要有如下幾點:
不少時候,不一樣的場景對準確率的要求是不一樣的,因此在必定合理的場景下和業務進行力排衆議是必要,不要懼怕讓業務吐槽,更多的時候管理好他們的預期。
有些場景下,推薦的價值在於『長期復購率』,因此不要每次都盯着 ABTest 的轉化率來講事,讓客人的費力度下降也是頗有前途和前景的。一個智能的產品會讓客人用起來愛不釋手,雖然在這一次的轉化中沒有明顯的差異,可是觀察長期復購率才能體現價值。特別是要區分:高頻和低頻產品。頻次比較低的產品就特別難體現出短時間價值。
對於這個崗位的技能要求來講,沒有要求你必定要從零開始實現全部的算法,如今有不少現成的算法包進行調用。最基本的要求是,你要知道每一個場景會用到哪一個算法,好比分類場景,經常使用的分類算法就有 LR/RF/Xgboost/ET 等等,此外,你還要知道每一個算法的有效優化參數是什麼、模型效果很差的時候怎麼優化。還須要有算法的實現能力,語言方面能夠用Scala/python/R/Java 等。咱們常說:工具不重要,重要的是你玩工具,不是工具玩你。
另外針對有監督式學習算法,算法工程師最好有很好的業務 sense,這樣在 feature 設計的時候才能更有針對性,設計的 feature 纔有可能有很好的先驗性。
深度學習(NLP,CNN,語音識別)
這塊我沒具體商用過,只是動手實踐過。我的感受商業化是重點吧,特別是你們都在觀望說你的 chatbot 頗有用啊,但是 siri 作了這麼久,最後反響也通常。
如今客服機器人又很火,你們又在一通吐槽說,這個上下文理解的太差了,機器人的語義識別作的怎麼這麼差。誰作誰知道,對於中文的語義識別,難度比國外的難多了,由於中文的一種否認說法有太多種變體,你不知道咱們會說哪一種。
另外,經常有人吐槽說,你這個 CNN 這麼複雜,我線上須要知足 100ms 內返回,搞的這麼複雜,實時調用怎麼整,確定來不及了,最後只能考慮 offline 預測了。經常說這話的人,是不會本身寫底層代碼的,不少時候我以爲:不是你沒有解決問題的辦法,而是你沒有去思考怎麼解決問題,心智決定了你的產出。
總體來講,這塊對我的的綜合素質要求是很高的。若是你只是想簡單利用現成的 Model,提取中間層的特徵,而後再套用其餘的機器學習模型進行預測的話,倒也能很好的解決一些現實中的公司應用,好比 yelp 的圖片分類。
不過,嚴格來講,這個不算是作深度學習的人,由於真正玩 DL 的人,是須要本身動手建模型,調參數,改 symbol 的,因此他們的編程能力是很強的,這點上,我一直都高山仰止。特別是一些創業公司,對於這個崗位的編程能力要求很高。若是你面試創業公司後沒有下文了那就表示:你很優秀,可是不必定適合咱們公司,由於咱們要找的編程能力很強的人。
這塊我不專業,因此就點到爲止,不說太多。我的認爲,在這塊上須要有比較強的算法改造和優化能力,儘可能的提升算法預測的速度,同時不斷的提升算法的外延性提升精度,目前整個行業也都是朝着好的方向在發展。若是有不少人看到這塊行業開出來的高工資,記得和招聘上的要求覈對一下,本身哪塊技能須要補充。這樣你才能成爲人中之鳳。
對於將來,一片光明,對於將來,甚是期待,對於將來,一切可能。
作個總結:
以上說了這麼多,嘮叨了這麼多,其實核心就是:如何用數據創造價值,若是你沒有用數據創造價值的能力,那麼就只能等着被數據淹沒,被數據拍死在職場上,早早到達職業的天花板。
體現數據價值的層面上,越往數據應用層靠攏,對數據產生價值的要求就越高,從事這塊領域的人要經常自省是否有好的商業 Sense,畢竟在工業界,沒人關心你是否比傳統的 baseline提升了一個百分點,他們關心的是你提升了一個百分點以後,對公司的價值是什麼。
而越往底層那塊,倒也沒有強制要求和業績綁定在一塊兒,更多的是從流程上進行約定,對於這塊的價值體現,主要從技術層面上的創新爲主,你若是解決了現存架構的問題,那麼你就能夠成爲一個大牛,因此多學學編程吧,別太約束本身,故步自封。
接下來,咱們的新年禮物第三彈來了!(別問我第一彈的書和第二彈的閱碼在哪裏~)這裏與你們分享《攜程技術 2017 年度合輯》迷你書,這是攜程技術團隊第一次嘗試把攜程的技術文章整理成冊,分享給技術圈的小夥伴們。《攜程技術 2017 年度合輯》的內容來自攜程技術中心微信公衆號在 2017 年發佈的文章,共 66 篇,25 萬多字。涵蓋了架構、大數據、前端、安全、運維、雲計算、數據庫等領域,也包含了 2017 年八場攜程技術沙龍上的乾貨內容。
這些文字背後,是攜程近 3000 位技術人的支持,他們在平常繁忙的工做之餘,將本身在一線中的實踐經驗、踩過的坑毫無保留地分享出來。你也能夠將它當作是一本案例集錦。
但願這本小書,能帶給你些許啓發和幫助,在成長路上少走一些彎路。也但願在新的 2018 年,每一天,每一滴一點的進步,讓每一位技術小夥伴都能成爲更好的本身。
關注「AI 前線」微信公衆號,在對話框回覆「攜程 2017」,便可免費下載本書的完整 PDF。
做者簡介
潘鵬舉,攜程酒店研發部 BI 經理,負責酒店服務相關的業務建模工做,主要方向是用機器學習幫助業務創造價值。
更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大數據」可得到《AI前線》系列PDF迷你書和技能圖譜。