譜聚類|機(jī)器學(xué)習(xí)推導(dǎo)系列(二十)

一、概述

對于下圖所示的數(shù)據(jù)進(jìn)行聚類,可以采用GMM或者K-Means的方法:

數(shù)據(jù)

然而對于下圖所示的數(shù)據(jù),單純的GMM和K-Means就無效了,可以通過核方法對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,然后再進(jìn)行聚類:

數(shù)據(jù)

如果直接對上圖所示的數(shù)據(jù)進(jìn)行聚類的話可以考慮采用譜聚類(spectral clustering)的方法。

總結(jié)來說,聚類算法可以分為兩種思路:

①Compactness,這類有 K-means,GMM 等,但是這類算法只能處理凸集,為了處理非凸的樣本集,必須引?核技巧。
②Connectivity,這類以譜聚類為代表。

二、基礎(chǔ)知識(shí)

  1. 無向權(quán)重圖

譜聚類的方法基于帶權(quán)重的無向圖,圖的每個(gè)節(jié)點(diǎn)是一個(gè)樣本點(diǎn),圖的邊有權(quán)重,權(quán)重代表兩個(gè)樣本點(diǎn)的相似度。

假設(shè)總共N個(gè)樣本點(diǎn),這些樣本點(diǎn)構(gòu)成的圖可以用G=(V,E)表示,其中V=\left \{v_1,v_2,\cdots ,v_N\right \},圖中的每個(gè)點(diǎn)v_i也就代表了一個(gè)樣本x_i,E是邊,用鄰接矩陣(也是相似度矩陣)W_{N\times N}來表示,W=[w_{ij}],1\leq i,j\leq N,由于是無向圖,因此w_{ij}=w_{ji}

另外還有度的概念,這里可以類比有向圖中的出度和入度的概念,不過圖中的點(diǎn)v_i的度d_i并不是和該點(diǎn)相連的點(diǎn)的數(shù)量,而是和其相連的邊的權(quán)重之和,也就是鄰接矩陣的每一行的值加起來,即:

d_{i}=\sum_{j=1}^{N}w_{ij}

而圖的度矩陣(對角矩陣)D_{N\times N}可以表示如下:

D=\begin{bmatrix} d_{1} & & &\\ & d_{2} & & \\ & & & \\ & & & d_{N} \end{bmatrix}

另外我們定義,對于點(diǎn)集V的一個(gè)子集A\subset V,我們定義:

|A|:=子集A中點(diǎn)的個(gè)數(shù)\\ vol(A):=\sum _{i\in A}d_{i}

  1. 鄰接矩陣

構(gòu)建鄰接矩陣W一共有三種方法,分別是\epsilon-近鄰法、k近鄰法和全連接法。

  • \epsilon-近鄰法

首先需要設(shè)置一個(gè)閾值\epsilon,比較任意兩點(diǎn)x_ix_j之間的距離s_{ij}=||x_{i}-x_{j}||_{2}^{2}\epsilon的大小,定義鄰接矩陣如下:

