性别个性化在淘宝搜索中的应用

作者:萱然 (一淘及搜索事业部-搜索技术-算法技术-主搜索与商城)
背景
作为中国最大的电子商务网站,淘宝上的商品琳琅满目 。用户搜索关键词之后会看到成千上万个结果,如何将用户最感兴趣的商品排在前面一直是搜索相关性需要解决的最重要问题之一 。
【性别个性化在淘宝搜索中的应用】通用排序综合相同关键词下所有用户行为作为排序依据,具有一定的普适性,但这种做法忽略了用户个体间的差异,不能体现搜索的智能性 。例如,默认排序下用户搜索毛衣时既能看到女毛衣和男毛衣,还能看到儿童毛衣(默认排序注重类目的丰富性),而人气排序下则是满屏的女毛衣(人气排序注重商品的销售情况);但对于男性用户来讲,他们点击和购买女装毛衣和儿童毛衣的概率很低,如果能多展示一些男毛衣给男性用户会让他们感觉淘宝的搜索更加人性化(此处的性别非用户的真实性别,而是用户在淘宝网上的行为体现的性别倾向) 。
性别影响排序结果的应用场景在于,搜索关键词与性别相关且关键词未表明性别信息(服饰、鞋类query等),提前展示与用户具有相同性别的商品 。在排序性别个性化实现过程中,首先需要分别计算商品和用户的性别,再分析query是否与性别相关且未表明性别需求,最后增大与用户性别相同商品的得分,从而达到提前展示与用户性别相同商品的目的,使不同性别用户在搜索相同关键词时能看到不同的排序效果 。
性别建模
关于如何获取用户性别,可能大家首先想到的是用户注册时填写的性别和身份证信息 。事实上这部分数据的可用性很差,一方面注册性别可以胡乱填写也可以不填;另一方面,有支付宝身份认证的用户占比不高,而且丈夫为妻子埋单的情况很常见(如果根据身份证性别则会误判,这将引起很可怕的结果) 。因此,我们需要建立一套预估机制,根据用户在淘宝上的行为对其性别进行预测 。用户的性别只有两类,男或者女,对于行为中性化的用户不予影响,所以性别预测实际上是一个二元分类问题 。
训练样本生成
训练数据的抽取包括两部分:样本类别的标注和描述样本的特征抽取 。由于想采用较大数据量的样本进行训练,人工标注的做法不太现实,此处采用的是算法标注(用广告算法的svm模型预测的结果标注训练样本性别) 。
由于淘宝上有大量用户行为的log,而且类目也一定程度的表明了商品的适用性别,用类目上的历史行为作为分类特征描述用户性别自然也是常理 。淘宝的类目体系比较复杂,有前后台之分,而后台类目相对稳定和标准,因而选择后台类目作为特征候选集 。并不是所有类目上的行为分布都具有性别差异性(如手机充值卡类目下的行为基本与用户性别无关,而女装类目下女性用户行为占压倒性比例),必须选择那些具有相对明确性别倾向的类目来描述用户 。
类目下行为的性别分布依旧需要借助广告算法的性别预测结果来统计,最终根据性别分布的比例选择出相同个数的表示偏男性和偏女性的类目,类目层级不限定(主要是一级类目,也有一些叶子类目,在计算过程中采用递归的作法,如果叶子类目下性别分布已经很明显则停止向上的回溯) 。在最终选择出的特征中,女装、女鞋、包等是作为女性倾向的描述特征,而男装、男鞋、笔记本等类目是作为男性倾向的描述特征 。
得到样本特征之后,选择相对较长的时间窗口分别计算这些类目下的点击、购买次数和行为天数,就生成了训练数据 。从训练数据整体的性别分布看,女性样本占比过高,考虑到现实社会中男女的性别比例接近,对训练数据中的男女比例也进行了类似处理,随机抽样部分数据使得训练集中男女比例基本相同(这种做法也有潜在问题,有淘宝行为的用户性别分布并不一定与现实社会中男女性别分布一致,暂时忽略这种影响) 。整个训练数据的生成过程如图1所示 。