Kmeans聚類算法簡(jiǎn)介(有點(diǎn)枯燥)

1. Kmeans聚類算法簡(jiǎn)介

由于具有出色的速度和良好的可擴(kuò)展性萌衬,Kmeans聚類算法算得上是最著名的聚類方法。Kmeans算法是一個(gè)重復(fù)移動(dòng)類中心點(diǎn)的過(guò)程,把類的中心點(diǎn)掌实,也稱重心(centroids)生均,移動(dòng)到其包含成員的平均位置听想,然后重新劃分其內(nèi)部成員。k是算法計(jì)算出的超參數(shù)马胧,表示類的數(shù)量汉买;Kmeans可以自動(dòng)分配樣本到不同的類,但是不能決定究竟要分幾個(gè)類佩脊。k必須是一個(gè)比訓(xùn)練集樣本數(shù)小的正整數(shù)录别。有時(shí),類的數(shù)量是由問(wèn)題內(nèi)容指定的邻吞。例如组题,一個(gè)鞋廠有三種新款式,它想知道每種新款式都有哪些潛在客戶抱冷,于是它調(diào)研客戶崔列,然后從數(shù)據(jù)里找出三類。也有一些問(wèn)題沒(méi)有指定聚類的數(shù)量,最優(yōu)的聚類數(shù)量是不確定的赵讯。后面我將會(huì)詳細(xì)介紹一些方法來(lái)估計(jì)最優(yōu)聚類數(shù)量盈咳。

Kmeans的參數(shù)是類的重心位置和其內(nèi)部觀測(cè)值的位置。與廣義線性模型和決策樹類似边翼,Kmeans參數(shù)的最優(yōu)解也是以成本函數(shù)最小化為目標(biāo)鱼响。Kmeans成本函數(shù)公式如下:



μiμi是第kk個(gè)類的重心位置。成本函數(shù)是各個(gè)類畸變程度(distortions)之和组底。每個(gè)類的畸變程度等于該類重心與其內(nèi)部成員位置距離的平方和丈积。若類內(nèi)部的成員彼此間越緊湊則類的畸變程度越小,反之债鸡,若類內(nèi)部的成員彼此間越分散則類的畸變程度越大江滨。求解成本函數(shù)最小化的參數(shù)就是一個(gè)重復(fù)配置每個(gè)類包含的觀測(cè)值,并不斷移動(dòng)類重心的過(guò)程厌均。首先唬滑,類的重心是隨機(jī)確定的位置。實(shí)際上棺弊,重心位置等于隨機(jī)選擇的觀測(cè)值的位置晶密。每次迭代的時(shí)候,Kmeans會(huì)把觀測(cè)值分配到離它們最近的類模她,然后把重心移動(dòng)到該類全部成員位置的平均值那里稻艰。

2. K值的確定

2.1 根據(jù)問(wèn)題內(nèi)容確定

這種方法就不多講了,文章開篇就舉了一個(gè)例子缝驳。

2.2 肘部法則

如果問(wèn)題中沒(méi)有指定kk的值连锯,可以通過(guò)肘部法則這一技術(shù)來(lái)估計(jì)聚類數(shù)量。肘部法則會(huì)把不同kk值的成本函數(shù)值畫出來(lái)用狱。隨著kk值的增大运怖,平均畸變程度會(huì)減小夏伊;每個(gè)類包含的樣本數(shù)會(huì)減少摇展,于是樣本離其重心會(huì)更近。但是溺忧,隨著kk值繼續(xù)增大咏连,平均畸變程度的改善效果會(huì)不斷減低。kk值增大過(guò)程中鲁森,畸變程度的改善效果下降幅度最大的位置對(duì)應(yīng)的kk值就是肘部祟滴。為了讓讀者看的更加明白,下面讓我們通過(guò)一張圖用肘部法則來(lái)確定最佳的kk值歌溉。下圖數(shù)據(jù)明顯可分成兩類:

