问题标签 [multi-dimensional-scaling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R中cmdscale的意外结果
恐怕我遗漏了一些明显的东西,但我看不出我做错了什么。
如果有人可以帮我找到它,请,它会很棒。
这是我开始的完整的对称距离矩阵:
我想为相应的 6 个点生成坐标,以便从这些坐标产生的(欧几里德)距离矩阵尽可能接近 my d2
.
从cmdscale
文档中:
n 个点上的一组欧几里得距离最多可以在 n - 1 个维度上精确表示。
我会认为(n-1)/2
尺寸就足够了,事实上,当我跑步时cmdscale
,如果我去任何比我高的地方,k=3
我得到的东西接近 0 对于更高的坐标,甚至是错误消息:
因此,假设k=3
这就足够了,当我尝试反转操作时会发生这种情况:
这与我的预期完全不同:
有谁知道为什么这两个距离矩阵根本不匹配?
我可以尝试构建自己的最小二乘问题来找到坐标,但首先我需要了解我是否对这些开箱即用的 R 功能做错了什么。
谢谢!
编辑发现的数据中可能存在的不一致
问题可能是根据d2
第 1 点和第 5 点重合(它们的距离为 0):
但是这两个点与其他点的距离不同,例如 d(1-2) 是 0.1 而 d(5-2) 是 1?
替换两个 0 似乎无济于事:
这是否可能表明并非所有距离矩阵都可以简化为一组完全一致的点,无论使用多少维?
编辑最后一个问题的 2 个可能答案。
我怀疑答案是肯定的。而且我在维度的数量上是错误的,我现在明白了为什么你需要N-1
而不是一半。
如果我的距离 d(AB) = 1,我可以用 2-1 = 1 维(x 轴)表示,即在一条线上,将 A 放在 (xA=0) 中,将 B 放在 (xB=1) 中。
然后我介绍第三个点 C 并声明 d(AC) = 2。
我有 3 个点,所以我需要 3-1 = 2 个维度(xy 平面)。
d(AC) 给出的约束是:
(xC - 0)^2 + (yC - 0)^2 = d(AC)^2 = 4。
即 C 可以位于以 A 为中心的半径为 2 的圆周上的任何位置。
这将 xC 和 yC 都限制在 [-2,2] 中。
但是,以前我没有考虑过这也会限制 d(BC) 的可能值,因为:
d(BC)^2 = (xC - 1)^2 + (yC - 0)^2
因此,通过替换 (yC - 0)^2 项:
d(BC)^2 = (xC - 1)^2 + 4 - (xC - 0)^2 = -2*xC + 5
d(BC)^2 因此绑定到 [-2*(+2)+5,-2*(-2)+5] = [1,9]。
因此,如果我的距离矩阵在 [1,3] 之外的任何位置包含 d(AB) = 1、d(AC) = 2 和 d(BC),它将配置一个不对应于欧几里得空间中的 3 个点的系统。
至少,我希望这是有道理的。
所以我想我原来的问题必须被撤销。
我想我会把推理留在这里以供将来参考,或者其他人是否应该有同样的疑问。
r - 对于初学者来说,度量和非度量 MDS 有什么区别?
我对数据科学还很陌生,想用简单的话(比如教你的祖母)知道度量和非度量多维缩放之间的区别是什么。
我已经用谷歌搜索了 2 天并观看了不同的视频,并且无法完全理解人们用来描述差异的一些术语,也许我缺乏一些基本知识,但我不知道在哪个领域,所以如果你在解决这个问题之前,我应该对我应该有一个深刻的了解有一个想法,我会很感激你的建议。这是我所知道的:
多维缩放是一种减少维度的方法,以便能够以更友好的方式可视化或表示数据。我知道 MDS 有几种方法,如公制和非公制、PCA 和 FA(也许 FA 是 PCA 的一部分,我不确定)。
我试图应用这个的例子是一组数据,显示不同的城市和与这些城市相关的属性。例如,对于 1-7 的分数(1 最低 - 7 最高),这是每个城市的分数和相应的属性。
柏林--------- 4 --------- 2---------------- --------5------------6
日内瓦---------6 --------- 3----------------- ------7------------7
巴黎------------ 3 --------- 4------------- ---------6-------------7
巴塞罗那----- 2 --------- 6--------- --3-------------------------4
我如何知道我应该使用公制 MDS 还是非公制 MDS。是否有一般的经验法则或简单的逻辑可供我在不深入技术流程的情况下做出决定。
谢谢
python - 应用 MDS 时如何测量距离
嗨,我有一个关于将 MDS 与 Python 一起应用的非常具体、奇怪的问题。
在创建原始高维数据集的距离矩阵(我们称之为 distanceHD)时,您可以使用欧几里得距离或曼哈顿距离测量所有数据点之间的距离。
然后,在执行 MDS 之后,假设我将 70 多列减少到 2 列。现在,我可以创建一个新的距离矩阵。我们称它为 distance2D,它再次测量数据点之间的距离,无论是在曼哈顿还是欧几里得。
最后,我可以找到两个距离矩阵之间的差异(distanceHD 和 distance2D 之间),如果我将大型数据集中的数据点之间的距离保留到列数更少的新数据集中,这个新的差异矩阵会告诉我。(在执行 MDS 之后)。然后我可以使用该差分矩阵上的应力函数计算应力,并且该数字越接近 0,投影越好。
我的问题:我最初被教导在 distanceHD 矩阵中使用曼哈顿距离,并在 distance2D 矩阵中使用欧几里得距离。但为什么?为什么不在两者上都使用曼哈顿?还是欧几里得?还是距离HD上的欧几里得和距离2D上的曼哈顿距离?
我想还有一个整体问题:我什么时候在 MDS 算法上使用任一距离度量?
很抱歉这篇冗长且可能令人困惑的帖子。我有一个示例如下所示:
r - R中的多维尺度 - 数据
我想根据下表制作一个多维比例图(这只是整个表格的较短形式)。
我一直在尝试在 R 中做到这一点(我在这里很新……)但现在。我什至不确定这种类型的数据是否适合多维缩放。整个表格应该反映一个语义(语言)图(这就是为什么我认为 MDS 应该很好),并且行表示线人看到了一些图片并为图片提供了不同的表达方式(列),因此他们对它们进行了不同的描述。列中的数字在从 1 到 10 或类似的范围内没有判断,但它们显示了有多少人使用了 pic1、pic2 等表达式。
谁能帮我解释一下 MDS 实际上是我正在尝试使用的合适模型?(对不起,在过去几天阅读了很多关于不同方法的内容后,我感到非常困惑......)如果是这样,这是我使用的编码(只是为了确定)。
非常感谢您的任何建议!
python - 将 scikit-learn 中 MDS 的共现矩阵转换为相异矩阵
我有一个单词共现矩阵,如下所示。我想使用 MDS 来减少尺寸并绘制它。在 sklearn 中有一个函数model = MDS(n_components=2, dissimilarity='precomputed', random_state=1)
并应用模型output = model.fit_transform(input)
我的理解是输入应该是一个相异矩阵,而不是我所拥有的相似矩阵。那是对的吗?有没有可以用来转换这个共现相异矩阵的函数?我对此很陌生。非常感谢您的帮助。
r - 为什么我的 ordisurf 拟合值与实际变量值不匹配?
这是我的 NMDS 排序矩阵(PA.mm.5p.rel)。
这是我的环境/个人数据(PA_Info)。
创建 NMDS 和点的数据框。
运行 ordisurf 并使用函数从 sp.sf 对象中提取 x、y 和 z 坐标。
这是我提取坐标的地方,但是 contour.vals 中的 z 值与 .vals 中观察到的值范围不匹配PA_Info$TL
。当您绘制并将“级别”中的比例与“总长度”进行比较时,您还可以在图例中看到这一点。因为存在差异,我担心我不能相信 ordisurf 或相关 p 值 ( summary(sp.sf)
) 的输出。有谁知道可能出了什么问题?
python - 如何从相似矩阵中绘制 MDS?
我正在使用值在 0 和 1 之间的相似度矩阵(1 表示元素相等),并且我正在尝试使用 python 和 scikit-learn 绘制 MDS。
我找到了多个示例,但我不确定将什么作为 mds.fit() 的输入。
现在,我的数据看起来像这样(file.csv):
我目前正在使用此代码:
我不确定 sklearn 在做什么。我阅读了很多示例,其中人们使用中间为 0(而不是 1)的“相异矩阵”。
multidimensional-array - Google Analytics 中自定义维度中的自定义维度
在 Google Analytics(分析)的免费版本中,每个媒体资源/视图最多只能使用 20 个自定义维度。作为一种解决方法,我目前正在尝试在 Google Analytics 中的现有自定义维度中创建自定义维度表。本质上,我正在尝试使用索引和值自定义维度作为其自身的自定义维度表。我要解决的问题是 6sense GA 集成,目前,6sense 占据了 20 个可用自定义维度中的 17 个。我想将这 17 个自定义维度合并到一个查找表变量中,该变量从 dataLayer 中的 6sense companyData 变量中提取:6sense Lookup Table Variable
我遇到的问题是:
- 配置完成后,如何访问 GA 中的每个索引值?
- 配置后,它是否仍允许细化会话数据(会话、跳出率、目标完成次数等)?
任何想法,帮助,建议都会受到赞赏。提前致谢!
physics - 1e-26 到 1e-15 的大数量级的参数缩放?
我有参数,它们的范围不同。
它们是在某些条件下计算的,例如温度。
缩放应该以数值在大约 0.1 到 1.5 范围内的方式进行。
这意味着代入方程式,这些范围可以提供该量与温度等的关系。
例如,方程是这样的 S = T*1.54/240;其中 T 是上述量 T1、T2、T3、T4、T5 的缩放值。
如何进行缩放以便我得到一些合理的缩放值,即 S?