matlab - 对具有未知标签的数据进行分类并在 matlab 中验证结果

标签 matlab machine-learning k-means

我有 8 个文本文件,每个文件都包含 300 名玩家在 8 个不同字段的游戏中使用的一些数据(特别是他们随机游走的坐标)。我想开发并实现一种计算机算法来确定不同玩家使用的不同策略。

我开始使用 k-means,我使用其中 6 个文本文件作为训练,其余的用于测试。但是,我不知道如何验证我的结果。换句话说,我想首先知道我应该最小化错误的不同类的数量,但我不知道如何在这里定义错误。我将非常感谢您的帮助。

最佳答案

我。轨迹上的 k 均值

k-Means 无疑是一种流行且简单的算法,但它也是一个相当弱的算法。特别是,它往往擅长对空间内的行为集群进行分类。您拥有的玩家轨迹(“随机游走”)可能不适合 k - 意思是因为您期望玩家之前的位置会影响他们的下一个位置。本质上,数据的结构不仅涉及空间,还涉及时间,这对于 k 均值来说可能很困难。考虑从轨迹中提取一些特征(如何不稳定、如何快速等)并在这些维度上进行聚类,或者使用针对时间相关性的算法,例如隐马尔可夫模型。

二。验证

在机器学习中,最常见的验证类型是保留验证。这是当您拥有一组正确分类的数据,并使用其中的一部分进行训练,并将其中的一部分用作训练模型必须努力实现的“目标”时。

此方法不适用于您的情况,但检查它很重要。您尝试让模型与保留集匹配的原因是,如果您只想最小化模型中数据的误差,那么大多数机器学习算法都会过度拟合。这意味着他们在猜测所看到的数据方面将变得无限好,但在预测新数据方面却变得越来越糟糕。这样的模型看起来很棒,但本质上毫无值(value)。

即使是“无监督”设置,您的情况也可能会发生类似的情况,因此我们没有标记的训练集。如果您决定最小化 k 均值模型的误差并且您有 N 个训练点,那么 k 的最佳选择是 >k = N。当然,这样的模型将与您的训练数据完全相同,因此对于 future 的任何分类都是无用的。

通常处理这种情况的方法是通过标准化。不是最小化错误,而是最小化错误加上使用更多集群的惩罚项(甚至像error + k^2这样的东西也将是某种标准化项) 。这意味着您的算法将受到限制,不能选择过高的 k,因为惩罚项最终会消除奖金。

在标准化优化方案下,您可能会发现自己处于存在有意义的最佳值的偶然情况。这是现在的正确答案吗?

遗憾的是,我们无从知晓。无监督机器学习本身并没有目标。例如,批评者可能会说你错误地选择了标准化。然而,它可能有用吗?好吧,假设您的特征确实可以识别一些l种不同的玩家行为,那么如果k接近l,那么您的模型做得不错,但所有这些假设都只是机器中的幽灵。

关于matlab - 对具有未知标签的数据进行分类并在 matlab 中验证结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22593274/

相关文章:

matlab - 如何让 MATLAB 忽略函数?

machine-learning - 大图像的语义分割

Tensorflow 预测的含义

opencv - 准备好数据(每行一个样本)以使用k均值进行聚类吗?

r - 使轮廓图对于 k 均值清晰易读

MATLAB 根函数在 MATLAB 和 Simulink 中的行为不同?

matlab - 为什么稀疏密集乘法比密集稀疏乘法快?

c++ - Eigen 库的 Eigenvalues 目录中的 .h 文件似乎有很多语法错误?

tensorflow - 将 keras 应用程序模型与 tf.functions 结合使用时出现 "Unknown graph"错误

r - 如何在 r 中标记 k-means 聚类