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应用于文档分类:

  • 您必须将问题简化为一个可以演化的组件系统
  • 您不能对单个文档进行文档分类的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个类别。系统需要将我们提供给它的所有文件放入正确的类别中。您需要训练系统-例如,如果您有一个数据库,如果预分类的文档,遗传算法可以使用它来进化分类规则。