我遇到了以下问题。我有一个训练数据集,包含一系列数字。每个数字属于某个类别。共有五个类别。
范围:1…10
训练数据集:{1,5,6,6,10,2,3,4,1,8,6,…}
类别:[1,2][3,4][5,6][7,8][9,10]
是否可以使用机器学习算法来预测每个类别的可能性?如果可以,哪种算法适合这个任务?
最好的祝愿,US
回答:
正如问题评论中所述,我想根据训练集的给定分布计算某个类别出现的可能性
,
这个问题非常简单,几乎不属于机器学习范畴:
只需统计训练集中每个类别的出现次数,Count_12, Count_34, … Count_910。给定类别xy出现的可能性简单地由以下公式给出:
P(xy) = Count_xy / 训练集中元素的总数 = Count_xy / (Count_12 + Count_34 + Count_56 + Count_78 + Count_910)
一个更有趣的问题…
…是将训练集视为一个序列,并猜测该序列中的下一个项目是什么。下一个项目属于某个类别的概率不仅基于该类别的先验概率(上面计算的P(xy)),还应考虑序列中前面的项目。这个问题的有趣部分之一是确定要回顾多远以及给前面的序列项目赋予多少“权重”。
编辑(现在原问题者表示对“更有趣的问题”感兴趣)。
这个“根据前序预测”的问题几乎直接对应于
machine-learning-algorithm-for-predicting-order-of-events StackOverflow问题。
这里的细微差别在于,这里使用的字母表有10个不同的代码(另一个问题中是4个),以及这里我们尝试预测的是代码的类别,而不是代码本身。关于这里的每个类别包含2个代码的聚合,我们有几种选择:
- 从一开始就处理类别,即将序列中读取的每个代码替换为其类别,并从那时起只考虑和跟踪类别。
- 只处理代码,即创建一个1到10的代码预测器,只在最后考虑类别,将组成一个类别的两个代码的概率相加,以产生下一个项目属于该类别的可能性。
- 某种混合解决方案:考虑/处理代码,但有时聚合到类别。
我个人会选择先尝试代码预测器(只在最后进行聚合),如果从这个初步尝试中获得的见解告诉我们,如果我们提前聚合,逻辑或其性能可以简化或改进,那么可以从那里进行调整。实际上,同一个预测器可以用来尝试这两种方法,只需更改输入流,将所有偶数替换为前面的奇数。我猜测,当我们提前聚合时,会丢失用于猜测即将到来的代码的有价值信息。