Riy*_*yaz 7 cluster-analysis data-mining dbscan
我需要根据不同介词的分布(如agentive,instrumental,time,place等)找到自然发生的名词类.我尝试使用k-means聚类但帮助较少,但效果不好,我所寻找的类有很多重叠(可能是因为类的非球形形状和k-means中的随机初始化) ).
我现在正在使用DBSCAN,但我无法理解此聚类算法中的epsilon值和迷你点值.我可以使用随机值,还是需要计算它们.任何人都可以帮忙.特别是对于epsilon,至少如果我需要的话,如何计算它.
使用您的领域知识选择参数.Epsilon是一个半径.您可以将其视为最小簇大小.
显然随机值不会很好.作为一种启发式方法,您可以尝试查看k距离图; 但它也不是自动的.
首先要做的是为数据选择一个好的距离函数.并执行适当的规范化.
至于"minPts",它又取决于您的数据和需求.一个用户可能想要与另一个用户非常不同的值.当然,minPts和Epsilon是耦合的.如果你加倍epsilon,你将大致需要将你的minPts增加2 ^ d(对于欧几里德距离,因为这就是超球体的体积增加!)
如果你想要很多细小的细节簇,请选择一个小的碎片.如果您想要更大和更少的聚类(以及更多噪音),请使用更大的碎片.如果您根本不需要任何群集,请选择大于数据集大小的minpts ...
为您的数据集及其所属领域正确选择 DBSCAN 算法的超参数非常重要。
\neps超参数
为了确定eps数据集的最佳值,请使用 K 最近邻方法,如这两篇论文中所述:Sander 等人。1998 年和舒伯特等人。2017 年(两篇论文均来自 DBSCAN 的原始作者)。
下面是他们方法的精简版本:\n如果开始时有 N 维数据,则选择n_neighborsin sklearn.neighbors.NearestNeighbors等于 2xN - 1,并找出 K 个最近邻的距离(K 为 2xN - 1)数据集中的每个点。对这些距离进行排序并绘制它们以找到将噪声点(具有高 K 最近邻距离)与最有可能落入一个簇的点(具有相对较低 K 最近邻距离)分开的“肘部”。这个“肘部”发生的距离就是你的最佳点eps。
下面是一些 Python 代码来说明如何执行此操作:
\ndef get_kdist_plot(X=None, k=None, radius_nbrs=1.0):\n\n nbrs = NearestNeighbors(n_neighbors=k, radius=radius_nbrs).fit(X)\n\n # For each point, compute distances to its k-nearest neighbors\n distances, indices = nbrs.kneighbors(X) \n \n distances = np.sort(distances, axis=0)\n distances = distances[:, k-1]\n\n # Plot the sorted K-nearest neighbor distance for each point in the dataset\n plt.figure(figsize=(8,8))\n plt.plot(distances)\n plt.xlabel(\'Points/Objects in the dataset\', fontsize=12)\n plt.ylabel(\'Sorted {}-nearest neighbor distance\'.format(k), fontsize=12)\n plt.grid(True, linestyle="--", color=\'black\', alpha=0.4)\n plt.show()\n plt.close()\n\n\nk = 2 * X.shape[-1] - 1 # k=2*{dim(dataset)} - 1\nget_kdist_plot(X=X, k=k)\n\nRun Code Online (Sandbox Code Playgroud)\n\n从上图可以推断,eps对于给定数据集,可以假设 的最佳值约为 22。
注意:我强烈建议读者参考上面引用的两篇论文(尤其是 Schubert 等人,2017 年),以获取有关如何避免使用 DBSCAN 以及其他聚类算法时的几个常见陷阱的其他提示。
\n网上有几篇文章 \xe2\x80\x93\xe2\x80\x93 DBSCAN Python 示例:Epsilon (EPS)和CoronaVirus Pandemic的最佳值和 Google Mobility Trend EDA \xe2\x80\x93\xe2\x80\x93基本上使用相同的方法,但没有提到 K 或 K 值的关键选择n_neighbors2xN-1 的关键选择。
min_samples超参数
至于超参数,我同意接受的答案min_samples中的建议。此外,选择此超参数最佳值的一般准则是应将其设置为特征数量的两倍(Sander 等人,1998)。例如,如果数据集中的每个点都有 10 个特征,则要考虑的起始点为 20。min_samples