我有一個百萬的樣本,有大約1000個功能。但是,每個樣本只能測量一部分特徵。我想執行機器學習來預測基於特徵的結果,但是,我不知道如何處理丟失的數據。由於數據以隨機順序丟失,因此我無法根據丟失的特徵對數據進行分類,因爲類的數量會很大,並且每個類中只有很少的樣本。處理這類問題的最佳解決方案是什麼?機器學習與不完整的數據
回答
的方法來治療缺失值
1.刪除:
在列表中刪除明智,我們刪除的意見,其中任何 變量的缺失。簡單性是這種方法的主要優點之一,但該方法降低了模型的功耗,因爲它減少了樣本大小。
在成對刪除,我們進行分析與所有情況下 感興趣的變量存在。這種方法的優點是,它保留了許多可用於分析的情況。這種方法的缺點之一,它使用不同的樣本大小來獲得不同的變量。當丟失數據的性質是
刪除方法用於其他非隨機丟失,可能會偏向 模型輸出值「完全隨機缺失 」。
2.平均數/模式/中值插補:
插補是填補與估計那些缺少的值的方法。目標是採用可在數據集的有效值中識別的已知關係來幫助估計缺失值。平均值/模式/中值歸算是最常用的方法之一。它由用給定屬性的所有已知值的均值或中值(定量屬性)或模式(定性屬性)替換給定屬性的缺失數據組成。它可以是兩種類型: -
廣義歸責:在這種情況下,我們計算均值或中位數 該變量的所有非缺失值,然後替換丟失 值均值或中位數。如上表所示,變量「Manpower」 缺失,因此我們取「Manpower」的所有非缺失值的平均值 (28.33),然後用它替換缺失值。
類似情況歸責:在這種情況下,我們爲 性別「男」(29.75)和「女」(25)分別計算非缺失 值的平均值然後替換基於性別的缺失值。對於「男性」,我們 將用29.75代替人力缺失值,「女性」 代替25。
3預測模型:
預測模型,用於處理丟失數據的複雜的方法之一。在這裏,我們創建一個預測模型來估計將替代缺失數據的值。在這種情況下,我們將數據集分成兩組:一組沒有缺失值的變量,另一組缺失值。第一個數據集成爲模型的訓練數據集,而第二個缺失值數據集是測試數據集,而具有缺失值的變量被視爲目標變量。接下來,我們根據訓練數據集的其他屬性創建一個模型來預測目標變量,並填充測試數據集的缺失值。我們可以使用迴歸,方差分析,邏輯迴歸和各種建模技術來執行此操作。有2個缺點,這種方法:
該模型評估值通常更加如果有與數據集屬性和 屬性沒有關係乖巧比 真實值
如果缺少數值,那麼 估算缺失值的模型將不準確。
4. KNN插補:
在插補的這種方法中,一個屬性的缺失值使用最相似的,它們的值是缺少屬性屬性的給定數量的估算。兩個屬性的相似性是使用距離函數確定的。也已知具有某些優點的缺點。
優點:
k-最近鄰可以預測定性&定量 屬性
創作預測模型爲每個屬性與缺失數據是 不需要
具有多個缺失值的屬性可以很容易地進行修改ated
的數據的相關性結構被考慮
缺點:
KNN算法是非常耗時在分析大型數據庫。它 搜索所有數據集,尋找最相似的 實例。
選擇k值非常關鍵。 k的較高值將包括 屬性,這些屬性與我們所需要的 顯着不同,而較低的k值意味着缺少顯着的 屬性。
來源:https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/
您的問題是在機器學習數據分析一個常見的情況。雖然很難說清楚如何正確解決問題 - 不知道數據,想要預測的內容,或者您正在考慮的模型(例如生成或分類) - 我會盡力給您一些指示。
參考
首先,一些參考:我發現(本傑明·馬林的博士論文(http://www.cs.ubc.ca/~bmarlin/research/phd_thesis/marlin-phd-thesis.pdf)是一個很好的開始的地方,我沒有看過完整的博士論文,但通過它一對夫婦來了。這可能對你快速啓動很有幫助,Little和Rubin也有一本關於「缺少數據的統計分析」的書,可能對你有用,關於這個話題有大量的文獻,這篇綜述可能會幫助你得到一個概述:A Review of Methods for Missing Data(該評論示例性地討論了關於哮喘症狀的研究,但這些方法對你仍然有用)在文獻之下,還有一個Wikipedia page on Missing Data可能會提供一些基本的見解。
摘要
一些簡單的方法,讓你開始:
- 確定丟失的數據的類型(這可以用於如上面的參考文獻中討論選擇的方法是至關重要的):
- 在隨機(MCAR)完全缺失:完全獨立於任何可觀察的或不可觀察變量的遺漏特徵的概率。
- 在隨機(MAR)缺少:遺漏的特徵的概率取決於觀察的或unobserable變量(即其他可觀察的或不可觀察的變量「解釋」未接功能)。
- 失蹤不在隨機(MNAR) - 根據你的描述,這可能不是你的。
- 確定丟失數據的原因;這也將幫助您識別丟失數據的類型,例如MCAR和MAR之間的差異以及缺失數據的適當方法。
- 是擺在首位的數據不可用(假設有2類分類的類,有些功能沒有爲類的一個道理)
- 數據是否可用,但沒有記錄(如傳感器故障,或參與者在研究中沒有在字段填充)
- 是記錄的數據,但前/處理期間得到了丟失(例如,傳感器記錄最大/最小值,NaN值或類似物,其是在預處理扔掉,或字段拋出由於研究中的匿名化)
- ...
- 處理丟失的數據(這裏只一些簡單的方法):
- 忽略丟失的數據(例如,忽略功能);當然,對於MCAR來說,這可能是困難的,如果沒有所有行都存在的功能。
- 填補缺失數據:
- 使用默認值(例如,如果在STDY領域並非所有參加者填寫,以平均值或一些默認,或者一些值,表明它缺少填充它 - 該領域缺失的信息也可能對機器學習有用,例如對於MAR案例)。
- 推測值
- 推斷值(例如,通過插補技術,可以使用簡單的,例如,K-NN,或更復雜的方法)
- 插值可以是這裏的特例...
- 變換的數據(例如降維,隨機項目等等;這當然是更難以用分類數據)
- ...
總的來說,有很多有效的方法,它強烈依賴於您的任務/應用程序。但是,首先確定數據缺失的原因以及缺失的數據。然後,按照一些參考資料,開始嘗試簡單的方法,看看什麼適合你。
- 1. 正規化與完整數據集機器學習
- 2. 深度學習與機器學習
- 3. python中的機器學習外部數據集學習
- 4. Azure的機器學習 - 從數據集
- 5. 機器學習的挑戰:在Java/Groovy中(數據挖掘,機器學習)
- 6. 使用機器學習預測數據
- 7. 醫療機器學習數據集
- 8. 機器學習數據預處理
- 9. 機器學習在Python:scikit學習/ Pybrain
- 10. 機器學習形狀和類型的機器學習
- 11. 一個與教育有關的機器學習數據集
- 12. 機器學習 - 與大數據集的問題
- 13. 機器學習,Python
- 14. 機器學習udacity
- 15. 問題與機器學習scikit在Python學習
- 16. 使用KDD杯99數據集和機器學習與R
- 17. 儀表板與機器學習蔚藍數據
- 18. 如何彌補機器學習算法中的數據不足?
- 19. Bot中的機器學習
- 20. Perl的機器學習
- 21. GATE中的機器學習
- 22. 機器學習 - 感知器
- 23. Python機器學習/數據科學項目結構
- 24. 服務器日誌數據上的機器學習
- 25. Asp.net Azure機器學習
- 26. Python監督機器學習
- 27. Azure機器學習 - CORS
- 28. C機器學習庫#
- 29. Azure機器學習-python
- 30. Azure機器學習分類