发明名称 一种基于流行度分类特征的托攻击检测算法
摘要 本发明涉及一种基于流行度分类特征的托攻击检测算法,该算法首先统计用户对项目的评分,构建用户评分矩阵;然后统计项目的项目流行度;其次确定用户流行度向量;再次计算基于流行度的分类特征值MUD,RUD和QUD;然后构建分类器,最后将新用户的用户流行度向量中的元素输入分类器中,即可判定该新用户为正常用户或虚假用户。本发明提供的检测算法,对用户类别有较好的判定效果,无论是在单纯的随机攻击、评价攻击、流行攻击或混淆技术干扰时的攻击时都有非常好的托攻击检测性能,并且计算代价低,检测时间更短。
申请公布号 CN104809393A 申请公布日期 2015.07.29
申请号 CN201510238156.8 申请日期 2015.05.11
申请人 重庆大学 发明人 李文涛;高旻;田仁丽;熊庆宇;文俊浩;梁山
分类号 G06F21/55(2013.01)I;G06F17/30(2006.01)I 主分类号 G06F21/55(2013.01)I
代理机构 重庆信航知识产权代理有限公司 50218 代理人 穆祥维
主权项 一种基于流行度分类特征的托攻击检测算法,其特征在于:包括如下步骤:S1:设存在一个具有N个用户的用户集,该用户集中的元素由正常用户和虚假用户两种类别组成,两类用户分别使用类标签0和1进行标注,0表示正常用户,1表示虚假用户,n<sub>u</sub>为用户集的元素,表示第u个用户,u=1,2,3,...,N;用户集中所有用户评价过的项目的并集构成项目集,项目集中共有M个项目,m<sub>i</sub>为项目集的元素,i=1,2,3,...,M;获取用户集中所有用户对项目集中所有项目的历史评分数据,构建N×M的用户评分矩阵B,b<sub>ui</sub>为用户评分矩阵的元素,表示第u个用户对第i个项目的评分,b<sub>ui</sub>的值为评分数,如果第u个用户对第i个项目没有评分,则令b<sub>ui</sub>为0;S2:统计项目集中每个项目被正常用户评价的次数,采用项目流行度表示,记为d,d<sub>i</sub>表示项目m<sub>i</sub>的项目流行度;S3:根据步骤S1得到的用户评分矩阵和S2得到的项目流行度,确定用户流行度向量,方法如下:1)设用户n<sub>u</sub>对项目m<sub>i</sub>做出过评价,则定义用户n<sub>u</sub>与项目m<sub>i</sub>有联系;2)令u=1;3)i遍历其取值,所有与用户n<sub>u</sub>有联系的项目构成联系项目集,联系项目集中共有G<sub>u</sub>个元素,g<sub>uk</sub>为联系项目集的元素,其表示第k个与用户n<sub>u</sub>有联系的项目;4)设k=1;5)确定项目集中与项目g<sub>uk</sub>相应的项目,然后调用S2中该项目的项目流行度作为g<sub>uk</sub>的项目流行度d'<sub>k</sub>;6)保存与用户n<sub>u</sub>有联系的项目g<sub>uk</sub>的项目流行度d'<sub>k</sub>;7)令k=k+1;8)如果k≤G<sub>u</sub>,则返回步骤5),否则执行下一步;9)与用户n<sub>u</sub>有联系的所有项目的项目流行度形成一个一维向量D<sub>u</sub>,记向量D<sub>u</sub>为用户流行度向量,<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>D</mi><mi>u</mi></msub><mo>=</mo><mrow><mo>(</mo><msubsup><mi>d</mi><mn>1</mn><mo>&prime;</mo></msubsup><mo>,</mo><msubsup><mi>d</mi><mn>2</mn><mo>&prime;</mo></msubsup><mo>,</mo><msubsup><mi>d</mi><mn>3</mn><mo>&prime;</mo></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>d</mi><mi>k</mi><mo>&prime;</mo></msubsup><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>d</mi><msub><mi>G</mi><mi>u</mi></msub><mo>&prime;</mo></msubsup><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000714856260000011.GIF" wi="1016" he="110" /></maths>输出D<sub>u</sub>;10)令u=u+1;11)如果u≤N,则返回步骤3),否则结束循环;S4:计算基于流行度的分类特征值,所述基于流行度的分类特征值包括用户流行度均值、用户流行度极差和用户流行度上分位点,方法如下:1)根据公式(3)计算用户流行度均值MUD:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>MUD</mi><mi>u</mi></msub><mo>=</mo><mfrac><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>G</mi><mi>u</mi></msub></msubsup><msubsup><mi>d</mi><mi>k</mi><mo>&prime;</mo></msubsup></mrow><msub><mi>G</mi><mi>u</mi></msub></mfrac><mo>,</mo><mi>u</mi><mo>=</mo><mn>1,2,3</mn><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000714856260000021.GIF" wi="1191" he="205" /></maths>其中,MUD<sub>u</sub>表示用户n<sub>u</sub>的用户流行度均值,d'<sub>k</sub>表示用户n<sub>u</sub>的用户流行度向量D<sub>u</sub>中的元素,G<sub>u</sub>表示与用户n<sub>u</sub>有联系的项目的总数;2)根据公式(4)计算用户流行度极差RUD:RUD<sub>u</sub>=d'<sub>max</sub>‑d'<sub>min</sub>,u=1,2,3...,N   (4);其中,RUD<sub>u</sub>表示用户n<sub>u</sub>的用户流行度极差,d'<sub>max</sub>表示用户n<sub>u</sub>的用户流行度向量D<sub>u</sub>的元素中值最大的项目流行度,d'<sub>min</sub>表示用户n<sub>u</sub>的用户流行度向量D<sub>u</sub>的元素中值最小的项目流行度;3)根据公式(5)计算用户流行度上四分位数QUD:QUD<sub>u</sub>=d'<sub>k</sub>,u=1,2,3...,N   (5);其中,QUD<sub>u</sub>表示n<sub>u</sub>的用户流行度上四分位数,d'<sub>k</sub>表示用户n<sub>u</sub>的用户流行度向量D<sub>u</sub>中元素按照其值由小到大排序后,处于前四分之一位置处的项目流行度;S5:根据用户的类标签及其相应的基于流行度分类特征,采用分类算法得到分类器;S6:对任何一个新用户,采用步骤S3‑S4所述方法计算该新用户基于流行度的分类特征值,然后将该新用户的分类特征值输入步骤S5确定的分类器中进行分类,判定该新用户的类别。
地址 400044 重庆市沙坪坝区正街174号