Datawhale
作者:王瑞楠、吳忠強、徐韜、田楊軍
摘要:入門數據挖掘,必須理論結合實踐。本文梳理了數據挖掘知識體系,幫助大家了解和提升在實際場景中的數據分析、特徵工程、建模調參和模型融合等技能。
數據分析探索性數據分析(Exploratory Data Analysis,EDA)是指對已有數據在儘量少的先驗假設下通過作圖、制表、方程擬合、計算特徵量等手段探索數據的結構和規律的一種數據分析方法。
常用的第三方庫
數據科學庫
數據可視化庫
常用函數
數據簡略觀測
數據總覽
數據檢測
缺失值檢測
異常值檢測
預測分布
總體分布概況:
很多模型假設數據服從正態分布,數據整體服從正態分布,樣本均值和方差則相互獨立。當樣本不服從正態分布時,可以做如下轉換:
線性變化z-scores:基於原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。將A的原始值x使用z-score標準化到x』
Boxcox變換:一種廣義冪變換方法,是統計建模中常用的一種數據變換,用於連續的響應變量不滿足正態分布的情況。
yeo-johnson變換:是冪變換(power transformation)的方法之一,通過構建一組單調函數對隨機變量進行數據變換。
查看skeness 和kurtosis
預測值的具體頻數
當某範圍預測值很少時,可將其當作異常值處理填充或刪除。若頻數很失常,需對數據進行處理,例如進行log變換,使數據分布較均勻,可據處理後的數據進行預測,這也是預測問題常用的技巧。
特徵分析
數字特徵
類別特徵
數據清洗數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已。俗話說:garbage in, garbage out。分析完數據後,特徵工程前,必不可少的步驟是對數據進行清洗。
數據清洗作用是利用有關技術如數理統計、數據挖掘或預定義的清理規則將髒數據轉化為滿足數據質量要求的數據。主要包括缺失值處理、異常值處理、數據分桶、特徵歸一化/標準化等流程。
缺失值處理
關於缺失值處理的方式, 有幾種情況:
異常值處理
常用的異常值處理操作包括BOX-COX轉換(處理有偏分布),箱線圖分析刪除異常值, 長尾截斷等方式, 當然這些操作一般都是處理數值型的數據。
數據分桶
連續值經常離散化或者分離成「箱子」進行分析, 為什麼要做數據分桶呢?
離散後稀疏向量內積乘法運算速度更快,計算結果也方便存儲,容易擴展;
離散後的特徵對異常值更具魯棒性,如 age>30 為 1 否則為 0,對於年齡為 200 的也不會對模型造成很大的幹擾;
LR 屬於廣義線性模型,表達能力有限,經過離散化後,每個變量有單獨的權重,這相當於引入了非線性,能夠提升模型的表達能力,加大擬合;
離散後特徵可以進行特徵交叉,提升表達能力,由 M+N 個變量編程 M*N 個變量,進一步引入非線形,提升了表達能力;
特徵離散後模型更穩定,如用戶年齡區間,不會因為用戶年齡長了一歲就變化
當然還有很多原因,LightGBM 在改進 XGBoost 時就增加了數據分桶,增強了模型的泛化性。現在介紹數據分桶的方式有:
等頻分桶:區間的邊界值要經過選擇,使得每個區間包含大致相等的實例數量。比如說 N=10 ,每個區間應該包含大約10%的實例。
等距分桶:從最小值到最大值之間,均分為 N 等份;
Best-KS分桶:類似利用基尼指數進行二分類;
卡方分桶:自底向上的(即基於合併的)數據離散化方法。它依賴於卡方檢驗:具有最小卡方值的相鄰區間合併在一起,直到滿足確定的停止準則。
數據轉換
數據轉換的方式有:
數據歸一化(MinMaxScaler);
標準化(StandardScaler);
對數變換(log1p);
轉換數據類型(astype);
獨熱編碼(OneHotEncoder);
標籤編碼(LabelEncoder);
修復偏斜特徵(boxcox1p)等。
特徵工程特徵工程指的是把原始數據轉變為模型訓練數據的過程,目的是獲取更好的訓練數據特徵。特徵工程能使得模型的性能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。
特徵構造
特徵構造的時候需要考慮數值特徵,類別特徵,時間特徵。
數值特徵,一般會嘗試一些它們之間的加減組合(當然不要亂來,根據特徵表達的含義)或者提取一些統計特徵
類別特徵,我們一般會嘗試之間的交叉組合,embedding也是一種思路
時間特徵,這一塊又可以作為一個大專題來學習,在時間序列的預測中這一塊非常重要,也會非常複雜,需要就儘可能多的挖掘時間信息,會有不同的方式技巧。
特徵選擇
特徵選擇主要有兩個功能:
通常來說,從兩個方面考慮來選擇特徵:
根據特徵選擇的形式又可以將特徵選擇方法分為3種:
過濾法(Filter):按照發散性或者相關性對各個特徵進行評分,設定閾值或者待選擇閾值的個數,選擇特徵。
包裝法(Wrapper):根據目標函數(通常是預測效果評分),每次選擇若干特徵,或者排除若干特徵。
嵌入法(Embedded):先使用某些機器學習的算法和模型進行訓練,得到各個特徵的權值係數,根據係數從大到小選擇特徵。
降維
數據特徵維度太高,首先會導致計算很麻煩,其次增加了問題的複雜程度,分析起來也不方便。但盲目減少數據的特徵會損失掉數據包含的關鍵信息,容易產生錯誤的結論,對分析不利。
PCA降維方法,既可以減少需要分析的指標,而且儘可能多的保持了原來數據的信息。
但要注意一點, 特徵選擇是從已存在的特徵中選取攜帶信息最多的,選完之後的特徵依然具有可解釋性,而PCA,將已存在的特徵壓縮,降維完畢後不是原來特徵的任何一個,也就是PCA降維之後的特徵我們根本不知道什麼含義了。
建模調參特徵工程也好,數據清洗也罷,都是為最終的模型來服務的,模型的建立和調參決定了最終的結果。模型的選擇決定結果的上限, 如何更好的去達到模型上限取決於模型的調參。
建模的過程需要我們對常見的線性模型、非線性模型有基礎的了解。模型構建完成後,需要掌握一定的模型性能驗證的方法和技巧。同時,還需要掌握貪心調參、網格調參、貝葉斯調參等調參方法。
回歸分析
回歸分析是一種統計學上分析數據的方法,目的在於了解兩個或多個變量間是否相關、相關方向與強度,並建立數學模型。以便通過觀察特定變量(自變量),來預測研究者感興趣的變量(因變量)
長尾分布
這種分布會使得採樣不準,估值不準,因為尾部佔了很大部分。另一方面,尾部的數據少,人們對它的了解就少,那麼如果它是有害的,那麼它的破壞力就非常大,因為人們對它的預防措施和經驗比較少。
欠擬合與過擬合
欠擬合:訓練的模型在訓練集上面的表現很差,在驗證集上面的表現也很差。即訓練誤差和泛化誤差都很大。原因:
模型沒有很好或足夠數量的訓練訓練集
模型的訓練特徵過於簡單
過擬合:模型的訓練誤差遠小於它在測試數據集上的誤差。即訓練誤差不錯,但是泛化誤差比訓練誤差相差太多。原因:
模型沒有很好或足夠數量的訓練訓練集
訓練數據和測試數據有偏差
模型的訓練過度,過於複雜,沒有學到主要的特徵
由此引出模型複雜度概念模型中的參數,一個簡單的二元線性的函數只有兩個權重,而多元的複雜的函數的權重可能會什麼上百上千個。
模型複雜度太低(參數過少),模型學習得太少,就難以訓練出有效的模型,便會出現欠擬合。模型複雜度太高(參數很多),即模型可訓練空間很大,容易學習過度,甚至於也將噪聲數據學習了,便會出現過擬合。
正則化
損失函數後面會添加一個額外項,稱作 L1正則化 和 L2正則化,或者 L1範數和 L2範數。
L1正則化和L2正則化可以看做是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數做一些限制。對於線性回歸模型,使用L1正則化的模型建叫做Lasso回歸,使用L2正則化的模型叫做Ridge回歸(嶺回歸)。
正則化說明:
L1正則化是指權值向量