AdaBoost&GBDT

1、提升方法的基本思路

提升方法的基本思想就是“三個(gè)臭皮匠賽過諸葛亮”,更嚴(yán)謹(jǐn)?shù)恼f什燕,是由“弱學(xué)習(xí)算法”提升為“強(qiáng)學(xué)習(xí)算法”卿闹〗腋猓“弱”和“強(qiáng)”的定義由Kearns和Valiant提出:弱可學(xué)習(xí)指存在一個(gè)多項(xiàng)式算法可學(xué)習(xí)它且學(xué)習(xí)正確率僅比隨機(jī)猜測好萝快;強(qiáng)可學(xué)習(xí)指存在一個(gè)多項(xiàng)式算法可學(xué)習(xí)它且學(xué)習(xí)正確率很高。非常有趣的是Schapire證明了強(qiáng)可學(xué)習(xí)與弱可學(xué)習(xí)是等價(jià)的著角。也就是說在PAC學(xué)習(xí)的框架下揪漩,一個(gè)概念是強(qiáng)可學(xué)習(xí)的充要條件是這個(gè)概念弱可學(xué)習(xí)。這就為我們將“弱學(xué)習(xí)算法”提升為“強(qiáng)學(xué)習(xí)算法”提供了理論基礎(chǔ)吏口。

理論基礎(chǔ)有了奄容,我們?cè)賮砜匆幌绿嵘椒ǖ?strong>動(dòng)機(jī),其實(shí)這個(gè)動(dòng)機(jī)很自然产徊,對(duì)一個(gè)問題而言昂勒,弱學(xué)習(xí)器的訓(xùn)練比強(qiáng)學(xué)習(xí)器容易得多。另外舟铜,我個(gè)人認(rèn)為提升方法還可以在樣本不太大的情形下發(fā)揮作用戈盈,因?yàn)樘嵘椒ㄋ龅氖戮褪亲尭鱾€(gè)基學(xué)習(xí)器關(guān)注不同的樣本,最后達(dá)到兼顧各個(gè)樣本的效果谆刨,可以充分發(fā)揮每個(gè)樣本的作用(這一說法未必準(zhǔn)確塘娶,但《統(tǒng)計(jì)學(xué)習(xí)方法》中只包含10個(gè)樣本的例題似乎印證了這一點(diǎn))。

最后簡單說一下提升方法的基本思路痊夭。提升方法就是從弱學(xué)習(xí)算法出發(fā)刁岸,反復(fù)學(xué)習(xí)得到一系列弱分類器(基分類器),然后組合這些弱分類器構(gòu)成一個(gè)強(qiáng)分類器她我。不難看出這其中的要點(diǎn)有兩個(gè)虹曙,一是如何得到這一系列弱分類器,二是如何組合這些弱分類器鸦难,下面我們看一下AdaBoost是如何處理這兩個(gè)步驟的根吁。

2、AdaBoost算法

AdaBoost算法的流程如下:

(1)初始化訓(xùn)練數(shù)據(jù)權(quán)值分布(均勻分布):

D_1=(w_{11},\dots,w_{1N}),\quad w_{1i}=\frac{1}{N},\quad i=1,2,\dots,N

(2)對(duì)m=1,2,\dots,M

  • 使用具有權(quán)值分布D_m的數(shù)據(jù)集進(jìn)行學(xué)習(xí)得到基分類器:

G_m(x):X\rightarrow \{-1,+1 \}

  • 計(jì)算G_m(x)在訓(xùn)練數(shù)據(jù)集上的分類誤差率(帶權(quán)重的誤差率):

e_m=\sum_{i=1}^N P(G_m(x_i)\neq y_i)=\sum_{i=1}^N w_{mi}I(G_m(x_i)\neq y_i)

  • 計(jì)算G_m(x)的系數(shù):

\alpha_m=\frac{1}{2}ln\frac{1-e_m}{e_m}

  • 更新訓(xùn)練數(shù)據(jù)集權(quán)值分布:

D_{m+1}=(w_{m+1,1},\dots,w_{m+1,N})

w_{m+1,i}=\frac{w_{mi}e^{-\alpha_m y_i G_m(x_i)}}{Z_m},\quad i=1,2,\dots,N

這里Z_m是規(guī)范化因子:

