EM聚類

原理

“最大似然”,英文是 Maximum Likelihood戴已,Likelihood 代表可能性切平,所以最大似然也就是最大可能性的意思。

最大似然:根據(jù)我們的經(jīng)驗点楼,相同年齡下男性的平均身高比女性的高一些

最大似然估計: 它指的就是一件事情已經(jīng)發(fā)生了扫尖,然后反推更有可能是什么因素造成的。還是用一男一女比較身高為例掠廓,假設有一個人比另一個人高换怖,反推他可能是男性。最大似然估計是一種通過已知結果蟀瞧,估計參數(shù)的方法沉颂。

EM 算法是一種求解最大似然估計的方法,通過觀測樣本悦污,來找出樣本的模型參數(shù)铸屉。

練習

假設我們有 A 和 B 兩枚硬幣,我們做了 5 組實驗切端,每組實驗投擲 10 次抬探,每次只能只有A或者B一枚硬幣。那么我們統(tǒng)計出現(xiàn)每組實驗正面的次數(shù),實驗結果如下:

雖然B出現(xiàn)正面次數(shù)為5的概率比A的小小压,但是也不是0线梗。這時候我們應該考慮進這種可能的情況,那么這時候怠益,第一輪實驗用的A的概率就是: 0.246 / (0.246 + 0.015) = 0.9425仪搔;用B的概率就是1-0.9425 = 0.0575。

有0.9425的概率是硬幣A蜻牢,有0.0575的概率是硬幣B烤咧,不再是非此即彼。這樣我們在估計θAθB時抢呆,就可以用上每一輪實驗的數(shù)據(jù)煮嫌,而不是某幾輪實驗的數(shù)據(jù),顯然這樣會更好一些抱虐。這一步昌阿,我們實際上估計的是用A或者B的一個概率分布,這步就稱作E步恳邀。

以硬幣A為例懦冰, 第一輪的正面次數(shù)為5相當于 5次正面,5次反面

0.9425 * 5 = 4.7125(這是正面)谣沸,0.9425 * 5 = 4.7125(這是反面)

新的θA = 4.22 / (4.22+7.98)=0.35 這樣刷钢,改變了硬幣A和B的估計方法之后,會發(fā)現(xiàn)乳附,新估計的θA會更加接近真實的值内地,因為我們使用了每一輪的數(shù)據(jù),而不是某幾輪的數(shù)據(jù)赋除。 這步中阱缓,我們根據(jù)E步求出了硬幣A和B在每一輪實驗中的一個概率分布,依據(jù)最大似然法則結合所有的數(shù)據(jù)去估計新的θAθB贤重, 被稱作M步

總結

EM算法可以先給無監(jiān)督學習估計一個隱狀態(tài)(即標簽),有了標簽清焕,算法模型就可以轉換成有監(jiān)督學習并蝗,這時就可以用極大似然估計法求解出模型最優(yōu)參數(shù)。其中估計隱狀態(tài)流程應為EM算法的E步秸妥,后面用極大似然估計為M步滚停。

EM 算法相當于一個框架,你可以采用不同的模型來進行聚類粥惧,比如 GMM(高斯混合模型)键畴,或者 HMM(隱馬爾科夫模型)來進行聚類。

  • GMM 是通過概率密度來進行聚類,聚成的類符合高斯分布(正態(tài)分布)起惕。

  • 而 HMM 用到了馬爾可夫過程涡贱,在這個過程中,我們通過狀態(tài)轉移矩陣來計算狀態(tài)轉移的概率惹想。HMM 在自然語言處理和語音識別領域中有廣泛的應用问词。

Sklearn

