久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

機(jī)器學(xué)習(xí)之GBDT原理和實(shí)踐

 NeighborMrSun 2023-02-27 發(fā)布于湖南

一,、引言

GBDT(Gradient Boosting Decision Tree)在數(shù)據(jù)分析和預(yù)測(cè)中的效果很好。它是一種基于決策樹的集成算法,。其中Gradient Boosting 是集成方法boosting中的一種算法,,通過(guò)梯度下降來(lái)對(duì)新的學(xué)習(xí)器進(jìn)行迭代。而GBDT中采用的就是CART決策樹,。

Boosting指把多個(gè)弱學(xué)習(xí)器相加,,產(chǎn)生一個(gè)新的強(qiáng)學(xué)習(xí)器。經(jīng)典的例子有:adaboost, GBDT, xgboost等,。如果每一個(gè)弱學(xué)習(xí)器用fi(x)  來(lái)表示的話,,那么Boosting的強(qiáng)學(xué)習(xí)器就可以表示為:

圖片

通俗的來(lái)說(shuō)就相當(dāng)于把多個(gè)學(xué)習(xí)器串聯(lián)(bagging是并聯(lián))。

二,、Regression Desicion Tree:回歸樹

2.1 回歸樹簡(jiǎn)介

    決策樹模型分為分類樹和回歸樹,,分類樹常用來(lái)分類問(wèn)題,回歸樹常用來(lái)預(yù)測(cè)問(wèn)題,。分類樹常用于分類標(biāo)簽值,,比如用戶性別、網(wǎng)頁(yè)是否是垃圾頁(yè)面,、用戶是不是作弊,;而回歸樹常用于預(yù)測(cè)真實(shí)數(shù)值,,比如用戶的年齡、用戶點(diǎn)擊的概率,、網(wǎng)頁(yè)相關(guān)程度等等,。

    回歸樹總體流程類似于分類樹,區(qū)別在于,,回歸樹的每一個(gè)節(jié)點(diǎn)都會(huì)得到一個(gè)預(yù)測(cè)值,,以年齡為例,該預(yù)測(cè)值等于屬于這個(gè)節(jié)點(diǎn)的所有人年齡的平均值,。分枝時(shí)窮舉每一個(gè)feature的每個(gè)閾值尋找最優(yōu)切分變量和最優(yōu)切分點(diǎn),,但衡量的準(zhǔn)則不再是分類樹中的基尼系數(shù),而是平方誤差最小化,。也就是被預(yù)測(cè)錯(cuò)誤的人數(shù)越多,,平方誤差就越大,通過(guò)最小化平方誤差找到最可靠的分枝依據(jù),。分枝直到每個(gè)葉子節(jié)點(diǎn)上人的年齡都唯一或者達(dá)到預(yù)設(shè)的終止條件(如葉子個(gè)數(shù)上限),,若最終葉子節(jié)點(diǎn)上人的年齡不唯一,則以該節(jié)點(diǎn)上所有人的平均年齡做為該葉子節(jié)點(diǎn)的預(yù)測(cè)年齡,。

    由于GBDT的核心在于累加所有樹的結(jié)果作為最終結(jié)果,,而分類樹得到的離散分類結(jié)果對(duì)于預(yù)測(cè)分類并不是這么的容易疊加(稍等后面會(huì)看到,其實(shí)并不是簡(jiǎn)單的疊加,,而是每一步每一棵樹擬合的殘差和選擇分裂點(diǎn)評(píng)價(jià)方式都是經(jīng)過(guò)公式推導(dǎo)得到的),,而對(duì)基于回歸樹所得到的數(shù)值進(jìn)行加減是有意義的(例如10歲+5歲-3歲=12歲),這是區(qū)別于分類樹的一個(gè)顯著特征(畢竟男+女=是男是女?,,這樣的運(yùn)算是毫無(wú)道理的),,GBDT在運(yùn)行時(shí)就使用到了回歸樹的這個(gè)性質(zhì),它將累加所有樹的結(jié)果作為最終結(jié)果,。所以GBDT中的樹都是回歸樹,,而不是分類樹,它用來(lái)做回歸預(yù)測(cè),,當(dāng)然回歸樹經(jīng)過(guò)調(diào)整之后也能用來(lái)做分類。(如何做分類,,稍后會(huì)介紹,,這是一個(gè)需要注意的地方)

2.2 回歸樹的生成

    首先看一個(gè)簡(jiǎn)單的回歸樹生成實(shí)例:

圖片

接下來(lái)具體說(shuō)說(shuō)回歸樹是如何進(jìn)行特征選擇生成二叉回歸樹的。

假設(shè)X 與Y 分別為輸入和輸出變量,,并且Y 是連續(xù)變量,,給定訓(xùn)練數(shù)據(jù)集

圖片

    我們利用最小二乘回歸樹生成算法來(lái)生成回歸樹f(x),即在訓(xùn)練數(shù)據(jù)集所在的輸入空間中,,遞歸地將每個(gè)區(qū)域分為兩個(gè)子區(qū)域并決定每個(gè)子區(qū)域上的輸出值,,構(gòu)建二叉決策樹,,步驟如下:

1)選擇最優(yōu)切分變量j 與切分點(diǎn)s ,求解

圖片

遍歷變量j ,,對(duì)固定的切分變量j 掃描切分點(diǎn)s,選擇使上式達(dá)到最小值得對(duì)j ,s

2)用選定的對(duì)( j , s ) 劃分區(qū)域并決定相應(yīng)的輸出值:

圖片

3)繼續(xù)對(duì)兩個(gè)子區(qū)域調(diào)用步驟(1),,(2),,直至滿足停止條件。

4)將輸入空間劃分為M MM個(gè)區(qū)域R 1 , R 2 , ? ? ? , Rm ,,在每個(gè)單元R m上有一個(gè)固定的輸出值cm,生成決策樹

圖片

三,、Boosting Decision Tree:提升樹

3.1 提升樹模型

提升方法采用加法模型(即基函數(shù)的線性組合)與前向分布算法。以決策樹為基函數(shù)的提升方法稱為提升樹(Boosting tree),。對(duì)分類問(wèn)題構(gòu)建的決策樹是二叉分類樹,,對(duì)回歸問(wèn)題構(gòu)建決策樹是二叉回歸樹。提升樹是迭代多棵回歸樹來(lái)共同決策,。當(dāng)采用平方誤差損失函數(shù)時(shí),,每一棵回歸樹學(xué)習(xí)的是之前所有樹的結(jié)論和殘差,,擬合得到一個(gè)當(dāng)前的殘差回歸樹,,殘差的意義如公式:殘差 = 真實(shí)值 - 預(yù)測(cè)值 ,。提升樹即是整個(gè)迭代過(guò)程生成的回歸樹的累加。提升樹模型可以表示為決策樹的加法模型,。

圖片

其中T ( x ; Θ m ) 表示決策樹;Θ m為決策樹的參數(shù),;M 為樹的個(gè)數(shù)。

3.2 提升樹算法

對(duì)回歸問(wèn)題的提升樹算法來(lái)說(shuō),,給定當(dāng)前模型fm?1 ( x )只需要簡(jiǎn)單地?cái)M合當(dāng)前模型的殘差。現(xiàn)將回歸問(wèn)題的提升樹算法敘述如下:

1)初始化f 0 ( x ) = 0

2)對(duì)m = 1 , 2 , ? ? ? , M 

a)計(jì)算殘差

圖片

b)擬合殘差rmi學(xué)習(xí)一個(gè)回歸樹,,得到T ( x ; Θ m ) 

c)更新f m ( x ) = f m ? 1 ( x ) + T ( x ; Θ m ) 

3)得到回歸問(wèn)題提升樹

圖片

接下來(lái)通過(guò)訓(xùn)練一個(gè)用于預(yù)測(cè)年齡的模型來(lái)展現(xiàn)算法的運(yùn)行流程:

1)首先,,訓(xùn)練集有4個(gè)人A , B , C , D,它們的年齡分別是14 , 16 , 24 , 26 ,,其中A , B分別是高一和高三學(xué)生,;C , D 分別是應(yīng)屆畢業(yè)生和工作兩年的員工,可用于分枝的特征包括上網(wǎng)時(shí)長(zhǎng)、購(gòu)物金額,、上網(wǎng)時(shí)段和對(duì)百度知道的使用方式,。如果是一棵傳統(tǒng)的回歸決策樹來(lái)訓(xùn)練,會(huì)得到下圖所示結(jié)果:

圖片

2)但是如果用GBDT來(lái)做這件事,,由于數(shù)據(jù)太少,,我們限定葉子節(jié)點(diǎn)最多有兩個(gè),即每棵樹都只有一個(gè)分枝,,并且限定只限定兩棵樹。我們會(huì)得到如下所示結(jié)果:

圖片

    第一棵樹的分枝與之前一樣,,也是使用購(gòu)物金額進(jìn)行區(qū)分,,兩撥人各自用年齡均值作為預(yù)測(cè)值,得到殘差值-1,、1,、-1、1,,然后拿這些殘差值替換初始值去訓(xùn)練生成第二棵回歸樹,,如果新的預(yù)測(cè)值和殘差相等,則只需把第二棵樹的結(jié)論累加到第一棵樹上就能得到真實(shí)年齡了,。第二棵樹只有兩個(gè)值1和-1,,直接可分成兩個(gè)節(jié)點(diǎn)。此時(shí)所有人的殘差都是0,,即每個(gè)人都得到了真實(shí)的預(yù)測(cè)值,。

3)將兩棵回歸樹預(yù)測(cè)結(jié)果進(jìn)行匯總,解釋如下:

A:14歲高一學(xué)生,;購(gòu)物較少,;經(jīng)常問(wèn)學(xué)長(zhǎng)問(wèn)題;預(yù)測(cè)年齡A = 15 – 1 = 14

B:16歲高三學(xué)生,;購(gòu)物較少,;經(jīng)常被學(xué)弟問(wèn)問(wèn)題;預(yù)測(cè)年齡B = 15 + 1 = 16

C:24歲應(yīng)屆畢業(yè)生,;購(gòu)物較多,,經(jīng)常問(wèn)師兄問(wèn)題;預(yù)測(cè)年齡C = 25 – 1 = 24

D:26歲工作兩年員工,;購(gòu)物較多,,經(jīng)常被師弟問(wèn)問(wèn)題;預(yù)測(cè)年齡D = 25 + 1 = 26

    對(duì)比初始的回歸樹與GBDT所生成的回歸樹,,可以發(fā)現(xiàn),最終的結(jié)果是相同的,那我們?yōu)槭裁催€要使用GBDT呢,?答案就是對(duì)模型過(guò)擬合的考慮,。過(guò)擬合是指為了讓訓(xùn)練集精度更高,學(xué)到了很多“僅在訓(xùn)練集上成立的規(guī)律”,,導(dǎo)致?lián)Q一個(gè)數(shù)據(jù)集后,,當(dāng)前規(guī)律的預(yù)測(cè)精度就不足以使人滿意了。畢竟,,在訓(xùn)練精度和實(shí)際精度(或測(cè)試精度)之間,,后者才是我們想要真正得到的。

    在上面這個(gè)例子中,,初始的回歸樹為達(dá)到100%精度使用了3個(gè)特征(上網(wǎng)時(shí)長(zhǎng),、時(shí)段、網(wǎng)購(gòu)金額),,但觀察發(fā)現(xiàn),,分枝“上網(wǎng)時(shí)長(zhǎng)>1.1h”很顯然過(guò)擬合了,不排除恰好A上網(wǎng)1.5h, B上網(wǎng)1小時(shí),,所以用上網(wǎng)時(shí)間是不是>1.1小時(shí)來(lái)判斷所有人的年齡很顯然是有悖常識(shí)的,。

    而在GBDT中,兩棵回歸樹僅使用了兩個(gè)特征(購(gòu)物金額與對(duì)百度知道的使用方式)就實(shí)現(xiàn)了100%的預(yù)測(cè)精度,,其分枝依據(jù)更合乎邏輯(當(dāng)然這里是相比較于上網(wǎng)時(shí)長(zhǎng)特征而言),,算法在運(yùn)行中也體現(xiàn)了“如無(wú)必要,勿增實(shí)體”的奧卡姆剃刀原理,。

3.3 提升樹實(shí)例

下表為訓(xùn)練數(shù)據(jù),,x xx的取值范圍為區(qū)間[ 0.5 , 10.5 ],y yy的取值范圍為區(qū)間[ 5.0 , 10.0 ] ,,學(xué)習(xí)這個(gè)回歸問(wèn)題的提升樹模型,,考慮只用二叉樹作為基函數(shù):

圖片

(1)步驟一:求f 1 ( x ) 即回歸樹T 1 ( x )

首先通過(guò)以下優(yōu)化問(wèn)題:

圖片

求解訓(xùn)練數(shù)據(jù)的切分點(diǎn)s

圖片

容易求得在R 1 , R 2 內(nèi)部使平方誤差達(dá)到最小值的c 1 , c 2 為

圖片

這里N 1 , N 2 是R 1 , R 2 的樣本點(diǎn)數(shù),。具體地,,求解訓(xùn)練數(shù)據(jù)的切分點(diǎn)。根據(jù)所給數(shù)據(jù),,考慮如下切分點(diǎn):

圖片

對(duì)各切分點(diǎn),,不難求出相應(yīng)的R 1 , R 2 , c 1 , c 2 及

圖片

例如,當(dāng)s = 2.5時(shí),,

圖片

遍歷所有的s,,計(jì)算m ( s ),結(jié)果列表如下:

圖片

可知當(dāng)s = 6.5 時(shí)m ( s ) 達(dá)到最小值,,此時(shí)

圖片

所以回歸樹T 1 ( x ) 為

圖片

用f 1 ( x )擬合訓(xùn)練數(shù)據(jù)的殘差,,表中r 2 i = y i ? f 1 ( x i )

圖片

平方損失誤差為:

圖片

(2)步驟二:求T 2 ( x ) 方法與求T 1 ( x )一樣,,只是擬合的數(shù)據(jù)是上一步得到的殘差,可以得到:

圖片

用f 2 ( x )擬合訓(xùn)練數(shù)據(jù)的平方損失誤差是:

圖片

繼續(xù)迭代

圖片

用f 6 ( x )擬合訓(xùn)練數(shù)據(jù)的平方損失誤差是

圖片

假設(shè)此時(shí)已滿足誤差要求,,那么f ( x ) = f 6 ( x )即為所求提升樹,。

四、Gradient Boosting Decision Tree:梯度提升決策樹

4.1 GBDT簡(jiǎn)介

    提升樹利用加法模型與前向分布算法實(shí)現(xiàn)學(xué)習(xí)的優(yōu)化過(guò)程,,即是通過(guò)迭代得到一系列的弱分類器,,進(jìn)而通過(guò)不同的組合策略得到相應(yīng)的強(qiáng)學(xué)習(xí)器。在GBDT的迭代中,,假設(shè)前一輪得到的學(xué)習(xí)器為f t ? 1 ( x ) 對(duì)應(yīng)的損失函數(shù)則為L(zhǎng) ( y , f t ? 1 ( x ) ) ,。因此新一輪迭代的目的就是找到一個(gè)弱分類器h t ( x ) ,使得損失函數(shù)L ( y , f t ? 1 ( x ) + h t ( x ) ) 達(dá)到最小,。因此問(wèn)題的關(guān)鍵就在于對(duì)損失函數(shù)的度量,,這也正是難點(diǎn)所在。當(dāng)損失函數(shù)是平方損失和指數(shù)損失時(shí),,每一步優(yōu)化是很簡(jiǎn)單的,。但對(duì)一般損失函數(shù)而言,往往每一步優(yōu)化沒(méi)那么容易,,如絕對(duì)值損失函數(shù)和Huber損失函數(shù),。常見的損失函數(shù)及其梯度如下表所示:

圖片

那我們?cè)趺礃硬拍苷业揭环N通用的擬合方法呢?

針對(duì)這一問(wèn)題,,F(xiàn)reidman提出了梯度提升算法:利用最速下降的近似方法,,即利用損失函數(shù)的負(fù)梯度在當(dāng)前模型的值

圖片

作為回歸問(wèn)題中提升樹算法的殘差的近似值(與其說(shuō)負(fù)梯度作為殘差的近似值,不如說(shuō)殘差是負(fù)梯度的一種特例,,擬合一個(gè)回歸樹),,這就是梯度提升決策樹。

4.2 GBDT算法步驟

算法步驟如下:

圖片

接下來(lái)對(duì)上圖中的算法步驟進(jìn)行詳細(xì)解釋:

1)初始化弱分類器,,估計(jì)使損失函數(shù)極小化的一個(gè)常數(shù)值,,此時(shí)樹僅有一個(gè)根結(jié)點(diǎn)

圖片

2)對(duì)迭代輪數(shù)1 , 2 , ? ? ? , M(即產(chǎn)生樹的個(gè)數(shù)為M )

a)對(duì)i = 1 , 2 , ? ? ? , N(N 個(gè)樣本),計(jì)算損失函數(shù)的負(fù)梯度值在當(dāng)前模型的值,,將它作為殘差的估計(jì),。即

圖片

對(duì)于平方損失函數(shù),它就是通常所說(shuō)的殘差,;對(duì)于一般損失函數(shù),,它就是殘差的近似值。

b)對(duì)rmi擬合一個(gè)回歸樹,,得到第m 棵樹的葉結(jié)點(diǎn)區(qū)域Rmj  j=1,2 ,? ? ? ,J 

c)對(duì)j = 1 , 2 , ? ? ? , J 計(jì)算

圖片

即利用線性搜索估計(jì)葉結(jié)點(diǎn)區(qū)域的值,,使損失函數(shù)極小化。

d)更新回歸樹

圖片

I(x)為Indicator函數(shù),,即樣本x屬于哪個(gè)葉節(jié)點(diǎn),,即加上這個(gè)葉節(jié)點(diǎn)的cmj ,。在這里,其實(shí)應(yīng)該有ρ ,,只不過(guò)圖中沒(méi)有標(biāo)注而已,,具體在4.3節(jié)例子中可以看到。

3)得到輸出的最終模型

圖片

NOTE: 在這里,,需要仔細(xì)解釋下上述算法的注意事項(xiàng):

(1)選擇不同的損失函數(shù),梯度值不一樣

當(dāng)損失函數(shù)為MSE時(shí),,梯度值為

圖片

當(dāng)損失函數(shù)為MAE時(shí),,梯度值為

圖片

當(dāng)損失函數(shù)為logistic loss時(shí):(二分類任務(wù))

        損失函數(shù)為:

圖片

        梯度值為:

圖片

(2)葉子節(jié)點(diǎn)的取值和所選擇的loss function有關(guān)。對(duì)于不同的Loss function,,葉子節(jié)點(diǎn)的值也不一樣,。

選擇MSE作為loss function時(shí):

圖片

選擇MAE作為L(zhǎng)oss function時(shí):

圖片

選擇Logistic loss作為L(zhǎng)oss function時(shí):

圖片

選擇指數(shù)損失作為loss function時(shí):

圖片

4.3 GBDT實(shí)例

    在介紹完GBDT的訓(xùn)練過(guò)程和細(xì)節(jié)后,可能大家還有些懵,。我們舉例來(lái)說(shuō)明GBDT的訓(xùn)練過(guò)程,,可以清晰地看明白過(guò)程。為了方便說(shuō)明,,我們用下面這個(gè)很簡(jiǎn)單的數(shù)據(jù),。

圖片

  1. 選擇MSE做為建樹的分裂準(zhǔn)則

  2. 選擇MSE作為誤差函數(shù)

  3. 樹的深度設(shè)置為1

  4. (1)步驟一:根據(jù)GBDT算法,我們需要初始化f 0 ( x ),,MSE使用均值作為初始化,,因此f0( x ) = 7.307 。

  5. (2)步驟二:擬合第一顆樹( m = 1 )由公式,,可以計(jì)算負(fù)梯度值:

  6. 圖片

  7. 具體結(jié)果如下表:

  8. 圖片

  9. 得到梯度值后,,下面就是以 y i ~ 為目標(biāo)值進(jìn)行擬合。

    這里簡(jiǎn)單回顧一下決策樹建樹的過(guò)程:

  10.     決策樹學(xué)習(xí)最關(guān)鍵的步驟就是選擇最優(yōu)劃分屬性,,一般而言,,隨著劃分過(guò)程不斷的進(jìn)行,我們希望決策樹的分支節(jié)點(diǎn)所包含的樣本盡可能屬于同一類別(方差?。?。通常,我們會(huì)選擇一個(gè)準(zhǔn)則來(lái)評(píng)價(jià)劃分的質(zhì)量,,比如回歸樹中經(jīng)常使用的MSE(這種方法屬于啟發(fā)式的)對(duì)于連續(xù)值,,我們可以窮盡每個(gè)值v ,把每個(gè)值v 作為一個(gè)分裂點(diǎn)(< = v 和> v ),然后計(jì)算兩個(gè)分支的MSE left ,、 MSE right ,。選擇最小的MSE sum =MSleft+  MSE right  的分裂點(diǎn)v。當(dāng)然關(guān)于連續(xù)值,,也可以把屬性值從小到大排序,,選擇每2個(gè)值的中值進(jìn)行判斷,。

        對(duì)于類別型特征,我們有類似的做法,,通過(guò)= 和≠ 來(lái)劃分,。當(dāng)選擇1 作為分裂點(diǎn)時(shí)候,MSleft= 0 ,,MSE right= 1.747 ,;當(dāng)選擇2 作為分裂點(diǎn)時(shí)候,MSleft= 0.0049 ,, MSE right = 1.5091 依次,,窮盡所有取值??梢缘玫疆?dāng)選擇6 66作為分裂點(diǎn)時(shí)MSE sum = 0.3276最小,。

    圖片

    至此,我們完成了第一顆樹的擬合,,擬合完之后我們得到了Rjm以及cjm ,具體為:

    圖片

    最后更新f1( x i )值

    圖片

    為了防止過(guò)擬合,,會(huì)增加一個(gè)學(xué)習(xí)率系數(shù)

    圖片

    當(dāng)ρ = 0.1 時(shí),上面的計(jì)算結(jié)果變?yōu)?/p>

    圖片

    至此一輪迭代(第一個(gè)顆樹擬合)完成,,下面開始第二輪迭代(第二顆樹擬合),。

    (3)步驟三:擬合第二顆樹(m = 2 )

    比如,這里示范計(jì)算

    圖片

    其他由公式計(jì)算可以得到下表:

    圖片

    因此,,在第二顆樹中,,擬合的是新的梯度值。下面的過(guò)程就是建樹->計(jì)算葉子節(jié)點(diǎn)的值,、葉子節(jié)點(diǎn)的區(qū)間->更新f 2 ( x ),。所以就不在累述了。

    最后得到兩個(gè)葉子節(jié)點(diǎn)值分別為:

    圖片

    最后,,我們來(lái)看一下如何進(jìn)行預(yù)測(cè),。

    圖片

給定一個(gè)新樣本x時(shí),預(yù)測(cè)值就是F2(x),。

五,、總結(jié)

我們來(lái)簡(jiǎn)單的總結(jié)一下。

    回頭看,,其實(shí)GBDT的思路是很簡(jiǎn)單的,,每一次用一個(gè)回歸樹來(lái)擬合一個(gè)梯度值。而這個(gè)梯度值就只是損失函數(shù)的一階導(dǎo)數(shù)在當(dāng)前模型的取值,。擬合完一顆樹之后,,需要計(jì)算葉子節(jié)點(diǎn)的值,而這個(gè)值是和損失函數(shù)有關(guān)的,,當(dāng)然,,數(shù)學(xué)大神們已經(jīng)為我們計(jì)算好常用的一些損失函數(shù)的葉子節(jié)點(diǎn)取值,。最終預(yù)測(cè)結(jié)果其實(shí)就是每一顆樹的預(yù)測(cè)結(jié)果相加,所以整個(gè)過(guò)程都非常的好理解,。即為:初始化->計(jì)算負(fù)梯度值->用回歸樹擬合負(fù)梯度值->計(jì)算葉子節(jié)點(diǎn)值->更新f m ( x ),。

原文鏈接:https://blog.csdn.net/anshuai_aw1/article/details/82888222

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多