w_{ij}=\left\{\begin{matrix} 0,s_{ij}>\epsilon\\ \epsilon ,s_{ij}\leq \epsilon \end{matrix}\right.

這種方法表示如果兩個(gè)樣本點(diǎn)之間的歐氏距離的平方小于閾值\epsilon,則它們之間是有邊的。

使用這種方法,兩點(diǎn)相似度只有\epsilon0兩個(gè)值,這種度量很不精確,因此在實(shí)際應(yīng)用中很少使用\epsilon-近鄰法。

  • k近鄰法

使用KNN算法遍歷所有樣本點(diǎn),取每個(gè)樣本點(diǎn)最近的k個(gè)點(diǎn)作為近鄰。這種方法會(huì)造成構(gòu)造的鄰接矩陣不對稱,而譜聚類算法需要一個(gè)對稱的鄰接矩陣。因此有以下兩種方法來構(gòu)造一個(gè)對稱的鄰接矩陣:

①只要一個(gè)點(diǎn)在另一個(gè)點(diǎn)的k近鄰內(nèi),則w_{ij}>0,否則為0,相似度w_{ij}可以使用徑向基函數(shù)來度量:

w_{ij}=w_{ji}=\left\{\begin{matrix} exp\left \{-\frac{||x_{i}-x_{j}||_{2}^{2}}{2\sigma ^{2}}\right \},x_{i}\in KNN(x_{j})\; or \; x_{j}\in KNN(x_{i})\\ 0,x_{i}\notin KNN(x_{j})\; and\; x_{j}\notin KNN(x_{i}) \end{matrix}\right.

②只有兩個(gè)點(diǎn)互為k近鄰,才會(huì)有w_{ij}>0,否則為0

w_{ij}=w_{ji}=\left\{\begin{matrix} exp\left \{-\frac{||x_{i}-x_{j}||_{2}^{2}}{2\sigma ^{2}}\right \},x_{i}\in KNN(x_{j})\; and\; x_{j}\in KNN(x_{i})\\ 0,x_{i}\notin KNN(x_{j})\; or\; x_{j}\notin KNN(x_{i}) \end{matrix}\right.

上述方法是不用先建立圖而直接獲得鄰接矩陣,在編程實(shí)現(xiàn)時(shí)能夠更加簡便,構(gòu)建的鄰接矩陣也就表明了哪些樣本點(diǎn)之間有邊連接。也可以采用先建立圖然后再在圖上有邊的數(shù)據(jù)點(diǎn)上保留權(quán)重獲得鄰接矩陣的方法。

  • 全連接法

這種方法會(huì)使所有的w_{ij}都大于0,可以選擇不用的核函數(shù)來度量相似度,比如多項(xiàng)式核函數(shù)、徑向基核函數(shù)和sigmoid核函數(shù)。最常用的是徑向基核函數(shù):

w_{ij}=exp\left \{-\frac{||x_{i}-x_{j}||_{2}^{2}}{2\sigma ^{2}}\right \}

在實(shí)際應(yīng)用時(shí)選擇全連接法建立鄰接矩陣是最普遍的,在選擇相似度度量時(shí)徑向基核函數(shù)是最普遍的。

  1. 拉普拉斯矩陣

圖的拉普拉斯矩陣(Graph Laplacian)L_{N\times N}是一個(gè)對稱矩陣,用度矩陣減去鄰接矩陣得到的矩陣就被定義為拉普拉斯矩陣,L=D-W。拉普拉斯矩陣有一些性質(zhì)如下:
①對稱性。
②由于其對稱性,則它的所有特征值都是實(shí)數(shù)。
③對于任意向量f,有:

f^{T}Lf=\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}(f_{i}-f_{j})^{2}

這一性質(zhì)利用拉普拉斯矩陣的性質(zhì)很容易可以得到:

f^{T}Lf=f^{T}Df-f^{T}Wf \\ =\sum _{i=1}^{N}d_{i}f_{i}^{2}-\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}f_{i}f_{j}\\ =\frac{1}{2}(\sum _{i=1}^{N}d_{i}f_{i}^{2}-2\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}f_{i}f_{j}+\sum _{j=1}^{N}d_{j}f_{j}^{2})\\ =\frac{1}{2}(\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}f_{i}^{2}-2\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}f_{i}f_{j}+\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}f_{j}^{2})\\ =\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}(f_{i}-f_{j})^{2}

④拉普拉斯矩陣是半正定的,則其所有特征值非負(fù),這個(gè)性質(zhì)由性質(zhì)③很容易得出。并且其最小的特征值為0,這是因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=L" alt="L" mathimg="1">的每一行和為0,對于全1向量1_{N}=\begin{pmatrix} 1 & 1 & \cdots & 1 \end{pmatrix}^{T},有L\cdot 1_{N}=0=0\cdot 1_{N}。

  1. 無向圖切圖

對于無向圖G的切圖,我們的目標(biāo)是將G=(V,E)切成相互沒有連接的k個(gè)子圖,每個(gè)子圖節(jié)點(diǎn)的集合為A_{1},A_{2},\cdots ,A_{k},它們滿足A_{i}\cap A_{j}=\phi,且A_{1}\cup A_{2}\cup \cdots \cup A_{k}=V。

對于任意兩個(gè)子圖點(diǎn)的集合A,B\subset V,定義AB之間的切圖權(quán)重為:

W(A,B)=\sum _{i\in A,j\in B}w_{ij}

對于k個(gè)子圖的集合,定義切圖cut為:

cut(A_{1},A_{2},\cdots ,A_{k})=\sum_{i=1}^{k}W(A_{i}, \overline{A}_{i})

上式中\overline{A}_{ i }A_{i}的補(bǔ)集,意為除A_{i}子集以外的其他子集的并集。

每個(gè)子圖就相當(dāng)于聚類的一個(gè)類,找到子圖內(nèi)點(diǎn)的權(quán)重之和最高,子圖間的點(diǎn)的權(quán)重之和最低的切圖就相當(dāng)于找到了最佳的聚類。實(shí)現(xiàn)這一點(diǎn)的一個(gè)很自然的想法是最小化cut。然而這種方法存在問題,也就是最小化的cut對應(yīng)的切圖不一定就是符合要求的最優(yōu)的切圖,如下圖:

舉例

在上面的例子中,我們選擇在最小的權(quán)重上進(jìn)行切圖,比如在CH之間進(jìn)行切圖,這樣可以使得cut最小,但并不是最優(yōu)的切圖。

接下介紹譜聚類使用的切圖方法。

三、譜聚類之切圖聚類

為了避免上述最小化cut存在的問題,需要對每個(gè)子圖的規(guī)模做出限制,接下來介紹兩種切圖方法,分別是RatioCutNCut

  1. RatioCut切圖

RatioCut切圖為了避免上述最小切圖,對于每個(gè)切圖,不只考慮最小化cut,還考慮最大化每個(gè)子圖點(diǎn)的個(gè)數(shù),即:

RatioCut(A_{1},A_{2},\cdots ,A_{k})=\sum_{i=1}^{k}\frac{W(A_{i},\overline{A}_{i})}{|A_{i}|}

為了最小化RatioCut這個(gè)函數(shù),我們引入指示向量h_{i}\in \left \{h_{1},h_{1},\cdots ,h_{k}\right \},i=1,2,\cdots ,k,對于每一個(gè)向量h_{i}, 它是一個(gè)N維向量,另外定義h_{ij}為:

