基于MDS的波士顿房价数据集降维

2024-06-12 06:04

本文主要是介绍基于MDS的波士顿房价数据集降维,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 作者介绍
  • 2. 多维尺度分析(Multi-Dimensional Scaling, MDS)介绍
    • 2.1 MDS介绍
    • 2.2 MDS的类别
      • 2.2.1度量MDS
      • 2.2.2非度量MDS
    • 2.3 目标函数
    • 2.4 MDS降维计算步骤
      • 2.4.1计算流程
      • 2.4.2 算法示例
  • 3.实验过程
    • 3.1数据集介绍
    • 3.2算法思路
    • 3.3算法评价
    • 3.4与其他降维算法相比
      • 3.4.1主成分分析
      • 3.4.2 t-SNE
    • 3.5代码实现
      • 3.5.1二维可视化代码
      • 3.5.2三维可视化代码
    • 3.6实验结果
  • 4. 参考连接


1. 作者介绍

黄雨浩,男,西安工程大学电子信息学院,2023级研究生
研究方向:机器视觉与人工智能
电子邮件:1986506577@qq.com

孙思伟,男,西安工程大学电子信息学院,2023级研究生,张宏伟人工智能课题组
研究方向:深度强化学习与人工智能
电子邮件:sunsiwei0109@163.com

2. 多维尺度分析(Multi-Dimensional Scaling, MDS)介绍

2.1 MDS介绍

多维尺度分析(Multi-Dimensional Scaling, MDS)是一种统计学方法,用于将复杂、高维的相似性或距离数据转化为直观的、低维的可视化表示。它是通过保持原始数据中对象间距离关系的近似,将数据映射到一个较低维度的空间中,使得这些对象在新空间中的位置关系能够反映出原始数据中的相似性或距离。本质上是通过优化目标函数来实现高维到低维的映射

2.2 MDS的类别

2.2.1度量MDS

具体来说假设原始数据中的相似性或距离度量满足三角不等式,即对于任何三个对象i、j、k,有 dik ≤dij+djk。在这种情况下,MDS可以通过经典线性代数方法(如奇异值分解SVD)来求解。

2.2.2非度量MDS

不假设原始数据满足度量性质,而是通过秩次排序来表示对象间的相对相似性或距离。非度量MDS通常采用迭代优化算法(如SMACOF算法)来逼近最优解。

2.3 目标函数

目标函数通常包含两个部分:一是保持原始数据中对象间距离的近似度(stress函数),二是映射到低维空间的约束条件。具体来说,MDS试图找到一个低维空间中的点阵P,使得P中各点之间的距离与原始数据中对应对象间的相似性或距离度量尽可能接近。优化过程通常涉及最小化以下形式的目标函数:

在这里插入图片描述
dij表示原始数据中对象i和j之间的相似性或距离度量,pi,pj分别为它们在低维空间中的坐标向量。通过最小化stress函数S§,MDS力求在低维空间中保持原始数据的距离结构。

2.4 MDS降维计算步骤

2.4.1计算流程

在这里插入图片描述

2.4.2 算法示例

假设有5种水果:苹果(A)、香蕉(B)、橙子(C)、葡萄(D)和菠萝(E)。对这些水果进行了甜度(Sweetness)、酸度(Sourness)和多汁程度(Juiciness)的评分。
在这里插入图片描述
第一步:计算距离
使用欧式距离计算

A-B: 4.69
A-C: 3.74
A-D: 2.45
A-E: 3.32
B-C: 6.56
B-D: 3.32
B-E: 6.56
C-D: 5.29
C-E: 2.45
D-E: 5.29

在这里插入图片描述
第二步:构建距离矩阵
在这里插入图片描述
第三步:中心化距离矩阵
计算中心化矩阵H,数据点的数量n为5

在这里插入图片描述
第五步:计算特征值和特征向量
在这里插入图片描述
第六步:计算降维后坐标
构建特征向量矩阵V和特征值矩阵Λ的平方根;然后,我们计算降维后的坐标:新坐标 = A * A^(1/2)
在这里插入图片描述
最后完成降维

在这里插入图片描述

3.实验过程

3.1数据集介绍