Z_m=\sum_{i=1}^N w_{mi} e^{-\alpha_m y_i G_m(x_i)}

(3)構(gòu)建基本分類器的線性組合:

f(x)=\sum_{m=1}^M \alpha_m G_m(x)

從而得到最終分類器:

G(x)=sign(f(x))=sign(\sum_{m=1}^M \alpha_m G_m(x))

我們看一下算法中的要點(diǎn):

a)G_m(x)的系數(shù)\alpha_m=\frac{1}{2}ln\frac{1-e_m}{e_m}合蔽,可以看到e_m\leq \frac{1}{2}時(shí)\alpha_m\geq 0击敌,且\alpha_me_m的減小而增大。這是合理的拴事,前者說明一個(gè)基分類器至少要優(yōu)于隨機(jī)分類器其權(quán)重才大于0沃斤,后者說明分類誤差率越小的基分類器在最終分類器中的權(quán)重越大。

b)更新訓(xùn)練數(shù)據(jù)權(quán)值的式子可以寫成:

\begin{equation} w_{m+1,i}=\left\{ \begin{array}{rcl} \frac{w_{mi}e^{-\alpha_m}}{Z_m}& & {G_m(x_i)=y_i}\\ \frac{w_{mi}e^{\alpha_m}}{Z_m}& & {G_m(x_i)\neq y_i} \end{array} \right. \end{equation}

在a)中我們已經(jīng)說明了\alpha_m\geq 0刃宵,因此這里的e^{\alpha_m}\leq 1衡瓶,e^{-\alpha_m}\geq 1,這意味著被基分類器G_m(x)誤分類樣本的權(quán)值被擴(kuò)大牲证,而被正確分類樣本的權(quán)值則被縮小哮针。也就是說訓(xùn)練下一個(gè)分類器的時(shí)候我們重點(diǎn)關(guān)注當(dāng)前分類器誤分的樣本,這樣下一個(gè)分類器將與當(dāng)前分類器“互補(bǔ)”,從而最后組合起來將達(dá)到在全體數(shù)據(jù)上較好的效果十厢。

c)需要注意的是等太,我們訓(xùn)練各個(gè)基學(xué)習(xí)器是序列化進(jìn)行的,而不是同時(shí)進(jìn)行的蛮放,這也意味著AdaBoost算法不能并行計(jì)算缩抡。也就是說,我們訓(xùn)練當(dāng)前學(xué)習(xí)器時(shí)用的樣本權(quán)重是由前一個(gè)學(xué)習(xí)器用的樣本權(quán)重及其分類結(jié)果決定的包颁,因此要按次序進(jìn)行瞻想。

3、AdaBoost算法誤差分析

定理1

AdaBoost算法最終分類器的訓(xùn)練誤差界為:

\frac{1}{N}\sum_{i=1}^N I(G(x_i)\neq y_i)\leq \frac{1}{N}\sum_i e^{-y_i f(x_i)}=\prod_m Z_m

證明:

當(dāng)G_m(x_i)\neq y_i時(shí)娩嚼,y_i f(x_i)<0蘑险,因此e^{-y_i f(x_i)}\geq 1
當(dāng)G_m(x_i)\neq y_i時(shí),I(G_m(x_i)\neq y_i)=1

從而前半部分得證岳悟。

后半部分推導(dǎo)要用到Z_m和權(quán)重的關(guān)系:

w_{m+1,i}=\frac{w_{mi}e^{-\alpha_m y_i G_m(x_i)}}{Z_m},\quad i=1,2,\dots,N

\Rightarrow w_{mi}e^{-\alpha_m y_i G_m(x_i)}=Z_m w_{m+1,i} \quad \quad \quad(*)

由上式可得:

\begin{equation*} \begin{aligned} \frac{1}{N}\sum_i e^{-y_i f(x_i)}&=\frac{1}{N}\sum_i e^{-\sum_{m=1}^M \alpha_m y_i G_m(x_i)}\\ &=\sum_i w_{1i}\prod_{m=1}^M e^{-\alpha_m y_i G_m(x_i)}(w_{1i}=\frac{1}{N})\\ &=Z_1\sum_i w_{2i}\prod_{m=2}^M e^{-\alpha_m y_i G_m(x_i)}(由式(*)可得)\\ &=Z_1 Z_2\sum_i w_{3i}\prod_{m=3}^M e^{-\alpha_m y_i G_m(x_i)}\\ &=\dots\\ &=\prod_{m=1}^M Z_m \end{aligned} \end{equation*}

