本质上:Python 中的哪些技术可以在非常大的分类数据集中找到集群/趋势?
我非常大的分类数据数据集(140000 行/观察,80 个变量)已使用 one-hot 编码重新编码,因此它们都是二进制的(例如,ethnicity_black、ethnicity_asian)。该数据集用于英国警察使用武力的实例。
我正计划对其进行凝聚层次聚类以找到使用力事件中的模式(通过集群描述),但我无法做到这一点,因为距离矩阵总是太大并且不断崩溃。我使用的是 Gower 的距离,因为它们都是虚拟变量和 gower 包。
我曾尝试通过 MCA 进行降维(如 PCA,但用于分类变量),但这只是减少了列数,并且距离矩阵仍然太大(140000x140000 需要 72.7GB 的 RAM)。
然后我尝试减少到前 10000 行,但这占用了 10000x10000=100000000(1 亿个单元格),并且在构建树状图时超出了递归深度限制。不确定是否适合简单地取 1400000 行中的一个很小的随机子集?因为这在揭示模式方面可能没有代表性。
因此,我正在寻找除层次聚类之外的其他聚类方法,因为 K-means 仅适用于连续数据,DBSCAN 也是如此,因为它们使用欧几里得距离。想知道你们之前在工作中是否遇到过类似的情况,在这种情况下可以分享其他技术或可能的解决方法吗?
tldr; K-Means 和 DBSCAN 似乎适用于连续数据,由于所需的相异矩阵,层次聚类对于大型数据集的可扩展性不是很好。我正在探索 K 模式,但也不确定如何解释输出......
我之前做过这种 MCA - 层次聚类技术,但在 R 中,密切遵循本文中使用的方法:https://erf.org.eg/wp-content/uploads/2019/11/Fateh-Belaid_Manuscript_FB_10-09-2019_FB。 pdf
但是,即使该工作流程也不适用于我当前的数据集,因为它太大了。
任何意见,将不胜感激...
非常感谢你!