论文部分内容阅读
文本分类是机器学习与信息挖掘中的一个传统问题。不同于类别较少且均处在同一层面的传统分类任务,本文所谓“层次型分类”是指类别间存在一个树状的层次结构;并且本文所谓“大规模”指的是该类别树非常庞大,可能涉及数十万个类别。处理这种规模的问题是有意义的,因为这与人类的知识相比并不算多,并且概念间的关系通常也确可以以这种树状的上下位关系进行表达。
本文将大规模的层次文本分类问题嵌入到搜索结果的层次型分类这一场景下,这是本文对信息挖掘领域的贡献。传统的搜索引擎返回的搜索结果都以列表形式进行呈现,在有些情况下,譬如查询词是有歧义的或者说在不同上下文中可以代表不同事物的,用户在这种呈现方式里寻找自己需要的内容会有困难,因为只有用户关注的那层含义的搜索结果才是他想要的,而不同含义的结果在列表这种呈现方式下都混在了一起。但如果能将搜索结果分门别类进行放置,用户就可以按类别查看搜索结果,这会缩短用户寻找信息的时间。已有对搜索结果进行分类的研究,这些研究中分类的类别数目非常有限,本文与之不同之处在于试图在一个包含有数十万类别的类别树上进行搜索结果的分类。但之前的研究已就这种按类别呈现的方案进行了用户调查,得出“用户偏好这种呈现方式”的结论。这肯定了本文在该方向上继续推进的意义。
针对这个问题,本文提出了一种叫“深度分类”的算法,该算法为每个不同的查询从原来的大目录树中自适应地修剪出一棵宽度较少且有一定深度的小目录树;随后采取一些合理的训练数据选择策略来收集足够多的训练数据;并使用改进了的Na?ve贝叶斯分类器——“区分式Na?ve贝叶斯分类器”作为分类模型,其仍然保持Na?ve 贝叶斯分类器速度非常快的特点(这是像搜索结果分类这种在线应用所需要的),又考虑到问题的实际情况而有更高的正确率。为了有效评价该算法,本文选取了两组不同的独立的数据集。在两组数据集上的表现都验证了这样一个结果:相比其它的方法或其它可选的方案,该“深度分类”算法具有很快的处理速度与很高的正确率,是适合在搜索结果分类这一场景下使用的。
同时,本文从另一个角度来克服大规模层次分类问题中的一个潜在困难——训练数据不足,这是本文对机器学习领域的一个贡献。传统的分类方法依赖于训练数据与测试数据同分布的假设。如果在训练数据不足而试图从别处借用数据时,很容易导致上述假设不成立。如果不考虑这一问题要使用普通的分类模型,那么正确率就不会很高。
本文为此提出一种叫“搭桥修正”的算法,在普通分类模型的不够准确的输出基础上,考虑数据分布的变化,进行修正以提高正确率。该算法的独特之处还在于修正分两步进行,其中以训练数据与测试数据的混合分布作为桥梁,使得整个修正过程可以更平滑地进行。该算法在本文实验的11组数据上,都有效降低了错误率,并且相对错误率的降低平均在50%左右。