數據探索的方法


介紹

數據探索是沒有捷徑可言的,如果你想憑借機器學習方法來解決所有的數據問題,請相信我你一定會失敗的。在很多時候我們的工作內容是在試圖提高模型的准確率,在這種情況下,數據探索技術可能會給你帶來意想不到的結果。
這篇文章主要是介紹數據分析的潛在技術,為了更好的理解某些復雜的概念,本文將穿插一些小例子,最終目的是培養我們在動手建模之前,知道如何對數據進行探索和分析。

目錄

1.數據探索和准備的步驟
2.處理缺失值

  • 為什么缺失值需要處理
  • 為什么數據有缺失值
  • 處理缺失值的方法有那些

3.檢測和處理異常值的方法

  • 什么是異常值
  • 異常值的類型有哪些
  • 異常值產生的原因
  • 異常值對整個數據集的影響
  • 怎么檢測異常值
  • 怎么移除異常值

4.特征工程的藝術

  • 什么是特征工程
  • 特征工程的步驟
  • 什么是變量的轉換
  • 什么時候需要使用變量的轉換
  • 變量轉換的一般方法
  • 產生新特征與其好處

1.數據探索和准備的步驟

我們需要知道輸入數據的質量決定了模型輸出的結果,即數據決定了模型的上限。所以我們需要花大量的時間來對數據進行處理,一般來說數據探索、清洗和預處理將占用整個項目周期的70%時間。下面是在建立預測模型的時候,需要知道的關於清洗和預處理數據的步驟
1.變量識別
2.單變量分析
3.雙變量分析
4.缺失值處理
5.異常值處理
6.變量轉換
7.產生新變量
在實際工作中我們會反復迭代步驟4-7,直到我們得到一個滿意的模型

變量識別

首先需要分清哪個是輸入(predictor)變量哪個是輸出(Target)變量,然后鑒別數據類型和變量的類別,下面通過一些小練習來理解這一步驟。

在下面圖中,這些變量被分為不同的類別

單變量分析

在這一階段,我們將對變量進行一一探索。我們需要去判別變量是類別類型還是連續類型,對這兩種類型的變量需要分開討論。
連續型變量:對於連續性數據,我們需要知道數據的中心分布趨勢和變量的分布。下面是一些統計指標

注意:在進行單變量分析的時候,我們通常會凸顯出異常值或缺失值。在下文中我們會探索如何處理缺失值和異常值
類別類型: 對於類別變量,我們一般使用頻次表表示每一個類別的分布情況,也可以使用某一類別的占比。它們的衡量指標分別為count和count%,使用柱形圖來可視化分布情況。

雙變量分析

雙變量分析目的是為了發現變量之間的關系。我們按照預先設定的重要程度來發掘變量之間的關聯,可以在類別類型變量連續變量的任意組合上面使用雙變量分析方法,這些組合可以是:類別型和類別型、類別型和連續性、連續型和連續型,針對不同的組合使用不同的分析方法。
下面是不同組合的詳解:
連續型和連續型:當兩個變量都是連續型的時候時候,我們應該觀看他們的散點圖(scatter )分布情況,這是一種很實用的方法來發現變量間的關系,根據散點圖的形狀能夠顯示(indicates )出變量是線性(linear )關系還是非線性(non-linear )的關系。

散點圖只能直觀的展示出變量之間的關系,但並不說明化關系的強弱,相關性(Correlation)能夠對這個關系進行量化,相關性是一個大於-1小於1的值。

  • -1:強負線性相關
  • +1:強正線性相關
  • 0:不相關
    相關性的計算公式:

    下面是一個使用python的numpy計算相關系數矩陣的列子,可以看出X和Y的相關系數約為0.65為正相關

