聚类_七月算法4月机器学习班第10次课程笔记

2016/5/23 星期一 11:00

  desc
各个公司的核心业务
电商主要做推荐

搜索主要做CTR

图像的话,主要应用DL

无监督 pca, svd,聚类,GMM
知道高斯混合模型
高斯混合就是:

1. 是一种无监督的聚类手段,而且是软聚类,即 给出的每一个 data 数属于各个类的概率

2. 拟合任意分布的概率密度函数

【观点】使用高斯分布拟合 任意分布

聚类算法的应用
一般不作为单独任务,因为结果不确定

聚类可以产生一些 feature ,比如 某个 user_id 对聚类后的结果,可以进行某些关联

聚类的应用:

1. 图片分割,用于 ps 等图像处理当中,把相同颜色的区域选中

2. 邮件归类

3. 用户购买轨迹的 聚类,地址的聚类等等


计算Fisher 值

一个新的指标


(类间的距离÷类内的距离)

表征数据的内聚程度

聚类中的特征映射
聚类不一定都是 凸函数的聚类,比如

这个也可以聚类

需要使用特征映射,即:构造平方项

作为特征,然后你会发现 这种聚类也是可以 聚出来的

就像分类一样

聚类一般不使用余弦距离
很多聚类库里面是没有 欧式聚类的

余弦距离:在数学上不能被证明保证是会收敛的

因为欧式距离的 中心是可以观测的

概率密度函数拟合的方法
拟合一个概率分布方法

1. 最大熵模型当中的满足某些约束条件的  任意 概率密度的通用表示方法

2. 混合高斯模型,可以拟合任意的


kmeans 升级

如何初始化敏感情况


1. 使用 k-means++ 的方法,随机初始化一个点作为中心点,然后再选next 中心点,要求next 中心点 距离上一个 中心点最远,第三个中心点为 距离前面两个点的距离和最大,即 尽可能选择距离他俩都远的点。

2. 多初始化几遍,然后选其中 损失函数最小的一种

一般有两种形式:

1. 随机初始化中心点,不一定是选点

2. 选取data set 中的一些点 作为 初始中心点


kmeans 升级

k值如何选定


1. 肘点法

对每一个聚类的损失函数作图,然后寻找肘点,作为 最适合的 k

肘点之前的k少,损失值大(因为极限情况一个点一类损失为0);

肘点之后的k大,但是因为聚类个数增多,所以不选取

因为要所以尽可能的选类别少的

2. 逐步剔除法的经验:

先聚一次类,有些 cluster 类中的 data 很少,比如只有 2,3 个,所以需要剔除这m个类,

然后按照 k‘ = k-m 的方法进行聚类

即:可以先聚2000个,然后再按上面的来减去,然后按照 k-m 的方法 再次聚类

3. 借助其他feature 来聚类

比如商品聚类,不是按照图片的图像像素点直接丢,

而是先看商品的文本描述聚下类,然后可以再切分 先 one-hot

先用文本聚类为 200 个

才知道k取值是这么取得,之前面试的时候都是说穷举,用肘点法

4. 使用K 作为惩罚系数

因为我们的初衷就是尽可能少的聚类个数,即 极限的话一个data 一个类,是没有意义的

但是 k 少成一个类的话,那也是没有意义的,此时 λ 需要经验值,而不是交叉验证出来的

因为 k 取两端的极值 都不好,而 λK 仅仅约束 不能太大


kmeans 升级

何时终止


都说直至收敛,但是这是含糊的说法,具体的指标应该如下:

1. 每个cluster 的点到自己中心点的距离之和,这一个标量不再发生变化

2. k 个中心点 不再发生变化

# 第二种方法,需要比较的是 k*n 的变量,所以不如第一个方法简单


kmeans 升级

kmeans 对于异常点敏感


使用 k-median 的方法

每次的中心都是原始数据中的某一个点

认为这种方法可以 有效解决异常点的问题


kmeans聚类进阶

summary


1. 什么时候【终止】:data 到 中心的距离和 不再发生变换 #这个计算量最小

2. 如何【初始化】 初始中心点(因为初始化敏感):多试几次,选取损失最小的,或者每次找相对于上一个中心点最远的

3. 如何【确定 K】:肘点法

4. 如何解决【异常点】问题? k median

kmeans 中的损失函数

这里的Rnk 是一个矩阵,就像EM算法中的 Z 矩阵一样

它是 EM 算法的输出,依据它可以得到 model 的输出

sklearning中的一个参数
sklearning 中 kmeans

默认都是聚十次类,选里面 损失函数最小的,它自己都不确定每次初始化是否好

kmeans 和 kmeans++的区别
kmeans 是随机初始化的

kmeans++ 每个最远的那个K点初始化

kmeans 和 k-media的区别
kmeans 的每次的聚类中心是 计算出来的,可能不属于某个点

kmedian 的聚类,每次的中心都是原始数据中的某一个点

认为这种方法可以 有效解决异常点的问题

聚类方法的通病
1. 初始点敏感 (多试几次,选loss最小;k-means++)

2. 异常点敏感(改进版本的 k-median)

3. 需要手动指定 聚类个数(层次聚类 或者 肘点法 或者 依次剔除法)

4. 对于非凸的数据集 无能为力(可能需要特征映射)