從圖中可以看出垄懂,k值從1到2時(shí)骑晶,平均畸變程度變化最大。超過(guò)2以后草慧,平均畸變程度變化顯著降低桶蛔。因此最佳的k是2。

2.3 與層次聚類結(jié)合

經(jīng)常會(huì)產(chǎn)生較好的聚類結(jié)果的一個(gè)有趣策略是漫谷,首先采用層次凝聚算法決定結(jié)果粗的數(shù)目仔雷,并找到一個(gè)初始聚類,然后用迭代重定位來(lái)改進(jìn)該聚類舔示。

2.4 穩(wěn)定性方法

穩(wěn)定性方法對(duì)一個(gè)數(shù)據(jù)集進(jìn)行2次重采樣產(chǎn)生2個(gè)數(shù)據(jù)子集碟婆,再用相同的聚類算法對(duì)2個(gè)數(shù)據(jù)子集進(jìn)行聚類,產(chǎn)生2個(gè)具有kk個(gè)聚類的聚類結(jié)果斩郎,計(jì)算2個(gè)聚類結(jié)果的相似度的分布情況脑融。2個(gè)聚類結(jié)果具有高的相似度說(shuō)明kk個(gè)聚類反映了穩(wěn)定的聚類結(jié)構(gòu)喻频,其相似度可以用來(lái)估計(jì)聚類個(gè)數(shù)缩宜。采用次方法試探多個(gè)kk,找到合適的k值甥温。

2.5 系統(tǒng)演化方法

系統(tǒng)演化方法將一個(gè)數(shù)據(jù)集視為偽熱力學(xué)系統(tǒng)锻煌,當(dāng)數(shù)據(jù)集被劃分為kk個(gè)聚類時(shí)稱系統(tǒng)處于狀態(tài)kk。系統(tǒng)由初始狀態(tài)k=1k=1出發(fā)姻蚓,經(jīng)過(guò)分裂過(guò)程和合并過(guò)程宋梧,系統(tǒng)將演化到它的穩(wěn)定平衡狀態(tài)?kiki?,其所對(duì)應(yīng)的聚類結(jié)構(gòu)決定了最優(yōu)類數(shù)?kiki?狰挡。系統(tǒng)演化方法能提供關(guān)于所有聚類之間的相對(duì)邊界距離或可分程度捂龄,它適用于明顯分離的聚類結(jié)構(gòu)和輕微重疊的聚類結(jié)構(gòu)。

2.6 使用canopy算法進(jìn)行初始劃分

基于Canopy Method的聚類算法將聚類過(guò)程分為兩個(gè)階段

(1) 聚類最耗費(fèi)計(jì)算的地方是計(jì)算對(duì)象相似性的時(shí)候加叁,Canopy Method在第一階段選擇簡(jiǎn)單倦沧、計(jì)算代價(jià)較低的方法計(jì)算對(duì)象相似性,將相似的對(duì)象放在一個(gè)子集中它匕,這個(gè)子集被叫做Canopy展融,通過(guò)一系列計(jì)算得到若干Canopy,Canopy之間可以是重疊的豫柬,但不會(huì)存在某個(gè)對(duì)象不屬于任何Canopy的情況告希,可以把這一階段看做數(shù)據(jù)預(yù)處理;

(2) 在各個(gè)Canopy內(nèi)使用傳統(tǒng)的聚類方法(如Kmeans)烧给,不屬于同一Canopy的對(duì)象之間不進(jìn)行相似性計(jì)算燕偶。

從這個(gè)方法起碼可以看出兩點(diǎn)好處:首先,Canopy不要太大且Canopy之間重疊的不要太多的話會(huì)大大減少后續(xù)需要計(jì)算相似性的對(duì)象的個(gè)數(shù)础嫡;其次指么,類似于Kmeans這樣的聚類方法是需要人為指出K的值的,通過(guò)(1)得到的Canopy個(gè)數(shù)完全可以作為這個(gè)k值,一定程度上減少了選擇k的盲目性涧尿。

其他方法如貝葉斯信息準(zhǔn)則方法(BIC)可參看文獻(xiàn)[4]系奉。

