从数据列表中预测最有可能的项目的算法
Algorithm for predicting most likely items from lists of data
假设我有 N 个已知列表。每个列表都有可能重复的项目(不是集合)
例如:
{A,A,B,C}, {A,B,C}, {B,B,B,C,C}
我需要一些算法(也许是一些机器学习算法?)来回答以下问题:
给定一个新的和未知的部分项目列表,例如 {A,B},根据我从之前的列表中知道的信息,C 出现在列表中的概率是多少。如果可能的话,我想要一个更细粒度的概率:给定一些部分列表 L,C 在列表中出现一次的概率是多少,它出现两次的概率是多少,等等......顺序无关紧要。 C在{A,B}中出现两次的概率应该等于它在{B,A}中出现两次的概率
有什么算法可以做到这一点?
这只是纯数学,没有实际的 "algorithms",只是估计数据集中的所有概率(字面意思是计算出现的次数)。特别是你可以做非常简单的数据结构来实现你的目标。将每个 "list" 表示为字母袋,因此:
{A,A,B,C} -> {A:2, B:1, C:1}
{A,B} -> {A:1, B:1}
等并创建某种基本的反向索引,例如分别为每个字母保留索引,按它们的计数排序。
现在,当出现查询时,例如 {A,B} + C
,您所做的就是搜索至少包含 1 个 A 和 1 个 B 的数据(使用您的索引),然后通过计算分数来估计概率包含 C(或恰好一个 C)的检索结果与所有检索结果(假设您的数据是来自某些基础数据生成分布的一堆独立样本,这是一个有效的概率估计)。
或者,如果您的字母表非常小,您实际上可以预先计算所有字母组合的所有值 P(C|{A,B})
等。
假设我有 N 个已知列表。每个列表都有可能重复的项目(不是集合) 例如:
{A,A,B,C}, {A,B,C}, {B,B,B,C,C}
我需要一些算法(也许是一些机器学习算法?)来回答以下问题:
给定一个新的和未知的部分项目列表,例如 {A,B},根据我从之前的列表中知道的信息,C 出现在列表中的概率是多少。如果可能的话,我想要一个更细粒度的概率:给定一些部分列表 L,C 在列表中出现一次的概率是多少,它出现两次的概率是多少,等等......顺序无关紧要。 C在{A,B}中出现两次的概率应该等于它在{B,A}中出现两次的概率
有什么算法可以做到这一点?
这只是纯数学,没有实际的 "algorithms",只是估计数据集中的所有概率(字面意思是计算出现的次数)。特别是你可以做非常简单的数据结构来实现你的目标。将每个 "list" 表示为字母袋,因此:
{A,A,B,C} -> {A:2, B:1, C:1}
{A,B} -> {A:1, B:1}
等并创建某种基本的反向索引,例如分别为每个字母保留索引,按它们的计数排序。
现在,当出现查询时,例如 {A,B} + C
,您所做的就是搜索至少包含 1 个 A 和 1 个 B 的数据(使用您的索引),然后通过计算分数来估计概率包含 C(或恰好一个 C)的检索结果与所有检索结果(假设您的数据是来自某些基础数据生成分布的一堆独立样本,这是一个有效的概率估计)。
或者,如果您的字母表非常小,您实际上可以预先计算所有字母组合的所有值 P(C|{A,B})
等。