無論你在數據科學中是何種立場,你都無法忽視數據的重要性,數據科學家的職責就是分析、組織和應用這些數據。
著名求職網站Glassdoor根據龐大的就業數據和員工反饋信息,將數據科學家排名為美國最佳的25個工作之首。雖然名頭不小,但毫無疑問,數據科學家所做的具體工作是不斷發展變化的。隨著機器學習等技術越來越普及,像深度學習這樣的新興領域在研究人員、工程師以及聘用他們的公司中成為新寵,數據科學家們將繼續在創新浪潮和技術進步中嶄露頭角。
盡管具有強大的編程能力很重要,但數據科學家不需要都是軟件工程師(實際上會用Python你就可以上路了)。數據科學家處于編程、統計學和批判性思維的交叉區域。正如Josh Wills所說:“數據科學家是這樣一種人,他比任何程序員都更懂統計,并且他比任何統計學家都更懂編程”。
我認識很多想轉行數據科學家的軟件工程師,他們盲目地使用TensorFlow或者Apache Spark等機器學習框架去處理數據,卻沒有深入理解背后的統計理論。因此本文要談一談統計學習(statistical learning),它是源于統計學和泛函分析的一個機器學習理論框架。
01、為什么要學習統計學
首先,為了知道如何以及何時使用各種分析方法,理解各種分析方法背后的思想很重要。要想掌握更精巧復雜的方法,你必須先理解較簡單的方法;其次,當你想準確地評估一種分析方法的效果時,你得知道其運行的多好或者多么不好;第三,這是一個令人興奮的研究領域,在科學、業界和金融領域有重要的應用。最后,統計學習也是一名現代數據科學家的重要素養。一些統計學習的代表性問題包括:
找出前列腺癌的高危因素
根據對數周期圖對一個音位進行分類
根據人口統計學資料、飲食和臨床測量數據預測某人是否會得心臟病
自定義一個垃圾郵件檢測系統
識別手寫的郵政編碼數字
確定一個組織樣本屬于哪一類癌癥
建立人口調查數據中工資和人口統計學變量之間的關系
在大學的最后一個學期,我完成了一門數據挖掘的獨立學習課程。該課程涵蓋了來自3本書的大量材料:《Intro to Statistical Learning》(Hastie, Tibshirani, Witten, James), 《Doing Bayesian Data Analysis》 (Kruschke),和《Time Series Analysis and Applications》 (Shumway, Stoffer)。我們在貝葉斯分析、馬爾科夫鏈、蒙特卡洛、層次建模、監督學習和非監督學習方面做了大量的練習。
這些經歷加深了我對數據挖掘的興趣,并使我確信要在此領域進一步專注。最近我完成了Stanford Lagunita的統計學習在線課程,它涵蓋了我在獨立學習課程中讀過的《Intro to Statistical Learning》的全部內容。在接觸了這本書兩次之后,我想分享這本書中的10個統計分析方法,我相信任何數據科學家,若想更有效的處理大數據集,都應該學習這些方法。
在介紹這10個分析方法之前,我想先對統計學習和機器學習做一個區分。我曾經寫過一篇關于機器學習的很受歡迎的文章,所以我相信我有專業能力來區分二者:
機器學習是人工智能的一個子領域,統計學習是統計學的一個子領域;
機器學習強調大規模應用和預測準確性,統計學習強調模型及其可解釋性(interpreta
bility),精度(precision)和不確定性(uncertainty)。
但是這種區別已經越來越模糊,并且存在大量交叉。此外,機器學習的市場營銷做的更好。
02、線性回歸
在統計學中,線性回歸是一種通過擬合因變量(dependent)和自變量(independent variable)之間最佳線性關系來預測目標變量的方法。最佳擬合是通過確保每個實際觀察點到擬合形狀的距離之和盡可能小而完成的。最佳擬合指的是沒有其他形狀可以產生更小的誤差了。線性回歸的兩種主要類型是:簡單線性回歸(Simple Linear Regression)和多元線性回歸(Multiple Linear Regression)。簡單線性回歸使用單一的自變量,通過擬合出最佳的線性關系來預測因變量。而多元線性回歸使用多個自變量,擬合出最佳的線性關系來預測因變量。
選擇任意兩個你日常生活中使用的相關的東西。比如,我有過去3年中自己每月開支、每月收入、每月旅行次數的數據,現在我想回答下列問題:
明年我每月的開支會是多少?
哪個因素(每月收入還是每月旅行次數)在決定我的每月開支時更重要?
每月收入、每月旅行次數是如何與每月支出相關的?
03、分類
分類是一種數據挖掘技術,通過確定一組數據所屬的類別以實現更準確的預測和分析。分類有時候也稱為決策樹,是對大型數據集進行分析的利器之一。常用的分類方法有兩種:邏輯回歸和判別分析(Discriminant Analysis)。
邏輯回歸適合于因變量為二元變量時。像所有的回歸分析一樣,邏輯回歸是一種預測性分析。邏輯回歸用于描述數據并解釋一個二元因變量與一個或多個名義、序列、時間間隔或比率獨立變量之間的關系。邏輯回歸可以回答的問題有:
每增加一磅體重和每天吸煙的包數如何影響患肺癌的概率?
卡路里攝入、脂肪攝入和年齡是否對心臟病發作有影響?
在判別分析中,先驗知道兩個或多個分組或類別(clusters),然后基于已測量的特征將1個或多個新觀測對象分類到一個已知類別中去。判別分析在每個類別下分別對預測變量X的分布進行建模,然后使用貝葉斯定理將這些變量轉換為給定X值的對應類別的概率估計。這些模型可以是線性的或者二次方的:
線性判別分析(Linear Discriminant Analysis)為每個觀測值計算“判別分數”來判斷它應該屬于哪個類別。判別分數是通過尋找自變量的線性組合得到的。它假設每個類別中的觀測值都來自于多元高斯分布,并且預測變量的協方差在響應變量Y的所有k個水平上都相同。
二次判別分析(Quadratic Discriminant Analysis)提供了一個替代方法。與線性判別分析一樣,二次判別分析假設每個Y類別的觀察值都來自于高斯分布。然后,與線性判別分析不同的是,二次判別分析假設每個類都有自己的協方差矩陣。換句話說,預測變量并未假設在Y中的所有k個水平上都具有共同的方差。
04、重采樣方法
重采樣是從原始數據中重復采集樣本的方法。這是一種非參數統計推斷方法。換句話說,重采樣方法不涉及使用通用分布表來計算近似的p概率值。
重采樣根據實際數據生成一個唯一的采樣分布。它使用實驗方法而不是分析方法來生成唯一的樣本分布。它產生的是無偏估計,因為它是基于研究人員研究的數據的所有可能結果生成的無偏樣本。為了理解重采樣的概念,你需要理解術語Bootstrapping和交叉驗證(Cross-Validation)。
Bootstrapping 在很多情況下是一種有用的方法,比如評估模型性能、模型集成(ensemble methods)、估計模型的偏差和方差等。它的工作機制是對原始數據進行有放回的采樣,并將“沒被選上”的數據點作為測試用例。我們可以這樣操作多次,并計算平均得分作為模型性能的估計。
交叉驗證是評估模型性能的一種方法,它通過將訓練數據分成k份,使用k-1份作為訓練集,使用保留的那份作為測試集。以不同的方式重復整個過程k次。最終取k個得分的平均值作為模型性能的估計。
對于線性模型而言,普通最小二乘法是擬合數據的主要標準。不過,接下來的3種方法可以為線性模型提供更好的預測準確性和模型可解釋性。
05、子集選擇
這種方法先確定與因變量相關的p個自變量的一個子集,然后使用子集特征的最小二乘擬合模型。
最優子集法(Best-Subset Selection)對p個自變量的所有可能組合分別做最小二乘法回歸,查看最終的模型擬合效果。該算法分為2個階段:
擬合所有包含k個自變量的模型,其中k是模型的最大長度;
使用交叉驗證誤差來選出最佳模型。
使用測試誤差或者驗證誤差而不是訓練誤差來評估模型很重要,因為RSS和R2會隨著變量的增加而單調增加。最好的方式是交叉驗證并選擇測試誤差上R2最高而RSS最低的模型。
向前逐步選擇(Forward Stepwise Selection)使用一個更小的自變量子集。它從一個不包含任何自變量的模型開始,將自變量逐個加入模型中,一次一個,直到所有自變量都進入模型。每次只將能夠最大限度提升模型性能的變量加入模型中,直到交叉驗證誤差找不到更多的變量可以改進模型為止。
向后逐步選擇(Backward Stepwise Selection)在開始時包含全部p個自變量,然后逐個移除最沒用的自變量。
混合方法(Hybrid Methods)遵循向前逐步選擇原則,但是在每次添加新變量之后,該方法也可能移除對模型擬合沒有貢獻的變量。
06、特征縮減
這種方法使用所有p個自變量擬合模型,但相對于最小二乘估計,該方法會讓一些自變量的估計系數向著0衰減。這種衰減又稱正則化(Regularization),具有減少方差的作用。根據所使用的縮減方法,一些系數可能被估計為0。因此這個方法也用于變量選擇。最常用的兩種縮減系數方法是嶺回歸(Ridge regression)和L1正則化(Lasso)。
嶺回歸(Ridge regression)與最小二乘類似,但在原有項的基礎上增加了一個正則項。和最小二乘法一樣,嶺回歸也尋求使RSS最小化的參數估計,但當待估參數接近于0時,它會有一個收縮懲罰。這個懲罰會促使縮減待估參數接近于0。您無需深入數學海洋,僅需要知道嶺回歸通過減小模型方差來縮減特征就可以了。就像主成分分析一樣,嶺回歸將數據投影到d維空間,然后對比低方差(最小主成分)和高方差(最大主成分)的系數進行剔除和篩選。
嶺回歸至少有一個缺點:它的最終模型中包含全部p個自變量。懲罰項會讓許多系數接近于0但永遠不為0。這一點通常對預測準確性而言并不是問題,但它可能會使模型更難解釋。正則化克服了這個缺點,只要s足夠小,它能強迫某些系數為0。S=1就是常規的最小二乘法回歸,當s接近于0時,系數朝著0縮減。因此正則化也相當于進行了變量選擇。
07、特征縮減
降維將估計p+1個系數減少為M+1個系數,其中M<p。這是通過計算變量的M個不同的線性組合或投影來實現的。然后,這M個投影被用作預測變量,使用最小二乘來擬合線性回歸模型。常用的兩種降維方法分別是主成分回歸(Principal component regression)和偏最小二乘法(Partial least squares)。
可以將主成分回歸描述為從大量變量中導出低維特征集的方法。數據的第一主成分方向是觀測值變化最大的方向。換句話說,第一主成分是一條盡可能擬合數據的直線。可以擬合p個不同的主成分。第二主成分是與第一主成分不相關的變量的線性組合,且方差最大。主成分分析的思想是使用正交方向的數據的線性組合來捕獲數據中的最大方差。通過這種方式可以組合相關變量的影響,從可用數據中提取更多信息,而在常規最小二乘中我們必須丟棄其中一個相關變量。
主成分分析法識別最能代表預測變量X的線性組合。這些組合(方向)以無監督的方式被識別,響應變量Y并未用于幫助確定主成分方向,因此不能保證最能解釋預測變量的方向在預測上也是最好的(盡管通常都這樣假定)。偏最小二乘法是主成分分析法的一種監督學習替代方式。它也是一種降維方法,首先識別一個新的較小的特征集,這些特征是原始特征的線性組合,然后通過對新的M個特征最小二乘擬合成線性模型。與主成分分析法不同的是,偏最小二乘法會利用響應變量來識別新特征。
08、非線性模型
在統計學中,非線性回歸是回歸分析的一種形式,觀測數據是通過一個或多個自變量的非線性組合函數來建模。數據用逐次逼近的方法進行擬合,下面是一些處理非線性模型的重要方法:
如果一個實數域上的函數可以用半開區間上的指示函數的有限次線性組合來表示,則它被稱為階躍函數(step function)。換一種不太正式的說法就是,階躍函數是有限段分段常數函數的組合。
分段函數是由多個子函數定義的函數,每個子函數應用于主函數域的某一個區間上。分段實際上是表達函數的一種方式,而不是函數本身的特性,但是加上額外的限定條件,它也可以描述函數的性質。例如,分段多項式函數是這樣一個函數,它是每個子域上的多項式,但每個子域上可能是不同的函數。
樣條曲線(spline)是由多項式分段定義的特殊函數。在計算機圖形學中,樣條是指分段多項式參數曲線。因為它們的結構簡單,擬合簡易而準確,可以近似曲線擬合和交互式曲線設計中的復雜形狀,樣條曲線是很流行的曲線。
廣義可加模型(Generalized additive model)是一種廣義線性模型,其中線性預測變量依賴于某些預測變量的未知光滑函數,側重于這些光滑函數的推理。
09、樹形方法
樹形方法可以用于回歸和分類問題。這涉及到將預測空間分層或分割成若干簡單區域。由于用于分割預測空間的分裂規則集可以概括成樹形,因此這類方法被稱為決策樹方法。下面的方法都是先生成多棵樹,然后將這些樹組合在一起以產生單個共識預測。
Bagging是一種通過從原始數據生成額外的訓練數據從而減少預測方差的方法,它通過使用重復的組合來生成與原始數據相同的多樣性。通過增加訓練集的大小,雖然不能提高模型的預測力,但可以減小方差,將預測調整到預期結果。
Boosting是一種使用多個不同模型計算輸出的方法,然后使用加權平均法對結果進行平均。通過改變加權公式,結合這些模型的優點和缺陷,使用不同的微調模型,可以為更廣泛的輸入數據提供良好的預測力。
隨機森林算法非常類似于Bagging。先采集訓練集的隨機bootstrap樣本,然后采集特征的隨機子集來訓練單棵樹;而在bagging時是給每一棵樹全部特征。由于隨機特征選擇,與常規bagging相比,樹彼此之間更加獨立,這通常會導致更好的預測性能(因為更好的方差偏差權衡),而且訓練速度更快,因為每棵樹只從特征的一個子集學習。
10、支持向量機
支持向量機是一種分類技術,屬于機器學習中的監督學習模型。通俗地說,它通過尋找超平面(二維中的線,三維中的平面和更高維中的超平面,更正式地,超平面是n維空間的n-1維子空間)以及最大邊界(margin)來劃分兩類點。從本質上講,它是一個約束優化問題,因為其邊界最大化受到數據點分布的約束(硬邊界)。
“支持”這個超平面的數據點被稱為“支持向量”。在上圖中,填充的藍色圓圈和兩個實心方塊是支持向量。對于兩類數據不能線性分離的情況,這些點將被投影到一個更高維的的空間中,在這個空間里可能會線性可分。多分類問題可以分解為多個一對一或者一對其余類的二分類問題。
11、無監督學習
到目前為止,我們只討論了監督學習,即數據類別是已知的,算法的目標是找出實際數據與它們所屬的類別之間的關系。當類別未知時,我們使用另一種方法,叫做無監督學習,因為它讓學習算法自己去找出數據中的模式。聚類是無監督學習的一個例子,其中不同的數據被聚類為密切相關的分組。下面是最廣泛使用的無監督學習算法的列表:
主成分分析:通過識別一組具有最大方差和相互不相關的特征的線性組合來生成低維表示的數據集。這種方法有助于理解變量在無監督環境下的潛在的相互作用。
k-Means聚類:根據聚類中心點的距離將數據分為k個不同的聚蔟。
層次聚類:通過創建一棵聚類樹來構建多級分層結構。
以上是一些基本的統計技術概要,可以幫助數據科學項目經理/執行人員更好地理解他們的數據科學團隊運作的內容背后隱藏著什么。事實上,一些數據科學團隊純粹通過python和R庫運行算法。他們中的大多數甚至不必考慮背后的數學原理。但是,理解統計分析的基礎知識可以為你的團隊提供更好的方法。深入了解一小部分就可以更輕松地進行操作和抽象。我希望這篇基礎的數據科學統計指南能給你一個不錯的理解!
(部分內容來源網絡,如有侵權請聯系刪除)