机器学习基础(四)非监督学习的进阶探索

  导语:上一节我们详细探索监督学习的进阶应用,详情可见:

机器学习基础(三)监督学习的进阶探索-CSDN博客文章浏览阅读296次,点赞13次,收藏11次。监督学习作为机器学习的一个主要分支,专注于从带有标签的数据中学习和建立预测模型。这些模型可以预测新数据的标签,广泛应用于各种行业和领域,从简单的邮件分类到复杂的医疗诊断。https://blog.csdn.net/qq_52213943/article/details/136173870?spm=1001.2014.3001.5501        这一节,我们将详细探索非监督学习的进阶应用。

目录

非监督学习

聚类算法

K-均值聚类(K-Means Clustering)

层次聚类(Hierarchical Clustering)

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

聚类算法的比较

降维概述

主成分分析(PCA)

线性判别分析(LDA)

t-分布随机邻域嵌入(t-SNE)

降维技术的比较

关联规则学习

关键概念

常用算法

应用实例


非监督学习

        非监督学习像一位探险家,挖掘未标记数据的未知领域。它不依赖预先定义的类别或标签,而是试图揭示数据自身的结构和关系。这种学习方式在处理复杂数据集时尤其有价值,因为它能发现人类可能未曾预见的模式和联系。

聚类算法

        聚类算法是一种重要的非监督学习技术,它旨在将数据集中的样本分组成若干个簇,使得同一簇内的样本相似度高,而不同簇内的样本相似度低。聚类在许多领域中都有广泛应用,如市场细分、社交网络分析、计算生物学以及图像分割等。

K-均值聚类(K-Means Clustering)

        K-均值是最流行的聚类算法之一,因其简单高效而广泛应用。算法通过迭代过程将数据分为K个簇,每个簇由其质心(簇内点的平均值)定义。K-均值的主要挑战在于K值的选择,这通常需要领域知识或使用如肘部法则(Elbow Method)等技术来确定。

层次聚类(Hierarchical Clustering)

        层次聚类通过创建一个簇的层次结构来进行聚类,可以是自底向上的聚合方法(也称为凝聚聚类),或是自顶向下的分裂方法。凝聚聚类开始时将每个数据点视为一个独立的簇,然后逐渐合并为更大的簇,直到达到所需的簇数量或满足某个终止条件。层次聚类不需要预先指定簇的数量,且可以通过树状图(Dendrogram)直观地展示簇是如何合并或分裂的。

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

        DBSCAN是一种基于密度的聚类算法,能够识别出任意形状的簇,并且能够处理噪声和孤立点。它的核心概念是核心点、边界点和噪声点。算法通过查找被低密度区域分隔的高密度区域来形成簇。DBSCAN的优点是不需要预先指定簇的数量,且对于簇的形状和大小具有较好的适应性。

聚类算法的比较

  • K-均值
    • 优点:计算效率高,实现简单。
    • 缺点:需要预先指定簇的数量;对噪声和异常值敏感;假设簇是凸形和相似大小。
  • 层次聚类
    • 优点:不需要预先指定簇的数量;可以通过树状图直观展示聚类过程。
    • 缺点:计算复杂度较高,不适合大规模数据集;结果可能受初始数据点顺序的影响。
  • DBSCAN
    • 优点:不需要预先指定簇的数量;可以识别任意形状的簇,对噪声有较好的鲁棒性。
    • 缺点:对参数选择敏感;在密度差异较大的数据集中表现不佳。

        聚类算法是探索数据内在结构的强大工具,每种算法都有其独特的优势和适用场景。选择合适的聚类算法需要考虑数据的特性、应用场景的需求以及算法的限制。通过实践应用和结果可视化,我们可以更深入地理解聚类算法在解决实际问题中的作用和价值。下面是一个使用K-均值聚类的Python示例:

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import pandas as pd

# 假设data是包含特征的DataFrame
data = pd.DataFrame({
    'Feature1': [1.0, 1.5, 3.0, 5.0, 3.5, 4.5, 3.5],
    'Feature2': [1.0, 2.0, 4.0, 7.0, 5.0, 5.0, 4.5]
})

# 应用K-均值聚类
kmeans = KMeans(n_clusters=2)  # 假设我们将数据分为2个簇
kmeans.fit(data)

# 可视化聚类结果
plt.scatter(data['Feature1'], data['Feature2'], c=kmeans.labels_, cmap='rainbow')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()