從而后半部分得證漠其。

定理1為我們提供了AdaBoost的訓(xùn)練誤差界,所以我們每一輪選取的G_m應(yīng)該使得Z_m最小竿音,從而使訓(xùn)練誤差下降最快。

定理2

二分類問題AdaBoost的訓(xùn)練誤差界滿足:

\begin{equation*} \begin{aligned} \prod_{m=1}^M Z_m&=\prod_{m=1}^M[2\sqrt{e_m(1-e_m)}]\\ &=\prod_{m=1}^M \sqrt{1-4\gamma_m^2}(\gamma_m=\frac{1}{2}-e_m)\\ &\leq e^{-2\sum_{m=1}^{M}\gamma_m^2} \end{aligned} \end{equation*}

證明:

\begin{equation*} \begin{aligned} Z_m&=\sum_{i=1}^N w_{mi} e^{-\alpha_m y_i G_m(x_i)}\\ &=\sum_{y_i=G_m(x_i)}w_{mi}e^{-\alpha_m}+\sum_{y_i\neq G_m(x_i)}w_{mi}e^{\alpha_m}\\ &=(1-e_m)e^{-\alpha_m}+e_m e^{\alpha_m}\\ &=2\sqrt{e_m(1-e_m)}(因?yàn)閈alpha_m=\frac{1}{2}ln\frac{1-e_m}{e_m})\\ &=\sqrt{1-4\gamma_m^2} \end{aligned} \end{equation*}

這就完成了定理2中等號(hào)部分的證明拴驮,至于不等號(hào)的證明春瞬,我們把項(xiàng)拆開并用x代替\gamma_m^2,于是現(xiàn)在需要證明的結(jié)論為:

\sqrt{1-4x}\leq e^{-2x}

即:

1-4x\leq e^{-4x}

即:

1-u\leq e^u

這在u=4\gamma_m^2\geq 0時(shí)是顯然的套啤。從而定理2得證宽气。

不難看出,定理2是在定理1的基礎(chǔ)上推出的一個(gè)更寬泛的上界潜沦,這個(gè)上界與各個(gè)基分類器的錯(cuò)誤率有關(guān)萄涯,\gamma_m=1-e_m衡量的其實(shí)是分類器G_m由于隨機(jī)分類器的程度,若這個(gè)程度有一個(gè)下界:\gamma_m\geq \gamma\quad\forall m唆鸡,即各個(gè)基分類器都與隨機(jī)分類器的誤差率之間有一個(gè)“間隙”涝影,則:

\frac{1}{N}\sum_{i=1}^N I(G(x_i)\neq y_i)\leq e^{-2M\gamma^2}

這表明隨基學(xué)習(xí)器數(shù)目的增加,AdaBoost的訓(xùn)練誤差以指數(shù)速率下降争占。這是非常好的性質(zhì)燃逻。

4、AdaBoost算法解釋

AdaBoost的另一個(gè)解釋是模型為加法模型臂痕、損失函數(shù)為指數(shù)函數(shù)伯襟、學(xué)習(xí)算法為前向分步算法時(shí)的二分類學(xué)習(xí)方法。

以上解釋中有幾個(gè)關(guān)鍵詞:加法模型握童,前向分步姆怪,指數(shù)函數(shù)。

所謂加法模型,就是最終學(xué)習(xí)器是由各個(gè)基學(xué)習(xí)器帶權(quán)加和而成的:

f(x)=\sum_{m=1}^M \beta b(x;\gamma_m)

這里\gamma_m表示基函數(shù)的參數(shù)稽揭,\beta_m表示基函數(shù)的系數(shù)俺附。

所謂前向分布,就是對(duì)于使得上述f(x)經(jīng)驗(yàn)風(fēng)險(xiǎn)極小化的問題:

\min_{\beta_m,\gamma_m}\sum_{i=1}^N L(y_i,\sum_{m=1}^M \beta_m b(x_i;\gamma_m))

直接優(yōu)化M組參數(shù)(\beta_m,\gamma_m)是非常復(fù)雜的淀衣。前向分布算法的思路是每一步只學(xué)習(xí)一個(gè)基學(xué)習(xí)器及參數(shù)舞痰,即一次只學(xué)習(xí)一組系數(shù)(\beta_m,\gamma_m)千贯。具體來說,每步只需優(yōu)化:

