一种基于约束条件的随机森林推荐算法的制作方法

文档序号:12468770阅读:720来源:国知局
一种基于约束条件的随机森林推荐算法的制作方法与工艺

本发明涉及数据挖掘和推荐算法技术领域,特别是涉及一种改进的随机森林推荐算法。



背景技术:

伴随着科技的进步,人们已经逐渐地从互联网信息时代进入了物联网时代。社交、服务业网站的崛起使得信息量以指数级的速度快速增长,互联网的数据量早已今非昔比,而且信息来源还在不断地增加。对于互联网所面临的挑战——信息过载,推荐系统在机器学习领域掀起了一片热潮。推荐系统拥有着极高的应用价值,已经被广泛地应用于多个领域。例如:近年来电子商务的发展及其迅猛,在网上购物已成为主流,商家所提供的商品种类和数量增长十分迅速,清楚自己需求的客户可以通过搜索购买自己想要的商品。但是,用户需求通常具有不确定性和模糊性,因此推荐系统便成为客户的依赖。

推荐系统的核心是推荐算法,推荐算法的优劣直接影响系统的性能。就目前流行的推荐算法而言,以分类为基础的推荐算法获得了较好的效果,比如SVM算法、协同过滤算法、以及随机森林算法等。

协同过滤算法存在一定的可扩展性问题,并且协同过滤推荐的质量取决于历史数据集,这导致系统开始时推荐质量较差,影响推荐结果的准确性。

在如今推荐系统应用越来越广泛,推荐算法作为其支撑核心,其重要性不言而喻,而随机森林分类算法又是推荐算法中性能较好,潜力较强的算法之一,它可以处理大量的输入变量,对于很多种资料它可以产生高准确度的分类器,且对于不平衡的分类资料集来说,它可以平衡误差,整个过程不容易产生过拟合问题。随机森林算法主要是由决策树算法改进而来。决策树算法存在一定的缺点,由于进行深度优先搜索,所以算法受内存大小限制,难于处理大训练集。为了处理大数据集或连续量的种种改进算法(离散化、取样)不仅增加了分类算法的额外开销,而且降低了分类的准确性,对连续性的字段比较难预测,当类别太多时,错误可能就会增加的比较快,对有时间顺序的数据,需要很多预处理的工作。



技术实现要素:

基于现有技术,本发明提出了一种基于约束条件的随机森林推荐算法,从算法构造原理入手对算法进行深刻解析,通过算法完成数据的分类,并在此基础上对于算法的不足进行分析,将算法进行改进。

本发明提出了一种基于约束条件的随机森林推荐算法,该方法包括以下步骤:

步骤101、根据给定初始训练集中的数据集、在CART算法中利用基尼指数构造二叉决策树,基尼系数定义如公式(1)所示:

其中,GiniR(S)是集合S以R分裂产生的基尼系数,S1和S2分别是用样本特征R分裂后得到的子集,定义基尼增益如公式(2)所示:

Gini(R)=Gini(S)-GiniR(S) (2)

步骤201、从初始训练集抽取训练子样本,每个子样本特征维度为M,每次树进行分裂时指定一个常数m<<M作为子样本特征个数,从m个子样本特征中选择最优的子样本特征去分裂;每棵树都最大程度的生长,组合成随机森林;

步骤301、分类指的是根据样本记录所具有的特征将样本映射到预先定义好的类标号。通过从精确率、召回率和F值分析训练模型所用的时间,衡量算法时间效能,其中:

精确率定义如公式(3)所示:

其中,TP表示把正类预测为正类的案例个数,FP表示把负类预测为正类的案例个数;

召回率定义如公式(4)所示:

其中,FN表示把正类预测为负类的案例个数;

F值定义如公式(5)所示:

其中,Precision为精确率,Recall为召回率;

步骤401、以同样的初始训练集中的数据集,分别构造拥有10棵和100棵决策树的随机森林,利用该模型对测试集进行分类,即将各个记录映射到预先定义的类标号,在训练集占比例不同情况下研究算法性能,记录模型训练时间;

步骤501、将随机森林算法进行改进。具体步骤如下:

假设有S1,S2,…Sn,n个样本作为随机森林n棵树的训练样本,用Si样本建立决策树模型,Oi为袋外数据,将Oi作为测试集进行预测,计算袋外数据误差EOi;对于特征Fj,将Oi中Fj的值进行噪声化,形成新测试集new_Oi;用新测试集new_Oi进行预测,记录新的袋外数据误差new_EOi,重要特征Fj重importancej要度量如公式(6)所示

按重要性降序排列,确定删除比例,从当前的特征中剔除相应比例排在最后的不重要特征,每次选出一个重要特征Fj,以新特征作构造随机森林,递归重复上述步骤,直到剩余m个特征;依据通过上述方法所得到的各个新的重要特征构成重要特征集合和袋外数据,计算分类精确度,选取最优的作为最终特征集。

对比其他推荐算法,本发明充分认识随机森林分类算法的优越性,并且自主实现随机森林分类算法,由此加深对推荐系统的了解;最后,从算法的构造入手,研究造成算法不足的关键点,改进算法,使算法具有更好的效能。

