【问题标题】:Document clasification, using genetic algorithms文档分类,使用遗传算法
【发布时间】:2011-06-10 15:37:06
【问题描述】:

我的大学项目有点问题。

我必须使用遗传算法实现文档分类。

我看过 this 示例并且(可以说)理解遗传算法的原理,但我不确定如何在文档分类中实现它们。无法计算适应度函数。

这是我到目前为止所想到的(可能完全错误......)

接受我有类别,并且每个类别都由一些关键字描述。
将文件拆分为单词。
从填充了文件中随机单词的数组(例如 100 个数组,但这取决于文件的大小)创建第一个填充。
1:
为总体中的每个孩子选择最佳类别(通过计算其中的关键字)。
交叉人口中的每 2 个孩子(包含每个孩子一半的新数组)-“交叉”
用文件中随机未使用的单词填充交叉留下的其余孩子 - “进化??”
用文件中的随机词替换新群体中随机子项中的随机词(使用或未使用)-“突变”
将最佳结果复制到新种群。
转到 1 直到达到某个人口限制或找到某个类别的次数足够多

我不确定这是否正确,并且很乐意得到一些建议,伙计们。
非常感谢!

【问题讨论】:

  • 您能否更准确地了解系统需要实现的具体目标?像“给定 X 初始数据,输出 Y”之类的东西?
  • 我们有X个类别。系统需要把我们给它的所有文件放到正确的类别中。
  • 你需要训练系统——例如,如果你有一个预先分类文档的数据库,遗传算法可以使用它来进化分类规则。

标签: algorithm genetic-algorithm document-classification


【解决方案1】:

Ivane,为了正确地将 GA 应用于文档分类:

  1. 您必须将问题简化为一个可以进化的组件系统。
  2. 您不能针对单个文档进行文档分类的 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);

所以这不是万能的解决方案,但它应该给你一个不错的开始。 波兹德拉维, 基里尔

【讨论】:

    【解决方案2】:

    您可能会发现Learning Classifier Systems 有用/有趣。 LCS 是一种用于分类问题的进化算法。在 Eiben & Smith 的Introduction to Evolutionary Computing 中有一章是关于他们的。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2011-01-11
      • 2014-04-12
      • 2019-12-09
      • 2016-08-23
      • 2016-02-02
      • 2017-06-08
      • 1970-01-01
      相关资源
      最近更新 更多