GaussianMixture(n_components=1, covariance_type='full', max_iter=100)

  • n_components:即高斯混合模型的個數(shù),也就是我們要聚類的個數(shù)嘀粱,默認值為 1激挪。如果你不指定 n_components,最終的聚類結果都會為同一個值锋叨。
  • covariance_type:代表協(xié)方差類型垄分。一個高斯混合模型的分布是由均值向量和協(xié)方差矩陣決定的,所以協(xié)方差的類型也代表了不同的高斯混合模型的特征娃磺。協(xié)方差類型有 4 種取值:
    covariance_type=full薄湿,代表完全協(xié)方差,也就是元素都不為 0豌鸡;
    covariance_type=tied嘿般,代表相同的完全協(xié)方差;
    covariance_type=diag涯冠,代表對角協(xié)方差炉奴,也就是對角不為 0,其余為 0蛇更;
    covariance_type=spherical瞻赶,代表球面協(xié)方差,非對角為 0派任,對角完全相同砸逊,呈現(xiàn)球面的特性。
  • max_iter:代表最大迭代次數(shù)掌逛,EM 算法是由 E 步和 M 步迭代求得最終的模型參數(shù)师逸,這里可以指定最大迭代次數(shù),默認值為 100豆混。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.mixture import GaussianMixture
#from sklearn import datasets
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

# 采用Z-Score規(guī)范化數(shù)據(jù)篓像,保證每個特征維度的數(shù)據(jù)均值為0,方差為1
ss = StandardScaler()
X = ss.fit_transform(X)

#繪制數(shù)據(jù)分布圖
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.legend()
plt.show()
 
# 構造GMM聚類
gmm = GaussianMixture(n_components=3, covariance_type='full')
gmm.fit(X)
# 訓練數(shù)據(jù)
label_pred = gmm.predict(X)
print('聚類結果', '\n', label_pred)  # (150,) [1 1 1 1 1 2 2 2 2 2 0 2 2 2 2 0 2 2 ...]
print('真實類別', '\n', y)

x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
print(x0.shape, x1.shape, x2.shape)  # (62, 4) (50, 4) (38, 4)
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.legend()
plt.show()
from sklearn.metrics import calinski_harabasz_score
print(calinski_harabasz_score(X, label_pred))
# 指標分數(shù)越高皿伺,代表聚類效果越好员辩,也就是相同類中的差異性小,不同類之間的差異性大鸵鸥。當
# 然具體聚類的結果含義奠滑,我們需要人工來分析,也就是當這些數(shù)據(jù)被分成不同的類別之后,具體每個類表代表的含義宋税。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摊崭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弃甥,更是在濱河造成了極大的恐慌爽室,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淆攻,死亡現(xiàn)場離奇詭異阔墩,居然都是意外死亡,警方通過查閱死者的電腦和手機瓶珊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門啸箫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伞芹,你說我怎么就攤上這事忘苛。” “怎么了唱较?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵扎唾,是天一觀的道長。 經(jīng)常有香客問我南缓,道長胸遇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任汉形,我火速辦了婚禮纸镊,結果婚禮上,老公的妹妹穿的比我還像新娘概疆。我一直安慰自己逗威,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布岔冀。 她就那樣靜靜地躺著凯旭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪使套。 梳的紋絲不亂的頭發(fā)上罐呼,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音童漩,去河邊找鬼弄贿。 笑死春锋,一個胖子當著我的面吹牛矫膨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侧馅,長吁一口氣:“原來是場噩夢啊……” “哼危尿!你這毒婦竟也來了?” 一聲冷哼從身側響起馁痴,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谊娇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后罗晕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體济欢,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年小渊,在試婚紗的時候發(fā)現(xiàn)自己被綠了法褥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡酬屉,死狀恐怖半等,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呐萨,我是刑警寧澤杀饵,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站谬擦,受9級特大地震影響切距,放射性物質發(fā)生泄漏。R本人自食惡果不足惜怯屉,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一蔚舀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锨络,春花似錦赌躺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掠归,卻和暖如春缅叠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虏冻。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工肤粱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厨相。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓领曼,卻偏偏與公主長得像鸥鹉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庶骄,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容