4.3.2 数据分析案例:男性向/女性向漫画Top10计算
笔者在某家互联网漫画公司工作时曾经遇到一个非常典型的数据分析问题,这类问题可以统称为“排行榜问题”。问题是这样的:“现在有M部(M>1000)漫画作品的阅读uid数据(用户id),通过uid可以联表查询到uid的性别(用户主动填写的性别,但有缺失),现在需要计算出男性最喜欢的10部漫画作品和女性最喜欢的10部漫画作品。”
这类排行榜问题在数学建模中是一种典型的评估模型问题。评估模型的共性是通常并没有固定的评估维度,追求的是评估方式的“自圆其说”,所以并没有所谓的标准答案。对于这类问题,我们首先需要进行如下思考。
(1)喜欢的定义是什么:“喜欢”应该是用户数据表现出来的(毕竟如果用户喜欢但是不表现出来,平台方也无法测量用户的喜欢程度),于是我们以用户的浏览数据(阅读、评论、收藏某一章漫画、关注整部漫画等)近似测量用户的喜欢程度。
(2)哪个数据是更好的:业务上判断阅读、评论和收藏某一章漫画的行为更偏向于用户的短期行为,而关注整部漫画并追更是长期行为,所以选择关注漫画行为作为评价指标。
(3)正向因素和负向因素有哪些:由于排行榜是对漫画进行排名,考察的是不同性别用户最喜欢的内容,而排序依据应该与每部漫画的关注者中男女比例相关,所以应该考虑大盘用户中男女比例(一般漫画类App以女性用户为主),同时需要考虑男性用户和女性用户中绝对人数的因素。比如一共两个人关注某漫画作品,且均为男性,此时男性占比100%,但是上排行榜一定不合理,用户希望看到的是兼具总热度和相应性别比例的作品。
首先需要获取数据,目的是检索出类似于表4-7的数据结构(使用SQL语言获取到如下数据)。
表4-7 漫画id、漫画订阅uid和uid性别的原始数据示例