類別型與類別型:為了發現類別型變量之間的關系,我們可以使用以下方法

  • 雙向表(two-way table):我們可以通過建立count和count% 的雙向表來分析變量之間的關系,行和列分別表示一個變量,每一個(row,column)為count或者count%的值
  • 堆疊柱狀圖(stacked column chart):這種方法比雙向表更加的直觀

  • 卡方測試(Chi-Square Test):這種方法是用來衡量變量與變量之間的顯著性,同時,它用來檢驗樣本中的信息是否足以概括樣本總體的關系。卡方測試是基於期望值與真實值的差異計算得來,它得到的是卡方分布與自由度的概率值。
    概率值為0:說明類別變量之間相互獨立
    概率值為1:說明類別變量之間不獨立
    概率值小於0.05:說明類別變量之間存在關系的置信區間為95%
    具體例子
    下面是sklearn計算卡方值:

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
X, y = iris.data, iris.target
chiValues = chi(X,y)
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)

類別型和連續型:當處理類別型和連續性變量的時候,可以為每一個類別變量繪制箱線圖

2.處理缺失值

為什么需要處理缺失值?

訓練集中的缺失值會削弱模型的擬合能力或得到有偏差的模型,這是因為模型沒有正確學到變量之間的關系,這會得到錯誤的預測值或分類

上圖是有缺失值的數據集與補全后的數據集,左邊的表格是沒有對缺失值進行處理,從表中可以推斷出男性和女性玩板球的幾率相同,但是通過觀察右邊的表格,可以看得出女性玩半球的概率要高於男性

為什么會存在缺失值?

從上面要給例子我們看出了處理缺失值的重要性,接下來讓我們來找到產生缺失值的原因,這些原因主要出現在兩個階段:

  • 1.數據提取:在數據提取階段可能會出現差錯,在這種情況下,我們應該用重新查看正確的數據,一些哈希程序能夠確保數據是正確的,在提取數據階段出現的錯誤比較容易發現並且也容易糾正。
  • 2.數據收集:數據收集階段出現的錯誤相對來說 比較難修正,主要分為以下4類:
    • 完全隨機丟失:這種情形對於所有觀察結果,丟失變量的概率是相同的。 例如:數據收集過程的受訪者決定在拋出一個公平的硬幣之后,他們將宣布他們的收入。 如果為正面,受訪者宣布他/她的收入,反之亦然。 這里每個觀察值具有相同的缺失值的機會。
    • 隨機丟失:這種情形是變量的值隨機丟失並且丟失的比率因其他輸入變量的不同值/級別而變化。 例如:我們收集的年齡時,女性的數據的缺失率相對男性來說較高。
    • 不可預測因子導致缺失:這種情形數據並不是隨機缺失,而是受一切潛在的因子影響,例如:在醫學研究中,如果一個特定的診斷導致病人不舒適,那么這項研究就很有可能被拋棄。這個缺失值並不是隨機發生,而是依賴於“不舒適”這一潛在的因子
    • 取決自身的缺失:這種情形是發生缺失的概率受缺失值本身影響,例如:收入較高和較低的人不願意提供自己的收入。