Boston数据集是一个经典的回归分析数据集,包含了美国波士顿地区的房价数据以及相关的属性信息。该数据集共有506个样本,14个属性,其中包括13个特征变量和1个目标变量(房价中位数)。

序号英文中文
1CRIM per capita crime rate by town城镇人均犯罪率
2ZN proportion of residential land zoned for lots over 25,000 sq.ft.住宅用地所占比例,25000英尺
3INDUS proportion of non-retail business acres per town城镇中非商业用地的所占比例
4CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)CHAS查尔斯河虚拟变量,用于回归分析
5NOX nitric oxides concentration (parts per 10 million)环保指标
6RM average number of rooms per dwelling每栋住宅的房间数
7AGE proportion of owner-occupied units built prior to 19401940年以前建成的自住单位的比例
8DIS weighted distances to five Boston employment centres距离五个波士顿就业中心的加权距离
9RAD index of accessibility to radial highways距离高速公路的便利指数
10TAX full-value property-tax rate per $10,000每一万美元的不动产税率
11PTRATIO pupil-teacher ratio by town城镇中教师学生比例
12B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town城镇中黑人的比例
13LSTAT % lower status of the population地区有多少百分比的房东属于低收入阶层
14MEDV Median value of owner-occupied homes in $1000’s自住房屋房价的中位数
表1 数据集包含属性

3.2算法思路

在这里插入图片描述

图3 MDS降维步骤

3.3算法评价

优点:
直观可视化:MDS能够将高维数据映射到二维或三维空间,便于直观地观察数据分布和结构。
保持距离关系:MDS在低维空间中尽可能保留了原始数据的距离结构,有助于发现潜在的聚类或模式。
适用范围广:无论是度量还是非度量数据,MDS都能找到合适的处理方法。
缺点:
对距离矩阵依赖性强:MDS结果的可靠性很大程度上取决于输入的距离矩阵的质量。若距离矩阵计算不当或含有噪声,可能导致映射结果失真。
计算复杂度较高:对于大规模数据集,尤其是非度量MDS,优化过程可能较为耗时。
解释性有限:虽然MDS能够生成可视化结果,但对于映射到低维空间后的具体坐标值,其物理或实际意义可能不明确。

3.4与其他降维算法相比

3.4.1主成分分析

与PCA对比:主成分分析(PCA)也是一种降维方法,但其目标是最大化数据方差的保留,而非保持距离关系。PCA更适合于线性相关性强的数据集,而MDS对非线性关系的处理能力更强。

3.4.2 t-SNE

与t-SNE对比:t-distributed Stochastic Neighbor Embedding(t-SNE)也是一种流行的降维可视化方法,其特点是擅长揭示高维数据的局部结构。相比MDS,t-SNE对局部聚类效果更好,但全局结构可能不如MDS清晰。

3.5代码实现

3.5.1二维可视化代码

import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import MDS
import matplotlib.pyplot as plt# 加载波士顿房价数据集
boston = load_boston()
X = boston.data
y = boston.target# 对特征进行标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 使用MDS进行降维
mds = MDS(n_components=2)  # 设置要降维到的目标维度为2
X_mds = mds.fit_transform(X_scaled)# 可视化降维前的数据
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=y, cmap='viridis')
plt.title('Original Data')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')# 可视化降维后的数据
plt.subplot(1, 2, 2)
plt.scatter(X_mds[:, 0], X_mds[:, 1], c=y, cmap='viridis')
plt.title('MDS Reduced Data')
plt.xlabel('Component 1')
plt.ylabel('Component 2')plt.tight_layout()
plt.show()

3.5.2三维可视化代码

# 可视化降维后的数据
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X_mds[:, 0], X_mds[:, 1], X_mds[:, 2], c=y, cmap='viridis')
ax.set_title('MDS Reduced Data (3D)')
ax.set_xlabel('Component 1')
ax.set_ylabel('Component 2')
ax.set_zlabel('Component 3')

3.6实验结果

在这里插入图片描述

图4 MDS降维降为二维结果

在这里插入图片描述

图5 MDS降维降为三维结果

4. 参考连接

  1. 深度探索:机器学习多维尺度(MDS)算法原理及其应用
  2. 多尺度变换(Multidimensional Scaling ,MDS)详解

这篇关于基于MDS的波士顿房价数据集降维的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数