\min_{\beta,\gamma}\sum_{i=1}^N L(y_i,\beta b(x_i;\gamma))

得到最優(yōu)參數(shù)(\beta_m,\gamma_m),然后更新f(x)

f_m(x)=f_{m-1}(x)+\beta_m b(x;\gamma_m)

最后痕鳍,我們以定理的形式說明AdaBoost的損失函數(shù)是指數(shù)函數(shù)

定理3

AdaBoost算法是前向分步加法算法的特例腻贰,模型是由基分類器組成的加法模型洛波,損失函數(shù)是指數(shù)函數(shù)。即損失函數(shù)為:

L(y,f(x))=e^{-yf(x)}

證明:

假設(shè)經(jīng)過m-1輪迭代前向分步算法已經(jīng)得到f_{m-1}(x)

f_{m-1}(x)=\alpha_1 G_1(x)+\dots+\alpha_{m-1}G_{m-1}(x)

m輪迭代得到\alpha_m,G_m(x)册舞,則f_m(x)為:

f_m(x)=f_{m-1}(x)+\alpha_m G_m(x)

目標(biāo)是使前向分步算法得到的\alpha_m,G_m(x)使f_m(x)的指數(shù)損失最性烫汀:

(\alpha_m,G_m(x))=arg\min_{\alpha,G}\sum_{i=1}^N e^{-y_i(f_{m-1}(x_i)+\alpha G(x_i))}

上式可表示為:

(\alpha_m,G_m(x))=arg\min_{\alpha,G}\sum_{i=1}^N \hat{w}_{mi}e^{-y_i \alpha G(x_i)}\quad(\hat{w}_{mi}=e^{-y_i f_{m-1}(x_i)})

可以看到\hat{w}_{mi}不依賴\alphaG,與最小化無關(guān)调鲸。

下面我們先求最優(yōu)的G_m^*(x)盛杰,對(duì)任意\alpha>0

G_m^*(x)=arg\min_G (e^\alpha\sum_{y_i\neq G(x_i)} \hat{w}_{mi}+e^{-\alpha} \sum_{y_i=G(x_i)} \hat{w}_{mi})

當(dāng)\alpha>0時(shí),e^\alpha>1>e^{-\alpha}藐石,又\sum_{y_i\neq G(x_i)} \hat{w}_{mi}+\sum_{y_i= G(x_i)} \hat{w}_{mi}=\sum_{i=1}^N \hat{w}_{mi}為定值即供,所以我們希望\sum_{y_i\neq G(x_i)} \hat{w}_{mi}盡可能小,即:

G_m^*(x)=arg\min_G \sum_{i=1}^N \hat{w}_{mi} I(y_i\neq G(x_i))

這正是AdaBoost算法的基本分類器G_m(x)于微,接下來我們求\alpha_m^*

\begin{equation*} \begin{aligned} \sum_{i=1}^N \hat{w}_{mi}e^{-y_i \alpha G(x_i)}&=e^\alpha\sum_{y_i\neq G(x_i)} \hat{w}_{mi}+e^{-\alpha} \sum_{y_i=G(x_i)} \hat{w}_{mi}\\ &=(e^\alpha-e^{-\alpha}) \sum_{i=1}^N \hat{w}_{mi} I(y_i\neq G(x_i))+e^{-\alpha} \sum_{i=1}^N \hat{w}_{mi} \end{aligned} \end{equation*}

G_m^*(x)=arg\min_G \sum_{i=1}^N \hat{w}_{mi} I(y_i\neq G(x_i))帶入上式逗嫡,則有:

\sum_{i=1}^N \hat{w}_{mi} I(y_i\neq G(x_i))=e_m

又因?yàn)闄?quán)重之和為1:

\sum_{i=1}^N \hat{w}_{mi}=1

從而原式變成:

(e^\alpha-e^{-\alpha})e_m+e^{-\alpha}

對(duì)\alpha求導(dǎo)并令其為0:

(e^\alpha+e^{-\alpha})e_m-e^{-\alpha}=0

\Rightarrow \alpha_m^*=\frac{1}{2}ln\frac{1-e_m}{e_m}

這也與AdaBoost算法的\alpha_m完全一致。

最后我們看每一輪樣本權(quán)值的更新株依。由:

f_m(x)=f_{m-1}(x)+\alpha_m G_m(x)

\hat{w}_{mi}=e^{-y_i f_{m-1}(x_i)}

可知:
\hat{w}_{m+1,i}=e^{-y_i[f_{m-1}(x)+\alpha_m G_m(x)]}=\hat{w}_{mi}e^{-y_i \alpha_m G_m(x)}

可以看到驱证,除了規(guī)范化因子,這與AdaBoost算法的權(quán)值更新過程也完全一致恋腕。

5抹锄、提升樹(Boosting Tree)

以決策樹為基函數(shù)的提升方法稱為提升樹。提升樹被認(rèn)為是統(tǒng)計(jì)學(xué)習(xí)中性能最好的方法之一荠藤。

提升樹模型可以表示為決策樹的加法模型:

f_M(x)=\sum_{m=1}^M T(x;\Theta_m)

其中T(x;\Theta_m)表示決策樹祈远,\Theta_m表示決策樹參數(shù),M為樹的個(gè)數(shù)商源。

提升樹算法采用前向分步算法车份。首先確定初始提升樹f_0(x)=0,第m步模型為:

f_m(x)=f_{m-1}(x)+T(x;\Theta_m)

其中f_{m-1}(x)為當(dāng)前模型牡彻,通過經(jīng)驗(yàn)風(fēng)險(xiǎn)極小化確定下一棵決策樹參數(shù)\Theta_m

\hat{\Theta}=arg\min_{\Theta_m}\sum_{i=1}^N L(y_i,f_{m-1}(x)+T(x_i;\Theta_m))

針對(duì)不同問題的提升樹學(xué)習(xí)算法主要區(qū)別在于損失函數(shù)L不同扫沼。平方誤差對(duì)應(yīng)回歸問題出爹,指數(shù)損失函數(shù)對(duì)應(yīng)分類問題,一般損失函數(shù)對(duì)應(yīng)一般決策問題缎除。

5.1严就、分類問題的提升樹方法

上面提到,當(dāng)損失函數(shù)為指數(shù)函數(shù)的時(shí)候器罐,提升樹算法可以解決分類問題梢为。我們之前證明了AdaBoost算法是前向分步加法算法的特例,模型是由基分類器組成的加法模型轰坊,損失函數(shù)是指數(shù)函數(shù)铸董。

因此針對(duì)而分類問題,提升樹算法只需將AdaBoost算法中的基分類器限制為二分類決策樹即可肴沫,也就是說此時(shí)提升樹算法是AdaBoost算法的特殊情況粟害。

5.2、回歸問題的提升樹算法

將輸入空間X劃分為J個(gè)互不相交的區(qū)域R_1,R_2,\dots,R_J颤芬,并在每個(gè)區(qū)域上輸出常量c_j悲幅,則樹可以表示為:

T(x;\Theta)=\sum_{j=1}^J I(x\in R_j)

其中參數(shù)\Theta=\{ (R_1,c_1),\dots,(R_J,c_J) \}表示樹的區(qū)域劃分和各區(qū)域上的常數(shù)。J是回歸樹的復(fù)雜度即葉子結(jié)點(diǎn)個(gè)數(shù)站蝠。

當(dāng)采用平方誤差損失函數(shù)時(shí):

L(y,f(x))=(y-f(x))^2

其損失為:

\begin{equation*} \begin{aligned} L(y_i,f_{m-1}(x)+T(x_i;\Theta_m)&=[y-f_{m-1}(x)-T(x;\Theta_m)]^2\\ &=[r-T(x;\Theta_m)]^2\\ \end{aligned} \end{equation*}

這里r=y-f_{m-1}(x)是當(dāng)前模型擬合數(shù)據(jù)的殘差汰具。

因此對(duì)回歸問題的提升樹算法來說,只需要簡單地?cái)M合當(dāng)前模型的殘差即可菱魔。算法流程如下:

(1)初始化f_0(x)=0
(2)對(duì)m=1,2,\dots,M

  • 計(jì)算殘差:r_{mi}=y_i-f_{m-1}(x_i),\quad i=1,2,\dots,N
  • 擬合殘差r_{mi}學(xué)習(xí)一個(gè)回歸樹郁副,得到T(x;\Theta_m)
  • 更新f_m(x)=f_{m-1}(x)+T(x;\Theta_m)
    (3)得到回歸問題的提升樹:

