- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
众所周知,在 k 均值聚类中,我们可以使用贝叶斯信息准则 (BIC) 来找出最佳聚类数。最小化BIC分数的k是根据BIC评分方案的最佳簇数。
BIC 的公式如下:
BIC(C) = n*ln(RSS/n) + k*ln(n)
其中 n 是数据集中数据点的数量,k 是集群的数量。RSS 是残差平方和,我们将每个数据点与其自身簇的质心的距离相加。我们的数据包含 3100 个点,每个点有两个元素 y=(x1, x2)(每个条目有两个特征)。
我在Matlab中的代码如下:
BIC=[];% Bayesian Information Criterion
n=3100; % number of datapoints
temp=1;
for k=1:50 % number of clusters
RSS=0; % residual sum of squares
[idx,C]=kmeans(y,k); % Matlab command for k-mean clustering
for i=1:3100
RSS=RSS+sqrt((y(i,1)-C(idx(i),1))^2+(y(i,2)-C(idx(i),2))^2);
end
BIC(temp)=n*log(RSS/n)+k*log(n);
temp=temp+1;
end
[p,l]=min(BIC);
plot(BIC)
但是我的代码肯定有问题,我不能说是什么!我的意思是,如果我们让 k 从 1 到 100,那么最小化 BIC 的 k 将为 100。如果我们让 k 从 1 到 1000,那么使 BIC 最小化的 k 将为 1000,依此类推。但据我所知应该有一个特定的 k 最小化 BIC。感谢您的帮助
最佳答案
我可以看到一些可以解释您报告的行为的潜在问题:
1) 我认为您使用的简化公式不适合您的情况
我不确定具体细节,但来自 wikipedia使用的特殊情况 才合适
Under the assumption that the model errors or disturbances are independent and identically distributed according to a normal distribution and that the boundary condition that the derivative of the log likelihood with respect to the true variance is zero
我对该领域的知识还不够了解,不知道第二个条件是否成立。查看原始X-means paper by Peleg and Moore中的公式以下(this answer)我可以看到他们没有将公式简化为您正在使用的公式(完整公式请参见他们链接论文中的第 4 页。请注意,他们提出了一种更复杂的算法,该算法在每次迭代时考虑每个质心和它的区域针对同一区域的几个质心,并使用 BIC 模型选择比较这两个模型。如果您想保留您的模型,则必须更改论文中的公式以考虑给定 k 的整个模型方法)。
2) 你混淆了两个不同上下文的k
您将 k 均值算法中的 k
插入到公式的自由参数惩罚元素中。
来自 wikipedia
where
[...]
*
k
= the number of free parameters to be estimated.
在above linked x-mean paper在第 4 页第二列的顶部,他们计算了在 d
维空间中具有 k
质心的 k-means 模型的自由变量数为 k(d+1)
在您的情况下给出 3k
而不是 k
。
更改行中的代码
BIC(temp)=n*log(RSS/n)+k*log(n);
进入
BIC(temp)=n*log(RSS/n)+(k*3)*log(n);
关于algorithm - 使用 BIC 的 K 均值聚类中的最佳聚类数,(MATLAB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473719/
是否可以设置逐步线性模型来使用 BIC 标准而不是 AIC? 我一直在尝试这个,但它仍然使用 AIC 值而不是 BIC 来计算每个步骤 null = lm(data[,1] ~ 1) full = l
我正在尝试使用前向逐步算法和 BIC 准则为线性模型选择变量。正如帮助文件所示,我一如既往地写了以下内容: model.forward<-lm(y~1,data=donnees) model.forw
我为 php 函数 pregmatch 写了一个正则表达式,如下所示: ^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$^ 现
这个问题已经有答案了: Match exact string (3 个回答) 已关闭 5 年前。 社区 8 个月前审核了是否重新开放此问题,并将其关闭: 需要详细信息或澄清通过 editing thi
我正在尝试使用前向逐步算法和 BIC 准则为线性模型选择变量。正如帮助文件所示以及我一贯所做的那样,我编写了以下内容: model.forward。另一方面,如果您的预测变量中有 NA 值,那么您在进
我对 BIC 图与 GMM 中组件数量的关系感到非常困惑。 Python 文档说越低越好,但我在一些网站上读到,正确的簇数是局部最大值的第一个位置!!! 任何人都可以详细说明这一点,Python 是否
我不太明白为什么我无法正确计算贝叶斯信息准则,并希望有人能指出我正确的方向。 我这样做是因为我试图手动计算 BIC(对于 plm 对象,它们似乎没有与它们相关的既定例程)。我从 Wikipedia p
是否有可用于从 IBAN 银行帐号(和其他必要信息)生成 BIC 代码的现有库或脚本? 我在网上搜索过,但只找到了 IBAN 生成器。 提前致谢! 最佳答案 为所有 IBAN 帐户找到解决方案(我认为
现在 SEPA 要求让人们习惯了 BIC 和 IBAN,有些遗留系统无法处理这些新数据。是否有可用于将 BIC 和 IBAN 转换回排序代码和帐户的算法或工具? 最佳答案 下面是一个例子: 从这里 w
在我过去的研究中,我发现这些问题没有得到我喜欢的答案: Generate BIC from IBAN bank account number How to convert BIC & IBAN to
所以这是我的数据头, thickness grains resistivity 1 25.1 14.9 0.0270 2 368.4 58.1 0.0
我已经用谷歌搜索了这个并找不到解决方案。 R 似乎在 AIC/BIC 计算方面存在问题。它会产生错误的结果。一个简单的例子如下所示: link = 'https://gist.githubuserco
是否可以在 C# 中为 IBAN、BIC(可能使用 struct)创建一个非常简单的值类型?这会自动适用于 Json 序列化和 EF Core 保存等功能吗? 我想在转换为 Json 的数据对象以及通
我想知道是否可以从 GLMNet 获取 AIC 和 BIC。我发现 glmnet.cr 似乎能够做到这一点,但我的 react 是时间,而不是序数。我可以根据可能性自己计算它,但 glmnet 也不会
众所周知,在 k 均值聚类中,我们可以使用贝叶斯信息准则 (BIC) 来找出最佳聚类数。最小化BIC分数的k是根据BIC评分方案的最佳簇数。 BIC 的公式如下: BIC(C) = n*ln(RSS/
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,
指定相同 AR(或 MA)模型由 R 中的 forecast 包中的函数 arima() 进行估计的不同方法不同的 BIC(贝叶斯信息准则)值。 为什么会发生这种情况? 考虑两种模型: (1) AR(
我正在使用 GMM 来分割/聚类 800x800 像素和 4 个波段的高光谱图像数据。 我拍了一张照片并应用 GMM 来聚类像素。 现在,在我目前的情况下,我很容易手动确定图像中有多少个组件。 (草、
在 scikit-learn 中,GaussianMixture 对象具有实现贝叶斯信息准则的方法 bic(X) 来选择更适合数据的组件。这是一个用法示例: from sklearn import m
我想要得到一个像这样的图,用于选择 PCA 中的组件数量: 然而,我在尝试手动编码 BIC/AIC 时遇到了困难。 R 或 Python 中是否有任何软件包可以帮助我实现这一点?任何示例代码都会有很大
我是一名优秀的程序员,十分优秀!