51CTO|推荐算法集锦(补充)——近邻选择与算法拓展( 三 )


5.推荐系统扩展——攻击
在实际应用中 , 因为推荐系统的建议或多或少会影响用户的购买行为 , 因此在带来经济效益的同时 , 不能假设所有参与评分建议的用户都是诚实公平的 。 也就是说 , 林子大了 , 什么鸟类都有 。 在众多提供推荐建议或者评分建议的用户中 。 肯定是存在一部分恶意用户的 , 他们会影响到推荐系统的推荐效果 , 以至于让推荐系统中的最终推荐列表经常或者很少包含某类的商品 , 这种问题就叫推荐系统攻击了 。 当然对于这种推荐攻击情况 , 所有推荐系统都会遇到的 , 也有一些相应的解决办法:
(1)尽可能的提高那些稳定或者可信度高的用户的评分权重 , 也就是一些长期购买的或者会员用户等;
(2)过滤掉异常的数据 , 比如前后评分差异悬殊的数据 , 因为当有大量的异常数据存在时 , 才会对推荐结果造成不好的影响 。
6.推荐系统的实现
6.1 推荐系统实现意义
对于任何一个推荐系统的开发人员来讲 , 谈再多理论知识只是一个基础 , 关联重点在于实际用代码去实现一个推荐系统 。 毕竟理论来源于实践 , 只有自己真正设计好一个推荐系统或者完成一个推荐功能后 , 才能够真正把握之前的推荐系统理论知识 。 将理论知识进一步升华 , 过渡到实际运用中去 , 这也是任何一家公司对一个程序员基本的代码能力要求 。
对于完成设计一个推荐系统或者完成一个推荐功能模拟 , 有很多方法或者框架都可以用 。 运用框架可以有利于开发人员快速的去生成一个推荐功能模块 , 在整体上更好地把握到自己设计的推荐系统功能 。 而且 , 在目前开发的行情来看 , 框架是绝大多数开发人员的必选条件之一 。 因为达到只有开发领域的技术专家程度 , 才能从真正意义上脱离框架 , 不过也;没有必要脱离 , 因为运用框架也是“站在巨人的肩膀上” , 前辈们的经验或者技巧完全可以去运用学习的 。
6.2 框架分类
推荐系统所用到的框架中 , 比较通用的主要分为两大类 , 一类是在学术界科研领域运用广泛 , 另外一种就是在企业开发领域常用的了 。 学术界运用广泛的主要有LibMF、SVDFeature等 , 企业开发一般会用到Mahout、SparmMLib、Waffles等 。
而且在开发语言上的选取也有所不同 , 学术界一般更加重视理论性和发展性 , 采用的语言更加倾向于C、C++以及Python , 而企业开发更加会重视语言的流行度后效率 , 因而更偏爱JAVA、scala或者Python 。 由此可见 , Python语言在这一块领域会更加吃香些 。 因此站在很多高校都新开了必修课就是Python语言的学习 , 企业也对会使用Python的学生和员工更加青睐 。 目前的发展势头很猛 , 有很多人都说有可能会追赶上开发语言流行度冠军——JAVA , 拿下榜首的位置 , 虽然现在还没有实现 。 为此 , 在这一系列结束后 , 我会在后面开一个Python语言进阶的系列 , 在掌握Python的基础上 , 再去实现一个推荐系统会更加游刃有余 。
7.总结
【51CTO|推荐算法集锦(补充)——近邻选择与算法拓展】至此 , 推荐算法集锦这块的理论知识系列已经完全结束了 , 后面先通过Python技术的了解与掌握后 , 然后再对推荐系统或者推荐功能的设计来完成实战性的模拟演练 。 这一系列的推荐算法内容比较繁多 , 广大读者只有在理解这些内容的基础上 , 才能够继续对推荐这块有一个更好的延伸拓展 。 而且对于推荐系统的设计 , 这条道路始终是没有尽头的 , 是需要精益求精的 。 为配合时代的发展 , 推荐系统也越来越倾向于结合火热的人工智能领域来进一步加强推荐的效果及稳定性 , 因此推荐系统邂逅深度学习势不可挡 , 也是未来推荐系统能完成新的突破或蜕变的方向所在 。 希望在未来 , 深度学习技术真的能作为推荐系统的两双翅膀 , 来让推荐系统继续腾飞一次 。 因此 , 对于深度学习或者人工智能领域这块的学习也是必不可少的 , 今后我也会就深度学习方面的知识来简要概述下 , 来为读者打下一个深度学习技术方面的基础 。


推荐阅读