
解密Airbnb的數(shù)據(jù)科學(xué)部門如何使用R語言
我之所以在aribnb希望成為一名數(shù)據(jù)科學(xué)家是因為這里可以有一個非常多元化的團(tuán)隊來一起解決重要的現(xiàn)實問題。我們不僅僅在性別上多樣化,而且在教育背景和工作經(jīng)歷也是霄壤之別。我們的團(tuán)隊包括數(shù)理統(tǒng)計的專家,從教育學(xué)到基因計算的博士,甚至也包括前職業(yè)橋牌選手和退伍老兵。這個訓(xùn)練和經(jīng)歷的差異性是我們團(tuán)隊創(chuàng)造性思維的強大源泉動力和理解用戶的最好武器,但是它在團(tuán)隊協(xié)作和知識共享上也對我們提出了挑戰(zhàn)。新加入Airbnb的團(tuán)隊成員通常都掌握各式各樣的編程語言,包括R、Python、Matlab、Stata、SAS或者SPSS。為了擴大協(xié)作范圍,我們借助工具、培訓(xùn)和基礎(chǔ)設(shè)施來統(tǒng)一我們的數(shù)據(jù)科學(xué)品牌。本文,我們將專注于我們在Airbnb所構(gòu)建的R語言工具和一些列的R語言教程,其中大多數(shù)的課程都是適用于Python的。
在普及R語言上,我們還是兩條腿走路:一條腿是包的構(gòu)建,另一條腿是教程。一方面,我們通過構(gòu)建包來為常見問題來開發(fā)協(xié)作方案,將可視化工作標(biāo)準(zhǔn)化并且避免重復(fù)造輪子。另一方面,教程的努力目標(biāo)在于給所有的數(shù)據(jù)科學(xué)家暴露我們所使用的特定包,并且提供深入學(xué)習(xí)各自想要學(xué)習(xí)的技能的機會。
在小的數(shù)據(jù)科學(xué)團(tuán)隊中,獨立貢獻(xiàn)者經(jīng)常寫一個函數(shù)、腳本或者模板來優(yōu)化他們的工作流。而隨著團(tuán)隊成長,不同的人會開發(fā)他們自己的工具來解決類似的問題。這就帶來了三個主要的挑戰(zhàn):
通過GitHub企業(yè)版共享R包可以解決這三個挑戰(zhàn),這使對我們的需求是一個完美的解決方案。具體來說:
這個包放在我們內(nèi)部的Github企業(yè)版?zhèn)}庫,相應(yīng)的,用戶可以提交問題和改進(jìn)建議。如果在一個分支上有新代碼被提交,那么這些代碼可以被Rbnb組內(nèi)的開發(fā)者互相審查。一旦這個改變被大家認(rèn)可并形成文檔,他們就會將新代碼融入到主分支,形成一個新版本的包。團(tuán)隊成員可以用devtools直接從Github安裝最新版本的Rbnb。我們現(xiàn)在致力于添加風(fēng)格和語法審查,并且用testthat測試覆蓋率。
Rbnb主要有四個組件:
大多數(shù)我們在 Rbnb 中使用的函數(shù)允許我們從Hadoop或者SQL環(huán)境將數(shù)據(jù)移動、聚合或篩選到R里面,然后用來做可視化、自然地完成基于內(nèi)存的分析工作。在Rbnb之前,從Presto獲取數(shù)據(jù)到R里面來運行一個模型需要許多步驟。 數(shù)據(jù)科學(xué)家們需要對集群的準(zhǔn)入做認(rèn)真、打開SSH隧道、為Presto輸入主機、端口、模型、目錄數(shù)據(jù)來下載一個 csv 文件加載到R里面,這一切只是為了跑一下我們想要的模型?,F(xiàn)在,所有的這些工作可以通過兩個函數(shù)完成管道化操作。隨著 Rbnb 將這些過程隱藏在蒼穹之下,我們搞了一個像RPresto一樣維護(hù)良好的包。類似地,從R獲取數(shù)據(jù)然后移動到AWS的S3也是一行代碼搞定。數(shù)據(jù)科學(xué)家不再需要從R保存csv文件,通過我們的API秘鑰直接完成AWS的多用戶認(rèn)證配置,并且支持直接通過shell腳本將csv文件移動到云端。更加重要的是,所有函數(shù)都遵循一個類似的標(biāo)準(zhǔn)(比如,place_action(orgin,destination))。
如果我們的數(shù)據(jù)基礎(chǔ)設(shè)施有所變化,-比如,如果一個集群移動或者AWS S3 認(rèn)證的細(xì)節(jié)變動 – 我們可以修改我們的Rbnb包的內(nèi)部,而不用修改我們之前定義好的函數(shù)接口。
這里展示了Rbnb中的一些函數(shù)。所有函數(shù)遵循一個類似的規(guī)范,通過綜合的代碼審查和對我們工作流的抽象減少了我們很多平常的工作。
這個包通過一致的數(shù)據(jù)可視化風(fēng)格也幫助我們的工作在Airbnb內(nèi)部品牌化 – 比如這些又 Bar Ifrach 和 Lisa Qian 提交的示例。我們也已經(jīng)為 ggplot2、htmlwidgets、Shiny、不同報告的Rmarkdown模板的CSS樣式 構(gòu)建了自定義主題、縮放規(guī)則和設(shè)計對象。這些特性重構(gòu)了 R 字體和顏色默認(rèn)的設(shè)置,使得整體上和Airbnb的品牌保持一致。
這個 Rbnb 包也有許多函數(shù)幫助我們來完成自動化任務(wù),比如缺失值處理、按年趨勢計算、提升數(shù)據(jù)聚合性能、我們用來分析實驗的可重用模式等等。添加一個函數(shù)到這個包里可能花費很多時間,但是這最初的投資將帶來長期的回報。通過使用一樣的R包作為我們的構(gòu)建模板來開發(fā)一樣的語言、數(shù)據(jù)可視化風(fēng)格以及相互評審。
如果人們不知道怎么使用工具的話,你做了多少個工具都沒用。在一系列快速增長之后,我么年開始每月為新成員和現(xiàn)有成員做為期一周的數(shù)據(jù)集訓(xùn)營。他們包括3個小時的 R 培訓(xùn)以及一些用R和R Markdown完成的有可選導(dǎo)師的集訓(xùn)營項目。
這個R集訓(xùn)營班專注于 Rbnb 包和一些常用數(shù)據(jù)操作包的使用,包括數(shù)據(jù)框操作(比如tidyr和dplyr)、數(shù)據(jù)可視化(ggplot2)、以及動態(tài)報告撰寫(R Markdown)。我們在課程開始前會為參與者發(fā)放學(xué)習(xí)指南和資料。在上課期間,我們使用自己的數(shù)據(jù)貫穿一個結(jié)構(gòu)化的教程,包括我們以工作實例的形式展現(xiàn)一些我們在工作中遇到的挑戰(zhàn)。
這個方法允許用戶在剛開始的幾個小時里不需要熟悉R的代碼就可以開始寫代碼了,并且完全不必?fù)?dān)心高級編程方法的復(fù)雜性。我們也介紹用戶使用我們內(nèi)部風(fēng)格指南和其他許多有用的R包,比如 formattable、diagrammeR以及broom。最后,我們給他們尋求幫助和網(wǎng)絡(luò)資源的一些方向。
在集訓(xùn)營之后,我們鼓勵用戶持續(xù)學(xué)習(xí)。我們贊助每個人參加 DataCamp 來幫助團(tuán)隊成員根據(jù)自己的學(xué)習(xí)進(jìn)度組織學(xué)習(xí)小組完成可交互性的在線課程。我們也讓新人和導(dǎo)師結(jié)對,這些導(dǎo)師幫新人帶上數(shù)據(jù)科學(xué)家的臺階。我們有一個內(nèi)部R語言問答的Slack頻道。我們團(tuán)隊成員組織學(xué)習(xí)的課程主題有 SparkR、R 對象系統(tǒng)、包的開發(fā)等等。最近,我們團(tuán)隊成員參加一個由RStudio組織的高級的R開發(fā)者沙龍,并且分享了我們從團(tuán)隊成長中的點點滴滴。
我們的數(shù)據(jù)科學(xué)團(tuán)隊的成員也鼓勵Rbnb貢獻(xiàn)代碼。通過一個全面的代碼評審的過程允許用戶開發(fā)新技能將為將來的項目帶來有價值。此外,他們對一個重要的內(nèi)部工具有了主人翁精神并且從同行那里知道如何從各自的貢獻(xiàn)中受益。我們在最佳實踐、功能文檔,測試,和風(fēng)格方面都會指導(dǎo)新的貢獻(xiàn)者。
我們也致力于在Airbnb之外擴展R語言社區(qū)。我們贊助像即將開始的 rOpenSci Unconf 大會,為開源項目貢獻(xiàn)代碼(比如ggtech、ggradar),以及在 Shiny 開發(fā)者大會 和 UseR 大會做一些分享。去年,我們很榮幸影響到了許多R 開發(fā)者,包括 Hadley Wickham 和 Ramnath Vaidyanathan 他們也拜訪了我們在三藩市的總部。
在結(jié)構(gòu)化學(xué)習(xí)資源中這個工具變得越來越有影響力。
在工具和教程之外,我們也發(fā)明一些強大的數(shù)據(jù)基礎(chǔ)設(shè)施。在過去的3年間,我們的 Shiny 應(yīng)用從我們的服務(wù)器開始運行的第一天就已經(jīng)有將近10萬個頁面瀏覽量。我們最近開始支持一個新的 RStudio Server 和 SparkR 集群。我們有一個獨立主廚的R包配方以及橫跨我們集群上的版本控制,這允許我們產(chǎn)出快速的更新并且大規(guī)模部署。
強大的 R 語言工具、持續(xù)學(xué)習(xí)、與R社區(qū)的緊密結(jié)合、強大的數(shù)據(jù)基礎(chǔ)設(shè)施,這些都幫助我么你的數(shù)據(jù)科學(xué)團(tuán)隊不斷成長。自從兩年以前我們開始這個動議,我們看過的團(tuán)隊成員有從未打開R到轉(zhuǎn)變成強大的開發(fā)人員現(xiàn)在都開始給我們的新員工教R。這個我們已經(jīng)建立的基礎(chǔ)允許我們雇傭一個大范圍的數(shù)據(jù)科學(xué)家來分享成長心態(tài)和學(xué)習(xí)新技能的興奮。這個方法幫助我們建立一個能為我們的工作帶來新的見解和觀點的多元化團(tuán)隊。
Rbnb R包的創(chuàng)建也激發(fā)了Python開發(fā)人員發(fā)布數(shù)據(jù)科學(xué)家的內(nèi)部稱為Airpy的Python包。我們的R開發(fā)人員也在合作開發(fā)這個包,所以這個包有一個類似的接口和函數(shù)集。我們鼓勵團(tuán)隊成員同時為Rbnb何Airpy來貢獻(xiàn)代碼,我們也在一起工作來開發(fā)更多有效的教育資源和工具來加持我們的團(tuán)隊。今天,許多我們團(tuán)隊的成員同時精通Python和R,同時用這兩張語言都可以評審和寫出可靠的代碼。在最近的一個為數(shù)66人的團(tuán)隊成員調(diào)查中,我們發(fā)現(xiàn)80%的數(shù)據(jù)科學(xué)家和分析師在R的數(shù)據(jù)分析的自我評價都是偏向于”專家”而不是”初學(xué)者”,即使其中只有64%的人將R作為他們首選的數(shù)據(jù)分析語言。類似地,47%的團(tuán)隊成員認(rèn)為自己用Python做數(shù)據(jù)分析已經(jīng)進(jìn)入專家的行列,即使只有31%的人將Python作為首選分析工具。這保留了5%表明他們同時均衡地使用這兩種工具。我們專注于建立一個同時精通兩種語言的平衡團(tuán)隊,在我們招聘的過程中也不會帶有任何偏好或偏見。這是個讓我們技能、經(jīng)歷、背景多樣化的方法又進(jìn)一步提升了團(tuán)隊的影響力。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03