簡體   English   中英

數據不完整的機器學習

[英]Machine learning with incomplete data

我有一百萬個樣本,大約有1000個功能。 但是,每個樣本僅測量特征的一個子集。 我想進行機器學習以根據功能預測結果,但是,我不知道如何處理丟失的數據。 由於數據是按隨機順序丟失的,因此我無法根據丟失的功能對數據進行分類,因為類的數量很大,每個類中的樣本很少。 解決此類問題的最佳解決方案是什么?

處理缺失值的方法

1.刪​​除:

它有兩種類型:明智刪除列表和明智刪除對。 在此處輸入圖片說明

  • 在逐列表刪除中,我們刪除缺少任何變量的觀察值。 簡單性是此方法的主要優點之一,但是此方法降低了模型的功效,因為它減小了樣本量。

  • 在成對刪除中,我們對所有存在目標變量的情況進行分析。 這種方法的優點是,它可以保留盡可能多的案例以供分析。 這種方法的缺點之一是,它對不同的變量使用不同的樣本量。

  • 當缺失數據的性質為“完全隨機缺失”時,將使用刪除方法,否則非隨機缺失值可能會偏向模型輸出。

2.均值/眾數/中位數推算

插補是一種用估計值填充缺失值的方法。 目的是采用可以在數據集的有效值中識別的已知關系,以幫助估計缺失值。 均值/眾數/中位數插補是最常用的方法之一。 它包括用該變量所有已知值的均值或中位數(定量屬性)或眾數(定性屬性)替換給定屬性的缺失數據。 它可以有兩種類型:

  • 廣義歸因:在這種情況下,我們計算該變量所有非缺失值的均值或中位數,然后用均值或中位數替換缺失值。 像上表一樣,缺少變量“ Manpower”,因此我們取“ Manpower”的所有非缺失值的平均值(28.33),然后用它替換缺失值。

  • 相似情況的推算:在這種情況下,我們分別計算性別“男”(29.75)和“女”(25)的平均值,這些平均值均不含缺失值,然后根據性別替換缺失值。 對於“男性”,我們將缺失的人力值替換為29.75,對於“女性”將替換為25。

3.預測模型:

預測模型是處理丟失數據的復雜方法之一。 在這里,我們創建了一個預測模型來估計將替代缺失數據的值。 在這種情況下,我們將數據集分為兩組:一組沒有變量的缺失值,另一組沒有值。 第一個數據集成為模型的訓練數據集,而具有缺失值的第二個數據集是測試數據集,具有缺失值的變量被視為目標變量。 接下來,我們基於訓練數據集的其他屬性創建一個模型來預測目標變量並填充測試數據集的缺失值,我們可以使用回歸,ANOVA,Logistic回歸和各種建模技術來執行此操作。 這種方法有兩個缺點:

  • 模型估計值通常比真實值表現得更好

  • 如果數據集中的屬性與缺少值的屬性之間沒有關系,則該模型將無法精確估計缺失值。

4. KNN歸因:

在這種估算方法中,使用給定數量的屬性來估算屬性的缺失值,這些給定數量的屬性最類似於其值缺失的屬性。 使用距離函數確定兩個屬性的相似性。 還已知具有某些優點和缺點。

好處:

  • k近鄰可以預測定性和定量屬性

  • 不需要為每個缺少數據的屬性創建預測模型

  • 具有多個缺失值的屬性可以輕松處理

  • 考慮數據的相關結構

壞處:

  • 在分析大型數據庫時,KNN算法非常耗時。 它搜索所有數據集以查找最相似的實例。

  • k值的選擇非常關鍵。 k的較高值將包含與我們需要的屬性明顯不同的屬性,而k的較低值意味着缺少重要屬性。

資料來源: https : //www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/

您的問題是機器學習中數據分析的常見情況。 雖然很難說出如何准確解決問題的方法-不知道數據,您要預測的內容或所考慮的模型(例如生成或區分模型),但我將盡力為您提供一些指導。

參考文獻

首先,提供一些參考:我發現(Benjamin Marlin的博士學位論文)( http://www.cs.ubc.ca/~bmarlin/research/phd_thesis/marlin-phd-thesis.pdf )是一個不錯的起點。還沒有閱讀完整的博士學位論文,只是翻閱了幾篇,這可能有助於您快速入門,還有Little和Rubin撰寫的關於“缺少數據的統計分析”的書可能會有用對於您而言,該主題有很多基礎知識,該評論可能會幫助您獲得概述: 數據丟失方法的評論(該評論示例性地討論了有關哮喘症狀的研究研究,但方法仍可能是在文獻之下,還有一個關於缺失數據Wikipedia頁面,頁面可能提供一些基本見解。

摘要

一些簡單的方法可以幫助您入門:

  • 確定丟失數據的類型(這對於選擇上述參考文獻中討論的方法可能至關重要):
    • 完全隨機缺失(MCAR):完全不依賴於任何可觀察或不可觀察變量的缺失特征的概率。
    • 隨機缺失(MAR):缺失特征的概率取決於可觀察或不可觀察的變量(即其他可觀察或不可觀察的變量“解釋”缺失的特征)。
    • 並非隨意遺失(MNAR)-根據您的描述,這可能並不適合您。
  • 確定丟失數據的原因; 這也將幫助您確定丟失數據的類型,例如MCAR和MAR之間的差異,以及丟失數據的適當方法。
    • 首先是否沒有可用的數據(假設一個分類類有2個類,並且某些功能對於其中一個類沒有意義)
    • 數據是否可用但未記錄(例如傳感器故障或研究參與者未填寫字段)
    • 是否記錄了數據但在預處理/處理過程中丟失了數據(例如,傳感器記錄了在預處理中丟棄的最大/最小值,NaN值等,或由於研究中的匿名性而丟棄的字段)
    • ...
  • 處理丟失的數據(此處僅提供一些簡單的方法):
    • 忽略丟失的數據(例如忽略功能); 如果沒有所有行都存在的功能,那么這對於MCAR當然可能會很困難。
    • 填寫缺失的數據:
      • 使用默認值(例如,如果不是所有參與者都填充了填充字段中的字段,請使用平均值或某個默認值填充該字段,或者使用某些值來表示缺少該字段-缺少該字段的信息對於機器學習也可能是有用的,例如針對MAR的情況)。
      • 猜值
      • 推斷值(例如,通過可能使用簡單的方法(例如k-NN)或更復雜的方法)
        • 插值在這里可能是一種特殊情況...
      • 轉換數據(例如降維,隨機項目等;使用分類數據當然更困難)
    • ...

總體而言,有許多有效的方法,並且這在很大程度上取決於您的任務/應用程序。 不過,首先要確定為什么丟失數據以及丟失什么數據。 然后,遵循一些參考資料並開始嘗試簡單的方法,以查看適合您的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM