特征分解以及奇異值分解

首先我們來看幾個公式
variance公式:
\sigma ^ { 2 } ( x ) = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( x _ { i } - \mu \right) ^ { 2 }
covariance公式, 即E [ ( x - E [ x ] ) ( y - E [ y ] ) ]:
\sigma ( x , y ) = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( x - \mu _ { x } \right) \left( y - \mu _ { y } \right)
當(dāng)隨機(jī)變量x和y相同時, covariance等同于variance: \sigma ( x , x ) = \sigma ^ { 2 } ( x )
如果協(xié)方差covariance等于0說明這兩個隨機(jī)變量不相關(guān)
協(xié)方差矩陣:
\mathbf { \Sigma } = \left[ \begin{array} { c c c c } { \sigma \left( X _ { 1 } , X _ { 1 } \right) } & { \sigma \left( X _ { 1 } , X _ { 2 } \right) } & { \dots } & { \sigma \left( X _ { 1 } , X _ { n } \right) } \\ { \sigma \left( X _ { 2 } , X _ { 1 } \right) } & { \sigma \left( X _ { 2 } , X _ { 2 } \right) } & { \dots } & { \sigma \left( X _ { 2 } , X _ { n } \right) } \\ { \vdots } & { \vdots } & { \ddots } & { \vdots } \\ { \sigma \left( X _ { n } , X _ { 1 } \right) } & { \sigma \left( X _ { n } , X _ { 2 } \right) } & { \dots } & { \sigma \left( X _ { n } , X _ { n } \right) } \end{array} \right]
均值中心化(mean centering): 指得是將一系列的樣本點的均值置0,也就是每個樣本點的值減去所有樣本點的均值, 這樣新生成的所有樣本點的均值即為0撵割。
現(xiàn)在我們設(shè)z:
z=\left[ \begin{array} { c c c c } {v_{11}}&{v_{12}}&v_{13}&...\\{v_{21}}&{v_{22}}&v_{23}&...\\{v_{31}}&{v_{32}}&v_{33}&... \end{array}\right]
其中z的每一行都是mean centred后的特征向量feature vector, 此時, 之前的協(xié)方差矩陣\Sigma就可表示為 (因為均值都變?yōu)?, 所以原來(x-\mu_1)(y-\mu_2)直接變?yōu)榱藊*y )
\Sigma \propto \mathbf { Z } ^ { \mathrm { T } } \mathbf { Z }

1. ****Principal axes of variation (變化主軸)

Principal axes of variation指的是對于高維數(shù)據(jù)而言, 變化率最顯著的數(shù)據(jù)所在維度, 為了理解這一概念, 首先介紹基向量(basis)

一組基是由n維空間中n個線性獨立的向量組成, 這些向量之間是垂直的, 它們構(gòu)成了一個坐標(biāo)系統(tǒng), 而n維空間中有無限組基向量

基向量

**
**

第一主成分軸(****The ?rst principal axis****):

第一主成分軸指的是對在n維空間中的數(shù)據(jù)點, 指向最大variance方向的軸

**
**

第一和第二成分主軸

第二主成分軸是指垂直于第一主成分軸同時指向最大variance方向的軸

以此類推, 第三主成分軸是垂直于第一和第二的前提下, 指向有著最大variance的軸

2. ****特征向量和特征根

特征向量和特征根

最多有n對 特征向量-特征根對
其中若A是對稱矩陣(對于任何方形矩陣X错英,X+X^T是對稱矩陣)的話, 則特征向量的集合是正交的
如果A是協(xié)方差矩陣的話, 那這些特征根就是主成分坐標(biāo)軸(principal axes)

對于n\leq4的情況, 可以通過代數(shù)的方法解得特征根和特征方程池颈。
但對于更大的矩陣, 就需要特征分解(Eigendecomposition,簡寫為EVD)了。

3. ****特征分解

特征值分解(EVD)蜓竹,在這里互例,選擇一種特殊的矩陣——對稱陣(酉空間中叫hermite矩陣即厄米陣)敷钾。對稱陣有一個性質(zhì):它總能相似對角化,對稱陣不同特征值對應(yīng)的特征向量兩兩正交娱两。一個矩陣能相似對角化即說明其特征子空間即為其列空間,若不能對角化則其特征子空間為列空間的子空間〗鹇穑現(xiàn)在假設(shè)存在mxm的滿秩對稱矩陣A十兢,它有m個不同的特征值,設(shè)特征值為\lambda_i,對應(yīng)的單位特征向量為x_i
則有:
\left.\begin{aligned} A x _ { 1 } & = \lambda _ { 1 } x _ { 1 } \\ A x _ { 2 } & = \lambda _ { 2 } x _ { 2 } \\...\\ A x _ { m } & = \lambda _ { m } x _ { m } \end{aligned} \right.
將上面的式子用矩陣形式表示, 進(jìn)而:
\left. \begin{array} { c } { A U = U \Lambda } \\ { U = \left[ x _ { 1 } x _ { 2 } \cdots x _ { m } \right] } \end{array} \right.
\Lambda = \left[ \begin{array} { c c c } { \lambda _ { 1 } } & { \dots } & { 0 } \\ { \vdots } & { \ddots } & { \vdots } \\ { 0 } & { \cdots } & { \lambda _ { m } } \end{array} \right]
令式子A U = U \Lambda兩邊各除以一個U, 則有(由于對稱陣特征向量兩兩正交摇庙,所以U為正交陣旱物,正交陣的逆矩陣等于其轉(zhuǎn)置):
A = U \Lambda U ^ { - 1 } = U \Lambda U ^ { T }
這里假設(shè)A有m個不同的特征值,實際上卫袒,只要A是對稱陣其均有如上分解宵呛。

特征分解

如果A是對稱矩陣(譬如協(xié)方差矩陣), 此時Q^{-1}=Q^T (即特征向量是正交的), 所以此時
\mathbf { A } = \mathbf { Q } \mathbf { \Lambda } \mathbf { Q } ^ { \mathrm { T } }
將eigenvector和對應(yīng)的eigenvalue排序, PCA取前k個

要明確的是,一個矩陣其實就是一個線性變換夕凝,因為一個矩陣乘以一個向量后得到的向量宝穗,其實就相當(dāng)于將這個向量進(jìn)行了線性變換。比如說下面的一個矩陣:
M = \left[ \begin{array} { l l } { 3 } & { 0 } \\ { 0 } & { 1 } \end{array} \right]
因為這個矩陣M乘以一個向量(x,y)的結(jié)果是:
\left[ \begin{array} { l l } { 3 } & { 0 } \\ { 0 } & { 1 } \end{array} \right] \left[ \begin{array} { l } { x } \\ { y } \end{array} \right] = \left[ \begin{array} { c } { 3 x } \\ { y } \end{array} \right]
它其實對應(yīng)的線性變換是下面的形式:

拉伸變換

上面的矩陣是對稱的码秉,所以這個變換是一個對x逮矛,y軸的方向一個拉伸變換, 當(dāng)矩陣不是對稱的時候,假如說矩陣是下面的樣子:

M = \left[ \begin{array} { l l } { 1 } & { 1 } \\ { 0 } & { 1 } \end{array} \right]
它所描述的變換是下面的樣子:

非對稱矩陣

在圖中转砖,藍(lán)色的箭頭是一個最主要的變化方向(變化方向可能有不止一個)橱鹏,如果我們想要描述好一個變換,那我們就描述好這個變換主要的變化方向就好了。反過頭來看看之前特征值分解的式子莉兰,分解得到的Σ矩陣是一個對角陣挑围,里面的特征值是由大到小排列的,這些特征值所對應(yīng)的特征向量就是描述這個矩陣變化方向(從主要的變化到次要的變化排列), 當(dāng)矩陣是高維的情況下糖荒,那么這個矩陣就是高維空間下的一個線性變換杉辙,我們通過特征值分解得到的前N個特征向量,那么就對應(yīng)了這個矩陣最主要的N個變化方向捶朵。我們利用這前N個變化方向蜘矢,就可以近似這個矩陣(變換)。也就是之前說的:提取這個矩陣最重要的特征综看。

總結(jié)一下品腹,特征值分解可以得到特征值與特征向量,特征值表示的是這個特征到底有多重要红碑,而特征向量表示這個特征是什么

4. ****PCA流程

輸入:n維樣本集D=(x^{(1)}, x^{(2)},...,x^{(m)})舞吭,要降維到的維數(shù)n'.
輸出:降維后的樣本集D'

  1. 對所有的樣本進(jìn)行中心化:x^{(i)} = x^{(i)} - \frac{1}{m}\sum\limits_{j=1}^{m} x^{(j)}
  2. 計算樣本的協(xié)方差矩陣XX^T, 注意, 協(xié)方差矩陣就等于XX^T
  3. 對矩陣XX^T進(jìn)行特征值分解
  4. 取出最大的n'個特征值對應(yīng)的特征向量(w_1,w_2,...,w_{n'}), 將所有的特征向量標(biāo)準(zhǔn)化后,組成特征向量矩陣W析珊。
  5. 對樣本集中的每一個樣本x^{(i)}, 轉(zhuǎn)化為新的樣本 z^{(i)}=W^Tx^{(i)}
  6. 得到輸出樣本集D' =(z^{(1)}, z^{(2)},...,z^{(m)})

有時候羡鸥,我們不指定降維后的n'的值,而是換種方式忠寻,指定一個降維到的主成分比重閾值t惧浴。這個閾值t在(0,1]之間。假如我們的n個特征值為\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_n, 則n'可以通過下式得到:
\frac{\sum\limits_{i=1}^{n'}\lambda_i}{\sum\limits_{i=1}^{n}\lambda_i} \geq t

這里對PCA算法做一個總結(jié)奕剃。作為一個非監(jiān)督學(xué)習(xí)的降維方法衷旅,它只需要特征值分解,就可以對數(shù)據(jù)進(jìn)行壓縮纵朋,去噪芜茵。因此在實際場景應(yīng)用很廣泛。為了克服PCA的一些缺點倡蝙,出現(xiàn)了很多PCA的變種九串,比如第六節(jié)的為解決非線性降維的KPCA,還有解決內(nèi)存限制的增量PCA方法Incremental PCA寺鸥,以及解決稀疏數(shù)據(jù)降維的PCA方法Sparse PCA等猪钮。

PCA算法的主要優(yōu)點有:

1)僅僅需要以方差衡量信息量,不受數(shù)據(jù)集以外的因素影響胆建。

2)各主成分之間正交烤低,可消除原始數(shù)據(jù)成分間的相互影響的因素。

3)計算方法簡單笆载,主要運算是特征值分解扑馁,易于實現(xiàn)涯呻。

PCA算法的主要缺點有:

1)主成分各個特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強(qiáng)腻要。

2)方差小的非主成分也可能含有對樣本差異的重要信息复罐,因降維丟棄可能對后續(xù)數(shù)據(jù)處理有影響。

5. ****奇異值分解

奇異值分解是一個有著很明顯的物理意義的一種方法雄家,它可以將一個比較復(fù)雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示效诅,這些小矩陣描述的是矩陣的重要的特性。

特征值分解是一個提取矩陣特征很不錯的方法趟济,但是它只是對方陣而言的乱投,在現(xiàn)實的世界中,我們看到的大部分矩陣都不是方陣, 比如說有N個學(xué)生顷编,每個學(xué)生有M科成績戚炫,這樣形成的一個N * M的矩陣就不可能是方陣, 此時即用到了奇異值分解, 奇異值分解是一個能適用于任意的矩陣的一種分解的方法:

奇異值分解

其中p是矩陣M的秩, 秩代表線性不相關(guān)的行或者列的數(shù)量

U是一個m * p的方陣(里面的向量是正交的,U里面的向量稱為左奇異向量)媳纬,Σ是一個p * p的矩陣(除了對角線的元素都是0双肤,對角線上的元素稱為奇異值),V’(V的轉(zhuǎn)置)是一個p * n的矩陣层宫,里面的行向量也是正交的杨伙,V里面的向量稱為右奇異向量其监。

左奇異向量集合是MM^T的特征向量集合
右奇異向量集合是M^TM的特征向量集合
The singular values are the square roots of the eigenvalues of the corresponding eigenvectors of M^TM and MM^T
如果M是mean centred的特征向量矩陣的話, V的列向量是M^TM的特征向量, 它們是M的主成分(principle components)萌腿。

那么奇異值和特征值是怎么對應(yīng)起來的呢?首先抖苦,我們將一個矩陣M的轉(zhuǎn)置乘以M毁菱,將會得到一個方陣,我們用這個方陣求特征值可以得到:
\left( M ^ { T } M \right) v _ { i } = \lambda _ { i } v _ { i }
這里得到的v锌历,就是我們上面的右奇異向量贮庞。此外我們還可以得到:
\left. \begin{array} { l } { \sigma _ { i } = \sqrt { \lambda } _ { i } } \\ { u _ { i } = \frac { 1 } { \sigma } M v _ { i } } \end{array} \right.
這里的σ就是上面說的奇異值,u就是上面說的左奇異向量
奇異值σ跟特征值類似究西,在矩陣Σ中也是從大到小排列窗慎,而且σ的減少特別的快,在很多情況下卤材,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上了遮斥。也就是說,我們也可以用前r大的奇異值來近似描述矩陣扇丛,這里定義一下部分奇異值分解:

近似奇異值分解

右邊的三個矩陣相乘的結(jié)果將會是一個接近于M的矩陣术吗,在這兒,r越接近于p帆精,則相乘的結(jié)果越接近于M较屿。而這三個矩陣的面積之和(在存儲觀點來說隧魄,矩陣面積越小,存儲量就越邪)要遠(yuǎn)遠(yuǎn)小于原始的矩陣M购啄,我們?nèi)绻胍獕嚎s空間來表示原矩陣A,我們存下這里的三個矩陣:U末贾、Σ闸溃、V就好了。

SVD流程:

SVD流程

至于為什么要用基于SVD的PCA是因為:

  1. 計算可行性

  2. SVD的速度比EVD更快

除此之外, SVD適用的場合有:

  1. 求偽逆(Pseudoinverse)

  2. 解homogeneous linear equations, 如Ax=0

  3. 數(shù)據(jù)挖掘: 如基于CF的推薦系統(tǒng)

SVD求偽逆的一個例子

A矩陣的偽逆代表其與A的乘積等于單位矩陣

我們來具體算一個矩陣A的偽逆:

\mathbf { A } = \left[ \begin{array} { c c } { 1 } & { 1 } \\ { 0 } & { 1 } \\ { 1 } & { 0 } \\ { 1 } & { 1 } \end{array} \right] \Rightarrow \mathbf { A } ^ { * } \mathbf { A } = \left[ \begin{array} { c c c c } { 1 } & { 0 } & { 1 } & { 1 } \\ { 1 } & { 1 } & { 0 } & { 1 } \end{array} \right] \left[ \begin{array} { c c } { 1 } & { 1 } \\ { 0 } & { 1 } \\ { 1 } & { 0 } \\ { 1 } & { 1 } \end{array} \right] = \left[ \begin{array} { c c } { 3 } & { 2 } \\ { 2 } & { 3 } \end{array} \right]

易知拱撵,rank(A*A)=2辉川。下面來求矩陣A*A的特征值,于是有

\operatorname { det } \left| \begin{array} { c c } { 3 - \lambda } & { 2 } \\ { 2 } & { 3 - \lambda } \end{array} \right| = \lambda ^ { 2 } - 6 \lambda + 9 - 4 = ( \lambda - 5 ) ( \lambda - 1 ) \Rightarrow \lambda _ { 1 } = 5 , \lambda _ { 2 } = 1

接下來求對應(yīng)的特征向量拴测,因為

\mathbf { A } ^ { * } \mathbf { A } v = \lambda v \Rightarrow \left( \mathbf { A } ^ { * } \mathbf { A } - \lambda I \right) v = 0

所以可知當(dāng)λ1=5時乓旗,對應(yīng)的特征向量(注意結(jié)果要正交歸一化):

\mathbf { A } ^ { * } \mathbf { A } - 5 I = \left[ \begin{array} { c c } { - 2 } & { 2 } \\ { 2 } & { - 2 } \end{array} \right] \Rightarrow u _ { 1 } = \left[ \begin{array} { c } { \frac { 1 } { \sqrt { 2 } } } \\ { \frac { 1 } { \sqrt { 2 } } } \end{array} \right]

同理還有當(dāng)λ2=1時,對應(yīng)的特征向量

\mathbf { A } ^ { * } \mathbf { A } - 1 I = \left[ \begin{array} { c c } { 2 } & { 2 } \\ { 2 } & { 2 } \end{array} \right] \Rightarrow u _ { 2 } = \left[ \begin{array} { c } { \frac { 1 } { \sqrt { 2 } } } \\ { - \frac { 1 } { \sqrt { 2 } } } \end{array} \right]

如此便得到了SVD中需要的U矩陣

U=\left[ \begin{array} { c c } { \frac { 1 } { \sqrt { 2 } } } & { \frac { 1 } { \sqrt { 2 } } } \\ { \frac { 1 } { \sqrt { 2 } } } & { \frac { - 1 } { \sqrt { 2 } } } \end{array} \right]

為了求出矩陣V集索,先求W:

\mathbf { w } = \mathbf { A } \mathbf { U } = \left[ \begin{array} { c c } { 1 } & { 1 } \\ { 0 } & { 1 } \\ { 1 } & { 0 } \\ { 1 } & { 1 } \end{array} \right] \left[ \begin{array} { c c } { \frac { 1 } { \sqrt { 2 } } } & { \frac { 1 } { \sqrt { 2 } } } \\ { \frac { 1 } { \sqrt { 2 } } } & { \frac { - 1 } { \sqrt { 2 } } } \end{array} \right] = \left[ \begin{array} { c c } { \sqrt { 2 } } & { 0 } \\ { 1 / \sqrt { 2 } } & { - 1 / \sqrt { 2 } } \\ { 1 / \sqrt { 2 } } & { 1 / \sqrt { 2 } } \\ { \sqrt { 2 } } & { 0 } \end{array} \right]= \left[ \begin{array} { l l } { w _ { 1 } } & { w _ { 2 } } \end{array} \right]

于是可知

v _ { 1 } = \frac { w _ { 1 } } { \sqrt { 5 } } , \quad v _ { 2 } = \frac { w _ { 2 } } { \sqrt { 1 } } \Rightarrow \mathbf { V } = \left[ \begin{array} { l l } { v _ { 1 } } & { v _ { 2 } } \end{array} \right]

所以根據(jù)公式A的偽逆就是, 其中V*代表其轉(zhuǎn)置矩陣

\mathbf { A } ^ { \dagger } = \mathbf { U } \mathbf { \Lambda } \mathbf { V } ^ { * } = \left[ \begin{array} { c c } { \frac { 1 } { \sqrt { 2 } } } & { \frac { 1 } { \sqrt { 2 } } } \\ { \frac { 1 } { \sqrt { 2 } } } & { \frac { - 1 } { \sqrt { 2 } } } \end{array} \right] \left[ \begin{array} { c c } { \frac { 1 } { \sqrt { 5 } } } & { 0 } \\ { 0 } & { \frac { 1 } { \sqrt { 1 } } } \end{array} \right] \left[ \begin{array} { c c c } { \frac { \sqrt { 2 } } { \sqrt { 5 } } } & { 1 / \sqrt { 10 } } & { 1 / \sqrt { 10 } } & { \frac { \sqrt { 2 } } { \sqrt { 5 } } } \\ { 0 } & { - 1 / \sqrt { 2 } } & { 1 / \sqrt { 2 } } & { 0 } \end{array} \right]

6. ****SVD和EVD的計算方法

普遍來說, 這些計算方法都是迭代的:

  1. Power Iteration

-Repeated for each E.V. by rotating and truncating the input to remove the effect of the previous E.V.

  1. “Arnoldi Iteration” and the “Lanczos Algorithm”

-Move ef?cient variants of Power Iteration

-use the “Gram-Schmidt” process to ?nd the orthonormal basis of the top-r E.Vs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屿愚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子务荆,更是在濱河造成了極大的恐慌妆距,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件函匕,死亡現(xiàn)場離奇詭異娱据,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盅惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門中剩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抒寂,你說我怎么就攤上這事结啼。” “怎么了屈芜?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵郊愧,是天一觀的道長。 經(jīng)常有香客問我井佑,道長属铁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任毅糟,我火速辦了婚禮红选,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姆另。我一直安慰自己喇肋,他們只是感情好坟乾,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝶防,像睡著了一般甚侣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上间学,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天殷费,我揣著相機(jī)與錄音,去河邊找鬼低葫。 笑死详羡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿悬。 我是一名探鬼主播实柠,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼善涨!你這毒婦竟也來了窒盐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钢拧,失蹤者是張志新(化名)和其女友劉穎蟹漓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體源内,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡葡粒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姿锭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塔鳍。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡伯铣,死狀恐怖呻此,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腔寡,我是刑警寧澤焚鲜,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站放前,受9級特大地震影響忿磅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凭语,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一葱她、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧似扔,春花似錦吨些、人聲如沸搓谆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泉手。三九已至,卻和暖如春偶器,著一層夾襖步出監(jiān)牢的瞬間斩萌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工屏轰, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留颊郎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓霎苗,卻偏偏與公主長得像袭艺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叨粘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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