之前介紹了監(jiān)督學(xué)習(xí)的一些算法:
這篇文章介紹一下無(wú)監(jiān)督學(xué)習(xí)的一些算法:K均值聚類算法飒硅,主成分分析法,以及異常檢測(cè)
K均值算法(K-means)
K均值是用來(lái)解決聚類問(wèn)題的一種算法作谚。先簡(jiǎn)單看一下聚類問(wèn)題三娩,假設(shè)你有一些沒(méi)有標(biāo)簽的數(shù)據(jù),現(xiàn)在你想要將這些數(shù)據(jù)分組妹懒,假設(shè)你想要將這些數(shù)據(jù)分成兩類雀监,如下圖:
K均值聚類算法中的K指的就是你想生成K個(gè)聚類,因此在這個(gè)例子中K=2彬伦。使用K均值聚類算法滔悉,首先,隨機(jī)初始化K個(gè)數(shù)據(jù)點(diǎn)作為聚類中心(Cluster Centroid)单绑,然后回官,對(duì)所有的數(shù)據(jù)進(jìn)行標(biāo)注,對(duì)于每個(gè)數(shù)據(jù)搂橙,它與哪個(gè)聚類中心的距離最近就將其標(biāo)注為哪個(gè)類歉提,這里所說(shuō)的距離的計(jì)算方法是:
即這個(gè)數(shù)據(jù)的所有特征值與聚類中心的相應(yīng)特征值之差的平方求和再開(kāi)根號(hào)
標(biāo)注完每個(gè)數(shù)據(jù)之后,得到這樣的結(jié)果:
接下來(lái)区转,對(duì)每個(gè)聚類苔巨,計(jì)算這個(gè)聚類中的所有數(shù)據(jù)點(diǎn)的均值,然后更新聚類中心废离,將聚類中心移動(dòng)到均值點(diǎn)處。接下來(lái)重復(fù)以上的步驟:
- 對(duì)于每個(gè)數(shù)據(jù)點(diǎn)蜻韭,計(jì)算與其距離最近的聚類中心悼尾,然后為其分配一個(gè)聚類
- 計(jì)算每個(gè)聚類的均值,將聚類中心更新到均值處
最終我們就能得到:
類似于監(jiān)督學(xué)習(xí)中的算法肖方,K均值算法同樣有優(yōu)化目標(biāo)闺魏,其目標(biāo)是最小化數(shù)據(jù)點(diǎn)與對(duì)應(yīng)聚類中心距離的平方之和,優(yōu)化的實(shí)現(xiàn)方法就是每次將聚類中心移動(dòng)到選取數(shù)據(jù)的均值點(diǎn)處(這里省去了數(shù)學(xué)證明)
在隨機(jī)初始化的時(shí)候俯画,我們需要隨機(jī)選擇K個(gè)聚類中心析桥,一種方法就是在給定的數(shù)據(jù)點(diǎn)中隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn),將這K個(gè)數(shù)據(jù)點(diǎn)作為聚類中心
主成分分析法(Principal Component Analysis,PCA)
主成分分析法是用于降維(Dimensionality Reduction)的一種算法泡仗,首先看一下降維問(wèn)題埋虹,降維有很多應(yīng)用,比如:
- 數(shù)據(jù)壓縮:將n維的數(shù)據(jù)降維至m維的數(shù)據(jù)沮焕,要求m遠(yuǎn)小于n吨岭,且降維后的數(shù)據(jù)能夠反映原數(shù)據(jù)的特征
- 數(shù)據(jù)可視化:想要將數(shù)據(jù)繪制在圖像上,需要數(shù)據(jù)是2維或者3維的峦树,因此需要用到降維
解決降維問(wèn)題辣辫,最常用的算法就是主成分分析法,主成分分析法可以將n維的數(shù)據(jù)投影到k維并且要求最小化投影誤差(Projection Error)(即投影前后的點(diǎn)的距離)魁巩,先直觀的通過(guò)一個(gè)例子看一下主成分分析法如何將2維數(shù)據(jù)投影到1維:
上圖給出了一些二維的數(shù)據(jù)急灭,要將其投影到一維并最小化投影誤差,就是要找一條直線谷遂,將這些點(diǎn)投影到直線上葬馋,并且使得投影前后的點(diǎn)的距離(或者說(shuō)這些點(diǎn)到這條投影直線的距離)最小化:
對(duì)于三維的數(shù)據(jù)也是一樣,就是找一個(gè)二維的平面使得投影誤差最小肾扰。從圖中也可以直觀的看出主成分分析法和線性回歸模型的區(qū)別畴嘶,首先就是優(yōu)化目標(biāo)不同,前者優(yōu)化的是點(diǎn)到直線的距離集晚,后者優(yōu)化的是y值之差窗悯;其次是目的不同,前者是降維偷拔,后者是根據(jù)特征值預(yù)測(cè)y的值
接下來(lái)看一下主成分分析法的具體算法:
- 首先需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理蒋院,這個(gè)步驟和監(jiān)督學(xué)習(xí)中使用的均值歸一化處理(Mean Normalization)是一樣的,目的是將所有數(shù)據(jù)處理到差不多相同的范圍:
其中是指第i個(gè)特征參數(shù)下的所有數(shù)據(jù)的平均值莲绰,
指第i個(gè)特征參數(shù)下的數(shù)據(jù)的極差欺旧,或者標(biāo)準(zhǔn)差。
- 接下來(lái)計(jì)算協(xié)方差矩陣(Covariance matrix)
(Sigma)蛤签,計(jì)算方法是:
其中是一個(gè)
的矩陣
- 計(jì)算Sigma的特征向量(Eigenvectors):使用Octave或者M(jìn)ATLAB自帶的函數(shù)
[U,S,V] = svd(Sigma)
辞友,svd
即奇異值分解(Singular Value Decomposition)。我們需要的就是輸出中的U矩陣震肮,U也是一個(gè)的矩陣称龙,我們從這個(gè)矩陣中取前k列的內(nèi)容,得到一個(gè)
大小的矩陣钙蒙,記為
- 最后計(jì)算
,得到的
就是一個(gè)
即k維的矩陣间驮,也就是最終將數(shù)據(jù)從n維降到了k維
那么如何通過(guò)壓縮之后的低維度數(shù)據(jù)重構(gòu)之前的n維數(shù)據(jù)呢躬厌,這里可以用以下方法來(lái)近似還原之前的數(shù)據(jù):
還原之后的數(shù)據(jù)和原始的數(shù)據(jù)有下面的變化(是原來(lái)數(shù)據(jù)的投影):
還有一個(gè)問(wèn)題是如何確定主成分的數(shù)量k,也就是將數(shù)據(jù)從n維壓縮到k維的k值如何確定。在使用[U,S,V] = svd(Sigma)
時(shí)扛施,我們還得到了矩陣鸿捧,這是一個(gè)
的對(duì)角矩陣,記它的對(duì)角線上的元素是
疙渣,那么選取k值的算法就是:k從1開(kāi)始匙奴,不斷增大,直到滿足:
式子右側(cè)的0.01也可以取成0.05等其他值妄荔,代表了平方投影的誤差泼菌。
異常檢測(cè)(Anomaly Detection)
異常檢測(cè)的問(wèn)題就是判斷某個(gè)數(shù)據(jù)在給定的數(shù)據(jù)中是否屬于異常值,比如判斷生產(chǎn)出的產(chǎn)品是否合格啦租,根據(jù)記錄判斷信用卡的支付行為是否是盜刷等等
那么我們的第一感覺(jué)是解決異常檢測(cè)的問(wèn)題也可以用監(jiān)督學(xué)習(xí)的方法來(lái)做哗伯,將數(shù)據(jù)分為正常和異常兩個(gè)類別,標(biāo)記好數(shù)據(jù)集篷角,然后使用監(jiān)督學(xué)習(xí)算法訓(xùn)練一個(gè)二元分類器焊刹,問(wèn)題解決。
但是仔細(xì)想想恳蹲,二元分類在處理異常檢測(cè)問(wèn)題上可能并沒(méi)有想象中的效果虐块。什么是異常,就是除了正常的數(shù)據(jù)以外的都要檢測(cè)為異常嘉蕾,比如在一個(gè)具體例子中贺奠,假設(shè)正常的數(shù)據(jù)就是各種房子,那么除了房子的數(shù)據(jù)都是異常的荆针,可能是車敞嗡,可能是人,可能是書(shū)航背。喉悴。。所以異常所包含的范圍太大了玖媚,根本就不能簡(jiǎn)單的將異常視為一個(gè)類別箕肃,更不可能將異常的所有的數(shù)據(jù)都收集起來(lái)標(biāo)記好。除此之外今魔,還有一個(gè)原因就是在實(shí)際生活中勺像,異常的數(shù)據(jù)很難收集。因此错森,我們不能使用分類算法來(lái)解決異常檢測(cè)問(wèn)題
要了解異常檢測(cè)的算法吟宦,首先需要知道正態(tài)分布(Normal Distribution),又名高斯分布(Gaussian distribution)涩维,如果x服從正態(tài)分布殃姓,那么x的概率密度函數(shù)就是:
記為
異常檢測(cè)的算法就是,先選出特征,假設(shè)你擁有的數(shù)據(jù)集里面已經(jīng)有了
這些例子蜗侈,那么對(duì)每個(gè)特征
篷牌,利用這些例子計(jì)算出這個(gè)特征的正態(tài)分布的參數(shù),計(jì)算方法如下:
接下來(lái)踏幻,當(dāng)你拿到一個(gè)新的例子的時(shí)候枷颊,計(jì)算它的概率
:
如果這個(gè)概率,那么就可以認(rèn)為這個(gè)例子
是異常值该面,比如我們可以取
夭苗,那么當(dāng)
的時(shí)候,就可以認(rèn)為是異常數(shù)據(jù)