3. 初始質(zhì)心的選取

選擇適當(dāng)?shù)某跏假|(zhì)心是基本kmeans算法的關(guān)鍵步驟。常見(jiàn)的方法是隨機(jī)的選取初始中心姑廉,但是這樣簇的質(zhì)量常常很差缺亮。處理選取初始質(zhì)心問(wèn)題的一種常用技術(shù)是:多次運(yùn)行,每次使用一組不同的隨機(jī)初始質(zhì)心桥言,然后選取具有最小SSE(誤差的平方和)的簇集萌踱。這種策略簡(jiǎn)單,但是效果可能不好号阿,這取決于數(shù)據(jù)集和尋找的簇的個(gè)數(shù)并鸵。

第二種有效的方法是,取一個(gè)樣本扔涧,并使用層次聚類技術(shù)對(duì)它聚類园担。從層次聚類中提取kk個(gè)簇,并用這些簇的質(zhì)心作為初始質(zhì)心枯夜。該方法通常很有效弯汰,但僅對(duì)下列情況有效:(1)樣本相對(duì)較小,例如數(shù)百到數(shù)千(層次聚類開銷較大)湖雹;(2)?kk相對(duì)于樣本大小較小咏闪。

第三種選擇初始質(zhì)心的方法,隨機(jī)地選擇第一個(gè)點(diǎn)摔吏,或取所有點(diǎn)的質(zhì)心作為第一個(gè)點(diǎn)鸽嫂。然后,對(duì)于每個(gè)后繼初始質(zhì)心征讲,選擇離已經(jīng)選取過(guò)的初始質(zhì)心最遠(yuǎn)的點(diǎn)据某。使用這種方法,確保了選擇的初始質(zhì)心不僅是隨機(jī)的稳诚,而且是散開的哗脖。但是,這種方法可能選中離群點(diǎn)扳还。此外才避,求離當(dāng)前初始質(zhì)心集最遠(yuǎn)的點(diǎn)開銷也非常大。為了克服這個(gè)問(wèn)題氨距,通常該方法用于點(diǎn)樣本桑逝。由于離群點(diǎn)很少(多了就不是離群點(diǎn)了),它們多半不會(huì)在隨機(jī)樣本中出現(xiàn)俏让。計(jì)算量也大幅減少楞遏。

第四種方法就是上面提到的canopy算法茬暇。

4. 距離的度量

常用的距離度量方法包括:歐幾里得距離和余弦相似度。兩者都是評(píng)定個(gè)體間差異的大小的寡喝。

歐氏距離是最常見(jiàn)的距離度量糙俗,而余弦相似度則是最常見(jiàn)的相似度度量,很多的距離度量和相似度度量都是基于這兩者的變形和衍生预鬓,所以下面重點(diǎn)比較下兩者在衡量個(gè)體差異時(shí)實(shí)現(xiàn)方式和應(yīng)用環(huán)境上的區(qū)別巧骚。

借助三維坐標(biāo)系來(lái)看下歐氏距離和余弦相似度的區(qū)別:

從圖上可以看出距離度量衡量的是空間各點(diǎn)間的絕對(duì)距離,跟各個(gè)點(diǎn)所在的位置坐標(biāo)(即個(gè)體特征維度的數(shù)值)直接相關(guān)格二;而余弦相似度衡量的是空間向量的夾角劈彪,更加的是體現(xiàn)在方向上的差異,而不是位置顶猜。如果保持A點(diǎn)的位置不變沧奴,B點(diǎn)朝原方向遠(yuǎn)離坐標(biāo)軸原點(diǎn),那么這個(gè)時(shí)候余弦相似cosθ是保持不變的长窄,因?yàn)閵A角不變滔吠,而A、B兩點(diǎn)的距離顯然在發(fā)生改變抄淑,這就是歐氏距離和余弦相似度的不同之處屠凶。

