來源:秦路 時間:2017-02-09 11:11:22 作者:
本文是數(shù)據(jù)科學(xué)家學(xué)習(xí)路徑的的完結(jié)篇,算上《數(shù)據(jù)科學(xué)家成長指南(上)》和《數(shù)據(jù)科學(xué)家成長指南(中)》,總篇幅應(yīng)該五萬字多一點(diǎn)。本文更新數(shù)據(jù)獲取、數(shù)據(jù)清洗、工具三條線路的內(nèi)容,文字較少。
——————
Data Ingestion 數(shù)據(jù)獲取
這一塊的概念比較混亂,主要是涉及太多的名詞概念,很混淆,我大致粗略的翻譯一下。不保證一定對。
Summary of Data Formats
數(shù)據(jù)格式概要
在進(jìn)行數(shù)據(jù)工程或者數(shù)據(jù)工作前,數(shù)據(jù)科學(xué)家應(yīng)該針對數(shù)據(jù)格式有一個全面的了解。
數(shù)據(jù)格式各種各樣,既有結(jié)構(gòu)化數(shù)據(jù),也有非結(jié)構(gòu)化數(shù)據(jù)。既有文本數(shù)據(jù),數(shù)值數(shù)據(jù),也有時間日期數(shù)據(jù)。哪怕同一類,如時間日期,也會因?yàn)闀r區(qū)的不同而有差異。
對數(shù)據(jù)格式的了解有助于后續(xù)工作的開展。
Data Discovery
數(shù)據(jù)發(fā)現(xiàn)
這是一個挺大的問題,我也不清楚作者的真實(shí)含義,姑妄言之。
從大目標(biāo)看,是了解自己擁有哪些數(shù)據(jù),因?yàn)閷?shù)據(jù)科學(xué)家來說,問題不是數(shù)據(jù)少,而是數(shù)據(jù)太大了,導(dǎo)致無法確定分析主題而無從下手。我應(yīng)該用哪些數(shù)據(jù)?哪些數(shù)據(jù)有幫助哪些無用?哪些數(shù)據(jù)有最大的利用價值?哪些數(shù)據(jù)又真實(shí)性存疑?現(xiàn)階段最需要解決的數(shù)據(jù)問題是哪個?我想都是擺在數(shù)據(jù)科學(xué)家面前的問題。Discovery即是發(fā)現(xiàn),也是探索。
從小細(xì)節(jié)看,是針對數(shù)據(jù)進(jìn)行探索性研究,觀察各變量的分布、范圍。觀察數(shù)據(jù)集的大小。主要目的是了解數(shù)據(jù)的細(xì)節(jié)。
這們把這一過程理解為,在挖掘到數(shù)據(jù)金礦前,得先知道哪一個地方會埋藏有金礦。
Data Sources &Acquisition
數(shù)據(jù)來源與采集
當(dāng)你知道這塊地方有金礦時,你得準(zhǔn)備好自己的工具了:確定自己需要的數(shù)據(jù)源。比如要進(jìn)行用戶行為分析,那么就需要采集用戶的行為數(shù)據(jù)。采集什么時間段、采集哪類用戶、采集多少數(shù)據(jù)量。如果這些數(shù)據(jù)不存在,則還需要埋點(diǎn)進(jìn)行收集。
Data Integration
數(shù)據(jù)集成
數(shù)據(jù)集成指代的是將不同來源的數(shù)據(jù)集成在一起成為一個統(tǒng)一的視圖。即可以是數(shù)據(jù)戰(zhàn)略層面,比如兩家公司合并(滴滴和Uber,美團(tuán)和點(diǎn)評),為了業(yè)務(wù)層面的統(tǒng)一和規(guī)范,就需要將用戶數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)都匯總到一起,這個過程就叫做數(shù)據(jù)集成。
也可以是將某一次分析所需要的數(shù)據(jù)源匯總。比如上文的用戶行為分析,如果來源于不同數(shù)據(jù)、則需要確定主鍵,采集后放在一起便于我們使用。
除此以外,第三方數(shù)據(jù)接入,DMP應(yīng)也從屬于這個概念。
Data Fusion
數(shù)據(jù)融合
數(shù)據(jù)融合不同于數(shù)據(jù)集成,數(shù)據(jù)集成屬于底層數(shù)據(jù)集上的合并。而數(shù)據(jù)融合接近模型層面,我們可以想成SQL的Join(不確定)。
Transformation &Enrichament
轉(zhuǎn)換和濃縮
這一塊,在地圖上和另外一條分支【數(shù)據(jù)轉(zhuǎn)換Data Munging】有了交集。兩條支線合并后就是完整的數(shù)據(jù)特征工程。這一步驟是將我們采集的數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)學(xué)意義上的變換,成為數(shù)據(jù)輸入的特征。
Data Survey
數(shù)據(jù)調(diào)查
我也不了解已經(jīng)完成數(shù)據(jù)工程后,為什么還需要數(shù)據(jù)調(diào)查…
Google OpenRefine
Google發(fā)布的開源的數(shù)據(jù)處理軟件。
How much Data
多大的數(shù)據(jù)
一句比較偏概念的話,數(shù)據(jù)量級決定了后續(xù)方方面面,比如抽樣和置信度,比如適用的算法模型,比如技術(shù)選型。
Using ETL
使用ETL,已經(jīng)介紹過了
——————
Data Munging 數(shù)據(jù)清理/數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)清洗過程,機(jī)器學(xué)習(xí)中最耗費(fèi)時間的過程。
Dimensionality &Numerosity Reduction
維度與數(shù)值歸約
雖然我們有海量數(shù)據(jù),但是我們不可能在海量數(shù)據(jù)上進(jìn)行復(fù)雜的數(shù)據(jù)分析和挖掘。所以要應(yīng)用數(shù)據(jù)規(guī)約技術(shù)。它的目的是精簡數(shù)據(jù),讓它盡可能的小,又能保證數(shù)據(jù)的完整性,使得我們在海量數(shù)據(jù)集和小數(shù)據(jù)集上獲得相近的結(jié)果。
主要是刪除不重要或不相關(guān)的特征,或者通過對特征進(jìn)行重組來減少特征的個數(shù)。其原則是在保留、甚至提高原有判別能力的前提下進(jìn)行。
Normalization
數(shù)據(jù)規(guī)范化
在機(jī)器學(xué)習(xí)過程中,我們并不能直接使用原始數(shù)據(jù),因?yàn)椴煌瑪?shù)值間的量綱不一樣,無法直接求和和對比。我們會將數(shù)據(jù)標(biāo)準(zhǔn)化,使之落在一個數(shù)值范圍[0,1]內(nèi)。方便進(jìn)行計(jì)算。
常見的數(shù)據(jù)標(biāo)準(zhǔn)化有min-max,z-score,decimal scaling等。
最小-最大規(guī)范化(min-max)是對原始數(shù)據(jù)進(jìn)行線性變換,新數(shù)據(jù) = (原數(shù)據(jù)-最小值)/(最大值-最小值)。
z-score 標(biāo)準(zhǔn)化是基于均值和標(biāo)準(zhǔn)差進(jìn)行計(jì)算,新數(shù)據(jù)=(原數(shù)據(jù)-均值)/標(biāo)準(zhǔn)差。
小數(shù)定標(biāo)標(biāo)準(zhǔn)化(decimal scaling)通過移動數(shù)據(jù)的小數(shù)點(diǎn)位置來進(jìn)行標(biāo)準(zhǔn)化,小數(shù)點(diǎn)移動多少取決于最大絕對值。比如最大值是999,那么數(shù)據(jù)集中所有值都除以1000。
溫馨提示,標(biāo)準(zhǔn)化會改變數(shù)據(jù),所以標(biāo)準(zhǔn)化應(yīng)該在備份原始數(shù)據(jù)后進(jìn)行操作,別直接覆蓋噢。
Data Scrubbing
數(shù)據(jù)清洗
數(shù)據(jù)挖掘中最痛苦的工作,沒有之一。數(shù)據(jù)一般都是非規(guī)整的,我們稱之為臟數(shù)據(jù),它是無法直接用于數(shù)據(jù)模型的,通過一定規(guī)則將臟數(shù)據(jù)規(guī)范活著洗掉,這個過程叫做數(shù)據(jù)清洗。
常見問題為:
缺失數(shù)據(jù),表現(xiàn)為NaN,缺失原因各有不同,會影響后續(xù)的數(shù)據(jù)挖掘過程。
錯誤數(shù)據(jù),如果數(shù)據(jù)系統(tǒng)不健全,會伴隨很多錯誤數(shù)據(jù),例如日期格式不統(tǒng)一,存在1970錯誤,中文亂碼,表情字符等等。思路最好是從錯誤根源上解決。
非規(guī)范數(shù)據(jù),如果大平臺沒有統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)和數(shù)據(jù)字典,數(shù)據(jù)會有不規(guī)范的情況發(fā)生。比如有些表,1代表男人,0代表女人,而有些表則反過來,也可能是上海和上海市這類問題。通常通過mapping或者統(tǒng)一的字典解決。
重復(fù)數(shù)據(jù)。將重復(fù)數(shù)據(jù)按主鍵剔除掉就好,可能是Join時的錯誤,可能是抽樣錯誤,等等。
數(shù)據(jù)清洗是一個長期的過程。很多情況下都是靠人肉解決的。
Handling Missing Values
缺失值處理
數(shù)據(jù)獲取的過程中可能會造成缺失,缺失影響算法的結(jié)果。
缺失值的處理有兩類思路:
第一種是補(bǔ)全,首先嘗試其他數(shù)據(jù)補(bǔ)全,例如身份證號碼能夠推斷出性別、籍貫、出生日期等?;蛘呤褂盟惴ǚ诸惡皖A(yù)測,比如通過姓名猜測用戶是男是女。
如果是數(shù)值型變量,可以通過隨機(jī)插值、均值、前后均值、中位數(shù)、平滑等方法補(bǔ)全。
第二種是缺失過多,只能剔除這類數(shù)據(jù)和特征。或者將缺失與否作為新特征,像金融風(fēng)險管控,關(guān)鍵信息的缺失確實(shí)能當(dāng)新特征。
Unbiased Estimators
無偏估計(jì)量
無偏估計(jì)指的是樣本均值的期望等于總體均值。因?yàn)闃颖揪涤肋h(yuǎn)有隨機(jī)因素的干擾,不可能完全等于總體均值,所以它只是估計(jì),但它的期望又是一個真實(shí)值,所以我們叫做無偏估計(jì)量。
機(jī)器學(xué)習(xí)中常常用交叉驗(yàn)證的方法,針對測試集在模型中的表現(xiàn),讓估計(jì)量漸進(jìn)無偏。
Binning Sparse Values
分箱稀疏值,兩個合起來我不知道具體意思
分箱是一種常見的數(shù)據(jù)清洗方法,首先是將數(shù)據(jù)排序并且分隔到一些相等深度的桶(bucket)中,然后根據(jù)桶的均值、中間值、邊界值等平滑。常見的分隔方法有等寬劃分和等深劃分,等寬范圍是根據(jù)最大值和最小值均勻分隔出數(shù)個范圍相同的區(qū)間,等深則是樣本數(shù)近似的區(qū)間。
稀疏是統(tǒng)計(jì)中很常見的一個詞,指的是在矩陣或者特征中,絕大部分值都是0。叫做稀疏特征或稀疏矩陣。協(xié)同過濾就用到了稀疏矩陣。
Feature Extraction
特征提?。卣鞴こ?/p>
前面已經(jīng)有過這個了,這里概念再擴(kuò)大些。我們知道:數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個上限而已。說的再通俗一點(diǎn),好算法+爛特征是遠(yuǎn)比不上爛算法+好特征的。
特征提取的過程主要分為:
數(shù)據(jù)預(yù)處理:將已經(jīng)清洗過的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,包括去量綱化、歸一化、二元化、離散化、啞變量化、對數(shù)變換指數(shù)變換等。
特征選擇:利用各類統(tǒng)計(jì)學(xué)選擇特征,主要有Filter過濾法、Wrapper包裝法、Embedded嵌入法。核心目的是找出對結(jié)果影響最大的特征。通常是從業(yè)務(wù)意義出發(fā),好的業(yè)務(wù)專家能夠直接挑選關(guān)鍵特征。另外有時候會遇到具備重要業(yè)務(wù)意義,但是非強(qiáng)特征的情況,這時候需要依據(jù)實(shí)際情況做抉擇。
特征選擇過程中需要考慮模型的泛化能力,避免過擬合。
降維:如果特征維度過大,會直接影響計(jì)算性能,需要降維。常用的降維方法有主成分分析法(PCA)和線性判別分析(LDA)。
當(dāng)然暴力些也能直接選擇全部變量,扔進(jìn)RF或者XGBoost模型中跑一個晚上,直接根據(jù)Gini指數(shù)查看重要性。
Denoising
去噪
在機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘中,數(shù)據(jù)往往由很多噪聲,去除噪聲的方法有多種多樣,一般說來,數(shù)據(jù)量越大,噪聲造成的影響就越少。
噪聲是非真實(shí)的數(shù)據(jù),如果一個用戶某些信息沒有填寫,為缺失值,它不應(yīng)該屬于噪聲,真正的噪聲應(yīng)該是測試人員、機(jī)器人、爬蟲、刷單黃牛、作弊行為等。這類數(shù)據(jù)沒有業(yè)務(wù)意義,加入模型會影響結(jié)果,在早期就該排除掉。
另外一種噪聲是無法解釋的數(shù)據(jù)波動,和其他數(shù)據(jù)不相一致。因?yàn)閿?shù)據(jù)會受一些客觀條件影響造成波動,去噪是使異常波動消除。
去噪在數(shù)據(jù)清洗過程。
Sampling
抽樣
很多時候統(tǒng)計(jì)不可能計(jì)算整體,比如中國平均工資就是拿14億人口一個個計(jì)算過來的么?數(shù)據(jù)科學(xué)中,如果拿全樣本計(jì)算,可能單機(jī)的內(nèi)存吃不消,或者沒有服務(wù)器資源。那么只能抽取部分樣本作為數(shù)據(jù)分析。
抽樣有簡單隨機(jī)抽樣、系統(tǒng)抽樣、分層抽樣、整群抽樣等。無論怎么樣抽樣,都要求樣本有足夠的代表性,即滿足一定數(shù)量,又滿足隨機(jī)性。
Stratified Sampling
分層抽樣
是抽樣的一種。將抽樣單位以某種特征或者規(guī)律劃分成不同的層,然后從不同的層中抽樣,最后結(jié)合起來作為總樣本。
為什么需要分層抽樣?如果整群符合隨機(jī)性倒還好,如果不是會造成統(tǒng)計(jì)上的誤差。我要做社會調(diào)研,各類人都需要,那么就必須有男有女、有老有少、有城市有農(nóng)村,而不是呆在一個商場門口做調(diào)研。前者就屬于分層抽樣。
分層抽樣可以降低樣本量,效率高。
Principal Component Analysis
主成分分析
簡稱PCA,是一種統(tǒng)計(jì)方法。在實(shí)際工作中,我們會遇到很多變量數(shù)據(jù)(比如圖像和信號),而我們又不可能一一列舉所有的變量,這時候我們只能拿出幾個典型,將這些變量高度概括,以少數(shù)代表多數(shù)的方式進(jìn)行描述。這種方式就叫做主成分分析。
如果變量完全獨(dú)立,那么主成分分析沒有意義。PCA前提條件是存在一定相關(guān)性。
通過去均值化的m維原始矩陣乘以其協(xié)方差矩陣的特征向量獲得k維投影,這里的k維就叫做主成分,用來代表m維。因?yàn)镻CA的核心是少數(shù)代表多數(shù),我們從k個主成分中選擇n個作為代表,標(biāo)準(zhǔn)是能代表80%的原數(shù)據(jù)集。
在機(jī)器學(xué)習(xí)中,主要用來降維,簡化模型。常見于圖像算法。
——————
ToolBox工具箱
最后內(nèi)容了,這一塊作者有拼湊的嫌疑,都是之前已經(jīng)出現(xiàn)的內(nèi)容。數(shù)據(jù)科學(xué)的工具更新?lián)Q代非??欤霉ぞ邔映霾桓F,所以該篇章的工具就仁者見仁,寫的簡略一些。
MS Excel / Analysis ToolPak
微軟的Excel,不多說了。
后者是Excel自帶的分析工具庫,可以完成不少統(tǒng)計(jì)操作。
Java, Python
兩種常見編程語言,請?jiān)谶@里和我念:人生苦短,快用Python。
R, R-Studio, Rattle
R語言不再多介紹了。
RStudio是R的IDE,集成了豐富的功能。
Rattle是基于R的數(shù)據(jù)挖掘工具,提供了GUI。
Weka, Knime, RapidMiner
Weka是一款免費(fèi)的,基于JAVA環(huán)境下開源的機(jī)器學(xué)習(xí)以及數(shù)據(jù)挖掘軟件。
KNIME是基于Eclipse環(huán)境的開源商業(yè)智能工具。
RapidMiner是一個開源的數(shù)據(jù)挖掘軟件,提供一些可擴(kuò)展的數(shù)據(jù)分析挖掘算法的實(shí)現(xiàn)。
Hadoop Dist of Choice
選擇Hadoop的哪個發(fā)行版
Hadoop的發(fā)行版除了社區(qū)的Apache hadoop外,很多商業(yè)公司都提供了自己的商業(yè)版本。商業(yè)版主要是提供了專業(yè)的技術(shù)支持,每個發(fā)行版都有自己的一些特點(diǎn)。
Spark, Storm
Hadoop相關(guān)的實(shí)時處理框架
作者寫的時候比較早,現(xiàn)在后兩者已經(jīng)非?;鹆?。是對Hadoop的補(bǔ)充和完善。它們自身也發(fā)展出不少的套件,SparkML,SparkSQL等
Flume, Scribe, Chukwa
Flume是海量日志采集、聚合和傳輸?shù)南到y(tǒng)。
Scribe是Facebook開源的日志收集系統(tǒng),在Facebook內(nèi)部已經(jīng)得到的應(yīng)用。
chukwa是一個開源的用于監(jiān)控大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng)。
Nutch, Talend, Scraperwiki
Nutch是一個開源Java實(shí)現(xiàn)的搜索引擎。它提供了我們運(yùn)行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬蟲。
Talend是一家專業(yè)的開源集成軟件公司,提供各類數(shù)據(jù)工具。
ScraperWiKi是一個致力于數(shù)據(jù)科學(xué)領(lǐng)域維基百科網(wǎng)站,幫助個人和企業(yè)獲得最專業(yè)的可視化數(shù)據(jù),并支持對數(shù)據(jù)進(jìn)行分析和管理。
Webscraper, Flume, Sqoop
Webscraper是網(wǎng)頁爬蟲。
Flume是海量日志采集、聚合和傳輸?shù)南到y(tǒng)。
Sqoop是Haddop套件。
tm, RWeka, NLTK
tm是R語言的文本挖掘包。
RWeka是R的軟件包,加載后就能使用weka的一些算法。
NLTK是自然語言工具包。
RHIPE
R與Hadoop相關(guān)的開發(fā)環(huán)境。
D3.js, ggplot2, Shiny
前兩個不多說了。
Shiny是RStudio團(tuán)隊(duì)開發(fā)的一款在線網(wǎng)頁交互可視化工具。可以將R語言作為半個BI用。
IBM Languageware
IBM的自然語言處理。
Cassandra, MongoDB
2種NoSql數(shù)據(jù)庫。
讀完這里,三篇文章總共七十年的功力我都已經(jīng)傳給你們了。
——————
這是最費(fèi)時費(fèi)力的三篇文章,當(dāng)初翻譯它,有鞏固和學(xué)習(xí)的目的,只是內(nèi)容遠(yuǎn)超我的預(yù)計(jì)。零散加起來前后耗時有兩周,導(dǎo)致運(yùn)營方向的內(nèi)容長期處于停滯,現(xiàn)在可以恢復(fù)了。春節(jié)計(jì)劃再寫一篇數(shù)據(jù)化運(yùn)營,如果時間充裕,還能再有兩篇用戶分層和數(shù)據(jù)庫入門,現(xiàn)在看來,還是有希望的。
?【第一篇】數(shù)據(jù)科學(xué)家成長指南(上)點(diǎn)此進(jìn)入查看>>>
?【第二篇】數(shù)據(jù)科學(xué)家成長指南(中)點(diǎn)此進(jìn)入查看>>>
注:本文作者秦路,版權(quán)著作權(quán)屬原創(chuàng)者所有,編輯:Fynlch(王培),數(shù)據(jù)觀微信公眾號(ID:cbdioreview) ,欲了解更多大數(shù)據(jù)行業(yè)相關(guān)資訊,可搜索數(shù)據(jù)觀(中國大數(shù)據(jù)產(chǎn)業(yè)觀察網(wǎng)www.21jieyan.cn)進(jìn)入查看。
責(zé)任編輯:王培