其次,建立评估模型。建立模型过程中有三个难点。
●难点一:用户的性别信息有缺失(用户资料中有性别信息的不足50%),如何补齐未填写资料用户的性别信息。
●难点二:制定评估分数的计算方式,需要同时考虑漫画作品关注者的绝对人数和性别比例。
●难点三:大盘用户中男女性别比例悬殊,如何在考虑大盘数据的条件下选择“男性喜欢的前10部作品”和“女性喜欢的前10部作品”。
以上三个难点有不同的解决方法。
对于第一个难点,一种比较重量级的办法是根据已经填写性别的用户信息,综合用户的阅读行为,建立模型去训练用户的性别预测。但这种方式比较耗时,紧张的项目周期里去构建这样的分类器需要一到两周的时间。
后来选择了一种轻量级的方式,因为漫画类产品一般在冷启动期间会询问用户看“男性版”还是“女性版”的推荐页面,并且对已经填写性别的用户选择了男性版/女性版进行校验,发现绝大多数用户选择了和自己同性别的版本,所以可以对未填写性别的用户根据使用的是男性版还是女性版进行性别估计。
第一个难点的解决思路是比较简单的:通过其他数据信息补齐缺失数据,并对已经填写了性别的用户选择了男性版还是女性版进行数据分析,从而解决问题。
对于第二个难点,需要制定一个同时兼顾绝对关注数量和某种性别关注占比的评价指标,一般有两种思路。
●“关注人数”大于某个阈值的漫画,按性别关注占比排序,缺点是难以确定阈值范围。
●构建公式,综合两种因素进行排序,缺点是难以确定公式是最优解。
笔者选择了第二种思路,因为第一种思路下的性别关注占比数据差异较小,比如前三部漫画作品的男性关注比例只相差0.05%,如果按照这种思路做排序,前三名分值差异很小(但是作品关注人数相差较大)。第二种思路下笔者选择构建一种排序模型,为了平衡关注人数和男性关注比例,需要构建以下公式(公式不唯一):
男性榜Score=男性用户比例×log10(1+男性关注人数)
以上公式需要对真实数据做测试,调整依据主要是让不同的漫画拥有比较均匀的区分度并且没有“异常点”(比如第一名和第二名的分值差异,第三名和第二名的分值差异基本接近)。同理,女性榜的分值计算也遵循相同的公式:
女性榜Score=女性用户比例×log10(1+女性关注人数)
以上公式并不唯一,可以看到男性用户比例和女性用户比例的权重远远小于各自关注人数,对于性别比例接近的漫画,各自关注人数在跨越数量级(10倍)的时候才可以影响到最终的分值。经过不断地参数调优(实际工作中有对参数做优化,但框架接近),我们成功地解决了难点二。
第三个难点是如何精确地挑出男性喜欢的独有作品、女性喜欢的独有作品。如果按照难点二的解决方案(比如男性榜Score降序、女性榜Score降序),热度较高的头部作品(流量占比90%以上)无论在男性榜和女性榜都名列前茅,即数据很可能是这样的:“男性榜第一名是女性榜的第四名……男性榜的第二名是女性榜的第三名……男性榜的前10名和女性榜的前10名重合作品有7部,只是顺序发生了改变……”。
如何找到男性喜欢的独有作品榜呢?我们可以借鉴斯皮尔曼相关系数的思想。斯皮尔曼相关也可称为级别相关,也就是说,被观测数据的数值被替换成级别。皮尔逊相关系数容易受到异常值的影响,而斯皮尔曼相关系数是将每组数据转换为名次排序。举例如下:数组[100000,1000,1]与[1,3,5]的相关系数用斯皮尔曼的思想可以看作[3,2,1](排序)和[1,2,3]的两个数组的相关系数,把100000这个很大的数字以排序的方法变为3来降低相关系数中原始数据的波动。
以这个思想解决难点三,现在的问题变为“什么是男性喜欢的独有作品”。我们已经定义“喜欢”的分值(男性榜Score和女性榜Score),分以下几种情况。
●男性喜欢,女性也喜欢:不是男性喜欢的独有作品。
●男性喜欢,女性不喜欢:是男性喜欢的独有作品。
所以根据这个定义,我们可以规定如下指标:如果某个作品在男性榜为第X名,在女性榜为第Y名,当X和Y相差较大时,说明是男性喜欢的独有作品。试想以下几种情况。
●情况A:当X=1,Y=30时。
●情况B:当X=10,Y=20时。
●情况C:当X=1,Y=11时。
对于情况A,因为同一作品在不同的榜单中相差29名(差距较大),可判断该作品为男性榜喜欢的独有作品。
情况B和情况C的共同点是Y-X=10,同样是相差10名,但根据常识判断,情况C比情况B的得分更高。因为无论从体育比赛的经验,还是从漫画浏览量的分布看,第1名和第11名的差异,远远大于第10名和第20名的差异。在一个竞争充分的市场中,作为“冠军”往往需要付出第10名数倍的努力,这是客观规律。
这个思想从搜索系统评估指标中的nDCG指标也可以看到,DCG指标是用来评估搜索列表排序的一种常用方法,DCG指标体系会赋予不同位置以不同的权重,每个位置的权重如下:

其中,i代表的是不同的位置(比如搜索列表中的第一位,i=1),所以应用上述的权重定义每个位置的权重如表4-8所示。
表4-8 nDCG算法中每个位置拥有不同的权重

参照以上定义方法,可以将原始定义改写为:如果某个作品在男性榜为第X名,在女性榜为第Y名,并且不同位置的权重函数为G(i)=
,当G(X)和G(Y)相差较大时,说明是男性喜欢的独有作品。
所以,我们可以按照|G(X)-G(Y)|的值进行降序排列,值越大说明该作品在男性榜和女性榜的权重差值越大。
由于是构造公式的评价模型,本节所有公式的参数均可以进行调整,调整的目的主要是追求最终结果的数据分布均匀,即“分值的区分度”,且最终排序结果和主观感受一致。