算法的通俗解释(2)算法的评估方法

好久不见,英灵殿已全成就,赛博朋克不爱玩,更新一下吧。

虽然不会下蛋,甚至不知道为什么鸟类会下蛋,但不影响一个人去评价鸡蛋口味的好坏。这一讲介绍的是算法的评估方法,如果你不懂算法,但是需要和算法工程师打交道,这可能就是你安身立命的本事了。

1、残差

算法是什么呢?

有一个说法叫做算法的本质是统计。这句话有一定道理,但是有道理的水平差不多就和“人类的本质是复读机”一样。但无论什么算法,都是构建了一套计算流程,让系统的预测尽可能贴近于实际情况,而这的确可以认为是统计方法。

那么什么是残差呢?就是算法在计算中,实际数据和理论数据的差值。再用个简单的比喻,考试时你考了96,满分100,从算法的视角,如果100分是实际数据,96分是预测正确的数据,4分就是残差。

2、测试集和训练集

算法的学习和人的学习有很多框架相同的地方,人的学习是在大脑中形成了一套目前还无法理解的算法,我们就用学习举例吧。

高中阶段我们有考试,有平时的练习题。平时练习题可以看答案,通过做题和看答案看书,我们不断形成自己的生物算法。最终检验学习结果的还是考试。

在算法里,会拿一部分数据用来训练叫做训练集,另一部分不参与一开始的计算,用来检验训练的结果叫做测试集。

用学生做过的题去考试,可能不是因为学生掌握了知识,而是学生记住了题。这就和考试题不能和练习题一样,测试集和训练集也不能重合。

3、欠拟合与过拟合

介绍了残差以及测试集训练集之后,就是为了引入两个新的概念——欠拟合和过拟合。

什么叫拟合呢?让预测数据尽可能贴近于实际数据,这就是拟合。如果拟合程度很差,就叫做欠拟合。

那么是不是拟合程度越高就越好呢?也不是,还有个概念叫做过拟合。

热恋时期女朋友曾经问我,她是不是最好看的。我说是,她说我骗她。然后我展开了如下论述:

因为和你在一起的这段时间,我满眼都是你,而我喜欢和你呆在一起的每一刻。在我的审美系统里,全都是你的数据,且都是正向的标注,经过长时间的训练,系统已经过拟合了,你的每一个特点在我的审美系统里就是最好的。所以在我眼里,不会有比你更好看的人。

过拟合是什么意思呢?系统能获取的数据总是有限的,如果完全和系统贴合,其实可能意味着在面对新的数据和场景时,算法失效。

如下图所示,相同的离散点,要拟合出来函数,不同拟合状态下函数是不同的。

左中右分别是欠拟合、正常拟合、过拟合。过拟合状态下,如果有新的点,大概率不会落在这个函数线上,虽然从拟合的角度讲这些已有点都在这个函数上。

那么怎么减少过拟合呢?观察图中的三个函数可以看出来。函数越复杂,参数越多,越容易过拟合。在算法层面,一般会引入针对规范化参数,旨在减少参数或者减少参数的复杂度。

参数意味着假设,减少过拟合的根本方法,是宏观层面减少模型的假设。假设越少,算法的泛化能力就越好。

4、召回率和准确率

又得解释召回和准确率的概念了。

大部分情况下,用户进行搜索时,只有一部分相关的结果被搜索了出来,另一部分相关的结果却没有。所有的内容根据“内容是否相关”“内容是否被召回”两个维度可以分为了四部分:A代表召回的相关内容,B代表召回的不相关内容,C代表未召回的相关内容,D代表未召回的不相关内容。

准确率就是所有搜到的内容里面相关内容的比例,定义为

α=A/(A+ B)

召回率就是所有应该搜到的内容里面真正被搜出来的相关内容的比例,定义为

β=A/(A+ C)

准确率和召回率是相对的指标,一般而言提升准确率会损失召回率,反之亦然。为了在这两个指标之间权衡,一般会取两个的调和平均数作为目标值,也就是F值,F值定义为

