Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

袁莎 作者

社区问答系统精准匹配信息和人,满足你对获取知识的迫切需求

社区问答系统(Community Question Answering, CQA)将信息和人精准匹配,为问题找到合适的回答者,为回答找到合适的阅读者,满足了人们对获取知识的迫切需求。在CQA中,一个核心问题是为给定的问题推荐具有专业知识并具有回答意愿的专家。如果问题推送策略准确度不高,即不能有效解决问题,也可能给部分不适合回答问题的专家用户带来打扰。

本文以头条问答数据集为例,重点分析了CQA中专家推荐的常用算法,该数据集一共包含三类信息: 

  1. 专家标签数据:包括所有专家用户的ID,专家兴趣标签,处理过的专家描述;

  2. 问题数据:包括所有的问题的ID,处理过的问题描述,问题分类,总回答数,精品回答数,总点赞次数;

  3. 问题分发数据:29万条问题推送记录,一条推送记录包括一个问题ID,一个专家用户ID,该专家是否回答了该问题的标注。

下表总结了ByteCup竞赛(https://biendata.com/competition/bytecup2016  )中使用的各个特征,其中++表示该特征特别有效,+表示有效,-表示无效。

ByteCup竞赛中使用的各算法效果如下:

我们将竞赛中使用的CQA专家推荐算法分为四类:

  1. 基于矩阵分解(Matrix Factorization, MF)的方法,包括SVD, SVD++, Bidirection SVD++, Bidirection ASVD++;

  2. 基于梯度提升树(Gradient Boosting Tree, GBT)的方法,包括GBRT;

  3. 基于深度学习(Deep Learning, DL)的方法,包括AutoRec, CF-NADE, Match-SRNN;

  4. 基于排名(Ranking, R)的方法,包括Rule和Ranking SVM

在CQA专家推荐中,基于MF的方法比其他几类方法取得更好的效果。

本文分析了竞赛中前五名使用的特征,总结如下:

我们发现,该竞赛中前5名都使用了集成学习,单一模型并不能在竞赛中取得好的名次。接下来介绍集成学习相关知识。集成学习,就是使用一系列学习器进行学习,并使用某种规则将各个学习器的结果进行整合,从而获得比单个学习器效果更好的学习效果的一种方法。

集成学习可以用于分类问题,回归问题,特征选取,异常点检测等的集成,本文采用分类进行说明。弱分类器是指分类器仅能对少量样本进行正确分类,其分类效果仅略优于随机猜测。强分类器是指对样本分类的正确率很高的分类器。

通过集成学习提高分类器的整体泛化能力有以下两个条件:

  1. 基分类器之间具有差异性。如果使用的是同一个分类器集成,集成分类器的性能是不会有提升的。

  2. 每个基分类器的分类精度必须大于0.5。如下图所示,当基分类器精度小于0.5时,随着集成规模的增加,分类集成分类器的分类精度会下降;但是如果基分类器的精度大于0.5时,集成分类器的最终分类精度是趋近于1的。

集成学习常见的三种方法是Bagging, Boosting和Stacking。

  • Bagging用于提升机器学习算法的稳定性和准确性。

  • Boosting主要用于减少bias(偏差)和variance(方差),是将一个弱分类器转化为强分类器的算法。

  • Stacking是一种组合多个模型的方法。

Bagging (Bootstrap Aggregating)对训练集采用有放回采样。通过对原数据集进行有放回的采样,构建出大小和原数据集T一样的新数据集T1,T2,T3…,然后用这些新的数据集训练多个分类器f1,f2,f3…。最终分类结果根据这些分类器各自结果的投票来决定。Bagging算法中,基分类器之间不存在依赖关系,基分类器可以并行生成。

Bagging的性能依赖于基分类器的稳定性,如果基分类器是不稳定的,Bagging有助于减低训练数据的随机扰动导致的误差,但是如果基分类器是稳定的,即对数据变化不敏感,那么Bagging方法就得不到性能的提升,甚至会减低。Bagging示例图如下:

Boosting,是一个迭代的过程,每次在新分类器中强调上一个分类器中被错误分类的样本(增加错误分类样本的权重),最后将这些模型组合起来的方法。每次对正确分类的样本降权,对错误分类的样本加权,最后分类器是多个弱分类器的加权组合。

Boosting没有对样本进行重采样,而是对样本的分布进行了调整。Boosting算法中,基分类器之间存在强依赖关系,基分类器需要串行生成。Boosting示例图如下:

Stacking的基本思想是训练一个基本分类器池,然后使用另一个分类器来组合它们的预测,目的是减少泛化误差。

Stacking的步骤如下:

  1. 将训练集分成两个不想交的部分;

  2. 在第一部分的训练集上训练若干个基本学习器;

  3. 在第二部分的训练集上测试得到的基本学习器;

  4. 使用步骤3中的预测结果作为输入,将正确的响应作为输出,训练更高级别的学习器。

Stacking示例图如下:

AMiner学术头条
AMiner学术头条

AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。系统2006年上线,吸引了全球220个国家/地区800多万独立IP访问,数据下载量230万次,年度访问量1000万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。

https://www.aminer.cn/
专栏二维码
产业社区问答系统集成学习推荐系统深度学习梯度提升树
1
相关数据
重采样技术

重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

Ranking SVM技术

在机器学习中,排序SVM是支持向量机算法的变体,其用于解决某些排序问题(通过学习进行排序)。 排序SVM算法由Thorsten Joachims于2002年提出来的。

集成学习技术

集成学习是指使用多种兼容的学习算法/模型来执行单个任务的技术,目的是为了得到更佳的预测表现。集成学习的主要方法可归类为三大类: 堆叠(Stacking)、提升(Boosting) 和 装袋(Bagging/bootstrapaggregating)。其中最流行的方法包括随机森林、梯度提升、AdaBoost、梯度提升决策树(GBDT)和XGBoost。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

异常点检测技术

异常点检测(又称为离群点检测)是找出其行为很不同于预期对象的一个检测过程。这些对象被称为异常点或者离群点。异常点检测在很多实际的生产生活中都有着具体的应用,比如信用卡欺诈,工业损毁检测,图像检测等。异常点(outlier)是一个数据对象,它明显不同于其他的数据对象,就好像它是被不同的机制产生的一样。一般来说,进行异常点检测的方法有很多,最常见的就是基于统计学的方法。

问答系统技术

问答系统是未来自然语言处理的明日之星。问答系统外部的行为上来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再来则是其回传的为高精准度网页结果或明确的答案字串。以Ask Jeeves为例,使用者不需要思考该使用什么样的问法才能够得到理想的答案,只需要用口语化的方式直接提问如“请问谁是美国总统?”即可。而系统在了解使用者问句后,会非常清楚地回答“奥巴马是美国总统”。面对这种系统,使用者不需要费心去一一检视搜索引擎回传的网页,对于资讯检索的效率与资讯的普及都有很大帮助。从系统内部来看,问答系统使用了大量有别于传统资讯检索系统自然语言处理技术,如自然语言剖析(Natural Language Parsing)、问题分类(Question Classification)、专名辨识(Named Entity Recognition)等等。少数系统甚至会使用复杂的逻辑推理机制,来区隔出需要推理机制才能够区隔出来的答案。在系统所使用的资料上,除了传统资讯检索会使用到的资料外(如字典),问答系统还会使用本体论等语义资料,或者利用网页来增加资料的丰富性。

推荐文章
暂无评论
暂无评论~