處理缺失值的方法有那些

  • 1.刪除:有兩種方法 List Wise Deletion 和Pair Wise Deletion
    • 在List Wise Deletion方法中,我們刪除掉所有有缺失值的樣本,該方法的有點主要是簡單,但由於該方法減少了樣本的大小,會導致模型的擬合能力下降。
    • 在Pair Wise Deletion方法中,對所有我們感興趣的樣本進行分析,該方法的有點是保留了更多的樣本用來分析,這種方法的缺點是針對不同的變量使用了大小不同的樣本集。
    • 當缺失數據的性質為“完全丟失隨機”時,則將對樣本進行刪除,否則非隨機缺失值可能會讓模型的輸出產生偏離。
  • 2.均值/模型/中值填充(imputation):填充是一種用估計值來補填缺失值的方法,目標是利用從有效數據集中識別的關系來幫助評估缺失值,均值/模型/中值填充方法是最常用的方法之一,它通過對包括該變量的所有已知值的平均值或中值(定量屬性)或模型(定性屬性)進行分析來替換給定屬性的丟失數據,可以分為兩種類型:
    • 一般填補:通過計算該變量下所有非缺失值的平均值或中值來補全缺失值,像上一表中manpower存在缺失值,我們使用其他的非確實只來填充
    • 相似樣本填充:這種情況通過分別計算MaleFemal的平均值為29.7和25來分別填充male和femal的缺失值
  • 3.預測模型:預測模型是處理丟失數據的復雜方法之一,通過建立預測模型來填補缺失值,這種情況下我們把數據集分為兩份,一份是沒有缺失值的一份有缺失值的。第一份數據集就是訓練集第二份就是測試集,而缺失的變量就是預測目標。下一步根據訓練集的其他變量來訓練模型,填充缺失值。可以使用回歸、分類等方法來完成填充,有兩個缺點
    • 1 預測出來的值往往更加”規范“
    • 2 如果變量之間不存在關系,那么得到的缺失值將不准確
    1. KNN填充方法:這種方法是利用與該樣本最相似樣本的值來填充,使用距離指標來代表相似,該方法的優缺點:
    • 優點
    • KNN能定量和定性的填充
    • 不需要為缺少數據的每個屬性創建預測模型
    • 對於存在多個缺失值的樣本也容易填充
    • 數據的相關結構被考慮在內
    • 缺點
    • KNN非常耗時,因為它需要遍歷整個數據集
    • K值的選擇,K過大會引入無關的因素,K較小將丟失一些重要的特征
      處理過缺失值之后,下一步就要處理異常點,通常我們傾向忽略異常點的影響,然而這是一個不好的方法,異常點會讓我們的數據產生傾斜並影響准確率

3.檢測和處理異常值的方法

異常值是分析師和數據科學家常用的術語,因為它需要密切關注,否則可能導致出現錯誤的估計。 簡單來說,異常點是一個遠遠超出整個樣本總體的觀測值,我們來舉個例子,我們做客戶分析,發現客戶的年平均收入是80萬美元。 但是,有兩個客戶的年收入為4美元和420萬美元。 這兩個客戶的年收入遠遠高於其他人口。 這兩個觀察將被視為異常值。

異常值的類型有哪些

異常值可以分為兩種類型:單變量和多變量。 剛才我們討論了單變量異常值的例子。 當我們看到單個變量的分布時,可以找到這些異常值。 多變量異常值是n維空間中的異常值,為了找到它們,我們必須查看多維度的分布情況。
讓我們用一個例子來理解這一點。 我們要了解身高和體重之間的關系,下面的例子是身高,體重的單變量和雙變量分布。 通過觀察箱線圖,我們沒有找到任何異常值(高於和低於1.5 * IQR)。 然后再看散點圖,可以看出有兩個樣本在一個特定的身高和體重的平均值以下。

異常值產生的原因

無論何時我們遇到異常值,處理這些異常值的理想方法就是找出有這些異常值的原因,那么處理它們的方法將取決於它們發生的原因。 異常值的原因可分為兩大類:

  • 人為/非自然
  • 自然

讓我們更加詳細地了解各種異常值:

  • 數據輸入誤差:在數據收集,輸入的記錄或輸入過程中引起人為錯誤可能導致數據中的異常值。 例如:客戶的年收入是10萬美元。 數據錄入人員多加了一個零。現在的收入是100萬美元,是原來的10倍。 顯然,這個樣本與其他的人口相比將是異常值。
  • 測量誤差:這是異常值最常見的來源, 當使用的測量儀器出現故障時就會引起這種情況。 例如:有10台稱重機, 其中9台是正常的,1台是有故障,此機器上的測量的重量將比組中的其他結果要高/低。 因此在故障機器上測量的重量可能導致異常值。
  • 實驗誤差:實驗誤差也會導致出現異常值,例如:在7名運動員再100米沖刺中,有一名選手錯過了發令槍起跑晚了。因此,這使運動員的跑步時間比其他運動員更長,他的總時間可能是一個異常值。
  • 有意造成的異常值:這通常發生在一些涉及敏感數據的報告中。 例如:青少年通常會報告他們消費的酒精量,他們可能只會上報比真實結果要小的值。
  • 數據處理造成的誤差:可能再操作或數據提取的過程中造成異常值
  • 采樣誤差:例如,我們要測量運動員的身高,而我們在樣本中包括幾名籃球運動員, 這種就可能會導致數據集中出現異常值。