降维概述

        降维是非监督学习中的一种重要技术,用于减少数据集的特征数量,同时尽可能保留原始数据的重要信息。这一过程对于处理高维数据集尤其重要,因为高维数据不仅增加了计算的复杂性,还可能引入噪声,导致模型性能下降(这一现象被称为“维度的诅咒”)。通过降维,我们可以提高数据处理的效率,改善模型的性能,并且使数据的可视化变得更加直观。

主成分分析(PCA)

        主成分分析(PCA)是最常用的降维技术之一。它通过线性变换将数据转换到新的坐标系统中,使得任何投影数据的第一大方差位于第一个坐标(称为第一主成分),第二大方差位于第二个坐标,依此类推。PCA能够揭示数据中的内在结构,减少冗余信息,而且通常用于数据预处理、数据可视化或准备数据以供后续的机器学习任务使用。

线性判别分析(LDA)

        线性判别分析(LDA)不仅是一种降维技术,也是一种分类方法。与PCA不同,LDA在降维时考虑了类别标签,目标是最大化不同类别之间的距离,同时最小化同一类别内的距离。这使得LDA成为一种监督学习技术,适用于分类问题中的特征降维。

t-分布随机邻域嵌入(t-SNE)

        t-SNE是一种非常有效的高维数据降维技术,尤其适用于数据可视化。它通过将高维数据中的相似对象转换为在低维空间中紧密聚集的点,而将不相似的对象转换为在低维空间中相距较远的点,从而保留了数据的局部结构。t-SNE非常适合于将高维数据降至2维或3维以便进行可视化。

降维技术的比较

  • PCA
    • 优点:去除数据冗余,降低数据复杂度,便于数据可视化和解释。
    • 缺点:基于线性假设,可能无法识别复杂的非线性关系。
  • LDA
    • 优点:在考虑类别信息的情况下最大化类别可分性,适用于监督学习。
    • 缺点:依赖于数据的线性可分性假设,对于非线性数据可能效果不佳。
  • t-SNE
    • 优点:能够揭示数据的局部结构,特别适合于数据可视化。
    • 缺点:计算成本高,难以解释,可能对超参数敏感。

        降维技术在数据预处理、特征工程和数据可视化中扮演着重要角色。通过合理选择和应用降维方法,我们可以更有效地处理和分析数据,揭示数据的内在结构,同时减轻后续机器学习模型的计算负担。在实际应用中,选择合适的降维技术需要考虑数据的特性、任务的需求以及技术的优缺点。以下是使用PCA进行降维的Python示例:

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import pandas as pd

# 假设data是包含多个特征的DataFrame
data = pd.DataFrame({
    'Feature1': [1.0, 1.5, 3.0, 5.0, 3.5, 4.5, 3.5],
    'Feature2': [1.0, 2.0, 4.0, 7.0, 5.0, 5.0, 4.5],
    'Feature3': [2.0, 3.5, 2.0, 5.0, 4.0, 5.0, 3.5]
})

# 应用PCA进行降维
pca = PCA(n_components=2)  # 将数据降至2维
reduced_data = pca.fit_transform(data)

# 可视化降维结果
plt.scatter(reduced_data[:, 0], reduced_data[:, 1])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Result')
plt.show()

关联规则学习

        除了上面所说的两种外,处理未标记数据并试图发现数据内在结构或模式的机器学习方法还有一个,就是关联规则学习,它是一种重要的数据挖掘技术,用于发现数据集中变量之间的有意义的关系。这种技术通常用于事务数据集,如零售市场的购物篮分析,以发现不同物品之间的关联性。关联规则的典型例子是“如果购买了物品A(如啤酒),则也可能购买物品B(如薯片)”。这种分析有助于零售商理解顾客的购买行为,从而优化产品布局、库存管理和促销策略。

关键概念
  • 支持度(Support):一个项集(如啤酒和薯片组合)在所有交易中出现的频率。
  • 置信度(Confidence):在包含项集A(如啤酒)的交易中,项集B(如薯片)也出现的条件概率。
  • 提升度(Lift):规则的置信度与项集B(如薯片)的支持度之比。提升度表明了项集A的出现对项集B出现概率的增加程度。
常用算法
  • Apriori算法:是最著名的关联规则挖掘算法之一。它通过迭代方式发现频繁项集,先找出频繁的单个项,然后是频繁的项对,接着是三项的组合,以此类推。Apriori算法利用了频繁项集的性质:一个项集如果是频繁的,那么它的所有子集也都是频繁的。
  • FP-growth算法:是一种用于发现数据集中频繁模式的有效方法。与Apriori相比,FP-growth的性能通常更优,因为它只需要对数据库进行两次扫描,并使用一种称为FP树(频繁模式树)的数据结构来存储数据集的压缩表示。
应用实例

        在超市购物篮分析中,关联规则学习可以揭示哪些产品常常一起被购买。这些信息可以用来指导许多商业决策,如:

  • 产品布局:将经常一起购买的产品放置在相邻位置,以增加交叉销售的机会。
  • 销售促销:如果两个产品经常一起购买,对其中一个产品进行促销可能会增加另一个产品的销量。
  • 库存管理:了解哪些产品组合是受欢迎的,可以帮助更有效地管理库存。

使用Apriori算法进行关联规则学习的Python示例:

from mlxtend.frequent_patterns import apriori, association_rules
from mlxtend.preprocessing import TransactionEncoder
import pandas as pd

# 示例数据集,表示购物篮中的商品
dataset = [['Milk', 'Bread', 'Beer'],
           ['Milk', 'Bread'],
           ['Bread', 'Beer'],
           ['Milk', 'Eggs'],
           ['Bread', 'Eggs']]

# 将数据集转换为适合机器学习模型的格式
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)

# 使用Apriori算法找出频繁项集
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)

# 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)

# 显示关联规则
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

下一节我们将进行监督与非监督学习的结合探索

机器学习基础(五)监督与非监督学习的结合-CSDN博客文章浏览阅读4次。将监督学习和非监督学习结合起来,就像将两种不同的艺术形式融合,创造出全新的作品。这种结合利用了两种学习方法的优点,能够处理更复杂的数据集,并提高模型的准确性和泛化能力。https://blog.csdn.net/qq_52213943/article/details/136214916?spm=1001.2014.3001.5502​​​​​​​-----------------

以上,欢迎点赞收藏、评论区交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/407598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RHEL9安装Python2.7

RHEL9作为2022年5月新推出的版本,较RHEL8有了很多地方的改进,而且自带很多包,功能非常强大,稳定性和流畅度也较先前版本有了很大的提升。RHEL9自带python3.9,但是过高版本的python不可避免地会导致一些旧版本包地不兼容…

【分布式事务 XA模式】MySQL XA模式详解

MYSQL中的XA事务 写在前面1. XA事务的基本原理2. MySQL XA事务操作 写在前面 MySQL 的 5.0.3 版本开始支持XA分布式事务,并且只有innoDB存储引擎支持XA事务。 1. XA事务的基本原理 XA事务本质上是一种基于两阶段提交的分布式事务,分布式事务可以理解成…

一些PCB整改优化经验总结

一个UP的PCB整改经验: 当正面全局铺铜之后出现很多小铜皮碎片的时候不如不铺铜或者单面铺铜RJ45网口的地和整体的地分开,两地之间通过电容相连(整板地一定要相连)TVS这种防浪涌高压的器件的地单独铺设,这样当高压来临…

《艾尔登法环 黄金树幽影》是什么?Mac电脑怎么玩《艾尔登法环》艾尔登法环下载

全体起立,《艾尔登法环 》最新DLC《黄金树幽影》将在6月21日发布,steam售价198元,现在就可以预订了。宫崎英高在接受FAMI通的采访时表示,新DLC的体量远超《黑暗之魂》和《血源诅咒》资料片。好家伙,别人是把DLC续作&am…

踩坑:SpringBoot连接Mysql的时区报错

解决方法:1.修改时区2.修改连接版本 目录 1.修改时区 2.切换版本 1.修改时区 查看mysql的默认时区 SELECT global.time_zone AS Global Time Zone, session.time_zone AS Session Time Zone; 查看mysqk的默认是时区返回两个结果 Global Time Zone:表示Mysql…

Jenkins中Publish Over SSH插件使用(1)

SSH插件 前言Publish Over SSH插件是jenkins里面必不可少的插件之一,主要的功能有两个把jenkins服务器上的文件,传输到远程nginx, 远程执行shell命令和脚本。 1. SSH插件下载与配置 1.1 下载Publish over SSH插件 系统管理—》管理插件 …

可控核聚变新里程碑!AI成功预测等离子体撕裂登Nature,清洁能源「圣杯」更近一步

可控核聚变,又有新突破了! 长期以来,核聚变一直受着一个「幽灵」的困扰——等离子体不稳定性问题。 而最近,普林斯顿团队用AI提前300毫秒预测了核聚变等离子不稳定态,这个时间,就足够约束磁场调整应对等离…

美团外卖流程解析:便捷、高效、安全的美食配送

美团外卖作为中国最大的外卖平台之一,提供了丰富多样的美食选择,并通过高效的配送服务将美食送到用户手中。本文将深入探讨美团外卖的流程,从下单到送达,揭秘背后的便捷、高效、安全的运营体系。 1. 下单与支付 美团外卖的下单过…

