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

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

引子:高大上的生物学

       在生物学领域,为了研究基因表达 ,通常使用微阵列记录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()

运行结果如下:

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

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

相关文章
|
22天前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。
|
1月前
|
机器学习/深度学习 人工智能 数据处理
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
探测外太空中的系外行星是天文学和天体物理学的重要研究领域。随着望远镜观测技术的进步和大数据的积累,科学家们已经能够观测到大量恒星的光度变化,并尝试从中识别出由行星凌日(行星经过恒星前方时遮挡部分光线)引起的微小亮度变化。然而,由于数据量巨大且信号微弱,传统方法难以高效准确地识别所有行星信号。因此,本项目旨在利用机器学习技术,特别是深度学习,从海量的天文观测数据中自动识别和分类系外行星的信号。这要求设计一套高效的数据处理流程、构建适合的机器学习模型,并实现自动化的预测和验证系统。
37 1
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
29 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习简介
机器学习简介
32 3
|
1月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
53 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
107 1
|
1月前
|
机器学习/深度学习 存储 分布式计算
Hadoop与机器学习的融合:案例研究
【8月更文第28天】随着大数据技术的发展,Hadoop已经成为处理大规模数据集的重要工具。同时,机器学习作为一种数据分析方法,在各个领域都有着广泛的应用。本文将介绍如何利用Hadoop处理大规模数据集,并结合机器学习算法来挖掘有价值的信息。我们将通过一个具体的案例研究——基于用户行为数据预测用户留存率——来展开讨论。
68 0
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
42 1
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
机器学习框架简介
【6月更文挑战第26天】机器学习框架简介。
36 5
|
3月前
|
机器学习/深度学习 算法 搜索推荐
机器学习中的聚类
**文章摘要:** 本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。