数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、谱聚类
谱聚类
spectral clustering
是一种基于图论的聚类方法。谱聚类的主要思想是:基于数据集 $ MathJax-Element-544 $ 来构建图 $ MathJax-Element-555 $ ,其中:
顶点 $ MathJax-Element-556 $ :由数据集中的数据点组成: $ MathJax-Element-576 $ 。
边 $ MathJax-Element-557 $ :任意一对顶点之间存在边。
距离越近的一对顶点,边的权重越高;距离越远的一对顶点,边的权重越低。
通过对图 $ MathJax-Element-558 $ 进行切割,使得切割之后:不同子图之间的边的权重尽可能的低、各子图内的边的权重尽可能的高。这样就完成了聚类。
5.1 邻接矩阵
在图 $ MathJax-Element-555 $ 中,定义权重 $ MathJax-Element-586 $ 为顶点 $ MathJax-Element-612 $ 和 $ MathJax-Element-615 $ 之间的权重,其中 $ MathJax-Element-619 $ 。
定义 $ MathJax-Element-590 $ 为邻接矩阵:
$ \mathbf W=\begin{bmatrix} w_{1,1}&w_{1,2}&\cdots&w_{1,N}\\ w_{2,1}&w_{2,2}&\cdots&w_{2,N}\\ \vdots&\vdots&\ddots&\vdots\\ w_{N,1}&w_{N,2}&\cdots&w_{N,N} \end{bmatrix} $由于 $ MathJax-Element-558 $ 为无向图,因此 $ MathJax-Element-591 $ 。即: $ MathJax-Element-592 $ 。
对图中顶点 $ MathJax-Element-612 $ ,定义它的度 $ MathJax-Element-190 $ 为:所有与顶点 $ MathJax-Element-612 $ 相连的边的权重之和: $ MathJax-Element-595 $ 。
定义度矩阵 $ MathJax-Element-596 $ 为一个对角矩阵,其中对角线分别为各顶点的度:
$ \mathbf D=\begin{bmatrix} d_1&0&\cdots&0\\ 0&d_2&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&d_N\\ \end{bmatrix} $对于顶点集合 $ MathJax-Element-556 $ 的一个子集 $ MathJax-Element-597 $ ,定义 $ MathJax-Element-598 $ 为子集 $ MathJax-Element-601 $ 中点的个数;定义 $ MathJax-Element-624 $ ,为子集 $ MathJax-Element-601 $ 中所有点的度之和。
事实上在谱聚类中,通常只给定数据集 $ MathJax-Element-544 $ ,因此需要计算出邻接矩阵 $ MathJax-Element-609 $ 。
基本思想是:距离较近的一对点(即相似都较高),边的权重较高;距离较远的一对点(即相似度较低),边的权重较低。
基本方法是:首先构建相似度矩阵 $ MathJax-Element-603 $ ,然后使用 $ MathJax-Element-397 $ -近邻法、 $ MathJax-Element-554 $ 近邻法、或者全连接法。
$ \mathbf S=\begin{bmatrix} s_{1,1}&s_{1,2}&\cdots&s_{1,N}\\ s_{2,1}&s_{2,2}&\cdots&s_{2,N}\\ \vdots&\vdots&\ddots&\vdots\\ s_{N,1}&s_{N,2}&\cdots&s_{N,N} \end{bmatrix} $- 通常相似度采用高斯核: $ MathJax-Element-763 $ 。此时有 $ MathJax-Element-605 $ 。即: $ MathJax-Element-606 $ 。
- 也可以选择不同的核函数,如:多项式核函数、高斯核函数、
sigmoid
核函数。
$ MathJax-Element-397 $ -近邻法:设置一个距离阈值 $ MathJax-Element-397 $ ,定义邻接矩阵 $ MathJax-Element-609 $ 为:
$ w_{i,j}=\begin{cases} 0, & s_{i,j} \gt \varepsilon\\ \varepsilon , & s_{i,j} \le \varepsilon \end{cases} $即:一对相似度小于 $ MathJax-Element-397 $ 的点,边的权重为 $ MathJax-Element-397 $ ;否则边的权重为 0 。
$ MathJax-Element-397 $ -近邻法得到的权重要么是 0 ,要么是 $ MathJax-Element-397 $ ,权重度量很不精确,因此实际应用较少。
$ MathJax-Element-554 $ 近邻法:利用
KNN
算法选择每个样本最近的 $ MathJax-Element-554 $ 个点作为近邻,其它点与当前点之间的边的权重为 0 。这种做法会导致邻接矩阵 $ MathJax-Element-609 $ 非对称,因为当 $ MathJax-Element-367 $ 是 $ MathJax-Element-523 $ 的 $ MathJax-Element-554 $ 近邻时, $ MathJax-Element-523 $ 不一定是 $ MathJax-Element-367 $ 的 $ MathJax-Element-554 $ 近邻。
为了解决对称性问题,有两种做法:
只要一个点在另一个点的 $ MathJax-Element-554 $ 近邻中,则认为是近邻。即:取并集。
$ w_{i,j}=w_{j,i}=\begin{cases} 0,&\mathbf{\vec x}_i \notin KNN(\mathbf{\vec x}_j) \;\text{and}\;\mathbf{\vec x}_j \notin KNN(\mathbf{\vec x}_i) \\ s_{i,j},&\mathbf{\vec x}_i \in KNN(\mathbf{\vec x}_j) \;\text{or}\;\mathbf{\vec x}_j \in KNN(\mathbf{\vec x}_i) \end{cases} $只有两个点互为对方的 $ MathJax-Element-554 $ 近邻中,则认为是近邻。即:取交集。
$ w_{i,j}=w_{j,i}=\begin{cases} 0,&\mathbf{\vec x}_i \notin KNN(\mathbf{\vec x}_j) \;\text{or}\;\mathbf{\vec x}_j \notin KNN(\mathbf{\vec x}_i) \\ s_{i,j},&\mathbf{\vec x}_i \in KNN(\mathbf{\vec x}_j) \;\text{and}\;\mathbf{\vec x}_j \in KNN(\mathbf{\vec x}_i) \end{cases} $
全连接法:所有点之间的权重都大于 0 : $ MathJax-Element-781 $ 。
5.2 拉普拉斯矩阵
定义拉普拉斯矩阵 $ MathJax-Element-632 $ ,其中 $ MathJax-Element-596 $ 为度矩阵、 $ MathJax-Element-609 $ 为邻接矩阵。
拉普拉斯矩阵 $ MathJax-Element-640 $ 的性质:
$ MathJax-Element-640 $ 是对称矩阵,即 $ MathJax-Element-635 $ 。这是因为 $ MathJax-Element-636 $ 都是对称矩阵。
因为 $ MathJax-Element-640 $ 是实对称矩阵,因此它的特征值都是实数。
对任意向量 $ MathJax-Element-638 $ ,有: $ MathJax-Element-639 $ 。
$ MathJax-Element-640 $ 是半正定的,且对应的 $ MathJax-Element-400 $ 个特征值都大于等于0,且最小的特征值为 0。
设其 $ MathJax-Element-400 $ 个实特征值从小到大为 $ MathJax-Element-641 $ ,即: $ MathJax-Element-642 $ 。
5.3 谱聚类算法
给定无向图 $ MathJax-Element-555 $ ,设子图的点的集合 $ MathJax-Element-601 $ 和子图的点的集合 $ MathJax-Element-647 $ 都是 $ MathJax-Element-556 $ 的子集,且 $ MathJax-Element-644 $ 。
定义 $ MathJax-Element-601 $ 和 $ MathJax-Element-647 $ 之间的切图权重为: $ MathJax-Element-658 $ 。
即:所有连接 $ MathJax-Element-601 $ 和 $ MathJax-Element-647 $ 之间的边的权重。
对于无向图 $ MathJax-Element-555 $ ,假设将它切分为 $ MathJax-Element-306 $ 个子图:每个子图的点的集合为 $ MathJax-Element-648 $ ,满足 $ MathJax-Element-649 $ 且 $ MathJax-Element-650 $ 。
定义切图
cut
为: $ MathJax-Element-651 $ ,其中 $ MathJax-Element-652 $ 为 $ MathJax-Element-653 $ 的补集。
5.3.1 最小切图
引入指示向量 $ MathJax-Element-663 $ ,定义:
$ q_{j,i}=\begin{cases} 0,& i \not \in \mathbb A_j\\ 1,& i \in\mathbb A_j \end{cases} $则有:
$ \mathbf{\vec q}_j^T\mathbf L\mathbf{\vec q}_j=\frac 12 \sum_{m=1}^N\sum_{n=1}^N w_{m,n}(q_{j,m}-q_{j,n})^2\\ =\frac 12 \sum_{m\in \mathbb A_j}\sum_{n\in \mathbb A_j} w_{m,n}(1-1)^2+ \frac 12 \sum_{m\not\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} w_{m,n}(0-0)^2+\\ \frac 12 \sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} w_{m,n}(1-0)^2+\frac 12 \sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} w_{m,n}(0-1)^2\\ =\frac 12\left(\sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} w_{m,n}+\sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} w_{m,n}\right)\\ =\frac 12(cut(\mathbb A_j,\bar{\mathbb A}_j)+cut(\bar{\mathbb A}_j,\mathbb A_j))=cut(\mathbb A_j,\bar{\mathbb A}_j) $因此 $ MathJax-Element-664 $ 。其中 $ MathJax-Element-665 $ , $ MathJax-Element-666 $ 为矩阵的迹。
考虑到顶点 $ MathJax-Element-612 $ 有且仅位于一个子图中,则有约束条件:
$ q_{j,m}\in \{0,1\},\quad \mathbf{\vec q}_i\cdot\mathbf{\vec q}_j=\begin{cases} 0,&i\ne j\\ |\mathbb A|_j,&i = j \end{cases} $最小切图算法: $ MathJax-Element-667 $ 最小的切分。即求解:
$ \min_{\mathbf Q} tr(\mathbf Q^T\mathbf L\mathbf Q)\\ s.t. q_{j,m}\in \{0,1\},\quad \mathbf{\vec q}_i\cdot\mathbf{\vec q}_j=\begin{cases} 0,&i\ne j\\ |\mathbb A|_j,&i = j \end{cases} $最小切图切分使得不同子图之间的边的权重尽可能的低,但是容易产生分割出只包含几个顶点的较小子图的歪斜分割现象。
5.3.2 RatioCut 算法
$ RatioCut(\mathbb A_1,\cdots,\mathbb A_k)= \sum_{i=1}^k\frac{W(\mathbb A_i,\bar{\mathbb A}_i)}{|\mathbb A_i|} $RatioCut
切图不仅考虑最小化 $ MathJax-Element-667 $ ,它还考虑最大化每个子图的点的个数。即:- 最小化 $ MathJax-Element-667 $ :使得不同子图之间的边的权重尽可能的低。
- 最大化每个子图的点的个数:使得各子图尽可能的大。
引入指示向量 $ MathJax-Element-677 $ ,定义:
$ h_{j,i}=\begin{cases} 0,& i \not \in \mathbb A_j\\ \frac{1}{\sqrt{|\mathbb A_j|}},& i \in\mathbb A_j \end{cases} $则有:
$ \mathbf{\vec h}_j^T\mathbf L\mathbf{\vec h}_j=\frac 12 \sum_{m=1}^N\sum_{n=1}^N w_{m,n}(h_{j,m}-h_{j,n})^2\\ =\frac 12 \sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} w_{m,n}(\frac{1}{\sqrt{|\mathbb A_j|}}-0)^2+\frac 12 \sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} w_{m,n}(0-\frac{1}{\sqrt{|\mathbb A_j|}})^2\\ =\frac 12\left(\sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} \frac{w_{m,n}}{|\mathbb A_j|}+\sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} \frac {w_{m,n}}{|\mathbb A_j|}\right)\\ =\frac 12\times\frac{1}{|\mathbb A_j|}(cut(\mathbb A_j,\bar{\mathbb A}_j)+cut(\bar{\mathbb A}_j,\mathbb A_j))=RatioCut(\mathbb A_j,\bar{\mathbb A}_j) $因此 $ MathJax-Element-678 $ 。其中 $ MathJax-Element-679 $ , $ MathJax-Element-666 $ 为矩阵的迹。
考虑到顶点 $ MathJax-Element-612 $ 有且仅位于一个子图中,则有约束条件:
$ \mathbf{\vec h}_i\cdot\mathbf{\vec h}_j=\begin{cases} 0,&i\ne j\\ 1,&i = j \end{cases} $
$ \min_{\mathbf H} tr(\mathbf H^T\mathbf L\mathbf H)\\ s.t. \mathbf H^T\mathbf H=\mathbf I $RatioCut
算法: $ MathJax-Element-680 $ 最小的切分。即求解:因此只需要求解 $ MathJax-Element-640 $ 最小的 $ MathJax-Element-306 $ 个特征值,求得对应的 $ MathJax-Element-306 $ 个特征向量组成 $ MathJax-Element-437 $ 。
通常在求解得到 $ MathJax-Element-437 $ 之后,还需要对行进行标准化: $ MathJax-Element-681 $
事实上这样解得的 $ MathJax-Element-437 $ 不能完全满足指示向量的定义。因此在得到 $ MathJax-Element-437 $ 之后,还需要对每一行进行一次传统的聚类(如:
k-means
聚类)。RatioCut
算法:输入:
- 数据集 $ MathJax-Element-544 $
- 降维的维度 $ MathJax-Element-695 $
- 二次聚类算法
- 二次聚类的维度 $ MathJax-Element-696 $
输出:聚类簇 $ MathJax-Element-697 $
算法步骤:
根据 $ MathJax-Element-548 $ 构建相似度矩阵 $ MathJax-Element-685 $ 。
根据相似度矩阵构建邻接矩阵 $ MathJax-Element-609 $ 、度矩阵 $ MathJax-Element-596 $ ,计算拉普拉斯矩阵 $ MathJax-Element-632 $ 。
计算 $ MathJax-Element-640 $ 最小的 $ MathJax-Element-695 $ 个特征值,以及对应的特征向量 $ MathJax-Element-689 $ ,构建矩阵 $ MathJax-Element-701 $ 。
对 $ MathJax-Element-437 $ 按照行进行标准化: $ MathJax-Element-681 $ ,得到 $ MathJax-Element-707 $ 。
将 $ MathJax-Element-707 $ 中每一行作为一个 $ MathJax-Element-695 $ 维的样本,一共 $ MathJax-Element-400 $ 个样本,利用二次聚类算法来聚类,二次聚类的维度为 $ MathJax-Element-696 $ 。
最终得到簇划分 $ MathJax-Element-697 $ 。
5.3.3 Ncut 算法
$ Ncut(\mathbb A_1,\cdots,\mathbb A_k)= \sum_{i=1}^k\frac{W(\mathbb A_i,\bar{\mathbb A}_i)}{vol(\mathbb A_i)} $Ncut
切图不仅考虑最小化 $ MathJax-Element-667 $ ,它还考虑最大化每个子图的边的权重。即:- 最小化 $ MathJax-Element-667 $ :使得不同子图之间的边的权重尽可能的低。
- 最大化每个子图的边的权重:使得各子图内的边的权重尽可能的高。
引入指示向量 $ MathJax-Element-677 $ ,定义:
$ h_{j,i}=\begin{cases} 0,& i \not \in \mathbb A_j\\ \frac{1}{\sqrt{vol(\mathbb A_j)}},& i \in\mathbb A_j \end{cases} $则有:
$ \mathbf{\vec h}_j^T\mathbf L\mathbf{\vec h}_j=\frac 12 \sum_{m=1}^N\sum_{n=1}^N w_{m,n}(h_{j,m}-h_{j,n})^2\\ =\frac 12 \sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} w_{m,n}(\frac{1}{\sqrt{vol(\mathbb A_j)}}-0)^2+\frac 12 \sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} w_{m,n}(0-\frac{1}{\sqrt{vol(\mathbb A_j)}})^2\\ =\frac 12\left(\sum_{m\in \mathbb A_j}\sum_{n\not\in \mathbb A_j} \frac{w_{m,n}}{vol(\mathbb A_j)}+\sum_{m\not\in \mathbb A_j}\sum_{n\in \mathbb A_j} \frac {w_{m,n}}{vol(\mathbb A_j)}\right)\\ =\frac 12\times\frac{1}{vol(\mathbb A_j)}(cut(\mathbb A_j,\bar{\mathbb A}_j)+cut(\bar{\mathbb A}_j,\mathbb A_j))=Ncut(\mathbb A_j,\bar{\mathbb A}_j) $因此 $ MathJax-Element-722 $ 。其中 $ MathJax-Element-679 $ , $ MathJax-Element-666 $ 为矩阵的迹。
考虑到顶点 $ MathJax-Element-612 $ 有且仅位于一个子图中,则有约束条件:
$ \mathbf{\vec h}_i\cdot\mathbf{\vec h}_j=\begin{cases} 0,&i\ne j\\ \frac{1}{ vol(\mathbb A_j)},&i = j \end{cases} $
$ \min_{\mathbf H} tr(\mathbf H^T\mathbf L\mathbf H)\\ s.t. \mathbf H^T\mathbf D\mathbf H=\mathbf I $Ncut
算法: $ MathJax-Element-723 $ 最小的切分。即求解令 $ MathJax-Element-724 $ ,则有:
$ \mathbf H^T\mathbf L\mathbf H=\mathbf F^T\mathbf D^{-1/2}\mathbf L\mathbf D^{-1/2}\mathbf F\\ \mathbf H^T\mathbf D\mathbf H=\mathbf F^T\mathbf F=\mathbf I $令 $ MathJax-Element-725 $ ,则最优化目标变成:
$ \min_{\mathbf H} tr(\mathbf F^T\mathbf L^\prime\mathbf F)\\ s.t. \mathbf F^T\mathbf F=\mathbf I $因此只需要求解 $ MathJax-Element-687 $ 最小的 $ MathJax-Element-306 $ 个特征值,求得对应的 $ MathJax-Element-306 $ 个特征向量组成 $ MathJax-Element-691 $ 。然后对行进行标准化: $ MathJax-Element-692 $ 。
与
RatioCut
类似,Ncut
也需要对 $ MathJax-Element-691 $ 的每一行进行一次传统的聚类(如:k-means
聚类)。事实上 $ MathJax-Element-726 $ 相当于对拉普拉斯矩阵 $ MathJax-Element-640 $ 进行了一次标准化: $ MathJax-Element-727 $ 。
Ncut
算法:输入:
- 数据集 $ MathJax-Element-544 $
- 降维的维度 $ MathJax-Element-695 $
- 二次聚类算法
- 二次聚类的维度 $ MathJax-Element-696 $
输出:聚类簇 $ MathJax-Element-697 $
算法步骤:
根据 $ MathJax-Element-548 $ 构建相似度矩阵 $ MathJax-Element-685 $ 。
根据相似度矩阵构建邻接矩阵 $ MathJax-Element-609 $ 、度矩阵 $ MathJax-Element-596 $ ,计算拉普拉斯矩阵 $ MathJax-Element-632 $ 。
构建标准化之后的拉普拉斯矩阵 $ MathJax-Element-686 $ 。
计算 $ MathJax-Element-687 $ 最小的 $ MathJax-Element-695 $ 个特征值,以及对应的特征向量 $ MathJax-Element-689 $ ,构建矩阵 $ MathJax-Element-690 $ 。
对 $ MathJax-Element-691 $ 按照行进行标准化: $ MathJax-Element-692 $ ,得到 $ MathJax-Element-694 $ 。
将 $ MathJax-Element-694 $ 中每一行作为一个 $ MathJax-Element-695 $ 维的样本,一共 $ MathJax-Element-400 $ 个样本,利用二次聚类算法来聚类,二次聚类的维度为 $ MathJax-Element-696 $ 。
最终得到簇划分 $ MathJax-Element-697 $ 。
5.4 性质
谱聚类算法优点:
- 只需要数据之间的相似度矩阵,因此处理稀疏数据时很有效。
- 由于使用了降维,因此在处理高维数据聚类时效果较好。
谱聚类算法缺点:
- 如果最终聚类的维度非常高,则由于降维的幅度不够,则谱聚类的运行速度和最后聚类的效果均不好。
- 聚类效果依赖于相似度矩阵,不同相似度矩阵得到的最终聚类效果可能不同。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论