附图说明

图1为本发明的一种基于约束条件的随机森林推荐算法整体流程示意图;

图2为随机森林模型训练集样本比例与精确率、召回率、F值关系曲线示意图;

图3为原始算法与改进算法的能量对比示意图。

具体实施方式

下面结合附图对本发明作进一步详细描述:

如图1所示,为本发明的一种基于约束条件的随机森林推荐算法整体流程示意图,包括:

步骤101:根据给定的训练数据产生一棵决策树。在此过程中用到了CART算法解决ID3算法和C4.5算法生成的决策树分支规模较大、建模缓慢的问题,采用一种二分递归分割的技术;在CART算法中利用基尼指数构造二叉决策树。CART算法生成的决策树是结构简洁的二叉树。在CART算法中主要分为两个步骤(1)将样本递归划分进行建树过程;(2)用验证数据进行剪枝。实际的递归划分过程如下:如果当前节点的所有样本都不属于同一类或者只剩下一个样本,那么此节点为非叶子节点,尝试对该节点进行分裂,基尼指数反映了类别的杂乱程度,基尼指数越大,则类别越混乱。通过计算基尼指数计算样本的每个属性以及每个属性对应的分裂点,然后计算基尼增益,将基尼增益最小对应的特征作为分割点。最好的划分就是基尼增小的划分。基尼系数定义如公式(1)所示:

其中,GiniR(S)是集合S以R分裂产生的基尼系数,S1和S2分别是用样本特征R分裂后得到的子集。类比于信息增益,定义基尼增益如公式(2)所示:

Gini(R)=Gini(S)-GiniR(S) (2)

步骤201:由给定的训练数据随机选取特征,构建随机森林:从初始训练集抽取训练子样本,每个样本特征维度为M,每棵树对应一个训练子样本,进行分裂时指定一个常数m<<M,从m个特征中选择最优的特征去分裂;每棵树都最大程度的生长,组合成随机森林;

步骤301:通过分析训练模型所用的时间,衡量算法时间效能:主要从精确率(P)、召回率(R)和F值三个特征进行分析;

假设预测有两种可能,一种就是把正类预测为正类有TP个案例,另一种是把负类预测为正类有FP个案例,精确率就是被识别为该分类的正类记录数/被识别为该分类的记录数,精确率定义如公式(3)所示:

而召回率是针对原样本而言,它表示样本中的正类有多少被预测正确了。假设把原来的正类预测成正类有TP个案例,把正类预测为负类的有FN个案例,召回率定义如公式(4)所示:

精确率和召回率在某些情况下是矛盾的,因此加入F值(F-Score)综合衡量精确率和召回率,Precision为精确率,Recall为召回率,F值定义如公式(5)所示:

步骤401:用同样的数据集,分别构造拥有10棵和100棵决策树的随机森林,利用该模型对测试集进行分类,在训练集占比例不同情况下研究算法性能,记录模型训练时间。用与生成决策树同样的数据集进行测试,同样对精确率、召回率和F值进行数据对比,衡量随机森林算法分类的准确性,通过分析训练模型所用的时间,衡量算法时间效能;

步骤501:将随机森林算法进行改进。具体步骤如下:

计算每一特征R的重要性,按照重要性降序排列,寻找对分类最相关的一系列特征,剔除不重要特征;在建立子分类器时,利用筛选得到对分类影响最重要的特征来构造决策树,多棵决策树组成新的随机森林。

对于新算法而言,重点在于计算样本特征的重要性。通过袋外数据可以用来检测分类的效能。假设有S1,S2,…Sn,n个样本作为随机森林n棵树的训练样本,用第Si样本建立决策树模型,袋外数据为Oi,将Oi作为测试集进行预测,计算袋外数据误差EOi;对于特征Fj,将Oi中Fj的值进行噪声化,形成新测试集new_Oi,用其进行预测,记录新的带外数据误差new_EOi。由此定义特征Fj重要度importancej如公式(6)所示:

式(6)原理为:给某一特征增加噪声信息后导致袋外数据误差大幅度增高,说明此特征对分类结果影响很大。在得到特征重要性之后将其按重要性降序排序,确定删除比例,从当前的特征变量中剔除相应比例排在最后的不重要特征,以新特征作构造随机森林,递归重复上述步骤,直到剩余m个特征。依据上述所得到的特征集合和带外数据,计算分类准确度,选取最优的作为最终特征集。

用决策树算法和随机森林算法在同样的数据集来进行对比,可以得出结论:随机森林算法不会产生过拟合,并且随着训练样本的增加,算法的效能也增加,泛化误差较之于决策树更加小,总体性能比决策树算法更加出色。但是随机森林算法在时间复杂度上不如人意,如果森林中输入的数量庞大,模型的训练十分耗时。另一方面,随机森林算法随机性过强,随机抽样样本,随机截取特征使得算法效率忽高忽低。对改进算法而言,加以约束使得随机森林内部决策树更为平衡,一些毫无相关的决策树不会出现在森林中,并且由于有特定的特征,不再去从庞大的多维特征中随机截取,从而提升了算法的分类效能和时间性能,因此改进算法较为成功。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1