h_{ij}=\left\{\begin{matrix} 0,v_{j}\notin A_{i}\\ \frac{1}{\sqrt{|A_{i}|}},v_{j}\in A_{i} \end{matrix}\right.

那么對于h_{i}^{T}Lh_{i},有:

h_{i}^{T}Lh_{i}=\frac{1}{2}\sum_{m=1}^{N}\sum_{n=1}^{N}w_{mn}(h_{im}-h_{in})^{2}\\ =\frac{1}{2}(\sum _{m\in A_{i},n\notin A_{i}}w_{mn}(\frac{1}{\sqrt{|A_{i}|}}-0)^{2}+\sum _{m\notin A_{i},n\in A_{i}}w_{mn}(0-\frac{1}{\sqrt{|A_{i}|}})^{2})\\ =\frac{1}{2}(\sum _{m\in A_{i},n\notin A_{i}}w_{mn}\frac{1}{|A_{i}|}+\sum _{m\notin A_{i},n\in A_{i}}w_{mn}\frac{1}{|A_{i}|})\\ =\frac{1}{2}(\frac{1}{|A_{i}|}\sum _{m\in A_{i},n\notin A_{i}}w_{mn}+\frac{1}{|A_{i}|}\sum _{m\notin A_{i},n\in A_{i}}w_{mn})\\ =\frac{1}{2}(\frac{cut(A_{i}, \overline{A}_{i} )}{|A_{i}|}+\frac{cut( \overline{A}_{i} ,A_{i})}{|A_{i}|})\\ =\frac{cut(A_{i},\overline{A}_{i})}{|A_{i}|}

由上式可知,某一個(gè)子圖的RatioCut也就是h_{i}^{T}Lh_{i},所有的k個(gè)子圖的RatioCut表達(dá)式也就是:

RatioCut(A_{1},A_{2},\cdots ,A_{k})=\sum_{i=1}^{k}h_{i}^{T}Lh_{i} \\ =\sum_{i=1}^{k}(H^{T}LH)_{ii}\\ =tr(H^{T}LH)

上式中tr(H^{T}LH)為矩陣H^{T}LH的跡,H=\begin{pmatrix} h_{1} & h_{2} & \cdots & h_{k} \end{pmatrix},需要注意這里的H滿足H^TH=I,并且H的元素只能取0或者\frac{1}{|A_{i}|}。也就是說我們需要優(yōu)化以下目標(biāo)函數(shù):

\underset{H}{argmin}\; tr(H^{T}LH)\; \; s.t.\; H^{T}H=I

由于每個(gè)元素只能取兩個(gè)值,因此上面的目標(biāo)函數(shù)是不可求導(dǎo)的。這里每個(gè)指示向量都是N維的,而且每個(gè)元素只有兩種取值,所以就有2^N種取值方式,一共有k個(gè)指示向量,因此共有k2^NH,因此想要找到滿足使目標(biāo)函數(shù)最小的H是一個(gè)NP難的問題。

由于存在上述問題,所以我們采用降維的思想來考慮解決這個(gè)優(yōu)化問題。我們需要最小化tr(H^{T}LH),也就是需要優(yōu)化每一個(gè)h_{i}^{T}Lh_{i},這里的h是單位正交基,L是對稱矩陣,因此h_{i}^{T}Lh_{i}的最大值是L的最大特征值,最小值是L的最小特征值。之所以有這種結(jié)論可以參考主成分分析PCA的解法,在PCA中需要找到協(xié)方差矩陣(類比此處的拉普拉斯矩陣L,它們都是對稱的)的最大特征值,而在譜聚類中需要找到最小的k個(gè)非零特征值,然后得到這些特征值對應(yīng)的特征向量,通過這個(gè)過程我們也就完成了數(shù)據(jù)的降維,最終H_{N\times k}就是降維的結(jié)果,使用這個(gè)結(jié)果來近似解決這個(gè)NP難的問題。

一般我們?nèi)匀恍枰獙?img class="math-inline" src="https://math.jianshu.com/math?formula=H" alt="H" mathimg="1">按行做標(biāo)準(zhǔn)化,也就是:

h_{ij}^{*}=\frac{h_{ij}}{(\sum_{t=1}^{k}h_{it}^{2})^{1/2}}

由于在降維時(shí)損失了少量信息,導(dǎo)致得到的優(yōu)化后的指示向量h對應(yīng)的H現(xiàn)在不能完全指示各樣本的歸屬,因此在得到降維結(jié)果H后還需要進(jìn)行一次傳統(tǒng)的聚類,比如K-Means。

  1. NCut切圖

NCut切圖的方法與RatioCut切圖的方法很類似,只是把RatioCut的分母|A_{i}|換成vol(A_{i})。使用NCut切圖時(shí),由于子圖樣本個(gè)數(shù)多不一定權(quán)重就大(只有權(quán)重大時(shí),子圖內(nèi)樣本點(diǎn)的相似度才高),因此切圖時(shí)基于權(quán)重也更符合目標(biāo),一般來說NCut切圖優(yōu)于RatioCut切圖:

NCut(A_{1},A_{2},\cdots ,A_{k})=\sum_{i=1}^{k}\frac{W(A_{i},\overline{ A }_{ i } )}{vol(A_{i})}

另外需要修改指示向量的表示形式,RatioCut的指示向量使用\frac{1}{\sqrt{|A_{i}|}}來標(biāo)示樣本歸屬,而NCut使用子圖權(quán)重\frac{1}{\sqrt{vol(A_{i})}}來標(biāo)示指示向量h,定義如下:

