「凡事預則立,不預則廢。」——孔子
真實數據的原始格式通常變化很大。許多值可能會丟失,不同數據源之間不一致,並且是錯誤的。對於分析人員來說,這會在有效使用數據方面帶來諸多挑戰。例如,考慮在社交媒體網站上評估消費者對其活動的興趣的情況。分析人員可能首先需要確定對挖掘過程有價值的活動類型。該活動可以對應於用戶輸入的興趣,用戶輸入的評論以及用戶伴隨興趣而產生的朋友圈。所有這些信息都是多樣的,需要從社交媒體網站的不同數據庫中收集。此外,某些形式的數據(如原始日誌)通常由於其非結構性而不能直接使用。換句話說,需要從這些數據源中提取有用的特徵。因此,需要數據預處理階段。
數據預處理階段是一個多階段過程,包含幾個單獨的步驟,其中一些或全部可用於給定的應用程序。這些步驟如下所示:
特徵提取和可移植性:原始數據通常是不適合處理的形式。例子包括原始日誌、文檔、半結構化數據以及可能的其他形式的異構數據。在這種情況下,可能需要從數據中獲得有意義的特徵。一般而言,具有良好語義解釋性的特徵更爲理想,因爲它們簡化了分析人員瞭解中間結果的能力。而且,它們通常更好地綁定到數據挖掘應用程序的目標。在某些情況下,數據是從多個來源獲得的,需要將其集成到單個數據庫中進行處理。另外,有些算法只能使用特定的數據類型,而數據可能包含不同類型的數據。在這種情況下,數據類型的可移植性在一種類型的屬性轉換爲另一種類型時變得重要。這將生成可以通過現有算法處理的更均勻的數據集。
數據清洗:在數據清洗階段,從數據中刪除丟失、錯誤和不一致的條目。另外,一些缺失的條目也可以通過稱爲插補的過程來估計。
數據消減、選擇和轉換:在這個階段,通過數據子集選擇、特徵子集選擇或數據轉換來減少數據的大小。這一階段獲得的收益是雙重的。首先,當數據的大小減小時,算法通常更有效。其次,如果不相關的特徵或不相關的記錄被刪除,數據挖掘過程的質量就會提高。第一個目標是通過通用採樣和降維技術來實現的。要實現第二個目標,必須使用高度針對特定問題的方法來進行特徵選擇。例如,適用於羣集的特徵選擇方法可能不適用於分類。
某些形式的特徵選擇與手頭的問題緊密結合。稍後關於聚類和分類等具體問題的章節將包含關於特徵選擇的詳細討論。
本章安排如下。特徵提取階段在章節2.2中討論。數據清洗階段在章節2.3中介紹。數據消減階段在章節2.4解釋。總結在章節2.5中給出。
數據挖掘過程的第一階段是創建一組分析人員可用的特徵。在數據處於原始和非結構化形式(例如,原始文本、傳感器信號)的情況下,需要提取相關特徵進行處理。在其他情況下,以不同形式提供的混合特徵往往不能用「現成」的分析方法進行處理。在這種情況下,可能需要將數據轉換爲統一的形式進行處理。這被稱爲數據類型移植。
特徵提取的第一階段是非常關鍵的一步,儘管它非常適合特定的應用。在某些情況下,特徵提取與數據類型可移植性的概念密切相關,其中一種類型的低級特徵可能轉換爲另一種類型的高級特徵。特徵提取的性質取決於數據應用的領域:
傳感器數據:傳感器數據通常以大量的低電平信號收集。有時使用小波變換或傅里葉變換將低電平信號轉換爲更高級的特徵。在其他情況下,時間序列在一些清洗後直接使用。信號處理領域有大量關於這種方法的文獻。這些技術對於將時間序列數據移植到多維數據也很有用。
圖像數據:在其最原始的形式中,圖像數據被表示爲像素。在稍高的級別上,可以使用顏色直方圖來表示圖像不同部分的特徵。最近,視覺詞的使用變得越來越流行。這是一個語義豐富的表示,與文檔數據類似。圖像處理中的一個挑戰是數據通常是非常大的尺寸。因此,取決於手頭的應用,特徵提取可以在不同的級別執行。
Web日誌:Web日誌通常以預先指定的格式表示爲文本字符串。由於這些日誌中的字段被明確指定和分隔,因此將Web訪問日誌轉換爲(相關)分類和數字屬性的多維表示相對比較容易。
網絡流量:在許多入侵檢測應用程序中,網絡數據包的特徵用於分析入侵或其他有趣的活動。根據底層應用程序,可以從這些數據包中提取各種特徵,例如傳輸的字節數、使用的網絡協議等。
文檔數據:文檔數據通常以原始和非結構化形式提供,並且數據可能包含不同實體之間豐富的語言關係。一種方法是刪除停用詞,停止數據,並使用袋裝詞表示法。其他方法使用實體提取來確定語言關係。
命名實體識別是信息提取的重要子任務。這種方法將文本中的原子元素定位和分類爲人員、組織、位置、動作、數量等名稱的預定義表達式。顯然,識別這種原子元素的能力非常有用,因爲它們可以用來理解句子和複雜事件的結構。這種方法也可以用於填充更傳統的關係元素數據庫或者更容易分析的原子實體序列。例如,請考慮以下語句:
比爾·克林頓住在查巴克。
在這裏,「比爾·克林頓」是一個人的名字,「查巴克」是一個地方的名字。「住」一詞表示一種行爲。取決於當前的應用,每種類型的實體可能在數據挖掘過程具有不同的意義。 例如,如果數據挖掘應用程序主要關注提到特定位置,則需要提取「查巴克」一詞。
用於命名實體識別的流行技術包括基於語言語法的技術和統計模型。語法規則的使用通常非常有效,但它需要經驗豐富的計算語言學家的工作。另一方面,統計模型需要大量的訓練數據。設計的技術通常是特定領域的。命名實體識別領域本身就很廣泛,這超出了本書的範圍。讀者可以參考文獻[400]詳細討論實體識別的不同方法。
特徵提取是一種藝術形式,高度依賴於分析人員選擇最適合手頭任務的特徵及其表示。雖然數據分析的這個特定方面通常屬於領域專家,但它也許是最重要的一個。如果不提取正確的特徵,則分析只能基於可用數據。
數據類型的可移植性是數據挖掘過程的關鍵要素,因爲數據通常是異構的,並且可能包含多種類型。例如,人口統計數據集可能包含數字和混合屬性。從心電圖(ECG)傳感器收集的時間序列數據集可能具有與其相關聯的許多其他元信息和文本屬性。這對於現在面臨用任意數據類型組合設計算法的困難挑戰的分析人員而言,是令人困惑的局面。數據類型的混合也限制了分析人員使用現成的工具進行處理的能力。請注意,在某些情況下移植數據類型確實會丟失代表性、準確性和表達性。理想情況下,最好根據特定的數據類型組合來定製算法以優化結果。然而,這是耗時且有時不切實際的。
本節將介紹在各種數據類型之間轉換的方法。因爲數字數據類型是數據挖掘算法中最簡單和研究最廣泛的數據類型,所以專注於如何將不同數據類型轉換爲數字數據類型尤其有用。但是,其他形式的轉換在許多情況下也很有用。例如,對於基於相似性的算法,可以將幾乎任何數據類型轉換爲圖形,並將基於圖形的算法應用於該表示。表2.1總結了在不同類型之間轉換數據的各種方式。
最常用的轉換是從數字到分類數據類型。這個過程被稱爲離散化。離散化過程將數字屬性的範圍劃分爲φ個範圍。然後,根據原始屬性所在的範圍,假定該屬性包含從1到φ的φ個不同分類標註值。例如,考慮年齡屬性。人們可以創建範圍[0,10],[11,20],[21,30]等等。範圍[11,20]中任何記錄的符號值爲「2」,範圍[21,30]中記錄的符號值爲「3」。由於這些是符號值,因此在值「2」和「3」之間不會進行排序。此外,一個範圍內的變化在離散化之後是不可區分的。因此,離散化過程的確會失去一些挖掘過程的信息。但是,對於某些應用程序而言,這種信息丟失不會太過虛弱。離散化的一個挑戰是數據可能在不同的時間間隔內不均勻分佈。例如,對於工資屬性的情況,大量的人口子集可以被分組在[40,000,800,000]範圍內,但很少會被分組在[1,040,000,1,080,000]範圍內。請注意,這兩個範圍都具有相同的大小。因此,使用相同大小的範圍可能對區分不同數據段不是很有幫助。另一方面,許多屬性,如年齡,並不是非均勻分佈的,因此相同大小的範圍可能工作得相當好。離散化過程可以根據應用特定目標以各種方式執行:
等寬範圍:在這種情況下,每個範圍[a,b]的選擇方式使得b - a對於每個範圍都是相同的。 這種方法的缺點是,它不適用於跨不同範圍分佈不均勻的數據集。 確定每個屬性的最小值和最大值以確定範圍的實際值。然後這個範圍[min,max]將數據分成長度相等的φ個範圍。
等值日誌範圍:每個範圍[a,b]的選擇方式使得log(b)-log(a)具有相同的值。對於某些α> 1,這種範圍選擇具有幾何範圍[a,a·α],[a·α,a·α2]等的作用。當屬性在一個範圍內顯示指數分佈時,這種範圍可能很有用。事實上,如果一個屬性的屬性頻率分佈可以用函數形式建模,那麼一個自然的方法是選擇範圍[a,b],使得f(b)-f(a)對於某個函數f(·)相等。以這樣的方式選擇函數f(·),使得每個範圍包含大致相似數量的記錄。然而,在大多數情況下,很難找到封閉形式的函數f(·)。
等深度範圍:在這種情況下,選擇範圍以便每個範圍具有相同數量的記錄。這個想法是爲每個範圍提供相同的粒度級別。一個屬性可以分爲等深度範圍,首先對它進行排序,然後在排序的屬性值上選擇分割點,以便每個範圍包含相同數量的記錄。
離散化過程也可用於將時間序列數據轉換爲離散序列數據。
在某些情況下,希望對分類數據使用數字數據挖掘算法。由於二進制數據是數字和分類數據的特殊形式,因此可以將分類屬性轉換爲二進制形式,然後對二進制數據使用數字算法。如果分類屬性具有φ個不同的值,則創建φ個不同的二元屬性。每個二進制屬性對應於分類屬性的一個可能值。因此,φ個屬性中恰好有一個值爲1,其餘的值爲0。
儘管文本的向量空間表示可以被認爲是具有非常高維度的稀疏數字數據集,但是這種特殊的數字表示形式對於傳統的數據挖掘算法並不是很適合。例如,通常使用專門的相似度函數,例如餘弦,而不是文本數據的歐幾里德距離。這就是文本挖掘本身就是一個獨特領域的原因,它擁有自己的專業算法系列。不過,可以將文本集合轉換爲更適合使用數字數據挖掘算法的形式。第一步是使用潛在語義分析(LSA)將文本集合轉換爲具有較低維度的非稀疏表示。此外,在變換之後,每個文檔 需要被縮放爲 。這種縮放對於確保不同長度的文檔以統一的方式處理是必需的。經過這種縮放之後,傳統的數字度量(例如歐幾里得距離)更有效地工作。LSA在章節2.4.3.3中討論。請注意,LSA很少與這種縮放結合使用。相反,傳統的文本挖掘算法直接應用於從LSA獲得的簡化表示。
時間序列數據可以使用稱爲符號聚合近似(SAX)的方法轉換爲離散序列數據。該方法包括兩個步驟:
基於窗口的平均:將該序列劃分爲長度爲w的窗口,並且計算每個窗口上的平均時間序列值。
基於值的離散化:(已經平均的)時間序列值被離散化爲更小數量的近似等深度間隔。這與前面討論的數值屬性的等深度離散化相同。這個想法是確保每個符號在時間序列中具有近似相等的頻率。間隔邊界通過假定時間序列值是用高斯假設分佈來構造的。 (窗口化的)時間序列值的均值和標準偏差以數據驅動的方式估計以實例化高斯分佈的參數。高斯分佈的分位數用於確定間隔的邊界。這比對所有數據值進行排序以確定分位數更有效,對於長時間(或流式)時間序列來說,這可能是更實用的方法。爲了獲得最好的結果,這些值被離散化爲一小部分(通常爲3到10)的間隔。每個這樣的等深度間隔被映射爲符號值。這創建了時間序列的符號表示,其實質上是一個離散序列。
因此,SAX可能被視爲基於窗口平均的等深度離散化方法。
這種特殊的轉換非常有用,因爲它可以使用時間序列數據的多維算法。用於這種轉換的常用方法是離散小波變換(DWT)。小波變換將時間序列數據轉換爲多維數據,作爲表示系列的不同部分之間的平均差異的一組係數。如果需要,可以使用最大系數的子集來減小數據大小。 這個方法將在章節2.4.4.1關於數據消減部分討論。 另一種方法稱爲離散傅立葉變換(DFT),在第14章章節14.2.4.2討論。這些變換的共同特點是各種係數不再像原始時間序列值那樣依賴於相關性。
這種轉換可以分兩步進行。第一步是將離散序列轉換爲一組(二進制)時間序列,其中該組中的時間序列的數量等於不同符號的數量。第二步是使用小波變換將每個時間序列映射到多維向量中。最後,將來自不同系列的功能組合起來創建一個單一的多維記錄。
要將序列轉換爲二進制時間序列,可以創建一個二進制字符串,其中的值表示某個特定符號是否出現在某個位置。例如,考慮以下四個符號的核苷酸序列:
ACACACTGTGACTG
該系列可以轉換爲與符號A,C,T和G分別對應的以下四組二進制時間序列:
10101000001000
01010100000100
00000010100010
00000001010001
可以將小波變換應用於這些系列中的每一個以創建多維特徵集。可以附加來自四個不同系列的特徵來創建單個數字多維記錄。
空間數據可以通過使用與時間序列數據相同的方法轉換爲數字數據。主要區別是現在有兩個上下文屬性(而不是一個)。這需要修改小波變換方法。第2.4.4.1節將簡要討論如何在有兩個上下文屬性時推廣一維小波方法。該方法相當一般,可用於任何數量的上下文屬性。
可以使用多維縮放(MDS)和頻譜轉換等方法將圖像轉換爲數字數據。此方法適用於邊緣加權的應用程序,並表示節點之間的相似性或距離關係。MDS的一般方法可以實現這一目標,並在第2.4.4.2節進行了討論。譜方法也可用於將圖像轉換爲多維表示。這也是一種將結構信息轉換爲多維表示的降維方案。這個方法將在第2.4.4.3節進行討論。
許多應用程序都基於相似性的概念。例如,聚類問題被定義爲類似對象組的創建,而異常值檢測問題被定義爲識別其中與剩餘對象明顯不同的對象子集的問題。許多形式的分類模型,如最近鄰分類器,也依賴於相似性的概念。配對相似性的概念可以通過使用鄰域圖來最好地得到。對於給定的一組數據對象
爲 中的每個對象定義單個節點。這由節點集 定義,包含 個節點,其中節點 對應於對象 。
如果距離 小於特定閾值 ,則在 和 之間存在邊緣。或者,可以使用每個節點的 個最近鄰。由於 -最近鄰關係不是對稱的,這導致有向圖。邊緣上的方向被忽略,並且平行邊被去除。邊 的權重 等於對象 和 之間距離的核函數,因此較大的權重表示較大的相似性。熱內核就是一個例子:
這裏, 是用戶定義的參數。
各種數據挖掘算法可用於網絡數據。所有這些方法也可用於相似圖。請注意,只要可以定義適當的距離函數,就可以爲任何類型的數據對象清晰地定義相似度圖。這就是距離函數設計對於任何數據類型都非常重要的原因。距離函數設計的問題將在第3章中討論。請注意,此方法僅適用於基於相似性或距離概念的應用程序。不過,許多數據挖掘問題直接或間接地與相似性和距離的概念相關。
由於存在與數據收集過程相關的錯誤,數據清洗過程很重要。數據收集過程中可能會出現一些缺失條目和錯誤的來源。一些例子如下:
上述問題可能是數據挖掘應用程序不準確的重要原因。需要使用方法從數據中刪除或更正丟失和錯誤的條目。數據清洗有幾個重要方面:
以下部分將討論數據清洗的各個方面。
數據收集方法不完善的數據庫中缺少條目。例如,用戶調查往往無法收集所有問題的答案。在數據貢獻是自願的情況下,數據幾乎總是不完整的。三類技術用於處理缺失的條目:
估計缺失條目的問題與分類問題直接相關。在分類問題中,專門處理單個屬性,並使用其他功能估計其值。在這種情況下,缺失值可能出現在任何功能上,因此問題更具挑戰性,儘管它從根本上說並沒有不同。第10和11章中討論的許多分類方法也可用於缺失值估計。另外,在章節18.5中討論的矩陣完成方法也可以使用。
在依賴於數據的情況下,如時間序列或空間數據,缺失值估計要簡單得多。在這種情況下,上下文記錄的行爲屬性值用於插補過程。例如,在時間序列數據集中,可以使用在丟失屬性之前或之後的時間戳的值的平均值來進行估計。或者,可以線性內插最後 個時間序列數據標記處的行爲值以確定缺失值。對於空間數據的情況,估計過程非常相似,其中可以使用相鄰空間位置處的值的平均值。
用於刪除或更正不正確和不一致條目的關鍵方法如下所示:
解決錯誤和不一致條目的方法通常是高度特定於域的。
在許多情況下,不同的特徵代表不同的參考尺度,因此可能無法相互比較。例如,年齡等屬性與薪水等屬性的截然不同。後者的屬性通常比前者大幾個數量級。結果,對不同特徵(例如,歐幾里得距離)計算的任何集合函數將由較大幅度的屬性支配。
爲了解決這個問題,通常使用標準化。考慮第 個屬性具有均值 和標準偏差 的情況。然後,第 個記錄 的第 個屬性值 可以如下歸一化:
在正態分佈假設下,絕大多數標準化值通常位於 範圍內。
第二種方法使用最小最大比例縮放來將所有屬性映射到範圍 。令 和 表示屬性 的最小值和最大值。那麼,第 個記錄 的第 個屬性值 可以如下縮放:
當最大值和最小值由於數據收集中的某些錯誤而導致極值異常值時,此方法無效。例如,考慮年齡屬性,其中數據收集中的錯誤導致將附加的零附加到年齡,導致年齡值爲800歲而不是80歲。在這種情況下,沿着年齡屬性的大部分縮放數據將會在 的範圍內,因此可以不強調該屬性。標準化對於這種情況更加魯棒。
數據縮減的目標是更緊湊地表示它。當數據量較小時,應用複雜且計算量大的算法要容易得多。數據的減少可以根據行數(記錄)或以列數(維度)來表示。數據減少確實會導致一些信息的丟失。使用更復雜的算法有時可以彌補數據減少導致的信息損失。在各種應用中使用不同類型的數據縮減:
上述各方面將在本節的不同部分進行討論。
抽樣的主要優點是它簡單,直觀並且相對容易實施。使用的採樣類型可能隨手邊的應用而變化。
在整個數據已經可用時對數據進行採樣要簡單得多,因此基礎數據點的數量預先知道。在無偏抽樣方法中,選擇並保留數據點的預定義分數 用於分析。這是非常簡單的實現,並且可以通過兩種不同的方式實現,取決於是否使用替換。
在從具有 個記錄的數據組 中取樣而沒有替換的情況下,總共 個記錄是從數據中隨機挑選的。因此,樣本中不包含重複項,除非原始數據集 也包含重複項。在用具有 個記錄的數據集 進行替換的採樣中,對記錄進行順序且獨立於整個數據集 的採樣,總共 倍。因此,重複是可能的,因爲相同的記錄可能被包括在順序選擇的樣本中。通常,大多數應用程序不使用替換,因爲不必要的重複對於某些數據挖掘應用程序(如異常值檢測)可能造成麻煩。其他一些特殊的採樣形式如下:
有偏抽樣:在有偏的抽樣中,由於對分析的重要性,故意強調數據的某些部分。一個典型的例子是時間衰減偏差,其中更新的記錄有更大的機會被納入樣本,而陳舊的記錄被納入的可能性較低。在指數衰減偏差中,對 時間單位前產生的數據記錄 進行採樣的概率 與由衰變參數 調節的指數衰減函數值成比例:
這裏 是自然對數的基數。通過使用不同的 值,可以適當調節時間衰減的影響。
分層抽樣:在一些數據集中,數據的重要部分可能由於其稀缺性而無法充分體現。因此,分層樣本首先將數據劃分爲一組所需的層,然後根據應用特定的方式基於預定義的比例從這些層中的每一層獨立採樣。
例如,考慮一項衡量人口中不同個人生活方式的經濟多樣性的調查。因爲其相對稀缺,即使是100萬參與者的樣本也不會採樣到億萬富翁。然而,分層樣本(按收入)將獨立地從每個收入組中取樣預定義的一部分參與者,以確保分析具有更好的魯棒性。
許多其他形式的有偏抽樣是可能的。例如,在密度有偏抽樣中,較高密度區域中的點的權重較小,以確保樣本中稀有區域具有更高的代表性。
一個特別有趣的採樣形式是數據流的水塘採樣。在水塘採樣中,從數據流中動態維護 個點的樣本。回想一下,流的體積非常大,因此無法將其存儲在磁盤上進行採樣。因此,對於流中的每個傳入數據點,必須使用一組有效實現的操作來維護樣本。
在靜態情況下,樣本中包含數據點的概率爲 ,其中 爲樣本量, 爲「數據集」中的點數。在這種情況下,「數據集」不是靜態的,不能存儲在磁盤上。此外, 的值隨着更多點的到達而不斷增加,並且之前的數據點(樣本外部)已經被丟棄。因此,採樣方法在任何特定時刻都不完全瞭解流的以前歷史。換句話說,對於流中的每個輸入數據點,我們需要動態地做出兩個簡單的准入控制決策:
幸運的是,設計數據流中的水塘採樣算法相對簡單[498]。對於 大小的儲存器,流中的前 個數據點用於初始化儲層。隨後,對於第 個輸入流數據點,應用以下兩個准入控制決策:
可以證明,上述規則保留了來自數據流的無偏儲存樣本。
引理2.4.1 在 個流點到達後,任何流點包含在儲層中的概率是相同的,並且等於 。
證明:這個結果很容易通過歸納顯示。在初始化前 個數據點時,定理是非常正確的。讓我們(歸納地)假設在 個數據點被接收後它也是如此,因此每個點包含在儲層中的概率爲 。到達點包含在流中的概率是 ,因此引理對於到達的數據點是成立的。它仍然需要證明數據流中剩餘點的結果。對於一個輸入數據點可能會出現兩個不相交的情況事件,並且一個點被包含在儲層中的最終概率是這兩種情況的總和:
傳入的數據點未插入儲存器。這個概率是 。 由於歸納假設中包含在水塘中的任何點的原始概率爲 ,因此一個點包含在儲層中和情況1事件中的總體概率是二者的乘積 。
傳入的數據點被插入到儲存器中。情況2的概率等於傳入數據點的插入概率 。隨後,現有儲層點以概率 保留,因爲其中只有一個被剔除。因爲歸納假設意味着數據流中的任何早期點最初都以概率 出現在儲層中,這意味着給定了一個點包含在儲層和情況2事件中的概率爲上述三種概率的乘積 :
因此,在第 個數據點到達之後,流點保留在儲層中的總概率由 和 的和給出。可以證明這等於 。
有可能將水塘採樣擴展到數據流中存在時間偏差的情況。需要指出的是,指數偏差的情況已在[35]中得到解決。
數據預處理的第二種方法是特徵子集選擇。有些功能在已知不相關時可以丟棄。哪些功能是相關的?顯然,這個決定取決於手頭的應用。有兩種主要類型的特徵選擇:
無監督特徵選擇:這對應於從數據中去除嘈雜和冗餘的屬性。無監督的特徵選擇最好根據其對集羣應用程序的影響來定義,儘管適用範圍更廣。如果不使用聚類問題作爲合適的上下文,則很難全面描述這些特徵選擇方法。因此,無監督特徵選擇方法的討論推遲到第6章數據聚類部分。
監督特徵選擇:這種類型的特徵選擇與數據分類問題相關。在這種情況下,只有可以有效預測類屬性的功能是最相關的。這些特徵選擇方法通常與用於分類的分析方法緊密結合。詳細的討論推遲到第10章數據分類部分。
特徵選擇是數據挖掘過程的重要組成部分,因爲它決定了輸入數據的質量。
在實際數據集中,不同屬性之間存在相當多的相關性。在某些情況下,屬性之間的硬性約束或規則可能會以其他方式唯一地定義某些屬性。例如,個人的出生日期(定量表示)與他或她的年齡完全相關。在大多數情況下,相關性可能不盡相同,但是不同特徵之間仍然存在顯著的相關性。不幸的是,真實的數據集包含許多這樣的冗餘,在數據創建的初始階段,這些冗餘已經逃脫了分析人員的注意。這些相關性和約束對應於隱式冗餘,因爲它們意味着可以使用維度的某些子集的知識來預測其他維度的值。例如,考慮圖2.2所示的三維數據集。在這種情況下,如果軸旋轉到圖中所示的方向,則新變換後的特徵值中的相關性和冗餘性將被移除。作爲這種冗餘移除的結果,整個數據可以(近似)沿着一維線表示。因此,此三維數據集的固有維數爲1。其他兩個軸對應於低變量維數。如果數據在圖2.2所示的新軸系中表示爲座標,那麼沿這些低方差維的座標值變化不大。因此,在軸系旋轉之後,這些尺寸可以被移除而沒有太多的信息損失。
一個自然的問題就是如何以自動的方式確定如圖2.2所示的相關消除軸系統。實現這一目標的兩種自然方法是主成分分析(PCA)和奇異值分解(SVD)。這兩種方法雖然在定義層面上不完全相同,但是密切相關。儘管主成分分析的概念在直觀上更容易理解,但SVD是一個更爲通用的框架,可用於執行PCA作爲特例。
通常在從每個數據點減去數據集的平均值之後應用PCA。但是,只要數據的平均值被單獨存儲,也可以不使用平均中心來使用它。該操作被稱爲平均居中,並且其導致以原點爲中心的數據集。PCA的目標是將數據旋轉到一個軸系統,在這個軸系統中,在少量維度中捕獲最大變異量。從圖2.2的例子可以直觀地看出,這樣一個軸系統受到屬性之間的相關性的影響。我們將在下面展示一個重要的觀察結果,即一個數據集沿特定方向的方差可以直接用其協方差矩陣表示。
設 是 數據矩陣 的 對稱協方差矩陣。因此, 的 條目 表示數據矩陣 的第 列和第 列(維度)之間的協方差。令 表示沿第 維的平均值。具體而言,如果 是第 條記錄的第 維,則協方差條目 的值如下所示:
令 是代表沿着不同維度的均值的 維行向量。然後,前面提到的 計算公式2.6對於不同的 和 值可以用 矩陣形式緊湊地表示如下:
請注意,矩陣 的 條對角線條目對應於 個方差。協方差矩陣 是半正定的,因爲可以證明,對於任何 維列向量 , 的值等於 上的數據集 的一維投影 的方差。
事實上,PCA的目標是相繼確定正交矢量 使 最大化。如何確定這樣的方向? 因爲協方差矩陣是對稱的且是半正定的,所以可以如下對角化:
矩陣 的列包含 的正交特徵向量, 是包含非負特徵值的對角矩陣。 條目是與矩陣 的第 個特徵向量(或列)相對應的特徵值。這些特徵向量表示沿着單位方向 最大化方差 的前述優化模型的連續正交解。
這種對角化的一個有趣特性是特徵向量和特徵值都具有根據數據分佈的幾何解釋。具體來說,如果數據表示的軸系被旋轉到 列中的特徵向量的正交集,則可以表明新變換的特徵值的所有 個協方差都是零。換句話說,最大的方差保存方向也是相關去除方向。此外,特徵值表示沿着相應特徵向量的數據的方差。實際上,對角矩陣 是軸旋轉後的新的協方差矩陣。因此,具有大特徵值的特徵向量保持較大的方差,並且也被稱爲主要分量。由於用於推導該變換的優化公式的性質,僅包含具有最大特徵值的特徵向量的新軸系統被優化以保持固定數量的維度中的最大方差。例如,圖2.2的散點圖說明了各種特徵向量,並且很明顯,具有最大方差的特徵向量是創建方差保持表示所需的全部。只保留少量具有大特徵值的特徵向量通常就足夠了。
在不失一般性的情況下,可以假定 (和對應的對角矩陣 )的列從左到右排列,使得它們對應於遞減的特徵值。然後,變換後的數據矩陣 在軸旋轉到 的標準正交列後的新座標系中,可以用下列線性變換代數計算:
雖然變換後的數據矩陣 的大小也是 ,只有其第一個(最左邊的) 列將顯示值的顯著變化。 的剩餘 列中的每一列將近似等於旋轉軸系統中數據的平均值。對於以均值爲中心的數據,這 列的值幾乎爲0。因此,數據的維數可以減少,並且只有變換後的數據矩陣 的前 列。爲表示目的可能需要保留。此外,可以證實,變換後的數據 的協方差矩陣是通過應用方程式的協方差定義的對角線矩陣 。公式2.7到 (轉換數據)和 (轉換平均值)分別代替 和 。得到的協方差矩陣可以用原始協方差矩陣 表示爲 。用等式中的 代替。公式2.9顯示了等價性,因爲 。換句話說,因爲 是對角的,所以相關性已經從轉換後的數據中移除。
由沿着top- 特徵向量的投影定義的數據集的方差等於 個對應特徵值的總和。在許多應用中,特徵值在前幾個值後顯示急劇下降。例如,圖2.3說明了來自UCI機器學習庫[213]的279維Arrythmia數據集的特徵值的行爲。圖2.3a以增加的順序顯示特徵值的絕對量值,而圖2.3b顯示在top- 特徵值中保留的總變量量。圖2.3b可以通過使用圖2.3a中最小特徵值的累加和來導出。值得注意的是,215個最小特徵值包含的數據總方差不到1%,因此可以在基於相似性的應用程序的結果變化很小的情況下將其刪除。請注意,Arrythmia數據集不是沿着許多維度對的非常強關聯的數據集。然而,由於相關性在多個維度上的累積效應,因此降維是激烈的。
矩陣 的特徵向量可以通過使用[295]中討論的任何數值方法或通過現成的特徵向量求解器來確定。PCA可以擴展到使用稱爲內核技巧的方法來發現非線性嵌入。參考第10章的章節10.6.4.1,簡要介紹了內核PCA。
奇異值分解(SVD)與主成分分析(PCA)密切相關。然而,由於密切的關係,這些不同的方法有時會彼此混淆。在開始討論SVD之前,我們說明它與PCA的關係。SVD比PCA更普遍,因爲它提供了兩套基本矢量而不是一套。SVD提供數據矩陣的行和列的基向量,而PCA僅提供數據矩陣的行的基向量。此外,在某些特殊情況下,SVD爲數據矩陣的行提供了與PCA相同的基礎:
對於其中每個屬性的均值爲0的數據集,SVD提供與PCA相同的基本向量和數據轉換。
PCA的基本向量對平均轉換不變,而SVD的基向量不是。當數據不是以中心爲中心時,SVD和PCA的基向量將不會相同,並且可能得到定性不同的結果。SVD通常在沒有均值集中的情況下應用於稀疏非負數據,例如文檔項矩陣。定義SVD的正式方法是作爲(或分解成)三個矩陣的可分解產物:
這裏, 是具有正交列的 矩陣,其是左奇異向量。 是包含奇異值的 對角矩陣,其總是非負的,並且按照慣例,以非遞增順序排列。此外, 是具有正交列的 矩陣,它們是右奇異向量。請注意,對角矩陣 是矩形的而不是正方形的,但它被稱爲對角線,因爲只有形式 的輸入不爲零。線性代數的一個基本事實是這種分解總是存在的,並且可以在[480]中找到證明。 的非零對角元素的個數等於矩陣 的秩,爲 。此外,由於奇異向量的正交性, 和 都是單位矩陣。 我們提出以下意見:
矩陣 的列也是左奇異向量,是 的正交特徵向量。這是因爲 。因此,作爲 對角矩陣 的對角項的非零奇異值的平方表示 的非零特徵值。
矩陣 的列也是右奇異向量,是 的正交特徵向量。在 對角矩陣 的對角條目中表示的非零奇異值的平方是 的非零特徵值。請注意, 和 的非零特徵值是相同的。矩陣 特別重要,因爲它提供了與PCA中協方差矩陣的特徵向量類似的基向量。
因爲以均值爲中心的數據的協方差矩陣是 (參考等式2.7),並且SVD的右奇異向量是 的特徵向量,所以對於中心平均的數據來說,PCA的特徵向量與SVD的右奇異向量相同。此外,奇異值分解中的平方奇異值是主成分分析特徵值的 倍。這種等價性說明了爲什麼SVD和PCA可以爲以均值爲中心的數據提供相同的轉換。
在不失一般性的情況下,可以假設 的對角條目按降序排列,並且矩陣 和 的列也相應地排序。令 和 分別是通過選擇 和 的前 列獲得的截短的 和 矩陣。 設 是包含最高 個奇異值的 平方矩陣。然後,SVD分解產生原始數據集 的近似 維數據表示:
的列表示用於數據集簡化表示的 維基系統。在這個 維基系統中的降維數據集由 數據集 ,如等式2.10。 行中的每一行都是 包含這個新軸系統中每個變換數據點的 座標。通常, 的值比 和 都小得多。此外,不同於PCA,全 維變換數據矩陣 的最右 列 將近似爲0(而不是數據平均值),數據是否以平均值爲中心。一般來說,PCA將數據投影到穿過數據平均值的低維超平面上,而SVD將數據投射到穿過原點的低維超平面上。PCA儘可能多地捕獲數據的方差(或平均歐幾里德距離),而SVD捕獲儘可能多的關於起點的總歐氏距離的平方歐氏距離。這種近似數據矩陣的方法被稱爲截斷SVD。
在下文中,我們將顯示截斷SVD使關於原點的變換數據點的聚集平方歐幾里得距離(或能量)最大化。令 是 維列向量, 是數據集 在 上的投影。考慮確定單位向量 的問題,使得投影數據的歐幾里德距離 的平方和來自原點的點數最大化。將拉格朗日鬆弛 的梯度設置爲0等價於特徵向量條件 。由於右奇異向量是 的特徵向量,因此它的特徵向量具有 個最大特徵值(平方奇異值)的右奇異向量提供了使經轉換和減少的數據矩陣 中的保存能量最大化的基礎。 。因爲能量是距離原點的平方歐幾里德距離之和,對軸旋轉是不變的,所以能量在 與 中的相同。因此, 奇異值分解是一個最大的能量保留因子分解。這個結果被稱爲Eckart-Young定理。
給出了數據集 沿奇異值向量 的投影 的總保存能量,簡化如下:
因爲能量被定義爲沿着標準正交方向的線性可分的總和,所以沿前 個奇異向量的數據投影中的保存能量等於前 個奇異值的平方和。請注意,數據集 中的總能量總是等於所有非零奇異值的平方和。可以證明,最大化保存的能量與最小化 -階近似的平方誤差(或失去的能量)是相同的。這是因爲保留子空間中的能量和互補(丟棄)子空間中的損失能量之和總是恆定的,這等於原始數據集 中的能量。
純粹從特徵向量分析的角度來看,SVD提供了兩種不同的視角來理解變換和減少的數據。變換後的數據矩陣既可以被視爲 散佈矩陣 的前 個基本特徵向量 上的數據矩陣 的投影 ,也可以直接被看作是縮放特徵向量 的 點積相似度矩陣 。儘管提取 相似度矩陣的特徵向量通常在計算上是昂貴的,但這種方法也推廣到非線性降維方法,其中線性基向量的概念不存在於原始空間中。在這種情況下,爲了提取非線性嵌入(參見表2.3),將點積相似度矩陣替換爲更復雜的相似度矩陣。
SVD比PCA更普遍,並且可用於同時確定數據矩陣的 個基向量的子集及其具有最大能量的轉置。後者可以用於理解 的互補轉換特性。 的正交列提供了用於(近似)變換與 的行對應的「數據點」的 維基礎系統,並且矩陣 包含相應的座標。例如,在用戶項目評分矩陣中,可能希望確定用戶的簡化表示或項目的簡化表示。SVD爲這兩種簡化提供了基礎向量。截斷SVD以 個主要潛在成分表示數據。第 個潛在分量用 和 的第 個基向量表示,它在數據中的相對重要性由第 個奇異值定義。通過將矩陣乘積 分解成 和 的列向量(即 和 的主導基向量),可以獲得 個潛在分量的下列相加和:
這裏 是 的第 列, 是 的第 列,而 是 的第 個對角條目。每個潛在分量 是具有秩1和能量 的 矩陣。這種分解被稱爲頻譜分解。簡化基矢量與SVD矩陣分解的關係如圖2.4所示。
下面舉例說明6×6矩陣的2秩截斷奇異值分解:
請注意,秩2矩陣是原始矩陣的一個很好的近似值。具有最大誤差的條目在最終的近似矩陣中加下劃線。有趣的是,這個條目也與原始數據中剩餘矩陣的結構不一致(爲什麼?)。截斷SVD通常會嘗試糾正不一致的條目,並且此屬性有時會用於降低容易出錯的數據集中的噪聲。
潛在語義分析(LSA)是SVD方法在文本域中的一種應用。在這種情況下,數據矩陣 是包含 個文檔中的歸一化詞頻的 文檔項矩陣,其中 是詞典的大小。沒有使用均值居中,但由於 的稀疏性,結果與PCA大致相同。 的稀疏性意味着 中的大多數項是0,並且每列的平均值遠小於非零值。在這種情況下,可以證明協方差矩陣與 近似成正比。數據集的稀疏性也導致了低固有維數。因此,在文本領域,LSA的維度降低是相當激烈的。例如,能夠在少於300個維度上表示在100,000個維度的詞典上繪製的語料庫並不罕見。
LSA是一個典型的例子,說明某些維度的信息「丟失」實際上能夠改善數據表示的質量。文本域存在兩個與同義詞和多義詞相對應的主要問題。同義詞是指兩個詞可能具有相同的含義。例如,「滑稽」和「歡鬧」這兩個詞的意思大致相同。多義性是指這個事實,即同一個詞可能意味着兩個不同的東西。例如,「捷豹」一詞可以指汽車或貓。通常,一個詞的重要性只能在文檔中的其他詞的上下文中理解。這對於基於相似性的應用程序來說是一個問題,因爲計算與使用詞頻的相似性可能不完全準確。例如,分別包含「滑稽」和「歡鬧」兩個詞的兩個文件在原始表示空間中可能不被認爲足夠相似。上述兩個問題是同義詞和多義詞效應的直接結果。 LSA之後的截斷表示法典型地消除了同義詞和多義詞的噪音影響,因爲(高能量)奇異向量表示數據中的相關方向,並且沿着這些方向隱含地表示該詞的適當上下文。由於使用中的個體差異而產生的變化隱含地編碼在低能量方向上,無論如何都被截斷。據觀察,使用LSA可以實現文本應用的重大質量改進[184,416]。同義詞效應方面的改進通常比多義詞更大。這種SVD的噪聲消除行爲也在一般的多維數據集中得到證明[25]。
雖然PCA和SVD主要用於數據壓縮,但它們在數據挖掘中還有許多其他應用。一些例子如下:
SVD和PCA非常有用,因爲矩陣和線性代數運算在數據挖掘中無處不在。SVD和PCA通過提供方便的分解和基本表示來促進這種矩陣運算。SVD被形象地稱爲「絕對是線性代數的一個高點」。[481]
在這些方法中,降維與類型轉換相結合。 在大多數情況下,數據會從更復雜的類型轉換爲不太複雜的類型,例如多維數據。 因此,這些方法實現了數據縮減和類型可移植性的雙重目的。 本節將研究兩種這樣的轉換方法:
時間序列到多維:使用了許多方法,例如離散傅里葉變換和離散小波變換。 雖然這些方法也可以看作由上下文屬性的各種時間戳定義的軸系統的旋轉,但數據在旋轉後不再依賴於相關性。 因此,可以以類似於多維數據的方式處理結果數據集。 由於其直觀的簡單性,我們將研究Haar小波變換。
加權圖到多維:使用多維縮放和譜方法在多維空間中嵌入加權圖,以便通過多維嵌入來捕獲邊上的相似度或距離值。
本節將討論這些技術中的每一種。
小波是一種衆所周知的技術,可用於多粒度分解並將時間序列數據彙總爲多維表示。 哈爾小波是一種特別流行的小波分解形式,因爲它的直觀性和易於實現。 爲了理解小波分解背後的直覺,將使用傳感器溫度的一個例子。
假設傳感器測量從早晨到晚上12小時的溫度。 假設傳感器以1個樣本/秒的速率採樣溫度。 因此,在一天的過程中,傳感器將收集 個讀數。 顯然,這將不會在很多天和很多傳感器上得到很好的擴展。 一個重要的觀察結果是許多相鄰的傳感器讀數非常相似,導致這種表示非常浪費。 那麼,我們如何能夠在少量空間中大致表示這些數據呢? 我們如何確定讀數發生「變化」的關鍵區域,並存儲這些變化而不是重複值?
假設我們只存儲整天的平均值。 這提供了一些關於溫度的想法,但沒有提供關於當天變化的其他信息。 現在,如果上半年和下半年的平均溫度差也存儲起來,那麼我們可以從這兩個值中得出當天的第一天和第二天的平均值。 這個原則可以遞歸地應用,因爲這一天的前半部分可以分爲第一季和第二季。 因此,利用四個存儲值,我們可以在一天中的四個季度完美重建平均值。 該過程可以遞歸地應用到傳感器讀數的粒度級別。 這些「差異值」用於導出小波係數。 當然,我們還沒有實現任何數據壓縮,因爲這些係數的數量可以顯示爲與原始時間序列的長度完全相等。
重要的是要明白,大的差異值告訴我們更多關於溫度值的變化,而不是小的變化,因此它們對於儲存更重要。 因此,粒度級別的歸一化之後存儲更大的係數值。 這種歸一化,稍後討論,存儲代表更長時間尺度的係數是有偏見的,因爲更長時間的趨勢對於(全局)系列重建更具信息性。
更正式地,小波技術將時間序列分解成一組係數加權小波基向量。 每個係數代表特定時間範圍兩半之間時間序列的粗略變化。 小波基矢量是一個時間序列,以簡單的階躍函數的形式表示這種變化的時間範圍。 小波係數具有不同的階數,取決於分析的時間序列片段的長度,這也代表了分析的粒度。 高階係數代表系列中的大趨勢,因爲它們對應較大的範圍。 低階係數捕獲更多的局部趨勢。 在提供更多符號描述之前,下面分兩步提供時間序列段S的小波分解的簡單遞歸描述:
將S的第一和第二時間半部分之間的行爲屬性值的平均差異的一半報告爲小波係數。
遞歸地將這種方法應用於S的第一和第二時間半部分。
在該過程結束時,執行還原過程,其中保留較大(歸一化)的係數。 該標準化步驟將在後面詳細描述。
在這一點上將提供更正式的和符號密集的描述。 爲了便於討論,假設系列的長度
是2的冪。對於
的每個值,Haar小波分解定義
階的
個係數。這
係數中的每一個都對應於長度爲
的時間序列的連續部分。這
係數的第
個對應於從位置
開始到位置
的序列中的分段。讓我們用
表示這個係數,用
表示相應的時間序列片段。同時,讓我們將
的前半部分的平均值定義爲
,將後半部分的平均值定義爲
。那麼,
的值由
給出。 更正式地說,如果
表示
的平均值,那麼可以遞歸地定義
的值如下:
Haar係數集由1到
的所有係數定義。 此外,爲了完美重建,需要全局平均值
。係數的總數恰好等於原始序列的長度,並且通過丟棄較小(歸一化)的係數來獲得降維。這部分我們會在後面繼續討論。
不同訂單的係數以特定的粒度級別瞭解數據的主要趨勢。例如,係數 是片段 的前半部分大於同一片段後半部分的量的一半。由於較大的 值對應於幾何縮小的段大小,因此可以在不同粒度級別上理解基本趨勢。 Haar小波的這種定義使得通過一系列平均和差分操作非常容易進行計算。表2.2顯示了序列 的小波係數的計算。這種分解在圖2.5中以圖形形式說明。請注意,原始序列中的每個值都可以表示爲 小波係數的總和,前面加上正號或負號。通常,整個分解可以表示爲深度3的樹,其表示整個系列的分層分解。這也被稱爲錯誤樹。在圖2.6中,說明了表2.2中小波分解的誤差樹。樹中的節點包含小波係數的值,但包含系列平均值的特殊超根節點除外。
該系列中小波係數的數量是8,這也是原始系列的長度。 原始序列已複製到圖2.6中錯誤樹的正下方,並可通過在沿着通向該值的路徑上的節點中添加或減去值來重建。 如果我們使用它下面的左分支來達到系列值,則應該添加節點中的每個係數。 否則,應該減去它。 這種自然分解意味着可以通過僅使用與其相關的錯誤樹的部分來重建沿着該系列的整個連續範圍。
與所有降維方法一樣,較小的係數被忽略。 我們將藉助與每個係數相關的基向量的概念來解釋丟棄係數的過程:
小波表示是將長度爲q的原始時間序列分解爲彼此正交的q個「更簡單」時間序列(或小波)的集合的加權和。 這些「更簡單」的時間序列是基本向量,小波係數表示分解中不同基向量的權重。
圖2.5顯示了這些「更簡單」的時間序列及其相應的係數。小波係數(和基向量)的數量等於系列q的長度。
代表每個基矢量的時間序列的長度也是q。每個基矢量在連續的時間序列段中具有+1或-1的值,通過差分操作從中得出特定的係數。否則,該值爲0,因爲小波與時間序列中該區域的變化無關。基矢的非零段的前半部分是+1,後半部分是-1。當它被繪製成時間序列時,這給出了小波的形狀,並且還反映了相關時間序列片段中的差異操作。乘以係數的基向量具有建立加權時間序列的作用,其中第一半和第二半之間的差異反映了原始時間序列中相應段之間的平均差異。因此,通過在錯誤樹中將不同粒度級別的所有這些加權小波相加,就可以重建原始序列。圖2.5中的基向量列表是以下矩陣的行:
請注意,任何一對基矢量的點積是0,因此這些系列彼此正交。 最詳細的係數只有一個+1和一個-1,而最粗略的係數有四個+1和-1個條目。 此外,需要使用向量 來表示系列平均值。
對於時間序列
,令
是相應的基本向量。那麼,如果
是基向量
的小波係數,時間序列
可以表示如下:
圖2.5中表示的係數是未標準化的,因爲基向量沒有單位標準化。雖然 是圖2.5中的非標準化值,但值 代表歸一化的係數。 的值對於不同次序的係數是不同的,在這個特例中等於 , 或 。例如,在圖2.5中,最大層次的非歸一化係數是-0.25,而相應的歸一化值是 。歸一化之後,基向量