f_M(x)=\sum_{m=1}^M T(x;\Theta_m)

5.3、梯度提升

當(dāng)損失函數(shù)是均方誤差或者指數(shù)函數(shù)的時(shí)候豌习,優(yōu)化是很簡單的,但對(duì)一般形式的損失函數(shù)來說拔疚,往往每一步的優(yōu)化并不那么容易肥隆。梯度提升(Gradient Boosting)算法可以解決這個(gè)問題。其關(guān)鍵是利用損失函數(shù)的負(fù)梯度在當(dāng)前模型的值:

-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}

作為回歸問題提升樹算法中的殘差的近似值稚失,擬合一個(gè)回歸樹栋艳。

梯度提升算法流程如下:

(1)初始化:

f_0(x)=arg\min_c \sum_{i=1}^N L(y_i,c)

(2)對(duì)m=1,2,\dots,M

  • a) 對(duì)i=1,2,\dots,N,計(jì)算:

r_{mi}=-[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}

  • b) 對(duì)r_{mi}擬合一個(gè)回歸樹句各,得到第m棵樹的葉結(jié)點(diǎn)區(qū)域R_{mj},j=1,2,\dots,J

  • c) 對(duì)j=1,2,\dots,J吸占,計(jì)算:

c_{mj}=arg\min_c \sum_{x_i\in R_{mj}}L(y_i,f_{m-1}(x_i)+c)

  • d) 更新f_m(x)=f_{m-1}(x)+\sum_{j=1}^J c_{mj}I(x\in R_{mj})

(3)得到回歸樹:

\hat{f}(x)=f_M(x)=\sum_{m=1}^M \sum_{j=1}^J c_{mj}I(x\in R_{mj})

上述算法流程要點(diǎn)如下:第一步初始化只有一個(gè)根結(jié)點(diǎn)的樹。第2(a)步計(jì)算損失函數(shù)的負(fù)梯度在當(dāng)前模型的值凿宾,將其作為殘差的估計(jì)(對(duì)于平方損失函數(shù)這就是殘差矾屯,對(duì)于一般損失函數(shù)這就是殘差的近似值)。第2(b)步估計(jì)回歸樹葉結(jié)點(diǎn)區(qū)域初厚,以擬合殘差近似值件蚕。第2(c)步利用線性搜索估計(jì)葉結(jié)點(diǎn)區(qū)域的值,使損失函數(shù)極小化。第2(d)步更新回歸樹排作。第3步輸出最終模型牵啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市妄痪,隨后出現(xiàn)的幾起案子哈雏,更是在濱河造成了極大的恐慌,老刑警劉巖衫生,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裳瘪,死亡現(xiàn)場離奇詭異,居然都是意外死亡障簿,警方通過查閱死者的電腦和手機(jī)盹愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來站故,“玉大人皆怕,你說我怎么就攤上這事∥髀ǎ” “怎么了愈腾?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岂津。 經(jīng)常有香客問我虱黄,道長,這世上最難降的妖魔是什么吮成? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任橱乱,我火速辦了婚禮,結(jié)果婚禮上粱甫,老公的妹妹穿的比我還像新娘泳叠。我一直安慰自己,他們只是感情好茶宵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布危纫。 她就那樣靜靜地躺著,像睡著了一般乌庶。 火紅的嫁衣襯著肌膚如雪种蝶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天瞒大,我揣著相機(jī)與錄音螃征,去河邊找鬼。 笑死透敌,一個(gè)胖子當(dāng)著我的面吹牛会傲,可吹牛的內(nèi)容都是我干的锅棕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼淌山,長吁一口氣:“原來是場噩夢啊……” “哼裸燎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泼疑,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤德绿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后退渗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體移稳,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年会油,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了个粱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翻翩,死狀恐怖都许,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫂冻,我是刑警寧澤胶征,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站桨仿,受9級(jí)特大地震影響睛低,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜服傍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一钱雷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吹零,春花似錦罩抗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽名段。三九已至阱扬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伸辟,已是汗流浹背麻惶。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留信夫,地道東北人窃蹋。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓卡啰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親警没。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匈辱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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