美文网首页python学习IT共论百宝箱
爬取简书百万页面 分析简书用户画像

爬取简书百万页面 分析简书用户画像

作者: hirainchen | 来源:发表于2017-05-26 07:46 被阅读12120次
    爬取简书百万页面 分析简书用户画像

    在本文中我会尝试如何从0数据开始到获取百万页面,进行用户数据分析、建模,再数据信息化、可视化,生成用户画像分析用户特征。

    缘起:几个月前正式进驻简书平台,不由的想了解下在这个平台上聚集的都是些什么人,有哪些人跟我 臭味相投 品味相似。作为技术人,首先想到是用一些技术手段来分析,看到简书上有不少爬虫、数据分析技术文章,不由的技痒,于是便有了自造轮子的想法。

    本文会谈及以下内容:

    • 数据采集
    • 数据清洗
    • 数据分析
    • 简书粉丝排行榜
    • 简书用户常用词排行榜
    • 简书用户爱好排行榜
    • 简书用户喜爱书籍排行榜
    • 数据可视化
    • 用户关键词云图
    • 用户画像
    • 机器学习
    • 用户性别预测
    • 用户爱好分析
    • 用户推荐

    大纲

    • 用户画像概述(是什么,有什么用,怎么做)

    • 获取抽样用户数据

      • 需要什么样的抽样数据
    • 获取用户发表内容,提取用户关键词

      • 难点:文章列表获取;正文提取;提取关键词
    • 性别分析

      • 性别数据获取
      • 难点:数据样本少;新浪反爬
      • 机器学习分类
    • 爱好分析

      • 爱好和兴趣的区别
      • 构建爱好分类
    • 关键兴趣分析

      • 什么是关键兴趣
      • 获取书籍数据
      • 获取电影数据(未完成)
    • 结果分析

      • 构建网站群体用户画像
        • 简书整体用户群体画像
        • 简书男性群体用户画像
        • 简书女性群体用户画像
      • 网站个体用户画像
        • 典型男性用户例子及分析
    • 用户推荐

      • 目的:增加用户粘性;提高内容爆光率;营销活动推广
      • 做法:千人千面的个性化推荐
      • 使用什么推荐算法:个性化标签;协同过滤(UserCF/ItermCF)
      • 例子:典型男性用户例子及分析相似用户
    • 存在问题

    • 涉及工具


    用户画像概述(是什么,有什么用,怎么做)

    用户画像是根据用户基本属性、社会属性、生活习惯和消费行为等信息而抽象出的一个标签化的用户模型。构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识。

    用途

    用户画像的作用

    • 精准营销,分析产品潜在用户,针对特定群体利用短信、邮件等方式进行营销;
    • 用户统计,比如购买某类书籍人数 TOP10;
    • 数据挖掘,构建智能、个性化推荐系统,利用关联规则计算,喜欢读书的人通常喜欢什么商品品牌,利用聚类算法分析,喜欢读书的人年龄段分布情况;
    • 进行效果评估,完善产品运营,提升服务质量,其实这也就相当于市场调研、用户调研,迅速下定位服务群体,提供高水平的服务;
    • 对服务或产品进行私人定制,精准到某一类甚至每一位客户提供个性化服务
    • 业务经营分析以及竞争分析,影响企业发展战略

    用户画像的基本构成

    构建用户画像的可以通过四组属性,它们是:用户静态属性、用户动态属性、用户消费属性、用户心理属性

    用户静态属性

    用户静态属性,是指一些较稳定不会频繁变化的属性,静态属性是用户画像建立的基础,最基本的用户信息记录。如性别、年龄、学历、角色、收入、地域、婚姻状态等。

    用户动态属性

    用户动态属性,动态属性指具有可变性,如用户的兴趣爱好、在互联网上的活动行为特征。

    用户心理属性

    用户心理属性,心理属性指用户在环境、社会或者交际、感情过程中的心理反应,或者心理活动

    用户消费属性

    消费属性指用户的消费意向、消费意识、消费心理、消费嗜好等,对用户的消费有个全面的数据记录,对用户的消费能力、消费意向、消费等级进行很好的管理。

    用户画像类型

    用户画像可分为群体用户画像和个体用户画像,前者是抽象的族群代表,表示某一类人的特征,用于分析群体特征;后者是具体到某个个体用户上,表示该用户的特征,用于做个性化分析。

    怎么做

    • 数据收集 - 根据数据来源可分为内部数据库、ETL、外部网站数据采集
    • 数据建模 - 根据所获取到的数据建立模型,注入数据调整模型参数
    • 数据分析及预测 - 数据可视化、输出报表、趋势预测

    说到数据挖掘,是把散乱数据转换成「有价值」信息的过程,数据是可以是数字或者文本内容甚至图像,而信息是有语义的、人脑可理解的报告、图表。

    数据挖掘的过程是:获取数据(内部数据库查询、外部网站抓取、购买接口)-> 数据清洗(数据结构化)-> 数据分析(建模、应用算法公式)-> 数据信息化(报表结论、数据可视化)

    更具体怎么做,下面我会以简书的真实用户数据为例子展示下。


    构建简书用户画像

    简书用户数据收集

    获取抽样用户数据

    作为简书的外部普通用户,也只有通过“数据采集”(网页爬虫)这个途径来获取数据,而据说简书用户上千万,日活过百万,显然全部抓取下来不知何年月,因此进行抽样分析是比较合理的做法。

    需要什么样的抽样数据?
    显然活跃用户是我们需要的关注。在简书上,活跃用户有2种,一种是大V(粉丝数量多),另外一种是发帖多的,这里我选择了粉丝数量多的这类用户。为什么不选发帖最多的?一个网站的人气一般都是靠大V用户群带动的,这群人产生的内容介于PGC(专业编辑)和UGC(普通用户贡献)之间,他们产生的内容会比较有影响力。而发帖多不代表有影响力,在背后发帖的说不定还可能是脚本程序。

    为了使用方便,我使用Ruby 开发了自己的爬虫(简书上有很多介绍Scrapy这个优秀的爬虫框架的使用教程,工具使用自己熟悉的就好),链接规则设置为允许网站首页、用户主页、文章内容页(为了获取评论用户链接)、粉丝列表(followers)、关注列表(following),如图↓

    爬虫链接规则设置.png

    爬虫启动后会自动抓取符合这些规则的页面,并自动解析页面内链接,保存符合配置规则的链接再进行抓取。

    〖Tips:说易行难,为了提高爬虫效率一般我们都会使用多线程,这里面要涉及到并发编程、master-worker调度的工作模式,总而言之,写爬虫不难,但开发一个高效爬虫框架不轻松,建议初学者先掌握使用流行工具框架再去造轮〗

    最后爬虫抓取了约31万个页面,其中有11万个用户主页,感觉也够用了,如图

    简书用户页面抓取结果.png

    增加一个ExtractUserPipeline(Pipeline是我用于在爬虫框架中处理获取页面内容的自定义类,可参考Scrapy的Pipeline概念)来解析提取用户的信息,可使用css selector、正则表达式处理页面内容,得到一个包含用户名称、性别、粉丝数、文章数等基础用户信息的json结构的数据,例如:

    用户提取数据example.png

    在爬虫框架上运行这个Pipeline,获取到11万份格式好的用户数据样本,作为抽样没有必要使用全部数据,因此我只选取了排行榜上的前10000个数据,按照关键值“followers_count”来排序,最后得到了一份“简书Top 10000 粉丝排行榜” ,如图

    简书Top 10000 粉丝排行榜.png

    〖Tips:一开始我是使用1000条数据,数据量时少方便调整模型和算法参数,跑一次最多几十分钟,到最后要出结论报表时才使用10000用户数据,会涉及近70万文章页面,这时每跑一次分析运算都是按小时算的了〗

    获取用户发表内容,提取用户关键词

    观其“言行举止”是了解一个人的办法,在简书上,用户“发声”的自然就是其发布的文章,因此需要获取用户发表过的文章内容是收集下一个特征数据的基础。

    • 文章列表

    简书给出了第一个“难题”:用户的文章列表使用AJAX翻页,普通爬虫无法直接获取分页列表。这种问题一般有两种解决:一是查看Network请求,通过编程拼接出所请求的url;二是使用headless browser(如 PhantomJS/Selenium/SlimerJS/Chrome headless)。使用headless browser比较通用但运行效率低,而简书的分页规则也只是最简的分页数+1,所以我的解决办法是添加一个Pipeline,在获取到一个列表页时执行分析拼接出下一页的链接加入待抓取页面列表。

    开启爬虫服务对这1万个用户链接进行爬取,跑完能得到约60万个内容页、7万个列表分页,再加上前面的抓取的31万,多达到100万个页面,为家里的网络带宽心疼一下下。

    简书内容页面抓取结果-数量.png

    另外,从爬虫框架对简书的抓取结果的分析报告中,发现简书的网页响应都很快,平均每个页面300ms,97%的页面都能秒开,只有15%的页面打开在300ms以上,而超过3秒以上的几乎是0%,赞!

    简书内容页面抓取结果-分析.png

    〖Tips:有少量用户约50个在抓取时返回404,可能被简书关闭了帐号,所以下面出现分析报表中并不是完整的10000整数〗

    • 提取正文

    一篇内容页中除了正文,还有很多重复的“装饰”语,如简书每个内容页面都有“赞赏支持”、“关注”、“登录” 等词,如果都无差别收录显然会是出现最高频次、却是对文章表述毫无意义的词,因此需要先提取出正文内容,再对正文进行分词才合理。最简单的做法是使用正则、css selector提取即可。我使用了密度算法,不需要编写正则,把密度高部分作为正文对待,这样无论是什么类型的内容页、网页改版页面结构变更了都能处理了。

    • 提取关键词

    中文NLP(自然语言处理)中第一步就是中文分词,从最简单的机械分词(各种MM算法)到复杂的神经网络分词算法,需要处理歧义识别、新词发现;另外再好的分词算法也需要有2份词典,一个是专用词典,一个是停用词典。有时会感叹英文国家的NLP技术发展那么快是因为英文分词门槛低吗?好在现在开源分词库也不少,效果各有特点,选则自己熟悉的即可。

    从每篇文章提取出20个词频出现最高的词作为文章关键词,效果如下图

    内容页分词.png

    在二十几篇文章中,只有一篇出现了“关注”这个词,说明这个作者真的有在求关注。

    对每个用户,再合并其所有文章内容中的关键词,并统计重复次数作为词频,按词频高低取前100个,这份数据作为该用户的“常用词”。

    〖Tips:这是很重要的一份特征数据,对后面的用户性别、兴趣爱好分析都要使用到〗

    现在我们先看一下 简书CEO 简叔 的常用词的词云 是什么样:

    简书CEO 简叔 词云.png

    词云显示他喜欢聊“秘密”,关注“简书”,“创业”、“团队”、“产品”、“写作”,“平台”、“互联网”,“作者”。
    我会猜他有很多“想法”,平时喜欢去“咖啡厅”找“创作”的“灵感”,要在“上海”或“北京“找个“办公室”组建一个“创业”“团队”,做一个基于“互联网”的“文章” “写作” “内容” “平台”,“产品”叫“简书”或“jianshu”,会招揽很多“作者” 并保护他们的“著作权”,提供“手机”“app”的“下载”,得了“苹果” 的“优秀” “设计” “推荐”,求“群友”多“交流”多“关注”,求“打赏”求“评论”。

    (哈哈 以上完全瞎猜,我对“简叔”的认识只有这2个字)

    最后再统计下所有用户的关键词使用的比率,得到 “简书用户常用词 Top 100排行榜”

    简书用户常用词 Top 100排行榜.png

    现在简单分析下前20个词,可以发现简书上的用户每书写100个词时,就有2次提及“作者”、“简书”,关心“著作权”,表明写作意愿很强烈,也关注平台自身,符合简书打造写作平台本身的定位;常谈论“生活”、“工作”,常说“选择”,很在意“时间”,说明在职人士应该是主要用户;喜欢谈“喜欢”什么、谈“感觉”、常会说“故事”,文艺味很浓;做事讲究“方法”,有大堆的“世界”观、“人生”观,说明大部分用户教育程度比较高(大学);有“孩子”、喜欢晒“图片”的用户估计占比也很高,继而可以推测主要的用户年龄段在24-36(23大学毕业,36以上是中年)之间;喜欢讨论“app”,符合移动互联网的时代特征;关注“学习”,在这个社区推“知识付费”学习课程准是一呼百应。

    以上纯粹直观印象不算结论。

    另外,为了能搭上这里“文艺”的氛围,特意献上一份 “简书用户常用词 Top 100词云图.png”,大家看看 “感觉”是否“喜欢”:

    简书用户常用词 Top 100词云图.png

    下面再继续看看如何获取其他的用户属性特征。

    性别分析

    性别是用户最基础的静态属性之一,作为人类自然体上最大基因差异特征,对用户言行举止、思想决策有莫大的影响,因此性别分析几乎是所有领域都需要研究分析的。

    但简书这里留了第二个“难题”:性别是选填,大部分用户留空。

    看下现在的用户性别比率统计:

    简书用户性别比率-预测前.png

    在这10000人中,75%是未知的,剩下已知的男女各占一半。感觉玩不下去了 。

    幸好现在是机器学习时代,可以使用机器学习,对用户的特征行为进行学习,从而对用户进行性别预测。
    前面说了人类性别对其言行有莫大影响,因此我使用“用户常用词”作为输入特征,来预测用户性别。

    性别分类是典型的二分类问题,可以使用朴素贝叶斯、决策树、SVM等有监督学习的分类算法,我选择了朴素贝叶斯,NBC模型所需的参数很少,对缺失数据不太敏感,算法也比较简单,结果还挺有效。

    机器学习过程有4步:1,特征工程;2,训练;3,测试及评估;4,预测;

    • 特征工程

    一开始使用1000个用户数量进行练习时,得到的性别数量很少,不足够训练出一个可信任的分类模型。
    经简书上的Python爬虫大师 @向右奔跑 提醒,简书用户公开信息上会有新浪微博的链接,而新浪微博上有用户性别信息。
    尝试了一轮,发现只有部分用户会有新浪微博链接,而新浪微博却有个业界知名的反爬系统,必需降频率抓取,成效不是很高。最后使用10000个用户数据时感觉训练数据量已经足够。

    • 训练

    训练集准备好后,就可以构建分类器,把已知性别和对应用户的常用词,作为标签和特征值,进行训练,如图:

    用户性别预测-训练.png
    • 测试及评估

    分类器训练完后,要对训练好的模型进行准确率评估,意思是看看预测结果靠不靠谱。
    我在这里使用了“F1 Score”,简单科普下:

    F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。

    简单来说,F1分数是个加权平均值,越接近1表示预测结果越准确。

    测试的结果如下:

    用户性别预测-结果评估1.png

    分数略低,经过一番调整参数重新训练后,得到

    用户性别预测-结果评估2.png

    现在的F1 分数 为 “0.864”,实际测试有 87.6% 的准确率,感觉分类模型已经可用了。

    做下抽样检查,看到对程序员的性别识别还是比较准确性

    用户性别预测-结果抽样.png
    • 预测

    使用训练好的模型,尝试对所有未知用户性别进行预测:

    用户性别预测-预测未知性别结果.png

    应用预测结果,并查看最终的性别比率图表:

    简书用户性别比率-预测后.png

    以10000个简书用户为样本的抽样调查中,女性占58.1% 男性占 41.9%。

    原来简书女性用户那么多的吗,真是万万没想到,第一次来到一个女性用户比男性高的社区,有点小紧张,怎么装做经常来的样子 。

    爱好分析

    有了一份静态属性的特征数据,我们继续看看动态属性中的“兴趣爱好”要如何提取分析。

    • 爱好和兴趣的区别

    在这里我给“爱好”和“兴趣”做了细分定义,爱好跟兴趣的区别:爱好是固定分类,兴趣是动态词条,例如可以是热门头条话题;爱好不会轻易消亡,兴趣会随时间降低关注热情;爱好是“做什么”、“某一类事物”,例如“读书”,“文学”;兴趣是“某个具体事物”,如某本书、某个明星人物;爱好是频繁是去做的事情,兴趣可能只是一时的心血来潮偶尔接触一次。

    一个人如果对某个事物喜爱,便会经常提及;如果只是某天一时感兴趣了,可能会某一篇文章里会反复提及此事物,但不会出现频繁在其他文章中提及。
    基于这个理论,我们可以把用户的所有文章的常用词中出现的一些关键词定性,例如他的大部分文章出现了“减肥”这个词,那么这个用户应该是很在意“减肥”这个事;如果他只是在某1、2篇文章里提及“减肥”,这个词甚至都有可能不会出现在他的常用词榜内。

    • 构建爱好分类

    爱好作为分类信息,需要构建一个爱好词典,再使用用户常用词进行匹配,最后给用户打上所匹配的分类标签。

    我整理了一个600多个分类的爱好词典,常见的爱好都应该包含了:

    爱好词典-example.png

    〖Tips:亮点自找〗

    • 群体用户爱好分析

    对每个用户进行爱好分类,可以得到一个用户爱好排行榜:

    简书用户爱好 Top 100排行榜.png

    简单分析下:
    “学习”在所有爱好中有15%,在用户中占55.6%,也就说简书大部分用户都是爱“学习”,学习氛围浓厚,简书可以组织一些学习为主题的交流活动,至少一半用户会马上感兴趣,至少可优先发邮件通知下;
    有27%的用户爱好“写作”,符合”二八”定律分布,一个内容平台总得有大量读者型的用户来围观点赞、打赏,写作型的用户才有动力继续写作;
    “阅读”、“读书”、“电影”、都占了20%以上,这个感觉是要跟豆瓣的目标用户重叠的节奏了,所以要从同样以读书、电影(影评)为核心的豆瓣上抢用户,简书运营者要花不少力气。

    • 个体用户爱好分析

    现在可以使用爱好标签来聚合用户了,比如有什么电影节活动时,可以打了“爱好:电影” 这样标签的用户发个早鸟票什么的,用户会感觉怎么我昨天才看到电影海报的文章今天就收到预售票通知,其他用户还没有,好智能、好贴心、好嗨森。

    但只如果是做为简单的分类标签,聚合的粒度会比较粗糙,比如说有4个用户:

    • “用户A”喜欢读书、写作、作画,
    • “用户B”和“用户C”也喜欢读书、写作,
    • “用户D”喜欢读书、看电影

    显然对于A,他跟用户B、C的爱好相似度(有2项目重合)会大于 用户D(只有一项重合),但实际上A、B、C三个人的对读书的喜爱程度是不一样,那么对于A,他跟B、C之间,谁的爱好相似会更接近呢?系统要给A推荐时B和C时,首先要推荐哪个?

    为了解决这个问题,我引入一个“爱好喜好指数”(Hobbies Favor Index)的概念,可以给用户的每个爱好打分,分值范围是1-10分,10分表示“十分热爱”,1分表示“一般般”,计算时使用用户常用词的词频作为输入,跟他所用的其他词根据词频做排位进行比较得到分位值再除以10收敛,得到1到10分,结果使用雷达图表做数据呈现,得到一个“用户爱好雷达图”,如图:

    用户爱好雷达图-example.png

    通过雷达图我们可以很直观的了解这个用户的爱好分布,以及每一项爱好的喜好程度,再与其他用户做比较也有了基础:重叠面积越多的越表示爱好越相近,被推荐的排名则越靠前,如图:

    用户爱好相似推荐-example.png

    终于可以知道简书上谁跟我最 臭味相投 品味相近了!

    至此,我得到了第三份简书用户特征数据-爱好分类。

    关键兴趣分析

    • 什么是关键兴趣

    用户兴趣会很广泛,要分析每一项兴趣十分耗时耗力,特别作为运营平台,不大可能也不值得花太多时间精力分析一些跟平台运营方向无关的数据(所以这就是我们要有针对性建模的原因),对于简书来说,读书、写作显然是最需要关注的点,因此什么用户的食物口味、喜欢看什么漫画类型这些非核心、关键的特征,没有太多必要去做收集和分析。所以,我们要做的是〖关键〗兴趣分析,“简书”里也有个“书”字,我就以“书籍”作为关键兴趣,尝试进行分析。

    • 获取书籍数据

    书籍数据收集,最简单,但却不容易。

    “简单”是说数据提取可直接用正则匹配文章正文中用书名号《》包含的内容,但事实上从最初提取到的数据上发现书名号内的不止是书名,还有电影名、电视节目、文章标题、app名称等,甚至有人喜欢用《简书》这样来引用简书,因此需要进行数据清洗;有些书名中会包含问号?感叹号!,写正则匹配处理也比较麻烦;最保守的做法是使用专用词典,但词典的创建和更新也是有些工作量,不够“智能”。
    另外,还有些人喜欢使用“不合法”的标点符号来引用书籍名称,例如【】、「」、『』、〖〗,我觉得很有必要呼应响应《标点符号用法 - 中华人民共和国教育部》这个规范:

    标点符号用法 - 中华人民共和国教育部.png

    使用双书名的正确姿势应该是:

    书刊电影名:
    已在中国出版发行的作品(报纸、杂志、图书、名章、电影、电视节目、电子游戏、歌曲、戏剧等),请务必核实官方译名。上述类型的作品名翻译为中文时均使用书名号《》,使用外文时斜体、不加书名号,首次在文中出现时,请在译名的后面加括号注上原文。
    例如:电影《黑暗骑士崛起》(The Dark Knight Rises)首映式发生枪击案。
    
    

    为了解决干扰词问题,我创建了一个书籍专用停用词库,内容类似 :

    简书
    百词斩
    扇贝单词
    首页投稿
    首页热门
    网易云音乐
    网易公开课
    简书连载作品龙虎榜
    世界互联网大会|xxxxxx
    
    • 兴趣点数

    生活中每个人对某个事物的喜好程度是不一样的,为了能做量化和计算比较,我定义了一个“兴趣点数”概念,跟之前“爱好喜好指数”相似,也是1到10分(参考豆瓣的10分制,但10分制有精度问题,在最后的问题章节里有说明),10分就表示“十分喜爱”,使用书籍名出现的频率作为输入值进行换算,这样能得到每个用户的“喜爱书籍排行榜”,方便最后做用户个性化推荐分析。

    • 简书用户喜爱书籍 Top 100 排行榜

    添加一个Pipeline用于收集用户文章中出现的书名,运行Pipeline后,得到每个用户的书籍列表,把兴趣点数用5星条显示,便可以很直观的看出用户对书籍的喜爱程度,如图:

    兴趣点数-example.png

    在数据分析框架上能自动将所有用户的书籍汇总统计比率,便得到了“简书用户喜爱书籍 Top 100 排行榜”:

    简书用户喜爱书籍 Top 100 排行榜.png

    榜首是《红楼梦》,15%的用户比率,说明每10个简书用户里就有1个人喜欢《红楼梦》,遇到心仪的女性用户没有话题时,说些红学关键词说不定就能引起共鸣;
    第2位是《西游记》,这个我相信用户看的更多是电视剧,国产少有精品;
    第3的《欢乐颂》虽说也有书籍(豆瓣上6.7分),但出现在这个排名绝对是因为作为同名电视剧而被用户提及;
    排名4、5、6的《论语》、《圣经》、《诗经》,也有10%的用户比率,让我不得不确认简书是文青聚集地,国学当道;
    四大名著除了《水浒传》其他三本都进了前10;
    而我所喜欢的《三体》也进入了前20比较欣慰,硬科幻终于火一把了;

    结合用户性别,还可以到得出2份报表:

    • “简书男性用户喜爱书籍 Top 100 排行榜”(在这个榜里《三体》进入了前10!)
    • “简书女性用户喜爱书籍 Top 100 排行榜”

    〖Tips:榜单不一一贴出了,但这2份数据在后面的构建网站群体用户画像时会用到〗

    • 获取电影数据(未完成)

    影评也是写作的好素材,也容易产生话题效应,因此也可以作为简书用户的关键兴趣之一,再说我也很喜欢看电影 。

    已经使用爬虫抓取到一些流行电影数据(如图),以后再做分析。

    电影数据-example.png

    「重点来了」简书用户数据分析及预测 - 数据可视化、输出报表、趋势预测

    构建网站群体用户画像

    • 简书整体用户群体画像

    网站的群体用户画像,可以用来表示这个网站的大部分用户的共同属性特征、行为特征,对于网站运营者可以直观的了解自己的用户群体概括。

    使用前面步骤得到的“简书用户常用词 Top 100排行榜”以及“简书用户喜爱书籍 Top 100 排行榜” 2份数据,在分析系统里中创建一个虚拟用户进行分析,下面是见证奇迹的时刻:

    分析简书整体用户群体画像.gif

    得到“简书整体用户群体画像”:

    简书整体用户群体画像.png

    从得到的画像上看,预测的性别是女性,说明用户中女性占多,这个跟前面用户性别比率分析中女性占多这个结果是一致的;
    大部分人的爱好是:阅读、电影、读书、写作、学习,因此还可以从这几个爱好进行更细致的建模,采集更多的用户特征数据;
    用户最喜爱的书籍是:《西游记》、《小王子》、《红楼梦》、《欢乐颂》、《论语》、《平凡的世界》等,可以围绕些做话题活动;

    下面再根据性别特征来细分出2个用户群体:男性和女性群体用户画像。

    • 简书男性群体用户画像:使用 “简书男性用户常用词 Top 100排行榜”,“简书男性用户喜爱书籍 Top 100 排行榜”:
    简书男性群体用户画像.png
    • 简书女性群体用户画像::使用 “简书女性用户常用词 Top 100排行榜”,“简书女性用户喜爱书籍 Top 100 排行榜”:
    简书女性群体用户画像.png

    当然还可以按其他属性如年龄、某类爱好、区域等,这些都需要建模并收集获取到辅助分析的特征数据。

    〖Tips:分析系统在汇总男、女性用户的关键词、书籍数据时,会自动忽略每个用户的词频数据,相当于一人一票机制,每个人都对关键词投票,但一个词只投一票,这样得到的词频和排名才合理〗

    网站个体用户画像

    • 男性用户例子
      对整体用户群体有了印象,现在来看看个体用户画像。以简书上的男性大V用户“彭小六” 作为例子,看下他的用户画像:
    典型男性用户例子及分析 彭小六.png

    他的爱好是:书籍、读书、写作、阅读、学习;文章提及过500多本书籍,其中比较喜欢的书籍是:《如何阅读一本书》、《让未来现在就来》、《影响力》、《这样读书就够了》、《颠覆平庸》

    • 女性用户例子

    再找一个女性用户画像例子,大V女性用户有一位【简黛玉】:

    典型女性用户例子及分析 简黛玉.png

    看得到她的爱好相当广泛,但实际上这是个非自然人帐号,专门收录一些简书不同作者的精彩文章做推荐,所以表现出来的特征会比较宽泛,这个正好可以代表简书官方PGC(专业编辑内容)的倾向,可以大概看出简书官方的内容引导倾向是以哪些类型的文章为主。

    用户推荐

    为了增加用户粘性,提高内容爆光率,进行营销活动推广,网站可以使用一些推荐系统,可针对群组推荐,更好的做法是千人千面的个性化推荐,细致到可针对每一个用户的喜好、关注点进行推荐。

    推荐系统可以使用一些推荐算法如:个性化标签;协同过滤(UserCF/ItermCF)等。这里我简单的使用个性化标签和基于用户推荐的理念来演示下可以如何做个性化推荐。

    在协同推荐理论中,要给用户推荐他感兴趣的内容,可以从跟他爱好相近的用户入手。

    通过爱好标签的聚合运算,跟“彭小六”爱好最相近的用户有这些,如图中右侧列表:

    典型男性用户例子及分析-相似用户列表.png

    看下分析系统推荐的第一个用户“用时间酿酒”跟他的爱好会有多相近:

    典型男性用户例子及分析-相似用户雷达图.png

    看得出他们都爱好 书籍、读书、写作、阅读、学习,而且各项爱好的喜好程度也相近(爱好雷达图的重叠面积大)。

    再看下这个被推荐出来的用户的自身的用户画像:

    典型男性用户例子及分析-相似用户首推.png

    可以看到两个人的感兴趣的书籍也非常接近。

    那么推荐系统在做个性化推荐时,就可以把用户“用时间酿酒” 比较喜欢的书籍(例如Top1的《哪有没时间这回事》),推荐给用户“彭小六”。基于同样的原理,可以把这个用户收藏的文章、打赏过的文章,推荐给“彭小六”。

    至此,我们从0数据开始,通过百万页面抓取,到获取了10000个抽样用户数据,生成了一些用户特征属性,构建了群体和个体的用户画像,大概了解到了简书整体用户群体特征,能知道某个具体用户的兴趣爱好特征,也知道要应该如何给用户推荐个性化内容。

    存在问题

    在整个数据挖掘过程中,发现一些问题还有待完善:

    • 性别预测中发现,存在非自然人帐号,背后实际是多个运营者在发布文章,产生的内容会包含两性特征,使得到数据会影响预测准确性;性别分类器没有进行交叉测试,测试评估有过拟合可能
    • 发现 用户喜爱书籍 的兴趣指数使用10分制度精度不够,使得原本应该排第一位的书籍会因为第二位一样得分(可想象成10.9跟10.1的差距),并因此可能因为相同得分而随机变成了第二位;豆瓣的得分分数实际应该算是100分制(只是表现出的结果是除以10,例如《三体》的得分是8.8,在一百分制里就是88分)
    • 有些用户没有显性的爱好、兴趣怎么办?可使用机器学习,对用户的兴趣爱好进行预测
    • 如何发掘用户隐性爱好,例如大部分人都喜欢看电影,但不会特意发文章说“我是电影爱好者”,一般的行为是会经常性发表对某些电影的看法,发表的内容多了,显然这个用户是爱好看电影的,这种可以通过电影词库来训练分类器学习和预测

    涉及工具

    • 题图中用到的词云图使用:wordart.com
    • 其他:所有截图均为我使用 Ruby 语言独立开发的网页抓取、数据分析框架
    • 开发语言:Ruby(I Love Ruby!)

    下期预告

    • 创建人物角色模型,人物角色模型是对设计目标人群形象、需求和价值观的一种概括化、视觉化的呈现 ,社会角色,如大学生,工薪族,高收入人群;职业角色如 程序员,设计师,产品经理;家庭角色,如全职家庭妇女;人物角色模型不是一个真实的用户,而是一类用户代表。例如要组织读书会,如何把喜欢《把时间当作朋友》等几本书的用户筛选出来,可以创建一个“自我管理型”的角色,爱好特征标签是“读书”,兴趣特征标签是“book:《把时间当作朋友》”……
    • 用户性格分析,用户性格会影响决策行为、消费行为,美国心理学家阿波特根据人的价值观念倾向对性格作了六种分类……

    相关文章

      网友评论

      • 薛小川:为什么百度指数搜索“简书”显示的是男性占比更大呢,而且大很多,百度的搜索应该可以从侧面显示简书的用户吧,即便有误差,应该也不会太大吧,萌新表示懵逼了:flushed:
      • truemi:收下我的膝盖 U+FEB97
      • 萤火之森ss:前端展示用的啥???
      • Usoop:有种“不明觉厉”的感觉,懂技术的大神创造了另一个世界
      • 7a9e3d01fe6c:框架很强大啊~想问一下这个框架都是作者一个人完成的吗?
        hirainchen:@伊忆 是的
      • 094dcc99bf45:您好,您的这篇文章对我帮助很大,我的毕业论文就涉及到用户画像,我想请教您一下,您文中最终生成的群体用户画像的图是用的哪个工具啊?还有您说的wordart官网只支持英文吖,中文要怎么生成那种云图呢?非常感谢!!
        hirainchen:@W2andye 文中所有画像是由自编写的程序生成的。在wordart中要选择中文字体或自己上传中文字体。
      • 岛浔:深受启发!!!
        hirainchen: @島熏 三个感叹号,看来深有触动,期望看到你的作品😀
      • 414697ada450:留下源码就更好了
      • 喵鸢:太牛逼了!!摩拜中,我这种小白真的是折服了!!
      • daf9fd9e567c:求代码学习啊大神
      • 哴亾ss洎伝:用的什么需要
      • d24b1c56c209:啥也不说了,厉害了我的哥
      • 执直之智:如有侵犯隐私
        哈要小心我告你发
        别误会
        我只要红心来赔偿一下
        讲真
        这样不太好
        执直之智: @hirainchen
        厉害了我的哥
        就算是公开的信息
        有些情形
        没有授权许可
        亦可涉及侵犯隐私
        隐私权不仅仅包括隐私信息
        也包含公开但未授权的

        我胡诌的
        别信
        hirainchen:@执直之智 都是基于用户自己公开的信息,不涉及隐私信息
      • 165a77681767:好烧脑。
      • ab409:您好,请问有没有可能将用户兴趣,爱好分析 还有 推荐部分的代码开源,让我妈小白可以学习一下
      • 60f6bb9e5ebd:学了这个是不是就有口饭吃了哈哈哈,这篇文章看到我眼瞎了,666
      • 玺叶柏:这个云图是怎么做的呢?好多技术求细解😍😍
        hirainchen:题图那张是用wordart.com,其他的都是代码生成
      • wnight:非常厉害,想问一下作者,那个书籍喜爱程度的规则 是基于 提到的次数来说的么,还是分析语句中表达喜好的关键词?
        hirainchen:@白夜丶wnight 好主意,等我做完简书的分析先
        wnight:@hirainchen 不知道大大有没有兴趣去做知乎的分析,估计更火。
        hirainchen: @白夜丶wnight 是次数,文中有解释的。下一篇我会分析电影数据,用到的就是情绪关键词了
      • b8055e147607:厉害了
      • AlicFeng:有源码吗
      • 张照博:厉害厉害!!
      • 903d18a7bd21:好强,楼主是搞什么的
      • Airtripp知旅友:太强了!这篇超级有趣的!自己被分析的感觉有点害羞:relaxed:
      • bf3be4e33bcc:写的太好了,最近正在研究画像,您的文章给了我很大的帮助,十分期待您下一期的文章!!
      • ab6cf50b35ca:爬虫?
      • 圣杰:技术过硬,思维够深,文笔过人。
        圣杰: @hirainchen 谢谢,让我认识现在的自己。一年后,再帮我画一幅可否?😀
        hirainchen:@圣杰 这么有内涵的评论,唯有送你一张你的简书画像留个纪念 http://upload-images.jianshu.io/upload_images/3161015-9f425f2f15756d9e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
      • 我是一个Marketing:有点长了,不过很好
      • 园烟向晚:膜拜大神,求分析一下专题的用户以及交叉
      • 841ec318851e:太棒了! 感觉能写成一个小的开源项目学习下!
      • 爱喝水的鱼宝宝:哈哈哈哈,百万SEO站长需要你啊。搞个蜘蛛池,再加上你的这个爬虫抓取啧啧啧妥妥的流量啊。
      • 8138e7f82487:拉风。。。
      • 流浪之羽:技术世界里的简书素描!:+1:
      • 包小qian:大神可以出师了
      • 闻勤行:厉害!
      • mikewang315:感觉简书要招聘你做数据分析了
      • 一叶苦艾:来了,表示看不懂的飘过。
      • 1fbdb258b8f5:希望在这里可以经常推荐我喜欢的东西来充实自己,也可以很容易的找到志同道合的人一起交流学习!
        1fbdb258b8f5: @hirainchen 那是我的荣幸!
        hirainchen: @x心平常自非凡 这正就是用户画像及个性化推荐的目的,我可以在文章里引用你这段回复吗
      • 清心澜意:大神!
      • QSamuel:切入点挺好的,但是文中的主题抽取方法还有些啊粗糙
        hirainchen: @QSamuel 你会怎么做?
      • 区影:极客应留github地址呀 这年头
        mikewang315:@区影 老兄说的对
      • roycol:分析得很全面~:+1:
      • 14bf7199f818:好文章,感谢作者的分享!
        ———————————————————————————————
        另外向大家推荐两个专题,不定期更新高质量文章,欢迎投稿关注!!!
        《个人发展》专题:http://www.jianshu.com/collection/5cd74480e113
        《时间管理》专题:http://www.jianshu.com/collection/b0898ef2c0c0
      • 吴钧泽:简书没有反爬机制吗?:smile:
        hirainchen:@WangerJ 之前没,本文发布后就有了 :),在这篇章里有提到一点 http://www.jianshu.com/p/a26b2454c322
        WangerJ:我也特别想知道,简书没有反扒么
      • 我是仔仔侠:做了这么长时间数据和营销,这个堪称full stack型的文章
      • lanzhiheng:果然是老司机
        hirainchen: @lanzhiheng 低调😏
      • 1dent1ty:厉害:+1:
      • 浅笑倚夕:哥,666啊😎
      • 罂粟姐姐:大赞,真棒
      • 9c859cae26c0:直接留在简述好了
      • b19707134332:不知道性别识别是使用什么算法做的。男女4:6这个结果其实蛮靠谱的。
        hirainchen:@TensorFlow教室 我有说的,还说明了算法的优劣,显然你没仔细看文章,罚你回去认真再看一遍
      • 2MuchT:实乃业界良心之作,赞
      • leo_ready:默默占个坑,多看几遍,认真学习
      • 彭小六:怒赞
        hirainchen:@彭小六 小六老师 看看《哪有没时间这回事》这本书?我猜你会感兴趣 :)
      • Jane婷:大神,收下我的膝盖
      • 81484e232c02:这才是从数据收集,挖掘,分析(包括机器学习)到可视化展示全过程的技术好贴啊
      • 课橙:6到爆
      • layjoy:想问下爬数据Ruby和Python各有哪些优缺点?:worried:
        hirainchen: @layjoy 差不多,哪个熟手用哪个
      • classybaby:好神奇
      • 惊醒的龙:大神,请问画像是有什么做出来的?
        hirainchen: @xbin0303 canvas
      • 雪夜闻笛:好文,只是样本质量存疑:很多作者已经不再简书更文了。个人理解,典型的大V和更新频率高的用户是简书的核心用户。一点浅见,供参考
        hirainchen: @雪夜闻笛 有道理,可以再切一刀,只考虑最近一个月内有更新的
      • 颖子Zoey:内容丰富。很丰富!先收藏慢慢看:+1: :+1:
      • a468654097f6:有点意思,太不容易了,赞一个!
      • bb796c22e3ee:很厉害,讲的都是我正在与需要学习的,写的很好!
      • 阿群1986:简书词云右上角有一个字不显示,“X师”可能是老师
      • dfe147f4a102: 这就是所谓的数据分析吧!?
      • 大盘站:用心了,都是干货!
      • 1a9f9c5137db:写的太长了,精短写就好了,先收藏
        1a9f9c5137db:@hirainchen 您要做专题页?
        hirainchen: @亨享营营销 好,我建个专题
      • 微光隐隐:看不懂啊,所以才觉得高深,膜拜~
      • 韩老白:跪了。那个雷达图怎么做的
        韩老白:这个评论有什么好赞啊 我每天打开简书就是被赞评论:sweat::sweat:
        韩老白:@hirainchen 你在考验我的智商
        hirainchen:我只告诉你不要告诉别人哈,有个chartjs
      • 醉酒肆之:数据说话,图文并茂,完美!
        hirainchen: @醉酒肆之 😬
      • 南山脚下一棵树:爱好:做爱
        hirainchen: @小猪飞走了 找到亮点
      • Jitter:难道这就是传说中的大数据和数据挖掘么?
      • Jitter:啥也不说了,明天来简书上班!!!
        hirainchen: @Jitter 好的老板😊
      • 潇筠:哇塞,原来我们都是这里面的数据啊
      • 田宝谈写作:好厉害啊
      • 我是思聪:感觉可以把这篇文章分成好几个,一个读起来太长了
        水电梁师傅:很有意思的文章,能分段就好了
        hirainchen: @博诚数据 好
      • 真依然很拉风:很综合全面!:+1:
      • 我是思聪:这玩意儿写的不错!
      • Snow__:先收藏了!

      本文标题:爬取简书百万页面 分析简书用户画像

      本文链接:https://www.haomeiwen.com/subject/eoktfxtx.html