異常值對整個數據集的影響

異常值可以大幅改變數據分析和統計建模的結果,數據集中的異常值會有很多不利影響:

  • 增加錯誤方差,降低模型的擬合能力
  • 如果異常值是非隨機分布的,它們可以降低正態性
  • 與真實值可能存在偏差
  • 它們也可以影響回歸,方差分析等統計模型假設的基本假設。
    為了更加深刻的理解異常值的影響,下面舉一個例子對有/無異常值的數據集進行對比,觀察會出現什么情況:
    Example

    如上圖所示,具有異常值的數據集,具有顯著不同的平均值和標准偏差。 在無異常值的情況下平均值是5.45。 但隨着異常值的加入平均值上升到30,這將徹底改變估計。

怎么檢測異常值

常用的異常值檢測方法是將其可視化,有很多異常值可視化的工具例如箱線圖直方圖散點圖(在上面我們使用了箱線圖和散點圖進行了可視化),下面是一些比較贊的異常值探索方法:

  • 箱線圖不在-1.5*IQR和1.5IQR的樣本點
  • 使用封頂方法, 在第5和第95百分位數范圍之外的任何值都可以被認為是異常值
  • 對於距離平均值為三倍標准差(standard deviation)或更大的數據點被認為是異常值
  • 異常值只是有影響的數據點進行檢測的特殊情況,它的選擇也取決於對業務的理解
  • 二維或多維的異常通過測量距離的方法來進行判斷,例如:馬氏距離( Mahalanobis’ distance )

怎么移除異常值

處理異常值的大多數方法和處理缺失值的方法類似,例如刪除觀測值、轉換、將他們合並、將它們視為一個單獨的組、估算值和其他的統計方法,下面我們介紹一些常用的方法來處理異常值:

  • 刪除觀察值:如果是由輸入誤差、數據處理誤差或者異常值很小,我們可以直接將它們刪除
  • 轉換:數據轉換可以消除異常值,對數據取對數log會減輕由於極值引起的變化
    • 填充:像處理缺失值那樣,我們可以對異常點進行修改,使用平均值、中值或其他的一些填補方法。在填補之前我們需要分析異常值是自然的異常值還是人為造成的。如果是人為造成的那就可以進行填充,也可以使用預測模型來填充。
  • 區別對待“:如果存在大量的異常值,我們應該在統計模型中分別對待它們, 其中一個方法將它們分為兩個不同的組並為兩組建立單個模型,然后再將其輸出合並。

截至目前,我們已經學習數據探索過程中的缺失值處理、異常值檢測和處理,這三個階段將會使你的原始數據在包含信息能力和准確率上面有所提升,下一步將介紹特征工程

4.特征工程的藝術

什么是特征工程

特征工程是從現有數據中提取更多有效信息的一門科學(和藝術),在不增加數據的前提下,如何讓現有的數據更有用
例如,你正根據根據日期預測商場的人數,如果你直接使用日期,那么可能不能夠從日期中獲得有價值的信息,這是因為商場的人數受一個月中的某一天的影響比一星期中的某一天的影響小,而一周中的某一天隱含在日期中,我們需要將這些信息挖掘出來,讓我們的模型變得更好。這個從數據中提取有價值的信息的小練習就是特征工程。

