diff --git a/ch18_后端架构选型、离线及实时计算/img/18-9-2-1.png b/ch18_后端架构选型、离线及实时计算/img/18-9-2-1.png new file mode 100644 index 0000000..71b6fb7 Binary files /dev/null and b/ch18_后端架构选型、离线及实时计算/img/18-9-2-1.png differ diff --git a/ch18_后端架构选型、离线及实时计算/img/18-9-2-2.png b/ch18_后端架构选型、离线及实时计算/img/18-9-2-2.png new file mode 100644 index 0000000..457fb04 Binary files /dev/null and b/ch18_后端架构选型、离线及实时计算/img/18-9-2-2.png differ diff --git a/ch18_后端架构选型、离线及实时计算/img/18-9-3-1.png b/ch18_后端架构选型、离线及实时计算/img/18-9-3-1.png new file mode 100644 index 0000000..2c75bce Binary files /dev/null and b/ch18_后端架构选型、离线及实时计算/img/18-9-3-1.png differ diff --git a/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md b/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md index 9bbd573..6458fc5 100644 --- a/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md +++ b/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md @@ -276,7 +276,7 @@ Github地址:https://github.com/uber/petastorm   劣势: - 开源时间不长,未得到充分的验证。 -  Github 地址: https://github.com/yahoo/TensorFlowOnSpark +  Github 地址:https://github.com/yahoo/TensorFlowOnSpark ## 18.3 如何选择合适的分布式计算框架进行模型训练? @@ -292,6 +292,68 @@ Github地址:https://github.com/uber/petastorm ## 18.9 如何评价个性化推荐系统的效果? +### 18.9.1 准确率与召回率(Precision & Recall) + +  准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。 + +  一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。 + +  正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先: + + 正确率 = 提取出的正确信息条数 / 提取出的信息条数 + + 召回率 = 提取出的正确信息条数 / 样本中的信息条数 + +  两者取值在0和1之间,数值越接近1,查准率或查全率就越高。 + + F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值) + +  不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下: + + 正确率 = 700 / (700 + 200 + 100) = 70% + + 召回率 = 700 / 1400 = 50% + + F值 = 70% * 50% * 2 / (70% + 50%) = 58.3% + +  不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化: + + 正确率 = 1400 / (1400 + 300 + 300) = 70% + + 召回率 = 1400 / 1400 = 100% + + F值 = 70% * 100% * 2 / (70% + 100%) = 82.35% + +  由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。 + +  当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。 + +### 18.9.2 综合评价指标(F-Measure) + +  P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。 + +  F-Measure是Precision和Recall加权调和平均: + +![F-Measure](./img/18-9-2-1.png) + +  当参数α=1时,就是最常见的F1,也即 + +![F-Measure](./img/18-9-2-2.png) + +  可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。 + +### 18.9.3 E值 + +  E值表示查准率P和查全率R的加权平均值,当其中一个为0时,E值为1,其计算公式: + +![E值](./img/18-9-3-1.png) + +  b越大,表示查准率的权重越大。 + +### 18.9.4 平均正确率(Average Precision) + +  平均正确率表示不同查全率的点上的正确率的平均。 + ## 18.10 参考文献 【1】http://www.paddlepaddle.org/documentation/book/zh/0.11.0/05.recommender_system/index.cn.html