分類模型評估指標(biāo)

機器學(xué)習(xí)解決問題的通用流程:問題建模----特征工程----模型選擇----模型融合

其中問題建模主要包括:設(shè)定評估指標(biāo)挠蛉,選擇樣本护盈,交叉驗證娘侍。

? ? 解決一個機器學(xué)習(xí)問題都是從問題建模開始,首先需要收集問題的資料,深入理解問題,然后將問題抽象成機器可預(yù)測的問題翠语。在一個過程中要明確業(yè)務(wù)指標(biāo)和模型預(yù)測目標(biāo)叽躯,根據(jù)預(yù)測目標(biāo)選擇適當(dāng)指標(biāo)用于模型評估。接著從原始數(shù)據(jù)中選擇最相關(guān)的樣本子集用于模型訓(xùn)練肌括,并對樣本子集劃分訓(xùn)練集和測試集点骑,應(yīng)用交叉驗證的方法對模型進(jìn)行選擇和評估。

評估指標(biāo)

評估指標(biāo)用于反應(yīng)模型效果谍夭,在預(yù)測問題中黑滴,要評估模型的效果,就需要將模型預(yù)測結(jié)果f(x)和真實標(biāo)注Y進(jìn)行比較紧索,評估指標(biāo)定義為f(x)和Y的函數(shù)袁辈。

? ??score = metric(f(x),Y)

分類指標(biāo)

1.精確率、召回率珠漂、準(zhǔn)確率晚缩、錯誤率和F函數(shù)

1.1精確率和召回率

精確率和召回率主要用來二分類問題(從其公式推導(dǎo)也可看出)筏餐,結(jié)合混淆矩陣有:

精確率P和召回率R的定義為:

精確率(Precision) = \frac{True Positive}{True Positive + False Positive}

召回率(Recall) = \frac{True Positive}{True Positive + False Negative}

上述計算公式中的Positive和Negative是預(yù)測標(biāo)簽拔疚,True與False代表預(yù)測正誤;要注意昂羡,精確率和召回率是二分類指標(biāo)待笑,不適用多分類鸣皂,由此得到P-R曲線以及ROC曲線均是二分類評估指標(biāo)(因為其橫縱軸指標(biāo)均為二分類混淆矩陣計算得到),而準(zhǔn)確率適用于多分類評估暮蹂。(可以將多分類問題轉(zhuǎn)換為二分類問題進(jìn)行求解寞缝,將關(guān)注的類化為一類,其他所有類化為一類)

? ? 理想情況下仰泻,精確率和召回率兩者越高越好第租。然而事實上這兩者在某些情況下是矛盾的,精確率高時我纪,召回率低慎宾;精確率低時,召回率高浅悉;關(guān)于這個性質(zhì)通過觀察PR曲線不難觀察出來趟据。比如在搜索網(wǎng)頁時,如果只返回最相關(guān)的一個網(wǎng)頁术健,那精確率就是100%汹碱,而召回率就很低;如果返回全部網(wǎng)頁荞估,那召回率為100%咳促,精確率就很低稚新。因此在不同場合需要根據(jù)實際需求判斷哪個指標(biāo)更重要。

\star ?recall是相對真實的答案而言: true positive/golden set跪腹。假設(shè)測試集里面有100個正例褂删,你的模型能預(yù)測覆蓋到多少,如果你的模型預(yù)測到了40個正例冲茸,那么你的recall就是40%屯阀。

\star 
?precision是相對于你自己的模型預(yù)測而言:true positive / retrieved set。假設(shè)你的模型一共預(yù)測了100個正例轴术,而其中80個是對的正例难衰,那么你的precision就是80%。我們可以把precision理解為逗栽,當(dāng)你的模型作出一個新的預(yù)測時盖袭,他的confidence score是多少,或者它做的這個預(yù)測是對的可能性是多少彼宠。

\star ?一般來說苍凛,魚與熊掌不可兼得。如果你的模型很貪婪兵志,想要覆蓋更多的sample醇蝴,那么它就更有可能犯錯。在這種情況下想罕,你就會有很高的recall悠栓,但是較低的precision。如果你的模型很保守按价,只對它很確定的sample作出預(yù)測惭适,那么你的precision會很高,但是recall會相對低楼镐。

? ? 我們可以選擇只看我們感興趣的類癞志,就是minority class的precision,recall來評價模型的好壞框产。

1.2 準(zhǔn)確率和錯誤率

準(zhǔn)確率和錯誤率既可用于二分類也可用于多分類:

準(zhǔn)確率(accuracy) = \frac{TP + TN}{TP + FP + FN + TN}

錯誤率(errorrate) =  \frac{FP + FN}{TP + FP + FN + TN}

上述公式是準(zhǔn)確率凄杯、錯誤率針對二分類情況時候的計算公式

精確率和準(zhǔn)確率是比較容易混淆的兩個評估指標(biāo),兩者是有區(qū)別的秉宿。精確率是一個二分類指標(biāo)戒突,而準(zhǔn)確率能應(yīng)用于多分類,其計算公式為:

準(zhǔn)確率(accuracy) = \frac{1}{n} \sum_{i=1}^nI(f(x_i) = y_i)

1.3 F1函數(shù)

F1函數(shù)是一個常用指標(biāo)描睦,F(xiàn)1值是精確率和召回率的調(diào)和平均值膊存,即F1 = \frac{2PR}{P + R} ,F值可泛化為對精確率和召回率賦不同權(quán)值進(jìn)行加權(quán)調(diào)和:F_\alpha = \frac{(1+\alpha^2)PR}{\alpha^2P + R} .

下面是兩個場景:

? (1)地震的預(yù)測:我們希望的是Recall非常高,也就是說每次地震我們都希望預(yù)測出來。這個時候我們可以犧牲Precision隔崎。寧愿發(fā)出1000次警報今艺,把10次地震都預(yù)測正確率;也不要預(yù)測100次對了8次漏了兩次爵卒。

? ?(2)嫌疑人定罪基于不錯怪一個好人的原則虚缎,對于嫌疑人的定罪我們希望是非常準(zhǔn)確的。即使有時候放了一些罪犯(Recall低)技潘,但也是值得的。對于分類器來說千康,本質(zhì)上是給一個概率享幽,此時,我們再選擇一個cutoff點(閾值)拾弃,高于這個點的判正值桩,低于判負(fù)。那么這個點的選擇就需要結(jié)合你的具體場景去選擇豪椿。反過來奔坟,場景會決定訓(xùn)練模型時的標(biāo)準(zhǔn),比如第一個場景中搭盾,我們就只看RECALL=99.9999%(地震全中)時的PRECISION咳秉,其他指標(biāo)就變得沒有了意義。

2. ROC曲線鸯隅、PR曲線

2.1 PR曲線

我們以召回率R為橫軸澜建、以精確率P為縱軸,能夠畫出P-R曲線蝌以,如下圖:

????從上圖不難發(fā)現(xiàn)炕舵,Precision與Recall的折中(trade off),曲線越靠近右上角性能越好跟畅,曲線下的面積叫做AP分?jǐn)?shù)咽筋,能在一定程度上反應(yīng)模型的精確率和召回率都很好的比例。但這個值不方便計算徊件,綜合考慮精度與召回率一般使用F1函數(shù)或者AUC值(因為ROC曲線很容易畫奸攻,ROC曲線下的面積也比較容易計算)。

? ? 先看平不平滑虱痕,再看誰上誰下(同一測試集上)舞箍,一般來說,上面的比下面的好(紅線比黑線好)皆疹;

? ? F1當(dāng)P和R接近也就越大疏橄,一般會畫連接(0,0)和(1,1)的線,線和PRC重合的地方的F1是這條線最大的F1(光滑情況下),此時的F1對于P-R曲線就好像AUC對于ROC一樣捎迫。一個數(shù)字比一條線更方便調(diào)模型晃酒。

注意:既然Precision與Recall都是二分類指標(biāo),則PR曲線也必然是二分類指標(biāo)窄绒,雖然可以將precision贝次、Recall及PR曲線應(yīng)用到多分類,但是這種情況相當(dāng)于是多分類轉(zhuǎn)換為二分類情況分析(將關(guān)注的類視為一類彰导,將其他所有類化為一類)蛔翅。

2.2 ROC曲線

? ? 在眾多的機器學(xué)習(xí)模型中,很多模型輸出的是預(yù)測概率位谋,而使用精確率山析、召回率這類指標(biāo)進(jìn)行模型評估時,還需要對預(yù)測概率設(shè)分類閾值掏父,比如預(yù)測概率大于閾值為正例笋轨,反之為負(fù)例。這使得模型多了一個超參數(shù)赊淑,并且這個超參數(shù)會影響模型的泛化能力爵政。

? ? 接受者操作特征(Receiver Operating Characteristic, ROC)曲線不需要設(shè)定這樣的閾值,ROC曲線縱坐標(biāo)是真正率陶缺,橫坐標(biāo)是假正率钾挟,如下圖,去對應(yīng)的計算公式:

真正率(True Positive Rate)  = \frac{TP}{TP + FN}

假正率(False Positive Rate) = \frac{FP}{FP + TN}

同時饱岸,TPR與FPR又有其他名稱等龙,如下:

? ??\star ?sensitivity = recall = true positive rate

? ??\star ?specificity = 1- false positive rate

假設(shè)我們的minority class, 也就是正例,是1伶贰。反例蛛砰,為0.

看出來沒有,sensitivity和specificity是條件與真實label Y的概率黍衙。我們講這個叫條件概率泥畅,那么意思就是說,無論Y的真實概率是多少琅翻,都不會影響sensitivity和specificity位仁。也就是說,這兩個metric是不會受imbalanced data影響的方椎,那么就很客觀聂抢。而precision就會隨著你的測試集里面的正反比例而變化。

? ? 另外值得注意的是棠众,AUC的計算方法同時考慮了學(xué)習(xí)器對于正例和負(fù)例的分類能力琳疏,在樣本不平衡的情況下有决,依然能夠?qū)Ψ诸惼髯鞒龊侠淼脑u價。AUC對樣本類別是否均衡并不敏感空盼,這也是不均衡樣本通常用AUC評價學(xué)習(xí)器性能的一個原因书幕。

例如在癌癥預(yù)測的場景中,假設(shè)沒有患癌癥的樣本為正例揽趾,患癌癥樣本為負(fù)例台汇,負(fù)例占比很大(大概0.1%),如果使用準(zhǔn)確率評估篱瞎,把所有的樣本預(yù)測為正例變可以獲得99.9%的準(zhǔn)確率苟呐。但是如果使用AUC,把所有樣本預(yù)測為正例俐筋,TPR為1牵素,F(xiàn)PR為1。這種情況下學(xué)習(xí)器的AUC值將等于1校哎,成功規(guī)避了樣本不均衡帶來的問題两波。

????例如在癌癥預(yù)測的場景中瞳步,假設(shè)沒有患癌癥的樣本為正例闷哆,患癌癥樣本為負(fù)例,負(fù)例占比很少(大概0.1%)单起,如果使用準(zhǔn)確率評估抱怔,把所有的樣本預(yù)測為正例便可以獲得99.9%的準(zhǔn)確率。但是如果使用AUC嘀倒,把所有樣本預(yù)測為正例屈留,TPR為1,F(xiàn)PR為1测蘑。這種情況下學(xué)習(xí)器的AUC值將等于0.5灌危,成功規(guī)避了樣本不均衡帶來的問題。

? ? 這個曲線就是以true positive rate 和false positive rate為軸碳胳,取不同的threshold點畫的勇蝙。每個分類器作出的預(yù)測,都是基于一個probability score的挨约。一般默認(rèn)的threshold都是0.5味混,如果probability > 0.5,那么這個sample被模型分成正例诫惭,反正則是反例翁锡。

真正率(True Positive Rate)就是召回率Recall

? ? ROC曲線和P-R曲線有些類似,ROC曲線越靠近左上角性能越好夕土。左上角坐標(biāo)為(0,1)馆衔,即FPR=0,TPR=1,根據(jù)FPR和TPR公式可以得知哈踱,此時FN=0荒适,F(xiàn)P=0,模型對所有樣本分類正確开镣,繪制ROC曲線很簡單刀诬,首先對所有樣本按預(yù)測概率排序,以每條樣本的預(yù)測概率為閾值邪财,計算相應(yīng)的FPR和TPR陕壹,然后線段連接。

? ? 當(dāng)數(shù)據(jù)量少時树埠,繪制ROC曲線不平滑糠馆;當(dāng)數(shù)據(jù)量大時,繪制的ROC曲線會趨于平滑怎憋。

ROC曲線可以很好的回答什么問題呢---不論class的基本概率怎么樣又碌,我的模型泛化能力能表現(xiàn)得多好?

一般來說绊袋,最優(yōu)的threshold就是橙色曲線離藍(lán)色虛線(基準(zhǔn)線)最遠(yuǎn)的一點毕匀,或者橙色曲線上離左上角最近的一點,再或者根據(jù)用戶自己定義的cost function來的癌别。如果ROC是光滑的皂岔,那么基本可以判斷沒有太大的overfitting(比如圖中0.2到0.4可能就有問題,但是樣本太少了)展姐,這個時候調(diào)模型可以只看AUC躁垛,面積越大一般認(rèn)為模型越好

(1)主要作用

? ??????1)ROC曲線很容易的查出任意閾值對學(xué)習(xí)器的泛化性能影響圾笨。

? ? ? ? ?2)有助于選擇最佳的閾值教馆。ROC曲線越靠近左上角,模型的查全率就越高擂达。最靠近左上角的ROC曲線上的點是分類最少的最好的閾值土铺,其假正例和假反例總數(shù)最少。????

? ? ? ? ?3)可以對不同的學(xué)習(xí)器比較性能谍婉。將各個學(xué)習(xí)器的ROC曲線繪制到同一坐標(biāo)中舒憾,直觀地鑒別優(yōu)劣,靠近左上角的ROC曲線所代表的學(xué)習(xí)器準(zhǔn)確性最高穗熬。

(2)優(yōu)點

? ? 1)該方法簡單镀迂、直觀、通過圖示可觀察分析方法的準(zhǔn)確性唤蔗,并可用肉眼作出判斷探遵。ROC曲線將真正例率和假正例率以圖示方法結(jié)合在一起窟赏,可準(zhǔn)確反映某種學(xué)習(xí)器真正例率的關(guān)系,是檢測準(zhǔn)確性的綜合代表箱季。

? ? 2)在生物信息學(xué)上的優(yōu)點:ROC曲線不固定閾值涯穷,允許中間狀態(tài)的存在,利于使用者結(jié)合專業(yè)知識藏雏,權(quán)衡漏診與誤診的影響拷况,選擇一個更加的閾值作為診斷參考值。

3.AUC

3.1 什么是AUC掘殴?

? ? AUC是一個模型評價指標(biāo)赚瘦,只能用于二分類模型的評價,對于二分類模型奏寨,還有很多其他評價指標(biāo)起意,比如logloss,accuracy病瞳,precision揽咕。如果你經(jīng)常關(guān)注數(shù)據(jù)挖掘比賽,比如kaggle,那你會發(fā)現(xiàn)AUC和logloss基本是最常見的模型評價指標(biāo)套菜。為什么AUC和logloss比accuracy更常用呢亲善?因為很多機器學(xué)習(xí)的模型對分類問題的預(yù)測結(jié)果都是概率,如果要計算accuracy笼踩,需要先把概率轉(zhuǎn)換成類別逗爹,這就需要手動設(shè)置一個閾值亡嫌,如果對一個樣本的預(yù)測概率高于這個預(yù)測嚎于,就把這個樣本放進(jìn)一個類別里面,低于這個閾值挟冠,放進(jìn)另一個類別里面于购。所以這個閾值很大程度上影響了accuracy的計算。使用AUC或者logloss可以避免把預(yù)測概率轉(zhuǎn)換成類別知染。

? ? AUC是Area under curve的首字母縮寫肋僧。AUC就是ROC曲線下的面積,衡量學(xué)習(xí)器優(yōu)劣的一種性能指標(biāo)控淡。從定義可知嫌吠,AUC可通過對ROC曲線下各部分的面積求和而得。假定ROC曲線是由坐標(biāo)為(x_1,y_1),(x_2,y_2),(x_3,y_3).........(x_m,y_m)的點按序連接而形成掺炭,則AUC可估算為:

AUC = \frac{1}{2} \sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1})

3.2 AUC的意義

? ? 通過AUC的定義我們知道了AUC是什么辫诅,怎么計算,但是還不清楚他的意義涧狮。如果從定義來理解AUC的含義炕矮,比較困難么夫,實際上AUC和Mann-Whitney U test有密切的聯(lián)系。

????從Mann–Whitney U statistic的角度來解釋肤视,AUC就是從所有1樣本中隨機選取一個樣本档痪, 從所有0樣本中隨機選取一個樣本,然后根據(jù)你的分類器對兩個隨機樣本進(jìn)行預(yù)測邢滑,把1樣本預(yù)測為1的概率為p1腐螟,把0樣本預(yù)測為1的概率為p0,p1>p0的概率就等于AUC困后。

? ? 即AUC是指隨機給定一個正樣本和一個負(fù)樣本遭垛,分類器輸出該正樣本為正的那個概率值比分類器輸出該負(fù)樣本為正的那個概率值要大的可能性。

? ? 所以AUC反應(yīng)的是分類器對樣本的排序能力操灿。根據(jù)這個解釋锯仪,如果我們完全隨機的對樣本分類,那么AUC應(yīng)該接近0.5.(所以一般訓(xùn)練出的模型趾盐,AUC>0.5庶喜,如果AUC=0.5,這個分類器等于沒有效果救鲤,效果與完全隨機一樣久窟,如果AUC<0.5,則可能是標(biāo)簽標(biāo)注錯誤等情況造成)

? ? 另外值得注意的是,AUC的計算方法同時考慮了學(xué)習(xí)器對于正例和負(fù)例的分類能力本缠,在樣本不平衡的情況下斥扛,依然能夠?qū)Ψ诸惼髯鞒龊侠淼脑u價。AUC對樣本分類是否均衡并不敏感丹锹,這也是不均衡樣本通常用AUC評價學(xué)習(xí)器性能的一個原因稀颁。

? ? 這個指標(biāo)尤其適用在某些場景下(如CTR預(yù)估),每次要范湖的是最有可能點擊的若干個廣告(根據(jù)CTR排序楣黍,選擇排在前面的若干個)匾灶,實際上便是在考驗?zāi)P偷呐判蚰芰Α3酥庾馄珻TR中存在著樣本不均衡的問題阶女,正負(fù)樣本比例通常會大于1:100,如果采用PR曲線哩治,則會導(dǎo)致AUC發(fā)生劇變秃踩,無法較好反應(yīng)模型效果。

? ? 然而ROC曲線不會隨著類別分布的改變而改變的優(yōu)點在一定程度上也是其缺點业筏。因為ROC曲線這種不變性其實影響著的是AUC值憔杨,或者說是評估分類器的整體性能。但是在某些場景下驾孔,我們會更關(guān)注正樣本芍秆,這時候就要用到PR曲線了惯疙。? ?

????比如信用卡欺詐檢測,我們會更關(guān)注precision和recall妖啥,比如說如果要求預(yù)測出為欺詐的人盡可能準(zhǔn)確霉颠,那么就是要提高 precision;而如果要盡可能多地預(yù)測出潛在的欺詐人群荆虱,那么就是要提高 recall蒿偎。一般來說,提高二分類的 threshold 就能提高 precision怀读,降低 threshold 就能提高 recall诉位,這時便可觀察 PR 曲線,得到最優(yōu)的 threshold菜枷。

AUC還和基尼(Gini)系數(shù)有聯(lián)系苍糠,滿足Gini + 1 = 2 * AUC

AUC計算主要與排序有關(guān),所以它對排序敏感啤誊,而對預(yù)測分?jǐn)?shù)沒那么敏感岳瞭。

4.對數(shù)損失

對數(shù)損失(logistic loss,logloss)是對預(yù)測概率的似然估計蚊锹,其標(biāo)準(zhǔn)形式為:logloss = -logP(Y|X)

對數(shù)損失最小化本質(zhì)上是利用樣本中的已知分布瞳筏,求解導(dǎo)致這種分布的最佳模型參數(shù),是這種分布出現(xiàn)概率最大牡昆。

logloss衡量的是預(yù)測概率分布和真實概率分布的差異性姚炕,取值越小越好。與AUC不同丢烘,logloss對預(yù)測概率敏感柱宦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市铅协,隨后出現(xiàn)的幾起案子捷沸,更是在濱河造成了極大的恐慌摊沉,老刑警劉巖狐史,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異说墨,居然都是意外死亡骏全,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門尼斧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姜贡,“玉大人,你說我怎么就攤上這事棺棵÷タ龋” “怎么了熄捍?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長母怜。 經(jīng)常有香客問我余耽,道長,這世上最難降的妖魔是什么苹熏? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任碟贾,我火速辦了婚禮,結(jié)果婚禮上轨域,老公的妹妹穿的比我還像新娘袱耽。我一直安慰自己,他們只是感情好干发,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布朱巨。 她就那樣靜靜地躺著,像睡著了一般枉长。 火紅的嫁衣襯著肌膚如雪蔬崩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天搀暑,我揣著相機與錄音沥阳,去河邊找鬼。 笑死自点,一個胖子當(dāng)著我的面吹牛桐罕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桂敛,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼功炮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了术唬?” 一聲冷哼從身側(cè)響起薪伏,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粗仓,沒想到半個月后嫁怀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡借浊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年塘淑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚂斤。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡存捺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出曙蒸,到底是詐尸還是另有隱情捌治,我是刑警寧澤岗钩,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站肖油,受9級特大地震影響凹嘲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜构韵,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一周蹭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疲恢,春花似錦凶朗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杂数,卻和暖如春宛畦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揍移。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工碉咆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妒穴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像幌羞,于是被迫代替她去往敵國和親蠢涝。 傳聞我的和親對象是個殘疾皇子爆存,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

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