特征工程的步驟?

特征工程主要分為2步:

  • 變量的轉換
  • 變量/特征的創建
    這兩個步驟雖然字少,但是在數據挖掘中至關重要,對模型的能力有着重大的影響,下面就詳細介紹這兩個步驟:

什么是變量的轉換

在數據建模過程中,變換是指通過函數來替換變量,例如,通過平方/立方根或對數x替換變量x就是一個變換。換句話說,轉換是一個改變變量的分布或關系的過程。
下面讓我們看一看變量轉換有用的情況。

什么時候需要使用變量的轉換

下面是需要進行數據轉換的情況:

  • 當我們想改變一個變量的比例或標准化一個變量的值,以便更好的理解。 如果的數據具有不同的縮放比例(scale),那么這個轉換是必須的並且這個轉換並不會更改變量分布。
  • 當我們將數據從復雜的非線性關系轉化為線性關系時,與非線性或彎曲關系相比,變量之間存在線性關系更容易理解, 轉換有助於我們將非線性關系轉換為線性關系。 散點圖常被用來查找兩個連續變量之間的關系,通這些轉換也可以改善預測的結果。 log是一種常用的轉換方式。
  • 對稱的分布要好於傾斜的分布,因為它容易解釋和做出推論,一些建模技術需要變量服從正態分布,所以,當我們有一個偏斜的分布,我們可以進行減少傾斜的變換。 對於向右傾斜分布,我們取變量的平方/立方根或對數。對於向左傾斜的分布,我們取變量的平方/立方或指數。
  • 從實施者的角度進行變量轉換,就員工的績效來說,我發現年齡與績效有關,年齡越大表現越好。從實現的角度來說基於年齡的程序可能挑戰較大,但是我們可以將年齡分成不同的組,例如小於30,30-45,45以上。然后為每一個組制定不同的策略,這種方法被成為變量的分組。

變量轉換的一般方法

有各種各樣的變量轉換方法, 如前面所討論的其中一些包括平方根,立方根,對數,合並,倒數等等。 下面來看看這些方法的細節,突出說明這些轉換方法的利弊:

  • log:**對變量取對數,常被用來在分布圖上更改變量分布形狀。 它通常用於向右傾斜的分布。這種方法的缺點是,它也不能應用於零值或負值的變量。
  • 平方/立方根:變量的平方根和立方根具有對變量分布有波形的影響。但它並沒有對數變換那么重要。 立方根變換有自己的優勢, 它可以應用於負值包括零。平方根可以應用於包括零的正值。
  • 分箱(離散):常被用來對變量進行分類,它可以基於原始值、百分比或頻率等對變量進行轉換,具體需要基於具體的業務,例如,我們可以將收入分為三類:高,中,低。 我們還可以根據多個變量對變量進行分箱。

產生新特征與其好處

特征/變量創建是基於現有變量生成新變量/特征的過程。 例如,我們將date(dd-mm-yy)作為數據集中的輸入變量,將日期拆分我們可以生成新的變量,如日,月,年,周,工作日,可能與目標變量有更好的關系。 下面這個步驟用於突出變量中的隱藏關系:

有很多產生新變量的方法,下面是一些常用方法:

  • 創建派生變量:是指使用一組函數或不同方法從現有變量創建新的變量。在某個數據集中年齡缺少值, 為了預測缺失的價值,我們以名稱的稱呼(Master,Mr,Miss,Mrs)作為新變量。 我們如何決定要創建的變量? 老實說,這取決於分析師對業務的理解,他的好奇心以及他對這個問題的一套假設。 諸如對變量取對數、分箱和其他變量變換方法等方法也可用於創建新變量。
  • 創建啞變量:啞變量方法是將類別型變量轉化為數值型,下面是一個例子,來表示性別

    上面的這些只是數據探索過程方法中的冰山一角,前期對數據探索的工作量直接影響着模型結果的好壞。完


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM