You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
12 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 51 | 综合应用篇答疑和总结:如何进行个性化用户画像的设计?
你好,我是黄申。今天是综合应用篇的答疑和总结。
在这个模块中,我们讲述了不同数学思想在系统设计和实现中的综合运用。相对于前面几个模块,综合应用的内容更注重实践,也更加有趣。大家对这些内容也提出了很多值得思考的问题。今天,我会讲解其中一个问题,如何进行个性化用户画像的设计?。最后,我也会照例对整个应用篇进行一个总结。
## 个性化用户画像的设计
如今是个性化的时代,互联网和人工智能技术正在把这点推向极致。无论是主动搜索还是进行浏览,用户都希望看到针对自己的结果。
举个例子A品牌的奶瓶在全网是非常畅销的可是对于一位5岁儿子的妈妈来说儿子早已过了喝奶瓶的阶段所以在她输入A品牌后返回“奶瓶”肯定不合适。同时如果她一直在购买A品牌的儿童洗衣液那么返回A品牌的洗衣液就更合理顾客体验也会更好这就是**品类的个性化**。
从另一个场景来看这位妈妈没有输入A品牌而是输入了“儿童洗衣液”如果是A品牌的洗衣液产品排在首页而不是她所陌生的其他品牌用户体验也会更好这就是**品牌的个性化**。
在进行个性化设计之前,最关键的问题是,如何收集和运用顾客的行为数据。
第48节我在讲解查询分类的时候介绍了如何利用用户的搜索行为。而实践中用户个人的行为涉及面更为广泛需要更多细致的分析。通常我们将相应的工程称为“用户画像”。为了让你更好地理解这里我给出一个较为全面的设计概述。
### 如何通过数据生成用户标签?
开发用户画像,首先要解决的问题是:哪些用户数据可以收集,以及如何通过这些数据生成用户标签。
最基本的原始数据包括网站浏览、购物、位置、气候、设备等信息。除了这些原始的数据,我们还可以结合人工的运营,生成一些包含语义的用户标签。这里的用户标签,或者说属性标签,是一个具有语义的标签,用于描述一组用户的行为特征。例如,“美食达人”“数码玩家”“白领丽人”“理财专家”等。对于标签的定义,按照概率统计篇和线性代数篇所介绍的机器学习方法论,既可以考虑采用监督式的分类方法,也可以采用非监督式的聚类方法。
分类的好处在于,可以让人工运营向计算机系统输入更多的先验知识,也可以让标签的制定和归类更为精准。从操作的层面考虑,又可以细分为基于人工规则和基于标注数据。人工规则是指由运营人员指定分类的主要规则。
例如运营人员指定最近1个月至少购买过2次以上母婴产品消费额在500元以上的为“辣妈”标签。这里规则就相当于直接产生类似决策树的分类模型它的优势在于具有很强的可读性便于人们的理解和沟通。但是如果用户的行为特征过于繁多运营人员往往很难甄别出哪些具有代表性。这时如果仍然使用规则那么就不容易确定规则的覆盖面或者是精准度。
另一种方法是使用标注数据通过训练样本来构建分类器。例如通过运营人员挑选一些有代表性的用户对他们的特征进行人工标注然后输入给系统。之后让系统根据分类技术来学习模型可以使用决策树、朴素贝叶斯NBNaive Bayes或支持向量机SVMSupport Vector Machine等等。
不过除了决策树的模型其余模型产生的人群分组可能会缺乏可读性内容很难向业务方解释其结果。一种缓解的办法是让系统根据数据挖掘中的特征选择技术包括我们之前讲解的信息增益IGInformation Gain、开方检验CHI等来确定这组人群应该有怎样的特征并将其作为标签。
除了分类,我们也可以使用非监督式的聚类。这种方法中,运营人员参与最少,完全利用用户之间的相似度来确定,相似度同样可以基于各种用户的特征和向量空间模型来衡量。其问题也在于结果缺乏解释性,只能通过特征选择等技术来挑选具有代表性的标签。
如果我们比较一下分类和聚类的方法会发现分类的技术比较适合业务需求明确、运营人员充足、针对少量高端顾客的管理其精准性可以提升VIP顾客服务的品质。而聚类更适合大规模用户群体的管理甚至是进行在线的AB测试其对精准性要求不高但是数据的规模比较大对系统的数据处理能力有一定要求。
无论是哪种方法,只要我们能获取比较准确的用户标签,那么我们就可以给出用户的画像,刻画他们的主要行为特征。下面我们来看看基于用户画像,可以进行哪些个性化的服务。首先是在搜索中增加个性化因素,相比普通的搜索,个性化的搜索可以投用户之所好,增加搜索结果的点击率、商品的购买转化率等等。具体来说,我们可以在下面这几点下工夫:
第一点个性化的排序根据用户经常浏览的品类和属性对搜索结果中的项目进行个性化的排序开头提到的5岁儿子妈妈的案例体现了这点的核心思想。
第二点,个性化的搜索词推荐。例如,一位体育迷搜索“足球”的时候,我们可以给出“足球新闻”“冠军杯”等相关搜索。而在一位彩票用户搜索“足球”的时候,我们可以给出“足球彩票”等相关搜索。
第三点,个性化的搜索下拉提示。例如,经常购买儿童洗衣液的用户,输入儿童用品的品牌后,在搜索下拉框中优先提示该品牌的儿童洗衣液。
除了搜索个性化还可以运用在推荐系统、电子邮件营销EDMEmail Direct Marketing、移动App的推送等等。对于推荐系统来说在用户画像完善的前提下我们能更准确地找到相似的用户和物品从而进行效果更好的基于用户或基于物品的协同过滤。相对于传统的线下营销电子邮件营销不再受限于印刷和人力成本完全可以做到因人而异的精准化定向投放。
比如系统根据品类、品牌、节日或时令分为不同的主题进行推送。运营人员甚至只用制定模板和规则然后让系统根据用户画像的特征自动填充模板并最终生成电子邮件的内容。另外随着移动端逐渐占据互联网市场的主导地位掌上设备的App推送变成了另一个重要的营销渠道。从技术层面上看它可以采用和电子邮件营销类似的解决方案。不过内容的运营要考虑到移动设备屏幕尺寸和交互方式的特性并进行有针对性的优化。
有了上述这些设计理念和模块,我们需要一个整体的框架来整合它们。我在这里画了一张框架图,供你参考。
![](https://static001.geekbang.org/resource/image/34/4f/34f550e2650e64065d0f104410ce3e4f.png?wh=1524*1134)
这种架构包括行为数据的收集和分析、聚类、分类、构建画像、缓存等几个主要模块。随着数据规模的不断扩大我们可以选择一些分布式系统来存储用户画像数据并使用缓存系统来提升数据查询的效率为前端的搜索、推荐、EDM和App推送等应用提供服务。当然我们还可以利用行为数据的跟踪进一步分析这套画像系统的质量和效果形成一个螺旋式上升的优化闭环。
综合来看,用户画像也许概念上并不复杂,可是一旦落实到技术实施,我们需要综合很多不同领域的知识。从用户标签的角度来说,可能涉及的领域包括监督式和非监督式的机器学习算法,以及相关的特征选择。从系统集成的角度来说,可能涉及的领域包括分布式、缓存、信息检索和推荐系统。这些内容我们在之前的各个模块都有介绍,今天我通过用户画像的设计进行了知识的串联。当然,我这里讲解的方案也只是一种参考,你可以结合自身的需求来做进一步的设计和实现。相信经过一定量的项目实践和经验积累,你对这些内容的综合性运用会更加得心应手。
## 综合应用篇总结
在综合应用篇之前,我们分别从基础模块、概率统计模块和线性代数模块出发,详细阐述了不同编程技术背后的数学知识。在综合应用这个模块,我们又从几个非常实用的案例出发,讲解了如何结合不同的编程技术,设计并架构大型的系统,最终为商业需求提供解决方案。
如今的数据系统越来越庞大系统设计时常常会用到缓存系统来提升记录查找的效率。对缓存系统的强烈需求也催生了很多开源的项目例如Memcached和Redis等等这些系统都已经相当成熟。而在这个模块我们同时使用了哈希函数和队列实现了一个最简单的缓存系统。哈希函数确保了查找的高效率而队列则实现了LRU的淘汰策略。通过这两点你就能理解缓存设计的基本原理和方法。
和缓存类似搜索引擎的倒排索引也使用了哈希表结构来提高查询效率。当然倒排索引的功能不仅限于数据对象的快速定位。它本身还能存放很多额外的信息包括词频tf、tfidf、关键词出现的位置等等。在这个模块中我展示了如何利用这些信息实现更为复杂的相关性模型例如向量空间模型、概率语言模型等等。另外倒排索引可以帮助我们过滤掉完全无关的数据大大降低这些模型的计算量。
除了基本的及时性和相关性,搜索引擎还应该按照不同应用的需求进行优化。例如,电商平台的搜索,就和通用型的搜索不一样,对于电商搜索来说,用户更加关注的是商品的品类。我讲解了如何根据商品目录和用户行为反馈,构建查询的分类器。这样,当用户进行搜索的时候,系统首先对用户输入的关键词进行分类,弄清楚用户最感兴趣的品类是哪些,然后再优化商品的排序,最终增加商品搜索结果的相关性。
和搜索引擎同样重要的是推荐引擎。有的时候用户自己不会输入想要查询的关键词而是喜好不断地浏览网页。这个时候推荐技术起到了很关键的作用它可以主动地为用户提供他们可能感兴趣的内容。在这个领域协同过滤是非常经典的算法。我通过代码的实践给你讲解了如何通过矩阵操作实现基于用户和基于物品的过滤。除此之外我们还探讨了如何使用SVD对用户和物品之间的关系进行分解帮助我们找到隐藏在用户和物品之间的潜在因素比如电影的主题。
无论是设计搜索还是推荐系统,我们都可以加入个性化的元素,而这往往是提升业务的关键。今天,我讲解了用户画像的原理、用户标签的设计和实现、以及如何使用用户画像来给搜索和推荐系统加入个性化。而这个整体方案涉及的技术面是相当广的,你可以结合之前的各期专栏,对每一个环节进行消化和理解。
## 思考题
对各种知识的综合应用对个人能力要求很高,却也是最重要的。我想听你说说,在平时的开发项目中,你有没有结合使用本专栏所讲的不同知识点的经历?能不能和我们说说你在这方面的心得体会?
欢迎留言和我分享,也欢迎你在留言区写下今天的学习笔记。你可以点击“请朋友读”,把今天的内容分享给你的好友,和他一起精进。