法律状态公告日
法律状态信息
法律状态
2022-10-28
未缴年费专利权终止 IPC(主分类):G06F17/30 专利号:ZL2011103568944 申请日:20111111 授权公告日:20131120
专利权的终止
2013-11-20
授权
授权
2012-07-18
实质审查的生效 IPC(主分类):G06F17/30 申请日:20111111
实质审查的生效
2012-06-20
公开
公开
技术领域
本发明涉及用户推荐系统的技术领域,特别是一种基于训练集优化的推荐系统的动态推 荐方法。
背景技术
个性化推荐服务是以用户为中心,以理解用户喜好为基础,为用户提供量身定制的个性 化信息呈现的服务方式,也是解决从海量互联网资源中提取用户所需信息的一种有效途径。 同普通服务模式相比个性化推荐服务有如下特点:首先,个性化推荐服务能够将用户从信息 超载的困境中解救出来,使得用户能有机会享受到真正丰富多彩、便捷贴切的人性化网络信 息服务,极大提升用户体验和满意度;其次,个性化推荐服务能够充分提高Web站点的服 务质量和访问效率,同时还能够发现用户潜在的兴趣点,从而挖掘出潜在的商业价值,为网 络服务商提供可观的经济回报。
自基于协同过滤技术的推荐系统诞生以来,尤其是基于正规化矩阵分解的隐向量推荐模 型的提出,个性化推荐技术在理论层面的推荐精度已经有相当高的提升。作为推荐重要依据 的原始评分数据对最终的推荐结果有着决定性影响,显而易见一组具有较高准确度的数据会 在最终的推荐中获得良好的推荐效果。
一般对用户的个性化推荐服务都是基于已有历史累积的数据集进行的,这种数据集的数 据量是十分庞大的。数据集规模的庞大很难避免在数据的收集中存在不合理的数据,比如用 户的错评分或者非用户本人进行替评分等现象。这些数据本身不具有参考性,在对用户的推 荐服务中这些数据是不应采纳的。因此,对原始评分数据的处理和甄选会在很大程度上帮助 提高推荐精度。在采用较为准确的判断方法筛选训练集,并且以此为依据进行推荐模型的建 立,那么所获得的推荐模型会在推荐精度上有更显著得提升。
发明内容
本发明要解决的技术问题为:克服现有技术的不足,提供一种基于训练集优化的推荐系 统的动态推荐方法,该方法可以通过对作为个性化推荐依据的原始训练数据进行筛选,并以 去除错误样本的新训练集为依据获得具有更高精准度的推荐模型,提高了个性化推荐的准确 度。
本发明解决上述技术问题的技术方案为:一种基于训练集优化的推荐系统的动态推荐方 法,该方法具体步骤如下:
步骤(1)建立初步推荐模型:根据原始的用户评分数据,利用基于正规化矩阵因式分 解推荐模型中的建模方法生成最初的推荐模型;
步骤(2)AdaBoost训练:利用步骤(1)中生成的推荐模型作为最初分类判定的依据构 建分类器,根据推荐模型计算出的推荐值和原始数据值之间的差异情况判定数据的分类,利 用AdaBoost算法学习原始训练样本,并在每一轮结束后生成新的分类器;
步骤(3)筛选错误样本:在利用AdaBoost算法的训练过程中每一轮训练都需要筛选出 难样本,在本方法中难样本的划分可以采用预测值与真实值之间的差异性来判断,即当这种 差异大于某一阈值时即判定为难样本。经过多轮的AdaBoost训练之后,多次被选定为难样本 的数据可以当作错误样本去除,从而构建出用于下一次迭代所需的训练数据集合;
步骤(4)重构推荐模型:以步骤(3)中获得的训练数据为基础,结合AdaBoost训练数 据,重新生成推荐模型。
步骤(5)产生推荐结果:以用户特征向量作为输入,利用步骤(4)获得的推荐模型计 算出推荐结果并返回给用户。
所述步骤(2)中对原始数据集的AdaBoost聚类训练,具体如下:
步骤①修改正规化矩阵因式分解推荐模型,不再将原始评分数据集合T分割成两个子集 T1、T2,其中,数据集T1用于进行学习,数据集T2用于判定学习停止其中,而是对数据集T 中的所有数据均进行学习,设定AdaBoost训练的迭代轮数I、每轮学习的次数R、允许的错 误范围errPermission,并初始化特征向量集;
步骤②在第一轮的迭代中利用正规化矩阵因式分解推荐模型学习训练数据R次,在训练 得到的特征向量集之上计算训练数据中对应用户对项目的评分的估计值并求出其与真实 值ru,i的绝对误差,即绝对误差
步骤③当步骤②中计算出的AbsE值大于errPermission时判定次数据为难样本,遍历全 部的训练数据获得难样本的总数errCountn并由下式计算出样本的错误率εn,其中|T|表示训 练集中的样本个数;
式中:εn表示样本错误率,|T|表示训练集中的样本个数,errCountn表示遍历全部的训 练数据获得难样本的总数;
步骤④根据步骤③中计算出来的错误率εn调整训练样本在下一轮迭代中的学习次数,具 体为当训练样本数据的AbsE值小于errPermission时,该样本在下一轮迭代中的学习次数为 trainTimen+1=trainTimen*εn(若tramTimen+1<1则取1),当训练样本数据的AbsE值大于 errPermission时即(2)中判定其为难样本时,该样本在下一轮迭代中的学习次数为
式中:trainTimen样本在第n次轮迭代中的学习次数,trainTimen+1样本在第n+1次轮迭代 中的学习次数,εn表示步骤(3)中计算出来的错误率,AbsE值表示步骤(2)的子步骤② 计算出来的绝对误差,errPermission表示允许的错误范围;
步骤⑤将errPermission以固定比例declineRate缩减之后,开始新一轮的迭代,并且在该 轮的迭代中每个样本的学习次数按照步骤④中计算出进行。
所述步骤(3)中的筛选错误样本的方法,具体如下:
步骤A、步骤(2)中在利用AdaBoost算法的训练过程中每一轮训练都需要筛选出难样本 并进行标记和统计;
步骤B、经过多轮的AdaBoost迭代训练之后,对训练数据进行遍历统计每一个样本被判 定成难样本的次数;
步骤C、根据去除率delRate,将判定成难样本次数较高的样本从训练集中去除,从而得 到新的训练集。
本发明与现有技术相比的优点在于:
本发明可以以现有数据为基础进行自动聚类,经过多次的迭代学习可以筛选出不利于提 高推荐模型精度的错误数据,从而去除错误数据获得高质量的训练数据,最终获得较高的推 荐精度。相比于传统方法只针对推荐模型进行处理不对原始训练数据进行过滤,本方法可以 较有效的提高推荐精度。
附图说明
图1为本发明的概要工作流程图;
图2为本发明的详细工作流程图。
具体实施方式
现结合附图说明本发明的实施例。
如图2所示,本发明包括四个主要步骤:建立推荐模型、AdaBoost训练、筛选错误样本 和重构推荐模型。
步骤(1)建立推荐模型:读取原始的用户评分数据和测试数据,并根据两个数据中最 大的用户编号UserID和项目编号ItemID确定用户特征向量和项目特征向量的维度,基于正规 化矩阵因式分解推荐模型中的建模方法,新建并随机初始化用户特征向量和项目特征向量;
步骤(2)AdaBoost训练阶段:利用步骤(1)中生成的推荐模型作为分类判定的依据构 建分类器,根据推荐模型计算出的推荐值和原始数据值之间的差异情况判定数据的分类,具 体步骤为:
步骤①修改正规化矩阵因式分解推荐模型,不再将原始评分数据集合T分割成两个子集 T1、T2(利用数据集T1进行学习,利用T2判定学习停止),而是对数据集T中的所有数据均进 行学习,设定AdaBoost训练的迭代轮数I、每轮学习的次数R、允许的错误范围 errPermission,并初始化特征向量集;
步骤②在AdaBoost的每轮迭代中利用上述修改后的基于正规化矩阵因式分解推荐模型 中的建模和训练方法学习训练数据R次。在每次学习之后计算所得到的用户特征向量和商品 特征向量模型在训练数据上的RMSE,当RMSE值达到最小时即该轮的RMSE值比上次学习 之后的值大时可提前结束该轮迭代。该轮迭代之后得到新的推荐模型——该轮最终的用户特 征向量和商品特征向量。利用特征向量计算训练数据中对应用户对项目的评分的估计值并求出其与真实值ru,i的绝对误差,即绝对误差
步骤③当步骤②中计算出的AbsE值大于errPermission时判定次数据为难样本,将该数 据对应的错误判定次数增加1,遍历全部的训练数据获得难样本的总数errCountn并由(1) 式计算出样本的错误率εn;
式中:εn表示样本错误率,|T|表示训练集中的样本个数,errCountn表示遍历全部的训 练数据获得难样本的总数;
步骤④根据步骤③中计算出来的错误率εn,利用(2)式调整训练样本在下一轮迭代中 的学习次数;
式中:trainTimen样本在第n次轮迭代中的学习次数,trainTimen+1样本在第n+1次轮迭代 中的学习次数,εn表示步骤(3)中计算出来的错误率,AbsE值表示步骤(2)的子步骤② 计算出来的绝对误差,errPermission表示允许的错误范围;
步骤⑤将errPermission以固定比例declineRate缩减之后,开始新一轮的迭代,并且在该 轮的迭代中每个样本的学习次数按照步骤④中计算出进行,如果已完成预定次数的迭代则结 束该阶段;
步骤(3)筛选错误样本:在利用AdaBoost算法的训练过程中每一轮训练都需要筛选出 难样本,在本方法中难样本的划分可以采用预测值与真实值之间的差异性来判断,即当这种 差异大于某一阈值时即判定为难样本。经过多轮的AdaBoost训练之后,多次被选定为难样本 的数据可以当作错误样本去除,从而构建出用于下一次迭代所需的训练数据集合;
步骤A、步骤(2)中在利用AdaBoost算法的训练过程中每一轮训练都需要筛选出难样本 并进行标记和统计;
步骤B、经过多轮的AdaBoost迭代训练之后,对训练数据进行遍历统计每一个样本被判 定成难样本的次数;
步骤C、根据去除率del_rate、样本总数和②中统计结果计算出最大允许错误次数,将 判定成难样本次数高于该值的样本在训练集中设置训练次数为0,从而得到新的训练集;
步骤(4)重构推荐模型:以步骤(3)中获得的训练数据为基础,结合AdaBoost训练数 据,基于正规化矩阵因式分解方法重新生成推荐模型;
步骤(5)产生推荐结果:以用户特征向量和项目特征向量的乘积作为特定用户对特定 项目的估计评分值,将估计评分值较高的项目推荐给该用户。
本发明可以以现有数据为基础进行自动聚类,经过多次的迭代学习可以筛选出不利于提 高推荐模型精度的错误数据,从而去除错误数据获得高质量的训练数据,最终获得较高的推 荐精度。相比于传统方法只针对推荐模型进行处理不对原始训练数据进行过滤,本方法可以 较有效的提高推荐系统推荐精度,如下表1所示,在没有采用本发明的筛选方法时,RMF方 法在测试集上的RMSE为0.792933,表1中的几组数据均获得了较小的RMSE值。
表1本发明获得的RMSE值
本发明未详细阐述的部分属于本领域公知技术。以上实施例仅用以说明本发明的技术方 案而非限制在具体实施方式的范围内,对本技术领域的普通技术人员来讲,只要各种变化在 权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构 思的发明创造均在保护之列。
机译: 封锁率优化算法推荐方法和优化算法推荐系统
机译: 基于AI的基于客户的实时动态产品创建和推荐系统
机译: 基于Internet的Web信息动态预测/推荐系统和方法。