层次聚类
有两种方法:top down 和 bottom up

每一步都只合并两个类

即:一定要做到 最终或者 初始情况是 一个点一个类

基因工程方面用 层次聚类

因为它耗时多,所以其它工程不用这个方法

80W个商品的那个,就不能层次 聚类啊

因为 是 层次聚类一定到 每一个data 一个类

聚类的一般方法
kmeans GMM

其余的就是:

层次聚类,谱聚类

关于可视化需要降维 降维降到两维,才能可视化
扁平聚类 
是 相对于 层次聚类而言的

即不是树状的聚类

一个启发
因为尽可能少的聚类个数,因为极限情况一个data 一个类没有意义了

到各自中心点的距离之和 加上 K^2 作为正则化,来选取最优K

因为 K 过大的话,损失是会降低的;但是 K 本身变大会增大损失的值

主要是这个λ系数不好选择,因为 即便选择了适宜的λ,使得损失最小了

那么此时的 聚类结果与k个数 一定是最好的吗?

批评:

因为 k 过多,一个data一个类是没有意义的

k过少,所有data 一个类,也是没有意义的

即 k 应当适中才可以,所以 λ·K 仅仅是约束 k 不能太大,但是 并不是 k 越小越好,所以它没哟约束 k 不能太小,所以这个方法不合适

那么能不能构造一个凸函数:

f(k)—>正无穷,当k—>0

f(k)—>正无穷,当k—>N

或许可以试一下

jieba 分词
之前采用的是 最大前向、后向匹配

现在用了 HMM 的方法,即 S M E 作为分词的标注

聚类的分类
1. 软聚类 与 硬聚类

kmeans 属于硬聚类,即一个点只能属于一个类

GMM 可以是软聚类,一个点可以属于多个类(按概率)

2. 扁平聚类 与 树状聚类

扁平聚类,比如 kmeans 聚成某几类是 给定的

树状聚类,比如 层次距离,聚成几类都有 

GMM 中的EM 算法
M 步骤:

目标函数是

,经过求导有:

wi = Ni/N    # 每个高斯分布的权重

μi = ΣXi/Ni  Xi∈第i类  # 均值

Σi = Σ(Xi-μi)·(Xi-μi)^T    Xi∈第i类   # 方差

E 步骤:在给定Θ=(w, μ,Σ)  下 data 属于每一个 cluster 的概率

P(cluster = i | xj, Θ),即 Q 函数,即EM 当中的隐变量矩阵 Z

时间: 2024-12-28 11:01:49

聚类_七月算法4月机器学习班第10次课程笔记的相关文章

七月算法12月机器学习在线班---第二十次课笔记---深度学习--RNN

七月算法12月机器学习在线班---第二十次课笔记---深度学习--RNN 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 循环神经网络 复习之前的知识点: 全连接前向网络: 学习出来的是函数 卷积网络:卷积操作,部分链接,共享操作,逐层提取原始图像的特征(语音,NLP) 学习出来的特征 局部相关性 浅层宽网络很难做成神经网络 ? 1.1状态和模型 1, ID数据 ·分类问题 ·回归问题 ·特征表达 2, 大部分数据都不满足ID ·大部分

七月算法-12月机器学习在线班--第十六次课笔记—采样和变分

七月算法-12月机器学习--第十六次课笔记—采样和变分 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 第一部分 采样 引言 为什么要研究采样? 根据采样结果估算分布的参数,完成参数学习. 前提:模型已经存在,但参数未知: 方法:通过采样的方式,获得一定数量的样本,从而学习该系统的参数. 1 采样算法 现需要对概率密度函数f(x)的参数进行估计,若已知的某概率密度函数g(x)容易采样获得其样本,可以如何估计f(x)的参数? g(x)很容

七月算法-12月机器学习在线班--第十五次课笔记—主题模型

七月算法-12月机器学习--第十五次课笔记—主题模型 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 复习的知识: 1.,Γ函数 是阶乘在实数上的推广,即实数的阶乘 2,Beta分布 Beta分布的概率密度: 其中系数B为: 两者的关系 1,朴素贝叶斯分析 朴素贝叶斯没有分析语意,无法解决语料中一词多义和多词一义的问题,更像是词法的分析,可以 一, 1个词可能被映射到多个主题中——一词多义 二,多个词可能被映射到某个主题的概率很高——多

七月算法--12月机器学习在线班-第三次课笔记—矩阵和线性代数

七月算法--12月机器学习在线班-第三次课笔记—矩阵和线性代数 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

七月算法--12月机器学习在线班-第五次课笔记—回归

七月算法--12月机器学习在线班-第五次课笔记—回归 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

七月算法--12月机器学习在线班-第一次课笔记—微积分与概率论

七月算法--12月机器学习在线班-第一次课笔记—微积分与概率论 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

七月算法--12月机器学习在线班-第六次课笔记—梯度下降和拟牛顿

七月算法--12月机器学习在线班-第六次课笔记—梯度下降和拟牛顿 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

七月算法--12月机器学习在线班-第四次课笔记—凸优化

七月算法--12月机器学习在线班-第四次课笔记—凸优化 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

七月算法--12月机器学习在线班-第七次课笔记—最大熵

七月算法--12月机器学习在线班-第七次课笔记—最大熵 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com