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