发布时间:2023-11-13
点击次数: 在机器学习中,术语ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
在监督学习领域,已经广泛研究和应用了这种方法,尤其是在分类问题上,像RandomForest这样非常成功的算法。通常会采用投票/加权系统,将每个单独模型的输出组合成更健壮和一致的最终输出
在无监督学习领域,这项任务变得更加困难。首先,因为它包含了该领域本身的挑战,我们对数据没有先验知识,无法将自己与任何目标进行比较。其次,因为找到一种合适的方法来结合所有模型的信息仍然是一个问题,而且对于如何做到这一点还没有达成共识。
在本文中,我们讨论关于这个主题的最佳方法,即相似性矩阵的聚类。

该方法的主要思想是:给定一个数据集X,创建一个矩阵S,使得Si表示xi和xj之间的相似性。该矩阵是基于几个不同模型的聚类结果构建的。
创建输入之间的二元共现矩阵是建模型的第一步

它用于指示两个输入i和j是否属于同一个簇。
import numpy as np from scipy import sparse def build_binary_matrix( clabels ): data_len = len(clabels) matrix=np.zeros((data_len,data_len))for i in range(data_len):matrix[i,:] = clabels == clabels[i]return matrix labels = np.array( [1,1,1,2,3,3,2,4] ) build_binary_matrix(labels)

我们已经构造了一个函数来二值化我们的聚类,下面可以进入构造相似矩阵的阶段。
我们这里介绍一个常见的方法,它仅涉及计算M个不同模型生成的M个共现矩阵之间的平均值。我们将其定义为:

当条目落在同一簇中时,它们的相似度值将接近于1,而当条目落在不同组中时,它们的相似度值将接近于0
我们将基于K-Means模型创建的标签构建一个相似矩阵。使用MNIST数据集进行。为了简单和高效,我们将只使用10000张经过PCA降维的图像。
from sklearn.datasets import fetch_openml from sklearn.decomposition import PCA from sklearn.cluster import MiniBatchKMeans, KMeans from sklearn.model_selection import train_test_split mnist = fetch_openml('mnist_784') X = mnist.data y = mnist.target X, _, y, _ = train_test_split(X,y, train_size=10000, stratify=y, random_state=42 ) pca = PCA(n_components=0.99) X_pca = pca.fit_transform(X)为了使模型之间存在多样性,每个模型都使用随机数量的簇实例化。
NUM_MODELS = 500 MIN_N_CLUSTERS = 2 MAX_N_CLUSTERS = 300 np.random.seed(214) model_sizes = np.random.randint(MIN_N_CLUSTERS, MAX_N_CLUSTERS+1, size=NUM_MODELS) clt_models = [KMeans(n_clusters=i, n_init=4, random_state=214) for i in model_sizes] for i, model in enumerate(clt_models):print( f"Fitting - {i+1}/{NUM_MODELS}" )model.fit(X_pca)下面的函数就是创建相似矩阵
魔术橡皮擦
智能擦除、填补背景内容
80
查看详情
def build_similarity_matrix( models_labels ):n_runs, n_data = models_labels.shape[0], models_labels.shape[1] sim_matrix = np.zeros( (n_data, n_data) ) for i in range(n_runs):sim_matrix += build_binary_matrix( models_labels[i,:] ) sim_matrix = sim_matrix/n_runs return sim_matrix
调用这个函数:
models_labels = np.array([ model.labels_ for model in clt_models ]) sim_matrix = build_similarity_matrix(models_labels)
最终结果如下:

来自相似矩阵的信息在最后一步之前仍然可以进行后处理,例如应用对数、多项式等变换。
在我们的情况下,我们将保持原意不变进行重写
Pos_sim_matrix = sim_matrix
相似矩阵是一种表示所有聚类模型协作所建立的知识的方法。
我们可以通过它直观地看到哪些条目更有可能属于同一个簇,哪些不属于。然而,这些信息仍然需要转化为实际的簇
这是通过使用可以接收相似矩阵作为参数的聚类算法来完成的。这里我们使用SpectralClustering。
from sklearn.cluster import SpectralClustering spec_clt = SpectralClustering(n_clusters=10, affinity='precomputed',n_init=5, random_state=214) final_labels = spec_clt.fit_predict(pos_sim_matrix)
我们来与KMeans进行性对比,这样可以确认我们的方法是否有效。
我们将使用NMI、ARI、集群纯度和类纯度指标来评估标准的KMeans模型和我们的集成模型进行对比。此外,我们还将绘制权变矩阵,以可视化每个簇中属于哪些类别
from seaborn import heatmap import matplotlib.pyplot as plt def data_contingency_matrix(true_labels, pred_labels): fig, (ax) = plt.subplots(1, 1, figsize=(8,8)) n_clusters = len(np.unique(pred_labels))n_classes = len(np.unique(true_labels))label_names = np.unique(true_labels)label_names.sort() contingency_matrix = np.zeros( (n_classes, n_clusters) ) for i, true_label in enumerate(label_names):for j in range(n_clusters):contingency_matrix[i, j] = np.sum(np.logical_and(pred_labels==j, true_labels==true_label)) heatmap(contingency_matrix.astype(int), ax=ax,annot=True, annot_kws={"fontsize":14}, fmt='d') ax.set_xlabel("Clusters", fontsize=18)ax.set_xticks( [i+0.5 for i in range(n_clusters)] )ax.set_xticklabels([i for i in range(n_clusters)], fontsize=14) ax.set_ylabel("Original classes", fontsize=18)ax.set_yticks( [i+0.5 for i in range(n_classes)] )ax.set_yticklabels(label_names, fontsize=14, va="center") ax.set_title("Contingency Matrix\n", ha='center', fontsize=20)
from sklearn.metrics import normalized_mutual_info_score, adjusted_rand_score def purity( true_labels, pred_labels ): n_clusters = len(np.unique(pred_labels))n_classes = len(np.unique(true_labels))label_names = np.unique(true_labels) purity_vector = np.zeros( (n_classes) )contingency_matrix = np.zeros( (n_classes, n_clusters) ) for i, true_label in enumerate(label_names):for j in range(n_clusters):contingency_matrix[i, j] = np.sum(np.logical_and(pred_labels==j, true_labels==true_label)) purity_vector = np.max(contingency_matrix, axis=1)/np.sum(contingency_matrix, axis=1) print( f"Mean Class Purity - {np.mean(purity_vector):.2f}" ) for i, true_label in enumerate(label_names):print( f" {true_label} - {purity_vector[i]:.2f}" ) cluster_purity_vector = np.zeros( (n_clusters) )cluster_purity_vector = np.max(contingency_matrix, axis=0)/np.sum(contingency_matrix, axis=0) print( f"Mean Cluster Purity - {np.mean(cluster_purity_vector):.2f}" ) for i in range(n_clusters):print( f" {i} - {cluster_purity_vector[i]:.2f}" ) kmeans_model = KMeans(10, n_init=50, random_state=214) km_labels = kmeans_model.fit_predict(X_pca) data_contingency_matrix(y, km_labels) print( "Single KMeans NMI - ", normalized_mutual_info_score(y, km_labels) ) print( "Single KMeans ARI - ", adjusted_rand_score(y, km_labels) ) purity(y, km_labels)
data_contingency_matrix(y, final_labels) print( "Ensamble NMI - ", normalized_mutual_info_score(y, final_labels) ) print( "Ensamble ARI - ", adjusted_rand_score(y, final_labels) ) purity(y, final_labels)


