K-Means
Canopy Clustering
Canopy算法聚类
算法杂货铺——k均值聚类(K-means)
基本Kmeans算法介绍及其实现(距离的度量)
K-median和K-mediod提了一下
K-median求的中心是每个维度的中位数,因此对异常点会更加鲁棒;K-mediod的中心必须是样本之中的点,感觉这个要求很鸡肋,可能说用来找某一个类的代表性样本比较有用。
DBSCAN
聚类方法:DBSCAN算法研究(1)–DBSCAN原理、流程、参数设置、优缺点以及算法
DBSCAN密度聚类算法
优缺点很好
TSNE
LOF
为什么要从lrd再计算一个LOF呢,因为要比较某一个点的lrd和其K邻域内的点的lrd,举个例子,尽管某个点的lrd不大,处于非密集区,但假如它周围的点都是这个样子呢,那只能说这个点是处于一个稀疏的区域,但他并不是outlier
EM算法
原理还是统计学习方法里写的好
统计学习方法内容总结,不同书上的Q函数定义不太一样,所以就干脆丢了Q函数的意义,直接记住最大化的期望是什么就可以了,花里胡哨的。
但无论怎样,请记住EM算法最大化的是是:在Given 已知变量与参数的情况下,观测数据(也就是不完全数据)的对数似然: P ( X ∣ θ ) P(X|\theta) P(X∣θ),或者写成样本的概率连乘积 ∏ p ( x i ∣ θ ) \prod p(x_i|\theta) ∏p(xi∣θ)也行
x i x_i xi为第 i i i个样本的已知变量, z i z_i zi为其隐含变量,隐含变量的取值空间为 Z = { z 1 , . . . , z K } Z=\{z^1,...,z^K\} Z={z1,...,zK},此时的参数为 θ t \theta_t θt,对数似然似然函数为
∑ i = 1 m l o g P ( x i ∣ θ ) = ∑ i = 1 m l o g ∑ j = 1 , z i = z j K P ( x i , z i ∣ θ ) = ∑ i = 1 m l o g ∑ j = 1 , z i = z j K P ( z i ∣ x i , θ t ) P ( x i , z i ∣ θ ) P ( z i ∣ x i , θ t ) ( 1 ) \begin{aligned} \sum_{i=1}^m logP(x_i|\theta) &=\sum_{i=1}^m log\sum_{j=1,z_i=z^j} ^K P(x_i,z_i|\theta) \\ &=\sum_{i=1}^m log\sum_{j=1,z_i=z^j} ^K P(z_i|x_i,\theta_t) \frac{P(x_i,z_i|\theta)}{P(z_i|x_i,\theta_t)} &(1) \\ \end{aligned} i=1∑mlogP(xi∣θ)=i=1∑mlogj=1,zi=zj∑KP(xi,zi∣θ)=i=1∑mlogj=1,zi=zj∑KP(zi∣xi,θt)P(zi∣xi,θt)P(xi,zi∣θ)(1)
其实就是通过乘以除以 P ( z i ∣ x i , θ i ) P(z_i|x_i,\theta_i) P(zi∣xi,θi)来构造Jensen不等式,就是构造一个期望,如下所示
由于Jensen不等式,即对于凹函数(就是上半圆)来说, f ( E ( X ) ) ≥ E ( f ( X ) ) f(E(X))\ge E(f(X)) f(E(X))≥E(f(X)),如果我们把 f = l o g , X = P ( x i , z i ∣ θ ) P ( z i ∣ x i , θ t ) f=log,X=\frac{P(x_i,z_i|\theta)}{P(z_i|x_i,\theta_t)} f=log,X=P(zi∣xi,θt)P(xi,zi∣θ),于是就有
( 1 ) ≥ ∑ i = 1 m ∑ j = 1 , z i = z j K P ( z i ∣ x i , θ t ) l o g P ( x i , z i ∣ θ ) P ( z i ∣ x i , θ t ) \begin{aligned} (1) & \ge \sum_{i=1}^m \sum_{j=1,z_i=z^j}^K P(z_i|x_i,\theta_t) log \frac{P(x_i,z_i|\theta)} {P(z_i|x_i,\theta_t)} \\ \end{aligned} (1)≥i=1∑mj=1,zi=zj∑KP(zi∣xi,θt)logP(zi∣xi,θt)P(xi,zi∣θ)
那么极大似然估计的时候,与 θ \theta θ相关的只有 ∑ i = 1 m ∑ j = 1 , z i = z j K P ( z i ∣ x i , θ t ) l o g P ( x i , z i ∣ θ ) \sum_{i=1}^m \sum_{j=1,z_i=z^j}^K P(z_i|x_i,\theta_t) log P(x_i,z_i|\theta) ∑i=1m∑j=1,zi=zjKP(zi∣xi,θt)logP(xi,zi∣θ),因为上式中 l o g log log里的分母和优化目标无关
于是就有 Q ( θ , θ t ) = ∑ i = 1 m ∑ j = 1 , z i = z j K P ( z i ∣ x i , θ t ) l o g P ( x i , z i ∣ θ ) Q(\theta,\theta_t)=\sum_{i=1}^m \sum_{j=1,z_i=z^j}^K P(z_i|x_i,\theta_t) log P(x_i,z_i|\theta) Q(θ,θt)=∑i=1m∑j=1,zi=zjKP(zi∣xi,θt)logP(xi,zi∣θ),然后最大化 θ \theta θ就行了
更一步,你看这个 Q ( θ , θ t ) Q(\theta,\theta_t) Q(θ,θt)等于什么,他等于一个期望 E ( l o g P ( X , Z ∣ θ ) ∣ X , θ t ) E(logP(X,Z|\theta)|X,\theta_t) E(logP(X,Z∣θ)∣X,θt),至于为啥,因为期望里未知的随机变量只有Z,所以 P [ l o g P ( X , Z ∣ θ ) = l o g P ( X , z i ∣ θ ) ∣ X , θ ] = P ( Z = z i ∣ X , θ ) P[logP(X,Z|\theta)=logP(X,z_i|\theta)|X,\theta]=P(Z=z_i|X,\theta) P[logP(X,Z∣θ)=logP(X,zi∣θ)∣X,θ]=P(Z=zi∣X,θ)
复习一下条件期望
KMEANS与EM的关系见百面机器学习
频繁模式
频繁模式挖掘 Apriori
数据挖掘十大算法之Apriori详解
FP Tree算法原理总结
序列模式挖掘—PrefixSpan
PrefixSpan算法原理总结
前缀后缀的概念pinard写的不太明白,简书那篇更明白一些,prefixspan算法实际是在找“一个串关于某个前缀的后缀”,例如,A=<a(abc)d(bc)e>关于B=<bd>的投影是C=<bd(bc)e>,因为C是A的所有以B为前缀子串中最长的那个,这也是投影的定义,然后A关于前缀B的后缀等于——从A关于前缀B的投影C删掉B剩余的那部分,也就是<(bc)e>
又如<(ad)c(bc)(ae)>关于<db>的投影是<d(bc)(ae)>,则<(ad)c(bc)(ae)>关于<db>的后缀就等于<(_c)(ae)>