根據(jù)歐氏距離和余弦相似度各自的計(jì)算方式和衡量特征驰后,分別適用于不同的數(shù)據(jù)分析模型:歐氏距離能夠體現(xiàn)個(gè)體數(shù)值特征的絕對(duì)差異肆资,所以更多的用于需要從維度的數(shù)值大小中體現(xiàn)差異的分析,如使用用戶行為指標(biāo)分析用戶價(jià)值的相似度或差異灶芝;而余弦相似度更多的是從方向上區(qū)分差異郑原,而對(duì)絕對(duì)的數(shù)值不敏感,更多的用于使用用戶對(duì)內(nèi)容評(píng)分來(lái)區(qū)分用戶興趣的相似度和差異夜涕,同時(shí)修正了用戶間可能存在的度量標(biāo)準(zhǔn)不統(tǒng)一的問(wèn)題(因?yàn)橛嘞蚁嗨贫葘?duì)絕對(duì)數(shù)值不敏感)犯犁。

因?yàn)闅W幾里得距離度量會(huì)受指標(biāo)不同單位刻度的影響,所以一般需要先進(jìn)行標(biāo)準(zhǔn)化女器,同時(shí)距離越大酸役,個(gè)體間差異越大;空間向量余弦?jiàn)A角的相似度度量不會(huì)受指標(biāo)刻度的影響驾胆,余弦值落于區(qū)間[-1,1]涣澡,值越大,差異越小丧诺。但是針對(duì)具體應(yīng)用入桂,什么情況下使用歐氏距離,什么情況下使用余弦相似度驳阎?

從幾何意義上來(lái)說(shuō)抗愁,n維向量空間的一條線段作為底邊和原點(diǎn)組成的三角形馁蒂,其頂角大小是不確定的。也就是說(shuō)對(duì)于兩條空間向量蜘腌,即使兩點(diǎn)距離一定沫屡,他們的夾角余弦值也可以隨意變化。感性的認(rèn)識(shí)撮珠,當(dāng)兩用戶評(píng)分趨勢(shì)一致時(shí)谁鳍,但是評(píng)分值差距很大,余弦相似度傾向給出更優(yōu)解劫瞳。舉個(gè)極端的例子倘潜,兩用戶只對(duì)兩件商品評(píng)分,向量分別為(3,3)和(5,5)志于,這兩位用戶的認(rèn)知其實(shí)是一樣的涮因,但是歐式距離給出的解顯然沒(méi)有余弦值合理。

5. 聚類效果評(píng)估

我們把機(jī)器學(xué)習(xí)定義為對(duì)系統(tǒng)的設(shè)計(jì)和學(xué)習(xí)伺绽,通過(guò)對(duì)經(jīng)驗(yàn)數(shù)據(jù)的學(xué)習(xí)养泡,將任務(wù)效果的不斷改善作為一個(gè)度量標(biāo)準(zhǔn)。Kmeans是一種非監(jiān)督學(xué)習(xí)奈应,沒(méi)有標(biāo)簽和其他信息來(lái)比較聚類結(jié)果澜掩。但是,我們還是有一些指標(biāo)可以評(píng)估算法的性能杖挣。我們已經(jīng)介紹過(guò)類的畸變程度的度量方法肩榕。本節(jié)為將介紹另一種聚類算法效果評(píng)估方法稱為輪廓系數(shù)(Silhouette Coefficient)。輪廓系數(shù)是類的密集與分散程度的評(píng)價(jià)指標(biāo)惩妇。它會(huì)隨著類的規(guī)模增大而增大株汉。彼此相距很遠(yuǎn),本身很密集的類歌殃,其輪廓系數(shù)較大乔妈,彼此集中,本身很大的類氓皱,其輪廓系數(shù)較小路召。輪廓系數(shù)是通過(guò)所有樣本計(jì)算出來(lái)的,計(jì)算每個(gè)樣本分?jǐn)?shù)的均值波材,計(jì)算公式如下:

計(jì)算公式

aa是每一個(gè)類中樣本彼此距離的均值股淡,bb是一個(gè)類中樣本與其最近的那個(gè)類的所有樣本的距離的均值。

