Algorithm 文档分类,使用遗传算法
我的大学项目有点问题 我必须用遗传算法实现文档分类 我已经看过了示例,并且(假设)理解了遗传算法的原理,但我不确定如何在文档分类中实现它们。无法计算适应度函数 以下是我到目前为止的想法(可能是完全错误的…) 接受我有这些类别,每个类别都有一些关键字描述。Algorithm 文档分类,使用遗传算法,algorithm,genetic-algorithm,document-classification,Algorithm,Genetic Algorithm,Document Classification,我的大学项目有点问题 我必须用遗传算法实现文档分类 我已经看过了示例,并且(假设)理解了遗传算法的原理,但我不确定如何在文档分类中实现它们。无法计算适应度函数 以下是我到目前为止的想法(可能是完全错误的…) 接受我有这些类别,每个类别都有一些关键字描述。 将文件拆分为单词。 从填充了文件中随机单词的数组(例如100个数组,但这取决于文件大小)创建第一个填充。 1: 为人口中的每个孩子选择最佳类别(通过计算其中的关键字)。 人口中每2个孩子进行交叉(新数组包含每个孩子的一半)-“交叉” 用文件“e
将文件拆分为单词。
从填充了文件中随机单词的数组(例如100个数组,但这取决于文件大小)创建第一个填充。
1:
为人口中的每个孩子选择最佳类别(通过计算其中的关键字)。
人口中每2个孩子进行交叉(新数组包含每个孩子的一半)-“交叉”
用文件“evolution???”中随机未使用的单词填充交叉剩下的其他孩子
用文件中的随机字替换新人群中随机子对象中的随机单词(使用或不使用)-“突变”
将最佳结果复制到新人群中。
转到1,直到达到某个人口限制或找到某个类别足够的次数 我不确定这是否正确,希望各位能给我一些建议。
非常感谢 你可能会发现有用/有趣。LCS是一种用于分类问题的进化算法。Eiben&Smith的《Ivane》中有一章介绍了GA,以便正确地将GA应用于文档分类:
- 拥有足够数量的培训数据:您需要一组已经分类的文档,这些文档的多样性足以涵盖您可能遇到的文档范围
- 训练遗传算法正确地对这些文档的子集(即训练数据集)进行分类
- 在每一代中,根据验证数据集测试最佳样本,如果验证精度开始下降,则停止培训
prevValidationFitness = default;
currentValidationFitness = default;
bestGA = default;
while(currentValidationFitness.IsBetterThan( prevValidationFitness ) )
{
prevValidationFitness = currentValidationFitness;
// Randomly generate a population of GAs
population[] = randomlyGenerateGAs();
// Train your population on the training data set
bestGA = Train(population);
// Get the validation fitness fitness of the best GA
currentValidationFitness = Validate(bestGA);
// Make your selection (i.e. half of the population, roulette wheel selection, or random selection)
selection[] = makeSelection(population);
// Mate the specimens in the selection (each mating involves a crossover and possibly a mutation)
population = mate(selection);
}
每当您收到一份新文档(以前未分类的文档),您现在可以使用最佳GA对其进行分类:
category = bestGA.Classify(document);
所以这并不是最终的解决方案,但它应该给你一个良好的开端。
波兹达拉维,
Kiril您能否更准确地说明系统需要实现什么?类似于“给定X个初始数据,输出Y”?我们有X个类别。系统需要将我们提供给它的所有文件放入正确的类别中。您需要训练系统-例如,如果您有一个数据库,如果预分类的文档,遗传算法可以使用它来进化分类规则。