机器学习之聚类——双聚类简介及简单案例

简介: 机器学习之聚类——双聚类简介及简单案例

引子:高大上的生物学

       在生物学领域,为了研究基因表达 ,通常使用微阵列记录mRNA分子的含量并对基因的表达强度进行推断。它可以记录人体大量乃至全部基因在不同环境下的表达强度,并以矩阵形式进行储存,这些以矩阵形式存储的数据,被称为基因表达数据。

       可以将基因表达数据抽象成基因表达矩阵,对基因表达数据很重要的一个研究方面就是发现基因和环境所属的类别,也即,对基因表达矩阵进行双聚类(对矩阵的行列两个方向同时聚类)

双聚类算法

总的来说,双聚类的过程就是从原矩阵中获取聚类子矩阵,如下图两个例子

双聚类问题描述如下:

       通过公式我们可以观察到,残差是用自身值减去相应行和相应列的平均值,再加上总体平均值得到。也就是说,残差值的大小与自身以及所在的行列中的元素有关。残差值越小,表明该位置上的元素与这一行这一列的相关性越大,在聚类时更有可能划分到一起。而残差值大,则表明本身的值较其他元素差距较大。所以,通过残差我们就可以表示出元素与双向聚类其他元素之间的相关性。

       双向聚类针对不一样的问题有不一样的策略,策略不同,运行效率也不同。策略一般有:贪婪策略(Greedy Iterative Search);穷举策略(Exhaustive Bicluster Enumeration);分而治之策略(Divide-and-Conquer);直接策略等。贪婪策略通过在每一步都选用局部内的最优结果,结合每一步达到最终全局最优;穷举策略由于其复杂度是指数型的,在数据很多的情况下有很大的弊端;分治策略通过将问题划分为不同的独立的小问题,通过逐个解决小问题寻求全局最优解,但这个解并不一定是最好的。

       上面只是对双聚类算法的原理做了最基础的探讨,在具体算法实现中,双聚类算法主要分为基于谱聚类算法的双聚类和基于凸聚类算法的双聚类。具体内容小编会找时间仔细研究并形成博文,尽情期待吧!!!

案例:官方案例

双聚类的案例网上资料比较少,这里附上sklearn官方的一个案例,感官上跟双聚类来一次亲密接触吧!

# Author: Kemal Eren <kemal@kemaleren.com>
# License: BSD 3 clause
 
import numpy as np
from matplotlib import pyplot as plt
 
from sklearn.datasets import make_biclusters
from sklearn.cluster import SpectralCoclustering
from sklearn.metrics import consensus_score
 
data, rows, columns = make_biclusters(
    shape=(300, 300), n_clusters=5, noise=5, shuffle=False, random_state=0
)
 
plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Original dataset")
 
# shuffle clusters
rng = np.random.RandomState(0)
row_idx = rng.permutation(data.shape[0])
col_idx = rng.permutation(data.shape[1])
data = data[row_idx][:, col_idx]
 
plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Shuffled dataset")
 
model = SpectralCoclustering(n_clusters=5, random_state=0)
model.fit(data)
score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))
 
print("consensus score: {:.3f}".format(score))
 
fit_data = data[np.argsort(model.row_labels_)]
fit_data = fit_data[:, np.argsort(model.column_labels_)]
 
plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("After biclustering; rearranged to show biclusters")
 
plt.show()

运行结果如下:

关于双聚类,笔者会更深入的研究,并写出博文,供大家参考!!

作者这水平有限,有不足之处欢迎留言指正

相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
149 4
|
28天前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
68 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
3月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
79 0
|
5月前
|
机器学习/深度学习 人工智能 数据处理
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
探测外太空中的系外行星是天文学和天体物理学的重要研究领域。随着望远镜观测技术的进步和大数据的积累,科学家们已经能够观测到大量恒星的光度变化,并尝试从中识别出由行星凌日(行星经过恒星前方时遮挡部分光线)引起的微小亮度变化。然而,由于数据量巨大且信号微弱,传统方法难以高效准确地识别所有行星信号。因此,本项目旨在利用机器学习技术,特别是深度学习,从海量的天文观测数据中自动识别和分类系外行星的信号。这要求设计一套高效的数据处理流程、构建适合的机器学习模型,并实现自动化的预测和验证系统。
93 1
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
|
4月前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
224 1
|
5月前
|
机器学习/深度学习 人工智能 算法
机器学习简介
机器学习简介
55 3
|
5月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
77 2
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
512 1
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
114 1