6. Kmeans算法流程

輸入:聚類個(gè)數(shù)k各聘,數(shù)據(jù)集XmxnXmxn揣非。?

輸出:滿足方差最小標(biāo)準(zhǔn)的k個(gè)聚類。

(1) 選擇k個(gè)初始中心點(diǎn)躲因,例如c[0]=X[0] , … , c[k-1]=X[k-1]早敬;

(2) 對(duì)于X[0]….X[n]忌傻,分別與c[0]…c[k-1]比較,假定與c[i]差值最少搞监,就標(biāo)記為i水孩;

(3) 對(duì)于所有標(biāo)記為i點(diǎn),重新計(jì)算c[i]={ 所有標(biāo)記為i的樣本的每個(gè)特征的均值}琐驴;

(4) 重復(fù)(2)(3)俘种,直到所有c[i]值的變化小于給定閾值或者達(dá)到最大迭代次數(shù)。

Kmeans的時(shí)間復(fù)雜度:O(tkmn)绝淡,空間復(fù)雜度:O((m+k)n)宙刘。其中,t為迭代次數(shù)牢酵,k為簇的數(shù)目悬包,m為樣本數(shù),n為特征數(shù)馍乙。

7. Kmeans算法優(yōu)缺點(diǎn)

7.1 優(yōu)點(diǎn)

(1). 算法原理簡(jiǎn)單布近。需要調(diào)節(jié)的超參數(shù)就是一個(gè)k。

(2). 由具有出色的速度和良好的可擴(kuò)展性丝格。

7.2 缺點(diǎn)

(1). 在 Kmeans 算法中?kk?需要事先確定撑瞧,這個(gè)?kk?值的選定有時(shí)候是比較難確定。

(2). 在 Kmeans 算法中显蝌,首先需要初始k個(gè)聚類中心预伺,然后以此來(lái)確定一個(gè)初始劃分,然后對(duì)初始劃分進(jìn)行優(yōu)化琅束。這個(gè)初始聚類中心的選擇對(duì)聚類結(jié)果有較大的影響扭屁,一旦初始值選擇的不好,可能無(wú)法得到有效的聚類結(jié)果涩禀。多設(shè)置一些不同的初值,對(duì)比最后的運(yùn)算結(jié)果然眼,一直到結(jié)果趨于穩(wěn)定結(jié)束艾船。

(3). 該算法需要不斷地進(jìn)行樣本分類調(diào)整,不斷地計(jì)算調(diào)整后的新的聚類中心高每,因此當(dāng)數(shù)據(jù)量非常大時(shí)屿岂,算法的時(shí)間開銷是非常大的。

(4). 對(duì)離群點(diǎn)很敏感鲸匿。

(5). 從數(shù)據(jù)表示角度來(lái)說(shuō)爷怀,在 Kmeans 中,我們用單個(gè)點(diǎn)來(lái)對(duì) cluster 進(jìn)行建模,這實(shí)際上是一種最簡(jiǎn)化的數(shù)據(jù)建模形式带欢。這種用點(diǎn)來(lái)對(duì) cluster 進(jìn)行建模實(shí)際上就已經(jīng)假設(shè)了各 cluster的數(shù)據(jù)是呈圓形(或者高維球形)或者方形等分布的运授。不能發(fā)現(xiàn)非凸形狀的簇烤惊。但在實(shí)際生活中,很少能有這種情況吁朦。所以在 GMM 中柒室,使用了一種更加一般的數(shù)據(jù)表示,也就是高斯分布逗宜。

(6). 從數(shù)據(jù)先驗(yàn)的角度來(lái)說(shuō)雄右,在 Kmeans 中,我們假設(shè)各個(gè) cluster 的先驗(yàn)概率是一樣的,但是各個(gè) cluster 的數(shù)據(jù)量可能是不均勻的。舉個(gè)例子,cluster A 中包含了10000個(gè)樣本,cluster B 中只包含了100個(gè)纺讲。那么對(duì)于一個(gè)新的樣本,在不考慮其與A cluster擂仍、 B cluster 相似度的情況,其屬于 cluster A 的概率肯定是要大于 cluster B的。

