admin管理员组

文章数量:1442737

AI应用实战课学习总结(8)降维算法分析实战

大家好,我是Edison。

最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。

今天是我们的第8站,一起了解下降维算法基本概念 以及 通过降维算法辅助商品品类分析的案例。

降维问题介绍

降维算法是用来减少数据特征数量的技术,在减少数据特征的同时,它还能够保持数据的结构和信息,降低多维数据分析和可视化的难度

比如,下面图中左边的三维图像不利于我们做可视化,那么将特征降维到两个后,基于这两个维度就可以清晰地可视化和做分析了。

画外音>在机器学习中,维度越多,数据集也就越复杂。业界也将其称为“维度灾难”。

降维算法经常用于以下场景:

  • 数据可视化:如何便于图形展示做数据分析
  • 特征选择:如何在一大堆特征中选择出最重要的几个特征
  • 数据压缩:降低了数据维度后还保留了数据的结构和信息,也就对数据做了压缩
  • 噪声消除:有些特征可能是冗余的,如何讲这些特征消除掉

常见降维算法

主要的降维算法如下图所示分为两类:

一类是做噪声消除,保存最重要的特征,特征值不变只是减少;如下图中的左边部分。

另一类是将原来的多个维度降低为指定的几个,是将原来的多个维度进行重新组合。如下图中右边的部分。

其中,最常见的用于降维的线性算法是PCA

PCA全名Principal Component Analysis(翻译:主成分分析),它是一种无监督学习算法,主要通过找到数据的主成分(即生成几个新特征,这些新特征就被认为是数据集的主成分),来减少数据的维数。

那么,日常实践中如何选择主要的降维算法呢?

如下图所示,取决于是否是监督学习,是否有标签,以及 数据是否具有线性关系。

下面的案例,我们以无监督学习的PCA算法为例继续。

商品品类分析案例

问题背景:

  • 某商家记录了旗下30种商品的市场分析数据
  • 数据包括:销售增长率、市场占有率、渠道成熟度、用户好评度等

问题目标:

  • 根据市场分析数据,观察哪些商品具有共性(或许可以归为同一类)?

商品品类分析代码实战

Step1 读取数据

代码语言:javascript代码运行次数:0运行复制
# 导入Pandas数据处理库
import pandas as pd

# 导入品类降维数据集
data = pd.read_csv('products-demo.csv')
data.head()

输出的数据如下图所示,可以看到4个主要的特征:销售增长率、市场占有率、渠道成熟度 和 用户好评度。

Step2 使用PCA算法进行降维

这里我们使用sklearn提供的PCA算法来将4个特征 降维到 2个特征,便于我们后续做可视化。

代码语言:javascript代码运行次数:0运行复制
# 导入SKLearn中的PCA工具
from sklearn.decomposition import PCA

# 指定需要进行降维的特征
features = data[['销售增长率', '市场占有率', 
                 '渠道成熟度', '用户好评度']]

# 用PCA算法进行降维,并指定最终维度为2,便于可视化
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(features)

Step3 绘制散点图辅助品类分析

代码语言:javascript代码运行次数:0运行复制
# 导入Matplotlib中的绘图工具pyplot
import matplotlib.pyplot as plt
# 设置字体为SimHei,以正常显示中文标签
plt.rcParams["font.family"]=['SimHei'] 
plt.rcParams['font.sans-serif']=['SimHei'] 
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 创建一个新的图形,设置大小为12x8
plt.figure(figsize=(12, 8))

# 在图上绘制降维后的数据点
plt.scatter(reduced_data[:, 0], 
            reduced_data[:, 1], 
            c=data['品类'], # 设置颜色
            cmap='rainbow', # 设置颜色映射
            edgecolor='k',  # 设置数据点边界颜色
            s=75 # 设置点的大小
            )

# 为每个数据点添加注释,用商品名标记每个点
offset = 0.02 # 我增加了一个偏移量,使得标签离数据点有一些距离
for i, name in enumerate(data['商品']):
    plt.annotate(name, (reduced_data[i, 0] + offset, 
                        reduced_data[i, 1] + offset), 
                        fontsize=9, alpha=0.7)

# 设置图的标题和x、y轴的标签
plt.title('商品数据的PCA降维')
plt.xlabel('主成分 1')
plt.ylabel('主成分 2')

# 去掉网格
plt.grid(False)

# 显示图形
plt.show()

降维后只有2个主成分的结果如下所示:可以看到它将数据中的所有商品分成了三个品类,紫色的商品相较其他颜色的商品品类更为接近,因为都是水果或饮料。

小结

本文介绍了机器学习中的降维场景问题,常用的降维算法 以及 如何选择降维算法,最后通过一个商品品类分析的案例做了一次实战,相信对你理解降维应用应该有所帮助。

在大数据和GPU时代,深度学习已经成为了标配,那么下一篇,我们就开始进入深度学习!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-30,如有侵权请联系 cloudcommunity@tencent 删除算法机器学习深度学习可视化数据

本文标签: AI应用实战课学习总结(8)降维算法分析实战