算法模型好坏的评价通用标准:
1、解的精确性与最优性。基于正确性基础上。
2、计算复杂度,时间成本。
3、适应性。适应变化的输入和各种数据类型。
4、可移植性。
5、鲁棒性。健壮性。
鲁棒性(robustness)就是系统的健壮性。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。
关于推荐系统的设计:参考文章1
自始至终需要关注两件事:目标、测量方法。
一个电子商务网站推荐系统设计与实现——硕士论文分析
一、应用场景
1、网站首页、新品推荐:采用item相似度策略推荐。目标:提供新颖商品。
2、商品详情、看过的还看过,看过的还买过:采用频繁项集挖掘推荐。目的:降低商品寻求成本,提高体验、促进购买。
3、网站购物车、买过的还买过:频繁项集挖掘。目的:提高客单价。
4、网站会员中心、与用户浏览历史相关商品:item相似度。目的:提升复购率。
5、商品收藏栏、搜索栏、品牌栏、品类栏:item相似度。目的:获取用户更多反馈;帮助用户发现需求;完善内链结构,流畅页面跳转;完善品类之间内链结构,流畅跳转。
二、推荐系统核心问题
三个核心要素:用户、商品、推荐系统。
用户特征分析:行为特征、兴趣特征。
用户不同特征以不同形式存储在不同介质中:注册信息存储在关系型数据库、行为数据存储在web日志中。
开发时,需要将这些数据进行清理,然后转换到统一的用户偏好数据库中。
商品特征:基本特征、动态特征。
基本特征:品牌、品类、颜色、型号、尺寸、性别等。
动态特征:销量、库存、市场价格、浏览次数、加购物车次数等。
补充说明:如果商品不能直接说明用户的兴趣特征,比如电影、图书,则可以通过用户的标签系统进行推荐。
或者通过协同过滤算法进行推荐,因为协同过滤算法不需要依赖商品自身的特征属性。
用户和商品一般具有三种关系:这是推荐系统工作的依据。
用户--喜欢--商品--相似--商品:基于item的推荐系统思想。
用户--相似--用户--喜欢--商品:协同过滤算法思想。
用户--喜欢--特征--包含--商品:基于标签和知识的推荐系统思想。
协同过滤算法优缺点:
优点:对推荐对象没有特别要求,不需要结构化可描述。适合电影、音乐、视频等非结构化对象的推荐。
缺点:需要大量用户历史数据,存在新用户、新商品、冷启动、数据稀疏等问题。
基于内容的推荐算法:根据用户浏览或者购买过的商品的特征,分析用户兴趣偏好模型,推荐相似特征商品。
优点:不需要其他用户数据支持;推荐的理由容易解释,因为是基于当前用户的行为;可以推荐新商品给用户,协同过滤做不到。
缺点:商品特征是有限的,不完备的,提取特征需要相关背景知识;过于规范化,只会推荐相似特征内的商品,高度依赖特征的提取;新用户问题,新用户数据不够,推荐效果不好。
基于知识的推荐系统:针对历史数据少,用户有明确购买要求的情况。比如买车买房、买手机电脑等,频次低、目的明确。需要商品的专业知识。
优点:不依赖用户历史数据,解决协同过滤和基于知识推荐算法不能应用的场景。
缺点:依赖商品的专业知识,用户需求越明确,商品知识越全面,匹配度越高,否则,推荐效果越差。数据获取不容一,不容易建模。
三、推荐系统中的数据挖掘方法
数据预处理:将非结构化的数据结构化,进行清理、转化、提取等操作。
常见预处理方法:采样、去噪、降维、计算相似度。
四、推荐系统整体架构
共四层:数据层、算法层、接口层、应用层。
数据层:数据存储、清理、分析、挖掘。为算法层提供数据基础。
算法层:系统核心模块,上述推荐系统算法都处于这一层,推荐算法有离线和在线,这些算法通过通过接口层对外提供统一服务。
接口层:调用算法层的接口。
应用层:调用接口层,实现具体的推荐结果。
推荐系统的核心部分是:数据层的用户行为建模+算法层的推荐算法设计。
五、典型场景下推荐系统内部处理流程
六、推荐数据生成流程
七、去噪
通过IP黑名单过滤:办公网络的在线测试引起的频繁访问、竞争对手的恶意攻击、网络爬虫的访问。
cookie的会话ID:IP黑名单过滤可能屏蔽掉一个局域网的用户,造成误杀。如果cookie的ID一段时间内访问高出正常值很多倍,则可以加入黑名单。
通过网站注册用户ID过滤:恶意用户会在网站注册成百上千的账号,造成大量下单;可以通过cookie查看这些ID,加入黑名单。
短时间大量购买行为:从业务角度将,短时间大量购买成百上千件商品,是极不正常的,应加入黑名单。
八、使用语言:java、python、php
python分析web日志;
java编写推荐算法;
php写网站和推荐接口。
九、数据存储
web日志采用gzip压缩,存储在mongodb和mysql数据库中。
mongodb存储半结构化数据;mysql存储结构化数据,包括商品数据、交易数据、用户数据、挖掘之后的数据。
mongldb是基于分布式文件存储的数据库。
十、技术选型
Nginx是一个高性能的web http服务器。
Varnish缓存是一个http加速器。
LVS采用IP负责均衡和基于内容的请求分发技术。将一组服务器构成一个高效的虚拟服务器。
thrift是一个软件框架,用来进行可扩展、跨语言服务的开发。能支持C++、java、python、javascript、nodejs等等几乎所有编程语言的无缝对接。
十一、用户行为分析与建模
分析web日志,对用户行为进行建模。
分析web日志的意义:
网站KPI指标分析;
用户行为建模;
蜘蛛行为分析:除了百度、google、360等大蜘蛛,还有小蜘蛛,通过分析可以优化搜索引擎,提高免费流量来源。
恶意行为分析;
网站故障监控;
网站性能监控。
常用日志分析方法:
1、通过命令话shell:grep、sort、awk,快速找出我们关心的内容。
如果需要进行大量重复的统计时,需要将非结构化的日志文件转化为结构化的日志,叫做数据抽取转换加载(ETL),则通常由程序完成。
2、python/perl程序:利用正则匹配函数,解析日志信息,完成数据预处理。
日志格式设计:
清理后的结构化数据可以存为keyvalue形式,l类似与json的bson,存储在mongodb.
十二、用户身份识别和关联行为
用户没有登陆之前的浏览行为,通过cookie的sessionID来记录,这个sessionID是唯一的。
十三、用户偏好数据结构设计
影响用户偏好很重要的因素是:用户行为的频次和时效性。
十四、外部应用接口设计
thrift服务端和客户端。
服务器断由php实现,客户端由php、java、python实现。
用以上语言定义相应接口函数即可。
十五、推荐系统测试与评估
如果在正确位置显示推荐栏,则表示测试通过。
评估分为离线、在线两种方式。
离线评价标准有正确率和召回率;在线有AB测试、点击率、转化率。
参考文章:
1、http://wenku.baidu.com/link?url=4yjk6CROKvS8tdcckFiKQHKXpMxyej-I9xcYGO--ai7Ar3hwMTBcLp2djwuBh3M5uhG15m1RfB_GXMjCNKuAvflUL211cV-n2MfR3JC2NpK
(一个电子商务网站推荐系统设计与实现的硕士论文)