⑴ 應用層次聚類幫助老師實施差異化教學
假設你是一個班主任,拿到學生的入學成績,剛接觸學生,對學生不是很了解,那麼我們如何對學生有效的分組幫助他們快速的成長,怎麼分組開展個性化教學呢?
傳統簡單的辦法,我們習慣根據考試成績來分組,但是每個學生不同學科的成績差異很大,數學好的英語可能很差,我們常說物以類聚,人以群分,有相同學習目標的人放在一起容易形成共鳴,學習積極性也會高很多,因此我們希望能夠幫助老師把學生合理的分組,這個問題事先我們並不知道學生屬於哪個組,也不知道具體需要分成幾個組,不大適合使用K均值來實現,我們應用層次聚類幫助老師實施差異化教學分組。
便於說明演算法的工作原理,我們採集了12個人兩門課程的入學成績數據。
在工作面板上拖動一個數據表組件(Data Table)連接文件組件(File)可以查看數據表格。
層次聚類試圖在不同層次對數據集進行劃分,從而形成樹形的聚類結構。數據集劃分可採用"自底向上"的聚合策略,也可採用"自頂向下"的分拆策略。
計算兩個組合數據點間距離的方法有三種,分別為Single Linkage,Complete Linkage和Average Linkage。在開始計算之前,我們先來介紹下這三種計算方法以及各自的優缺點。
Single Linkage
Single Linkage的計算方法是將兩個組合數據點中距離最近的兩個數據點間的距離作為這兩個組合數據點的距離。這種方法容易受到極端值的影響。兩個很相似的組合數據點可能由於其中的某個極端的數據點距離較近而組合在一起。
Complete Linkage
Complete Linkage的計算方法與Single Linkage相反,將兩個組合數據點中距離最遠的兩個數據點間的距離作為這兩個組合數據點的距離。Complete Linkage的問題也與Single Linkage相反,兩個不相似的組合數據點可能由於其中的極端值距離較遠而無法組合在一起。
Average Linkage
Average Linkage的計算方法是計算兩個組合數據點中的每個數據點與其他所有數據點的距離。將所有距離的均值作為兩個組合數據點間的距離。這種方法計算量比較大,但結果比前兩種方法更合理。
如圖所示,我們將全部12個同學的成績用散點圖繪制,根據常識,我們將樣本距離近的歸為一類,直觀的,我們將這12個樣本分為4類比較合理,分別表示英語和數學成績都正常發展的,英語偏科的,數學偏科的以及英語和數學發展都相對落後的。圖中用四個不同顏色的區域表示這個類同學。
為達到分類的目的,首先應用距離組件(Distances)計算樣本對之間的距離,簡單地,我們選擇歐式距離,也就是平時我們說的平面上兩個點之間的直線距離。
那麼層次 聚類怎麼工作的呢?首先我們把每一個點看成是一個類,從散點圖上我們可以看出李瑞和洪海之間的距離最近,因此我們首先把這兩個點(類)歸為一類,重復這個過程,每次合並兩個類,直到整個集合都被歸為一個類,層次聚類的過程如圖所示,最後我們選擇一個合適的層數來決定具體我們要劃分為多少個類。
最後我們藉助箱線圖來分析分類的結果。
不同於分類問題,聚類樣本沒有已知的標簽。類似於學生的分組,沒有一個具體的標准去評判分組的好壞,要根據具體應用去判斷最終的聚類結果的價值。
⑵ 對於異常值的檢測
離群點,是一個數據對象,它顯著不同於其他數據對象,與其他數據分布有較為顯著的不同。有時也稱非離群點為「正常數據」,離群點為「異常數據」。
離群點跟雜訊數據不一樣,雜訊是被觀測變數的隨機誤差或方差。一般而言,雜訊在數據分析(包括離群點分析)中不是令人感興趣的,需要在數據預處理中剔除的,減少對後續模型預估的影響,增加精度。
離群點檢測是有意義的,因為懷疑產生它們的分布不同於產生其他數據的分布。因此,在離群點檢測時,重要的是搞清楚是哪種外力產生的離群點。
常見的異常成因:
通常,在其餘數據上做各種假設,並且證明檢測到的離群點顯著違反了這些假設。如統計學中的假設檢驗,基於小概率原理,對原假設進行判斷。一般檢測離群點,是人工進行篩選,剔除不可信的數據,例如對於房屋數據,面積上萬,卧室數量過百等情況。而在面對大量的數據時,人工方法耗時耗力,因此,才有如下的方法進行離群點檢測。
統計學方法是基於模型的方法,即為數據創建一個模型,並且根據對象擬合模型的情況來評估它們。大部分用於離群點檢測的統計學方法都是構建一個概率分布模型,並考慮對象有多大可能符合該模型。
離群點的概率定義:離群點是一個對象,關於數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什麼分布,如果估計錯誤就造成了重尾分布。
a. 參數法:
當數據服從正太分布的假設時在正態分布的假定下,u±3σ區域包含99.7%的數據,u±2σ包含95.4%的數據,u±1σ包含68.3%的數據。其區域外的數據視為離群點。
當數據是非正態分布時,可以使用切比雪夫不等式,它對任何分布形狀的數據都適用。根據 切比雪夫不等式 ,至少有(1-1/k 2 )的數據落在±k個標准差之內。所以,有以下結論:
計算得到:通過繪制箱線圖可以直觀地找到離群點,或者通過計算四分位數極差(IQR)定義為Q3-Q1。比Q1小1.5倍的IQR或者比Q3大1.5倍的IQR的任何對象都視為離群點,因為Q1-1.5IQR和Q3+1.5IQR之間的區域包含了99.3%的對象。
涉及兩個或多個屬性或變數的數據稱為多元數據。核心思想是把多元離群點檢測任務轉換成一元離群點檢測問題。
- 卡方統計量的多元離群點檢測 :正態分布的假定下,卡方統計量也可以用來捕獲多元離群點,對象 ,卡方統計量是: , 是 在第i維上的值, 是所有對象在第i維上的均值,而n是維度。如果對象的卡方統計量很大,則該對象是離群點。
b. 非參數法:
構造直方圖
為了構造一個好的直方圖,用戶必須指定直方圖的類型和其他參數(箱數、等寬or等深)。最簡單的方法是,如果該對象落入直方圖的一個箱中,則該對象被看做正常的,否則被認為是離群點。也可以使用直方圖賦予每個對象一個離群點得分,比如對象的離群點得分為該對象落入的箱的容積的倒數。但這個方法很難選擇一個較好的直方圖參數。
注意 :
傳統的觀點都認為孤立點是一個單獨的點,然而很多的現實情況是異常事件具有一定的時間和空間的局部性,這種局部性會產生一個小的簇.這時候離群點(孤立點)實際上是一個小簇(圖下圖的C1和C3)。
一個對象是異常的,如果它遠離大部分點。這種方法比統計學方法更一般、更容易使用,因為確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。不依賴統計檢驗,將基於鄰近度的離群點看作是那些沒有「足夠多「鄰居的對象。這里的鄰居是用 鄰近度(距離) 來定義的。最常用的距離是絕對距離(曼哈頓)和歐氏距離等等。
一個對象的離群點得分由到它的k-最近鄰的距離給定。離群點得分對k的取值高度敏感。如果k太小,則少量的鄰近離群點可能導致離群點較少;如果K太大,則點數少於k的簇中所有的對象可能都成了離群點,導致離群點過多。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。
從基於密度的觀點來說,離群點是在低密度區域中的對象。一個對象的離群點得分是該對象周圍密度的逆。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。
定義密度
一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數 。如果該距離小,則密度高,反之亦然。
另一種密度定義是使用DBSCAN聚類演算法使用的密度定義,即一個對象周圍的密度等於該對象指定距離d內對象的個數。 需要小心的選擇d,如果d太小,則許多正常點可能具有低密度,從而離群點較多。如果d太大,則許多離群點可能具有與正常點類似的密度(和離群點得分)無法區分。 使用任何密度定義檢測離群點具有與基於鄰近度的離群點方案類似的特點和局限性。特殊地,當數據包含不同密度的區域時,它們不能正確的識別離群點。
定義相對密度
為了正確的識別這種數據集中的離群點,我們需要與對象鄰域相關的密度概念,也就是定義相對密度。常見的有兩種方法:
(1)使用基於SNN密度的聚類演算法使用的方法;
(2)用點x的密度與它的最近鄰y的平均密度之比作為相對密度。使用相對密度的離群點檢測( 局部離群點要素LOF技術 ):
一種利用聚類檢測離群點的方法是丟棄遠離其他簇的小簇。這個方法可以和其他任何聚類技術一起使用,但是需要最小簇大小和小簇與其他簇之間距離的閾值。這種方案對簇個數的選擇高度敏感。使用這個方案很難將離群點得分附加到對象上。
一種更系統的方法,首先聚類所有的點,對某個待測點評估它屬於某一簇的程度。(基於原型的聚類可用離中心點的距離來評估,對具有目標函數(例如kmeans法時的簇的誤差平方和)的聚類技術,該得分反映刪除對象後目標函數的改進),如果刪去此點能顯著地改善此項目標函數,則可以將該點定位為孤立點。
基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇。離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。為了處理該問題,可以使用如下方法:
對象是否被認為是離群點可能依賴於簇的個數(如k很大時的雜訊簇)。該問題也沒有簡單的答案。一種策略是對於不同的簇個數重復該分析。另一種方法是找出大量小簇,其想法是(1)較小的簇傾向於更加凝聚,(2)如果存在大量小簇時一個對象是離群點,則它多半是一個真正的離群點。不利的一面是一組離群點可能形成小簇而逃避檢測。
根據已有訓練集檢測新樣本是否異常
異常檢測根據原始數據集的不同可分為兩類:
novelty detection: 訓練集中沒有異常樣本
outlier detection: 訓練集中有異常樣本
異常樣本:
數量少,比較分散
novelty detection和outlier detection的區別:
Sklearn異常檢測模型一覽
5.1 奇異點檢測(Novelty Detection)
奇異點檢測,就是判斷待測樣本到底是不是在原來數據的概率分布內。概率學上認為,所有的數據都有它的隱藏的分布模式,這種分布模式可以由概率模型來具象化。
5.1 離群點檢測(Outlier Detection)
不同與奇異點檢測是,現在我們沒有一個干凈的訓練集(訓練集中也有雜訊樣本)。下面介紹的三種離群點檢測演算法其實也都可以用於奇異點檢測。
如果我們認為,可達密度小的目標樣本點就是異常點,這樣未嘗不可。但是,LOF演算法更進一步。
LOF可以用來判斷經緯度的異常。
使用python進行異常值(outlier)檢測實戰:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope
文章引用: 數據挖掘:數據清洗——異常值處理