(7). 在 Kmeans 中熬甚,通常采用歐氏距離來(lái)衡量樣本與各個(gè) cluster 的相似度防楷。這種距離實(shí)際上假設(shè)了數(shù)據(jù)的各個(gè)維度對(duì)于相似度的衡量作用是一樣的。但在 GMM 中则涯,相似度的衡量使用的是后驗(yàn)概率?αcG(x|μc,∑c)αcG(x|μc,∑c)?复局,通過(guò)引入?yún)f(xié)方差矩陣,我們就可以對(duì)各維度數(shù)據(jù)的不同重要性進(jìn)行建模。

(8). 在 Kmeans 中粟判,各個(gè)樣本點(diǎn)只屬于與其相似度最高的那個(gè) cluster 亿昏,這實(shí)際上是一種 hard clustering 。

針對(duì)Kmeans算法的缺點(diǎn)档礁,很多前輩提出了一些改進(jìn)的算法角钩。例如 K-modes 算法,實(shí)現(xiàn)對(duì)離散數(shù)據(jù)的快速聚類呻澜,保留了Kmeans算法的效率同時(shí)將Kmeans的應(yīng)用范圍擴(kuò)大到離散數(shù)據(jù)递礼。還有K-Prototype算法,可以對(duì)離散與數(shù)值屬性兩種混合的數(shù)據(jù)進(jìn)行聚類羹幸,在K-prototype中定義了一個(gè)對(duì)數(shù)值與離散屬性都計(jì)算的相異性度量標(biāo)準(zhǔn)脊髓。當(dāng)然還有其它的一些算法,這里我 就不一一列舉了栅受。

Kmeans 與 GMM 更像是一種 top-down 的思想将硝,它們首先要解決的問(wèn)題是,確定 cluster 數(shù)量屏镊,也就是 k 的取值依疼。在確定了 k 后,再來(lái)進(jìn)行數(shù)據(jù)的聚類。而 hierarchical clustering 則是一種 bottom-up 的形式而芥,先有數(shù)據(jù)律罢,然后通過(guò)不斷選取最相似的數(shù)據(jù)進(jìn)行聚類。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棍丐,一起剝皮案震驚了整個(gè)濱河市误辑,隨后出現(xiàn)的幾起案子沧踏,更是在濱河造成了極大的恐慌,老刑警劉巖稀余,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悦冀,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡睛琳,警方通過(guò)查閱死者的電腦和手機(jī)盒蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)师骗,“玉大人历等,你說(shuō)我怎么就攤上這事”侔” “怎么了寒屯?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)黍少。 經(jīng)常有香客問(wèn)我寡夹,道長(zhǎng),這世上最難降的妖魔是什么厂置? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任菩掏,我火速辦了婚禮,結(jié)果婚禮上昵济,老公的妹妹穿的比我還像新娘智绸。我一直安慰自己,他們只是感情好访忿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布瞧栗。 她就那樣靜靜地躺著,像睡著了一般海铆。 火紅的嫁衣襯著肌膚如雪迹恐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天游添,我揣著相機(jī)與錄音系草,去河邊找鬼。 笑死唆涝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唇辨。 我是一名探鬼主播廊酣,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赏枚!你這毒婦竟也來(lái)了亡驰?” 一聲冷哼從身側(cè)響起晓猛,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凡辱,沒(méi)想到半個(gè)月后戒职,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡透乾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年洪燥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乳乌。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捧韵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汉操,到底是詐尸還是另有隱情再来,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布磷瘤,位于F島的核電站芒篷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏采缚。R本人自食惡果不足惜针炉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仰担。 院中可真熱鬧糊识,春花似錦、人聲如沸摔蓝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贮尉。三九已至拌滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猜谚,已是汗流浹背败砂。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魏铅,地道東北人昌犹。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像览芳,于是被迫代替她去往敵國(guó)和親斜姥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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