【问题标题】:How to classify a set of samples via a continuous feature?如何通过连续特征对一组样本进行分类?
【发布时间】:2011-10-21 17:50:20
【问题描述】:

例如,我得到了下表,它只是 20 岁以上的人的粗略分布

      年龄    人数

  •    2              1
  •    5              5
  •    8              2
  •    10             3
  •    15            1
  •    16             2
  •    17            1
  •    20            4
  •    21            1

然后通过使用相同的数据集,我可以构建另一个“更好”的表。

      年龄    人数

  •   10-             8
  •    10s             7
  •   20+             5

事实上,我可以使用相同的数据集制作更多包含不同年龄段组合的表格。

现在我想知道如何才能找到最佳组合。我们可以用来衡量组合是否良好的可能“良好功能”可能来自以下三个原则:

  • 课程不宜过多或过少
  • 类的范围不应相差太大。
  • 分布应该足够平滑,即每个类所涵盖的项目数不应该相差太大。

由于这个问题所代表的情况只是笼统地描述了一种特定的问题,因此应该已经有了一些复杂的解决方案。但我没能找到它们。谁能给点建议?

我已经使用了一些分类算法,例如 PCA、k-mean 或“基于最大熵的算法”,但它们似乎过于笼统,无法通过遵循上述所有三个原则来涵盖这个特定问题。

【问题讨论】:

  • 这个统计问题与编程有什么关系?我不确定这是否 100% 合适,但您考虑过 math.stackexchange.com 吗?
  • 这个集群的目的是什么?通常,您会聚集到预定义的组中,并且某些类别的数字与其他类别的数字非常不同的情况很有趣。
  • 经验法则是,如果您有 N 个数据,则取 ~ sqrt(N) 个 bin。
  • 我认为你应该更精确地制定需求——“太少”、“太多”、“足够流畅”等不是 am 算法的好条件。你能给我们介绍一下背景,这个任务是什么的一部分?
  • @stakx:一般来说,这样的问题可能有一个纯粹的算法解决方案(一些数据结构或一些众所周知的算法),所以实际上它与编程有关。但是,它也与数学和统计有关,所以如果没有人提供好的答案,我也建议尝试CrossValidated。但首先让我们看一下问题背景和可能的算法解决方案。

标签: algorithm machine-learning cluster-analysis classification


【解决方案1】:

我会做以下事情:

构造一个评估函数:

double goodness(double firstThreshold, double bucketWidth, int numBuckets)

它会根据您的原则返回良好分数。然后我会蛮力使用一些参数组合,并选择具有最佳质量分数的组合。如果我们为每个参数尝试 4-10 个值,那么蛮力将起作用,并且可能会为您提供不错的截止数字。如果您想变得更复杂或让它运行得更快,那么您可以尝试其他搜索方法,例如爬山、光束搜索或模拟退火,但我认为这对您的情况来说可能有点过头了。

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 2021-09-26
    • 2017-04-24
    • 2012-05-16
    • 2017-01-07
    • 1970-01-01
    • 2021-03-26
    • 2014-06-10
    • 2015-12-13
    相关资源
    最近更新 更多