[每周一更]-(第88期):Nginx 之 proxy_pass使用详解

proxy_pass 指令用于指定后端服务器的地址,可以采用以下不同的格式: 直接指定地址和端口: location / {proxy_pass http://backend_server:8080; }这将请求代理到 http://backend_server:8080。 使用变量: location / {set $ba…

bat脚本检测进程程序的方法

一、脚本检测进程 使用批处理脚本检测程序是否在运行,可以使用tasklist命令来列出当前运行的所有进程,并通过findstr命令来搜索特定的进程名。下面是一个简单的批处理脚本示例,它会检测指定的程序是否在运行,并给出相应的信息&…

PostgreSQL索引篇 | BTree

B-Tree索引 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) B树特点: 非叶子节点含一个或多个关键字值和子节点指针,不指向实际数据的存储位置所有关键字都是叶子节点,每个叶…

echarts多y轴样式重叠问题

1、主要属性设置 yAxis: [{//y轴1nameTextStyle: {align: "right",padding: 0}},{//y轴2nameTextStyle: {align: "left",padding: 0}},{//y轴3axisLabel: {margin: 50},nameTextStyle: {align: "left",padding: [0, 0, 0, 50]},axisPointer: {l…

华为HCIP Datacom H12-831 卷24

多选题 1、如图所示,某园区部署OSPF实现网络互通,其中Area1部署为NSSA区域。某工程师为了实现R1访问R4的环回口地址,在R4的OSPF进程中引入直连路由。以下关于该场景的描述,错误的有哪些项? A、在R4引入直连路由后,R1通过转换后的…

Sublime Text4配置C#运行环境

这里写自定义目录标题 前言部署.NET环境Sublime Text4配置C#编译环境1. 下载插件 运行测试 前言 今天把家里的9年前的远古神机搬了出来,重装了个win7的精简版,本打算装个VScode测试一下是否能写C#代码,结果是可以的,但&#xff0…

Python中format()方法的基本使用,第一种用法 <模板字符串>.format(<参数列表>)。

第一种用法&#xff1a; <模板字符串>.format(<参数列表>) 解析&#xff1a; 其中&#xff1a; <模板字符串>是包含占位符或者叫槽&#xff08;用花括号 {} 表示&#xff09;的字符串&#xff0c;用来指定最终格式化后的字符串的样式和结构。<参数列表…

Android 解决后台服务麦克风无法录音问题

Android 解决后台无法录音问题 问题分析问题来源解决方案1. 修改清单文件:`AndroidManifest.xml`2. 修改启动服务方式3. 服务启动时创建前台通知并且指定前台服务类型参考文档最后我还有一句话要说我用心为你考虑黄浦江的事情,你心里想的却只有苏州河的勾当 问题分析 安卓9.…

Android BitmapDrawable.bitmap与BitmapFactory.decodeResource获取不到原始图像素级真实宽高,Kotlin

Android BitmapDrawable.bitmap与BitmapFactory.decodeResource获取不到原始图像素级真实宽高&#xff0c;Kotlin 当一个图片放在ImageView里面后&#xff0c;用以下方式获取图的宽高&#xff1a; val bmp1 (this.drawable as BitmapDrawable).bitmapLog.d("fly", &…

Fiddler工具 — 21.Fiddler常用插件

Fiddler已有的功能已经够我们日常工作中使用了&#xff0c;为了更好的扩展Fiddler&#xff0c;Fiddler也是支持一些插件的安装&#xff0c;也支持用户自己开发插件并安装。 Fiddler插件下载地址&#xff1a;https://www.telerik.com/fiddler/add-ons 1、Traffic Differ Traf…

最优二叉搜索树 C#实现

最优二叉搜索树 C#实现 介绍一下 上一篇博文搞半天挺烧脑&#xff0c;没搞清楚继续… 主要是练习动态规划算法。最关键的一个是这个最优二叉搜索树能干啥。我认为如果数据稳定&#xff0c;统计出概率来&#xff0c;用最优二叉树保存&#xff0c;以后搜索应该是效率比较高的。…

Java中23种设计模式-单例模式--工厂模式

加油&#xff0c;新时代打工人&#xff01; 23种设计模式定义介绍 Java中23种设计模式-单例模式 Java中23种设计模式-单例模式2–懒汉式线程不安全 Java中23种设计模式-单例模式2–懒汉式2线程安全 Java中23种设计模式-单例模式–饿汉式 定义&#xff1a; 工厂模式&#x…