h_{ij}=\left\{\begin{matrix} 0,v_{j}\notin A_{i}\\ \frac{1}{\sqrt{vol(A_{i})}},v_{j}\in A_{i} \end{matrix}\right.

類似的,對于h_{i}^{T}Lh_{i},有:

h_{i}^{T}Lh_{i}=\frac{1}{2}\sum_{m=1}^{N}\sum_{n=1}^{N}w_{mn}(h_{im}-h_{in})^{2}\\ =\frac{1}{2}(\sum _{m\in A_{i},n\notin A_{i}}w_{mn}(\frac{1}{\sqrt{vol(A_{i})}}-0)^{2}+\sum _{m\notin A_{i},n\in A_{i}}w_{mn}(0-\frac{1}{\sqrt{vol(A_{i})}})^{2})\\ =\frac{1}{2}(\sum _{m\in A_{i},n\notin A_{i}}w_{mn}\frac{1}{vol(A_{i})}+\sum _{m\notin A_{i},n\in A_{i}}w_{mn}\frac{1}{vol(A_{i})})\\ =\frac{1}{2}(\frac{1}{vol(A_{i})}\sum _{m\in A_{i},n\notin A_{i}}w_{mn}+\frac{1}{vol(A_{i})}\sum _{m\notin A_{i},n\in A_{i}}w_{mn})\\ =\frac{1}{2}(\frac{cut(A_{i},\overline{ A }_{ i } )}{vol(A_{i})}+\frac{cut( \overline{ A }_{ i } ,A_{i})}{vol(A_{i})})\\ =\frac{cut(A_{i}, \overline{ A }_{ i } )}{vol(A_{i})}

同樣的優(yōu)化目標(biāo)也就是:

NCut(A_{1},A_{2},\cdots ,A_{k})=\sum_{i=1}^{k}h_{i}^{T}Lh_{i} \\ =\sum_{i=1}^{k}(H^{T}LH)_{ii}\\ =tr(H^{T}LH)

但是現(xiàn)在的約束條件不再滿足H^TH=I,而是H^TDH=I,證明如下:

H^{T}DH=\begin{pmatrix} h_{1}^{T}\\ h_{2}^{T}\\ \vdots \\ h_{k}^{T} \end{pmatrix}\begin{pmatrix} d_{1} & & & \\ & d_{2} & & \\ & & \ddots & \\ & & & d_{N} \end{pmatrix}\begin{pmatrix} h_{1} & h_{2} & \cdots & h_{k} \end{pmatrix}\\ =\begin{pmatrix} h_{11}d_{1} & h_{12}d_{2} & \cdots & h_{1N}d_{N}\\ h_{21}d_{1} & h_{22}d_{2} & \cdots & h_{2N}d_{N}\\ \vdots & \vdots & \ddots & \vdots \\ h_{k1}d_{1} & h_{k2}d_{2} & \cdots & h_{kN}d_{N} \end{pmatrix}\begin{pmatrix} h_{1} & h_{2} & \cdots & h_{k} \end{pmatrix}\\ =\begin{pmatrix} \sum_{i=1}^{N}h_{1i}^{2}d_{i} & \sum_{i=1}^{N}h_{1i}h_{2i}d_{i} & \cdots & \sum_{i=1}^{N}h_{1i}h_{ki}d_{i}\\ \sum_{i=1}^{N}h_{2i}h_{1i}d_{i} & \sum_{i=1}^{N}h_{2i}^{2}d_{i} & \cdots & \sum_{i=1}^{N}h_{2i}h_{ki}d_{i}\\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^{N}h_{ki}h_{1i}d_{i} & \sum_{i=1}^{N}h_{ki}h_{2i}d_{i} & \cdots & \sum_{i=1}^{N}h_{ki}^{2}d_{i} \end{pmatrix}

對于對角線元素有:

\sum_{j=1}^{N}h_{ij}^{2}d_{j}=\frac{1}{vol(A_{i})}\sum _{j\in A_{i}}d_{j}=\frac{1}{vol(A_{i})}vol(A_{i})=1

由于h_{mi}h_{ni}不可能同時(shí)非零,因此對于非對角線元素有:

\sum_{i=1}^{N}h_{mi}h_{ni}d_{i}=\sum_{i=1}^{N}0\cdot d_{i}=0

因此有H^TDH=I。我們最終優(yōu)化的目標(biāo)函數(shù)為:

\underset{H}{argmin}\; tr(H^{T}LH)\; \; s.t.\; H^{T}DH=I

此時(shí)指示向量h并不是標(biāo)準(zhǔn)正交基,所以在RatioCut中的降維思想不能直接使用。對于這個(gè)問題,只需要將指示向量h做一個(gè)轉(zhuǎn)化即可,我們令H=D^{-1/2}F,則:

H^{T}LH=F^{T}{\color{Red}{D^{-1/2}LD^{-1/2}}}F\\ H^{T}DH=F^{T}F=I

也就是說優(yōu)化的目標(biāo)變成了:

\underset{F}{argmin}\; tr(F^{T}{\color{Red}{D^{-1/2}LD^{-1/2}}}F)\; \; s.t.\; F^{T}F=I

可以發(fā)現(xiàn)這個(gè)式子和RatioCut基本一致,只是中間的L變成了D^{-1/2}LD^{-1/2}。如此我們就可以按照RatioCut的思想,求出D^{-1/2}LD^{-1/2}的前k個(gè)最小非零特征值,然后求對應(yīng)的特征向量再進(jìn)行標(biāo)準(zhǔn)化得到最后的特征矩陣F,然后再使用K-Means等傳統(tǒng)方法進(jìn)行聚類即可。

一般來說,D^{-1/2}LD^{-1/2}相當(dāng)于對拉普拉普斯矩陣做了一次標(biāo)準(zhǔn)化,即(D^{-1/2}LD^{-1/2})_{ij}=\frac{L_{ij}}{\sqrt{d_{i}*d_{j}}}

四、總結(jié)

  1. 算法流程

NCut切圖為例總結(jié)一下譜聚類算法的流程:

輸入:樣本集D=(x_{1},x_{2},\cdots ,x_{N}),鄰接矩陣的生成方式,降維后的維度k_1,聚類方法,聚類的簇個(gè)數(shù)k_2
輸出:簇劃分C(c_{1},c_{2},\cdots ,c_{k_{2}})。
①根據(jù)輸入的鄰接矩陣生成方式構(gòu)建樣本的鄰接矩陣矩陣W和度矩陣D
②計(jì)算拉普拉斯矩陣L;
③構(gòu)建標(biāo)準(zhǔn)化后的拉普拉斯矩陣D^{-1/2}LD^{-1/2}
④計(jì)算D^{-1/2}LD^{-1/2}的最小的前k_1個(gè)非零特征值對應(yīng)的特征向量f;
⑤將各自對應(yīng)的特征向量f組成的矩陣按行標(biāo)準(zhǔn)化,最終得到N\times k_1維的特征矩陣F
⑥對F的每一行作為一個(gè)k_1維的樣本,共N個(gè)樣本,用輸入的聚類方法進(jìn)行聚類,聚類的簇的個(gè)數(shù)為k_2
⑦得到簇劃分C(c_{1},c_{2},\cdots ,c_{k_{2}})。

  1. 優(yōu)缺點(diǎn)

譜聚類的優(yōu)點(diǎn)有:
①譜聚類只需要數(shù)據(jù)之間的相似度矩陣,因此對于處理稀疏數(shù)據(jù)的聚類很有效。這點(diǎn)傳統(tǒng)聚類算法比如K-Means很難做到。
②由于使用了降維,因此在處理高維數(shù)據(jù)聚類時(shí)的復(fù)雜度比傳統(tǒng)聚類算法好。

譜聚類的缺點(diǎn)有:
①如果最終聚類的維度非常高,則由于降維的幅度不夠,譜聚類的運(yùn)行速度和最后的聚類效果均不好。
②聚類效果依賴于相似矩陣,不同的相似矩陣得到的最終聚類效果可能很不同。

參考資料

ref:譜聚類(spectral clustering)原理總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容