通过观察上述数值,可以明显看出Ensemble方法能够有效提升聚类的质量。同时,在权变矩阵中也能观察到更加一致的行为,具有更好的分布类别和较少的“噪声”
以上就是无监督学习的集成方法:相似性矩阵的聚类的详细内容,更多请关注其它相关文章!
# fig
# 做一个影视推广的网站
# 宜春如何做seo
# 苏州在哪建设网站
# 广州专业的seo优化
# 云南推广互联网营销公司
# 网站meta SEO
# 营销推广高手是谁
# 合川区网站建设方案公示
# 是在
# 几个
# 这是
# 中时
# 如何用
# 开源
# 一幅
# 落在
# 微软
# 官网
# type
# 机器学习
# hyein seo贵吗
# 沈阳seo管理平台
相关栏目:
【
行业新闻62819 】
【
科技资讯67470 】
相关推荐:
三个全球首创,青岛西海岸新区“海元宇宙”亮相世界人工智能大会
微幼科技晨检机器人:幼儿园健康保障的新伙伴
大厂出品!这个AI网站太顶了,所有功能免费用
小米发布CyberDog2 - 他们的第二代仿生四足机器人展示
500元一张的AI艺术二维码制作,详细教程来了!
应用生成式人工智能技术改善农业产业
发布最新版本的 PICO OS 5.7.0:支持VR头盔录屏并跨平台分享至微信
支持跨语言、人声狗吠互换,仅利用最近邻的简单语音转换模型有多神奇
Meta发布音频AI模型,仅需2秒片段模拟真人语音
「从未被制造出的最重要机器」,艾伦·图灵及图灵机那些事
拓普龙7188ML:轻便壁挂式工控机箱,为人工智能应用场景提供有力保障
Meta 开源 AI 语言模型 MusicGen,可将文本和旋律转化为完整乐曲
梦想实现!硬核科幻大片VR智能头盔即将问世
日媒关注中国推进鸟类识别 AI 普及,除监测保护外还可预防传染性疾病
马斯克:将来机器人比人类多!特斯拉机器人亮相人工智能大会
Stability AI 推出文生图模型 SDXL0.9,GPU要求下探至消费级水平
苹果推出全新沉浸式 AR 体验应用“Deep Field”
中国AI公有云市场2025年逆势蓬勃增长,增速高达80.6%
微软 Copilot 团队主管呼吁用户与 AI 交流时应使用恰当的礼貌用语
十个AI算法常用库J*a版
机构研选 | 虚拟电厂是电力物联网升级版 智能电网望迎来高速发展
AI+音乐如何“生成”动听旋律?一起揭秘世界人工智能大会开场曲
25个AI智能体源码现已公开,灵感来自斯坦福的「虚拟小镇」和《西部世界》
埃森哲俞毅:AI时代我们需要新的“摩尔定律”
推动综合能源服务高质量发展
抖音在Android平台获得VR|直播|软件著作权
优地网络助力新媒体拥抱人工智能时代
人工智能在交通领域的革新:智能解决方案彻底改变交通方式
AI大模型产品集体奔赴高考考场,教育赛道的讯飞星火能赢吗?
昌吉市利用无人机实现全天候河道动态巡检
日本学校探索引入 AI 和无人机:提高安保效率,节省劳动力
OpenAI 向所有付费 API 用户开放 GPT-4
食品分销跨国企业Sysco CIDO:我们的增长秘诀是以IT为中心
Moka AI产品后观察:HR SaaS迈进AGI时代
微软面向AI初学者推出免费网络课程
华为余承东表示:鸿蒙可能拥有强大的人工智能大模型能力
GPT-4使用混合大模型?研究证明MoE+指令调优确实让大模型性能超群
用AI技术点亮老照片:Deep Nostalgia带给照片新生动感
组建团队,字节跳动要造机器人?
小米创始人雷军将揭示小米AI在年度演讲中的最新进展
聚焦人工智能大模型、AIGC 徐汇十余场重磅论坛等你来
乐天派桌面机器人加入小米米家生态系统,实现与其他智能设备的互联
以分布式网络串联闲置GPU,这家创企称可将AI模型训练成本降低90%
即将到来:AI婚纱设计软件实际测试,人工智能即将开创婚纱设计新纪元
微软新出热乎论文:Transformer扩展到10亿token
天翼云在国际AI顶会大模型挑战赛中获得冠军
Intel酷睿Ultra发布会官宣!迈向全新的AI时代
一次购买全年省心,入手科沃斯这几台机器人,省下时间就是金钱
网易加速行业AI大模型应用,将覆盖100多个应用场景
国内首家,360智脑通过中国信通院可信AIGC大语言模型功能评估