一、無監督學習之聚類算法
(一)聚類算法:Clustering
監督學習:使用标注(labeled)的訓練樣本(x,y) ,來訓練一個從x映射到y的函數。
非監督學習:無标簽資料。
訓練集隻有𝑥(1),𝑥(2).....一直到𝑥(𝑚)。但沒有任何标簽𝑦,也即沒有輸出值。 将這些資料輸入到算法,由算法來找出這些資料的内在結構(規律)。
如上圖所示,資料看起來可分成兩個分開的點集(稱為簇),一個能夠圈出這些點集的算法(對資料進行分組),就被稱為聚類算法。此外,還有其他類型的非監督學習算法,可以找到其他類型的結構或模式,而不隻是簇。
Ø 應用場景舉例:
1. 市場分割:在資料庫中存儲了許多客戶資訊,将他們分成不同的客戶群,以對不同類型的客戶分别銷售産品或服務。
2. 社交網絡分析:比如你經常跟哪些人聯系,而這些人又經常給哪些人發郵件,跟那些人聯系,由此找到關系密切的人群。
3. 使用聚類算法來更好的組織、管理資料中心。識别哪些計算機經常協作工作。用于重新配置設定資源、布局網絡,優化資料中心。
4. 利用聚類算法分析星系的構成。
(二)聚類算法:K-Means(K-均值)
K-Means是應用比較廣泛的聚類算法:将未标記的資料集中的資料,分門别類到不同的組(共K組)。就某一組資料,使用該組資料的質心,來表示該組。
下面舉例說明。
如上圖所示,K-Means算法原理及步驟如下:
1、随機初始化K個聚類中心。
2、将資料集中的每個資料關聯到其中一個類,方法:分别計算出每個資料與距離每個中心點的距離(相似度),将其與距離最近的中心點關聯起來。與同一個中心點關聯的所有資料歸成同一類。
3、分别計算每組資料(共K組)的質心,使用新計算出的K個質心為新的聚類中心。
4、重複步驟2-3 直至中心點不再變化。
(三)K-Means代價函數
K-Mean聚類算法本質:最小化所有的資料點與其所關聯的聚類中心點之間的距離之和。故代價函數:
其中𝜇𝑐(𝑖)代表與𝑥(𝑖)最近的聚類中心點。目标便是找出使得代價函數最小的 𝑐(1),𝑐(2),...,𝑐(𝑚)和𝜇1,𝜇2,...,𝜇𝑘。
回顧之前的内容,這裡存在兩大步驟。第一大步驟是用于減小𝑐(𝑖)引起的代價,即,将資料點歸類到距離其最近(相似度最高)的聚類中心。而第二大步驟則是用于減小𝜇𝑖引起的代價,即計算出各組的質心,因為各組的質心是距離該組所有資料總距離最小的點。疊代的過程一定是每次疊代都會減小代價函數,不然便是出現了錯誤。
局部最優問題解法(K小于10時有效):多次運作K-Means算法,每次都重新随機初始化,分别計算出代價函數,選擇代價函數最小的作為最終結果。
(四)K-Means:其他内容
種類的數量K如何標明:
1. 人工選擇:依據所解決問題的需要,人為標明。
2. 肘部法則:使代價函數下降劇烈的K,舉例如下。
如上圖所示,随着K值增加,代價函數的值不斷下降,當到K=3時,代價函數值依然下降迅速,而此後,代價函數下降趨于平緩。由此,可以選擇K=3。
二、無監督學習之降維
(一)降維:Dimensionality Reduction
降維可把多元度特征降到任何想要的次元,如将1000維的特征降至100維。尤其是處理海量特征,又無法清晰取舍各特征時,降維不失為一種很好的方法。
l 适用場景:
1. 減少特征數量,節省算力:通過一些資料處理手段将特征歸并。
2. 資料可視化:高維資料難以可視化表示。多元到二維、三維,利于可視化。
l 原理思考:
降維的原理是并不直接舍棄各特征值,而是對各特征“一視同仁”。在降維後,相關特征值的某些細節被舍棄了。優點是不需要使用者深入了解各特征的含義,但同時這也是最大的缺點,某些關鍵特征的細節資訊,有可能也在降維過程中被舍棄,進而導緻無法訓練出很好的模型。故需慎重使用降維,隻在有必要的時候(算法運作太慢或耗費太多資源)才考慮采用降維。
l 舉例
1.二維→一維(投影到直線)
如上所示,現在有一個二維的資料,x1與x2各代表一個特征,想把這兩個特征降成一個特征。取一條直線z,x1與x2在該直線z上會有一個對應的映射點,就可以實作從x1和x2的兩個次元變成一個次元z。如果x1與x2有m個資料樣本,投影到直線z上也有m個資料樣本。
2.三維→二維:三維向量投射到一個二維平面上,降至二維的特征向量
如上圖所示,三維是一個立體空間,每個資料由x1,x2,x3組成。我們建構一個平面空間,将三維上的每個點投影到二維平面上,然後用z1與z2來表示每個點,進而實作三維降到二維。
(二)主成因分析PCA:Principal Component Analysis
PCA:把所有的資料都投射到一個方向向量(Vector direction) ,并且投射的平均均方誤差能盡可能地小。方向向量是一個經過原點的向量,而投射誤差是特征向量向該方向向量作垂線的長度。将𝑛維資料降至𝑘維的問題:找到向量𝑢(1),𝑢(2),...,𝑢(𝑘)使得總的投射誤差最小。
步驟:
Step1:特征縮放。計算出各特征的均值,然後令𝑥= 𝑥−𝜇。如果各特 征值的跨度在不同數量級上,還需将除以标準差s(即該特征值的範圍:max-min)。
Step2:計算協方差矩陣(covariance matrix)𝛴。
Step3:計算協方差矩陣𝛴的特征向量(eigenvectors)。在Octave 裡可以利用奇異值分解(singular value decomposition)來求解,[U, S, V]= svd(sigma)
上式中的𝑈是一個與資料之間最小投射誤差的方向向量構成的n*n矩陣。如果希望将資料從𝑛維降至𝑘維,隻需要從𝑈中選取前𝑘個向量,獲得一個𝑛× 𝑘次元的矩陣𝑈𝑟𝑒𝑑𝑢𝑐𝑒,然後計算獲得所需的新特征向量: 𝑧(𝑖)= 𝑈𝑇reduce ∗𝑥(𝑖)
𝑧(𝑖)→(n*k矩陣)T* (n*1矩陣) → k*1矩陣
三、無監督學習之異常檢測
(一)異常檢測:Anomaly Detection
定義:給定正常的資料集 𝑥(1), 𝑥(2), . . , 𝑥(𝑚),建構一個模型,預測新的資料 𝑥𝑡𝑒𝑠𝑡是不是異常的,即這個測試資料同屬于該組資料的幾率𝑝(𝑥)是多少。
如圖,在藍色圈内的資料屬于該組資料的可能性較高,而離圈很遠的資料,其屬于該組資料的可能性就越低。這種方法稱為密度估計,表達如下:
Ø 應用場景
1)欺詐檢測,行為分析:例如線上采集而來的資料,特征向量中可能會包含如:使用者多久登入一次,通路過的頁面,在論壇的發帖數量,甚至是打字速度等。根據這些特征建構一個模型,用這個模型來識别那些不符合該模式的使用者。
2)異常值檢測,系統監控:如用于資料中心、應用系統,采集記憶體、磁盤、CPU、網絡等的負載及資源使用率。根據這些特征可以建構一個模型,用來判斷某些計算機/系統是不是有可能出錯了。
(二)異常檢測算法:高斯分布/正态分布
正态分布,也稱為高斯分布。
舉例,通常情況下,某個地區的人群身高符合正态分布,所有人的身高值基本在一個固定範圍之中。工業生産中也有正态分布的現象,如生産出來的産品品質,這些産品的尺寸、規格均在一定的範圍内,呈現為正态分布。而範圍外的,則為異常資料。
假設:通常認為異常檢測場景的已有樣本 𝑥符合高斯分布𝑥∼𝑁(𝜇,𝜎²),其機率密度函數為:
可使用已有的資料來計算均值𝜇和方差𝜎²:
問題進一步變成:對于給定的資料集 𝑥(1), 𝑥(2), . . . , 𝑥(𝑚),計算出每一個特征(共n個)的𝜇和 𝜎²。
給定新的資料,即可根據模型計算出 𝑝(𝑥)
(三)異常檢測算法:特征處理
思考:異常檢測假設特征符合高斯分布,如果資料分布不是高斯分布呢?
非高斯分布情況下異常檢測算法也能工作,但是最好還是将資料轉換成高斯分布,例如通過對數函數等: 𝑥= 𝑙𝑜𝑔(𝑥+ 𝑐),其中 𝑐為非負常數;或者 𝑥= 𝑥𝑐,𝑐為0-1 之間的一個分數等方法。
把特征的分布轉為高斯分布
誤差糾偏:
一個常見問題:異常的資料可能也會有較高的𝑝(𝑥)值,因而被算法認為是正常的。
這種情況下我們可以分析那些被算法錯誤預測為正常的資料,觀察能否找出一些問題。如可以增加一些新的特征,增加這些新特征後獲得的新算法能夠幫助我們更好地進行異常檢測。
也可以将一些相關的特征進行組合,來構造新的、更好的特征(異常資料在該組合特征下的值異常地大或小)。例如,在檢測資料中心計算機狀況的例子中,可以用CPU負載與網絡帶寬的比例作為一個新特征,通常網絡帶寬高,則說明業務流量大,CPU負載也會變高。異常情況下,如果該值異常地大或小,便很有可能意味着該伺服器可能出問題了。
(四)異常檢測模型訓練及評估
Ø 思考
異常檢測算法是一個非監督學習算法,也就無法像監督學習那樣,根據預測結果和樣本中的變量 𝑦值來建構損失函數,并以此評測算法的有效性了,需要另一種方法來檢驗算法是否有效。
Ø 方法
從已有的資料集入手,從其中選擇一部分正常資料建構訓練集,然後将剩下的正常資料和異常資料混合的資料構成交叉檢驗集和測試集。
例如,有10000台正常引擎資料,有20台異常引擎資料,可以這樣配置設定資料:
1)6000台正常引擎的資料作為訓練集
2)2000台正常引擎和10台異常引擎的資料作為交叉檢驗集
3)2000台正常引擎和10台異常引擎的資料作為測試集
具體的評價方法如下:
1)根據測試集資料,計算出各特征的平均值和方差,建構出𝑝(𝑥)函數。
2)針對交叉檢驗集,嘗試使用不同的𝜀值作為閥值,并預測資料是否異常,根據 F1值或者查準率與查全率的比例來選擇合适的 𝜀。
3)標明 𝜀後,針對測試集進行預測,計算異常檢驗系統的𝐹1值,或者查準率與查全率之比。由F1值來評判算法是否有效。
(五)異常檢測vs 監督學習
思考:異常檢測與監督學習非常相似,将異常檢測中的正向及負向樣本,補充y值,不就可以建構出完整标注的資料集了麼? 那何時使用異常檢測,合适使用監督學習呢?如下一些方法供參考:
Ø 選用異常檢測的原則:
1)異常樣本的數量極少,甚至有時候是0;
2)異常的種類及情況很多,并且很難确定,難以預知,有太多沒見過的不同的異常類型。
那麼對于以上這類問題,通常應該使用異常檢測算法。
四、AI實踐課:AutoML
(一)“大資料公司”的困惑
在這個資料大爆炸的時代,許多公司收集了海量資料,但苦于沒有合适的資料加工方法,海量資料不僅沒為公司創造出價值,反而成為成本負擔。
大資料進化之路:成本中心→ 價值創造、價值創新中心
(二)人人皆可建構屬于自己的AI:AutoML & AutoDL
人工智能中目前依然涉及大量人工:
資料準備:資料收集、資料清洗、資料标注。
資料加工:特征提取、模型選擇、參數調節、模型評估等。
是以,有人提出,能否讓這些人工部分也盡可能實作自動化,尤其是需要大量專家經驗的資料加工部分。在這個趨勢下,自動化機器學習/深度學習應運而生:AutoML、AutoDL。
AutoML終極目标:
使用者隻需要準備好資料,其餘的請交給AutoML。
AI大衆化、AI普惠、人人皆可用AI來創造價值。
關于機器學習、深度學習的資料推薦:建議大家可以把吳恩達老師的機器學習和深度學習兩大課程細細學一遍,非常适合于作為入門課程。本次分享中的不少素材也是源自吳恩達老師的課程,希望大家有所收獲,也再次緻謝吳恩達老師。