数据挖掘-数据预处理的必要性及主要任务
數據預處理的必要性及主要任務
1、數據預處理的必要性
數據庫極易受噪聲、缺失值和不一致數據的侵擾,因為數據庫太大,并且多半來自多個異構數據源。低質量的數據導致低質量的數據挖掘。
2、數據預處理技術
(1)數據清理:可以用來清除數據中的噪聲,糾正不一致。
(2)數據集成:將數據由多個數據源合并成一個一致的數據存儲,如數據倉庫。
(3)數據歸約:可以通過如狙擊、刪除冗余特征或聚類來降低數據的規模。
(4)數據變換:可以用來把數據壓縮到較小的區間,如0.0到1.0。這可以提高設計距離度量的挖掘算法的準確率和效率。
這些技術不是互相排斥的,可以一起使用。
3.為什么要對數據預處理
數據如果能滿足其應用要求,那么它肯定是高質量的。數據質量涉及許多因素,包括準確性、完整性、一致性、時效性、可信性和可解釋性
數據質量的三個要素:準確性、完整性和一致性。
不正確、不完整和不一致的數據是現實世界的大型數據庫和數據倉庫的共同特點。
導致不正確的數據(具有不正確的屬性值)可能有多種原因:收集數據的設備可能出現故障;人或計算機的錯誤可能在數據輸入時出現;當用戶不希望提交個人信息時,可能故意向強制輸入字段輸入不正確的值。這成為被掩蓋的缺失數據。錯誤也可能在數據傳輸中出現。也可能是由命名約定或所用的數據代碼不一致,或輸入字段的格式不一致而導致的。重復元組也需要數據清理。
不完整數據的出現可能有多種原因。有些感興趣的屬性,如銷售事務數據中顧客的信息,并非總是可以得到的。其他數據沒有包含在內,可能只是因為輸入時認為是不重要的。相關數據沒有記錄可能是由于理解錯誤,或者因為設備故障。與其他記錄不一致的數據可能已經被刪除。此外,歷史或修改的數據可能被忽略。缺失的數據,特別是某些屬性上缺失值的元組,可能需要推導出來。
時效性(timeliness)也影響數據的質量。
影響數據質量的另外兩個因素是可信性和可解釋性??尚判?#xff08;believability)反映有多少數據是用戶信賴的,而可解釋性(interpretability)反映數據是否容易理解。
4.數據預處理的主要任務
數據清理(data cleaning)例程通過填寫缺失的值,光滑噪聲數據,識別或刪除利群點,并解決不一致性來清理數據。如果用戶認為數據是臟的,則他們可能不會相信這些數據上的挖掘結果。此外,臟數據可能使挖掘過程陷入混亂,導致不可靠的輸出。盡管大部分挖掘例程都有一些過程用來處理不完整數據或噪聲數據,但是他們并非總是魯棒的(Robust,系統的健壯性)。相反,他們更致力于避免被建模的函數過分擬合數據。因此,一個有用的預處理步驟旨在使用數據清理例程處理你的數據。
分析使用來自多個數據源的數據,涉及集成多個數據庫、數據立方體或文件,即數據集成(data integration)。代表同一概念的屬性在不同的數據庫中可能具有不同的名字,導致不一致性和冗余。命名的不一致還可能出現在屬性值中。包含大量冗余數據可能降低知識發現過程的性能或使之陷入混亂。顯然,除了數據清理之外,必須采取措施避免數據集成時的冗余。通常,在為數據倉庫準備數據時,數據清理和集成將作為預處理步驟進行。還可以再次進行數據清理,檢測和刪去可能由集成導致的冗余。
在為分析而選取的數據集是巨大的,這肯定會降低數據挖掘過程的速度。數據歸約可以降低數據集的規模,而又不損害數據挖掘的結果。數據歸約(data reduction)得到數據集的簡化表示,它小得多,但能夠產生同樣的(或幾乎同樣的)分析結果。數據歸約策略包括維歸約和數值歸約。
在維歸約中,使用數據編碼方案,以便得到原始數據的簡化或“壓縮”表示。例子包括數據壓縮技術(例如,小波變換和主成分分析),以及屬性子集選擇(例如,去掉不相關的屬性)和屬性構造(例如,從原來的屬性集導出更有用的小屬性集)。
在數值歸約中,使用參數模型(例如,回歸和對數線性模型)或非參數模型(例如,直方圖、聚類、抽樣或數據聚集),用較小的表示取代數據。
對于數據挖掘而言,離散化與概念分層產生是強有力的工具,因為它們使得數據的挖掘可以在多個抽象層上進行。規范化、數據離散化和概念分層產生都是某種形式的數據變換(data transformation)。數據變換操作是引導挖掘過程成功的附加的預處理過程。
總之,數據一般是臟的、不完整的和不一致的。數據預處理技術可以改進數據的質量,從而有助于提高其后的挖掘過程的準確率和效率。由于高質量的決策必然依賴于高質量的數據,因此數據預處理是知識發現過程的重要步驟。檢測數據異常,盡早的調整數據,并歸約待分析的數據,將為決策帶來高回報。
轉載于:https://www.cnblogs.com/EnzoDin/p/10713908.html
總結
以上是生活随笔為你收集整理的数据挖掘-数据预处理的必要性及主要任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django 通过数据库表名获取app
- 下一篇: Java如何接收前端传来的多层嵌套的复杂