F=2αβ/(α+β)

这个指标广泛应用的评估指标。

5、完美基线指标

完美基线指标是,我起的名字,有一个广泛应用的例子就是nDC。,但是算起来太复杂了,就只是简单提一下,nDCG就是评估搜索排序的指标。

搜索结果有一个算法排序。然后人工对这个排序里面的每个内容进行一个打分。同时设定,排名越靠前的位置,权重越高,这符合实际情况,因为用户更关注前面的内容。

那么最理想的情况就是根据实际打分情况进行排序,然后根据不同位置的权重,有一个加权求和 的分数。而实际情况算法排序不会比理想情况更好,但是可以用算法排序的情况,加权求和出来一个分数。然后就求一下实际分数和理想分数的比值。

。就是根据nDCG的原理在实际中构建的一个指标。核心就是找到一个完美的基线。比如算法是在匹配线下交易,比如外卖,滴滴,算法效率提升其实是有赖于对未来情况的各种预估,做出更好的调度。可以后验地用真实的需求去求解理想效率,然后看实际效率和理想效率的比值。

如果想用这个方法的话,需要根据业务实际情况构建完美基线。

6、算法的表现

前面都是在讲一些算法性能的评价指标。但是我们知道,一个算法表现的好坏,除了主要的核心指标外,还有很多其他的评价维度这些指标可能影响产品的生态,可能影响用户的体验,总之就是一些主要指标无法评估的维度。

覆盖率

算法需要尽可能多的内容,这是一个基本的要求。个性化算法,也应该能解决长尾内容的曝光问题。所以这里就会有一个覆盖率的指标,可以用实际覆盖内容和应该覆盖内容的比值去计算。

为了防止一些特别低的曝光被计算,即使覆盖内容也可以设定一个门槛,比如曝光1万次以上才算这个内容得到了曝光。这样更科学一些。

多样性

覆盖率是衡量长尾内容是否被覆盖到,多样性测试一个用户体验的衡量,也是流量生态的衡量。什么样的多样性是合适的,需要根据业务形态来判断,并不是多样性越高越好。

最常用的方式就是去看内容分布的基尼系数,或者看内容分布的信息熵。基尼系数是衡量收入分配均衡程度的方法,同样也适用于衡量内容流量分配均衡程度。信息熵是一个信息论里面的概念,感兴趣可以自己查下资料,也可以衡量内容分布的离散程度。

更新率

内容的更新频率也会影响用户体验。更新不及时短期可能点击率和用户时长没有太大变化,但是可能用户后续的来访频次会减少。所以有些内容即使用户没有点击,后续也应该不展示或者减少展示。

7、算法解释性

算法解释性不是一个固定的指标,但是其实对于算法项目的推进起到了至关重要的作用。

在一家公司里面,如果算法只有算法工程师能理解,那么管理层和业务部门对算法接受度就会很低。

当然了算法解释性也是相对的,取决于使用算法的人群。如果算法涉及业务人群的绩效、工作量,必然需要足够简单,不然基本不可能推行。

如果核心管理层是理工科背景,数理能力很强。那么可能用一些解释性不那么强的算法也可以被理解。但这是非常理想的情况了。

一般而言,解释性越好,算法能调动组织内更多的人,有更强的推进力。

小结:

本来想简单写一点,不知不觉又变得又臭又长了。

关于算法的评估,这些只是一些基本的方法,在实践中,不可避免地需要根据业务目标,构造出合适的评估指标。

另外,在和非算法部门沟通的时候,即使无法解释清楚算法的原理,最少也要能解释清楚算法的评估方法,这样会极大地提高算法的接受度。

篇幅所限,没有举太多的例子,做策略工作的同学可能会感触深一些。

希望能帮助到大家。

产品逻辑之美
我还没有学会写个人说明!

你也可能喜欢

评论已经被关闭。

插入图片