◆ ◆ ◆

摘要

各位美食爱好者对于Yelp应该比“大众点评”更加熟悉。这家美食评论起家的网站是被全球公认的“美食攻略提供者”,它是利用大众经验和点评的最好例子之一,而其中的大量评价数据和排名机制也因此“操控”了很多家大小餐厅的生死。

开一家自己的餐厅,对小企业主们而言是一件很令人胆怯的活——开始经营的前三年中,60%的餐厅会经营失败。对于很多业主,Yelp曝光率是决定他们能否挺过前三年经营的关键因素。

本文来自NYC数据科学学院举办的为期12周全日制的数据科学训练营,该文章基于他们最后的毕业设计。

该毕业设计的目的是:确定出能在Yelp中取得高评分的关键属性和特征。结合数据可视化和机器学习算法,我们识别出高商业评分的影响属性和特征。我们也利用自然语言处理从用户评价中提炼出有价值的信息。喜欢奇思妙想的我们五个人,利用R Shiny 构建应用程序来帮助业主们通过以下三种方式进入该市场:

  1. 地图:针对经营成功的餐厅进行地理位置分析

  2. 主题模型:针对不同类别的餐厅进行差评分析

  3. 美食廊:对好评如潮的菜系种类进行分析

◆ ◆ ◆

简介

康奈尔大学的研究表明,27%新餐厅会在第一年倒闭,而将近有60%的餐厅会在三年内倒闭。无法经营成功的一个关键性阻碍是Yelp曝光率不足。经营良好的餐厅,顾客会定期光临,会有较高评分和点评数量,这样会提高餐厅在搜索排名中的位置,为任何倒霉事保留缓冲空间。

Yelp中的餐厅排名是被全球公认的,它是利用大众经验和点评的最好例子之一。我们想要寻求的答案是——影响餐厅经营成功的关键特征是什么?我们相信从Yelp提供的与评分相关的官方数据中,一定能找出可识别的重要特征。

这些关键特征可以是商家经营的固有属性,例如开业时间,环境吵闹程度,也可以是客户的主观因素。通过数据可视化和预测模型,我们探索出在Yelp中取得高分的关键特征。我们通过基于隐狄利克雷分布(Latent Dirichlet Allocation)的主题模型算法处理客户评价内容。我们的最终作品,汇总了我们的各种发现,以R Shiny应用——YelpQuest的形式进行呈现。

◆ ◆ ◆

数据处理

我们应用的数据源来自于Yelp 2016 Dataset Challenge,它提供的数据表有:业务表(businesss),评价表(reviews),小贴士表(tips,更简短的评价),用户信息表(user information)和签到表(check-ins)。其中业务表(business table)中列出了餐厅的名称,地理位置,营业时间,菜系类别,平均星级评分,评价数量和其他与经营相关的一系列因素,如:吵闹程度,预订政策。评价表(review table)中列出餐厅星级评分,评价内容,评价时间,和该评价获得的支持率。我们限制采样数据集的范围在美国凤凰城(Phoenix)的大都市区域,然后通过类别过滤业务表(business)数据,仅保留餐厅和评价数据。从餐厅中获取到的评价文本会构成该项目的语料库。

挑战

  1. 关于预测,虽然只有9427家餐厅为样本,但特征的数量是十分庞大的。我们拥有的数据不足以充分支持结论。特征简化或者选择一个相对复杂的模型是有必要的。

  2. 对于不同菜系的餐厅,好评/差评 的标准是不同的。仅通过评价星级无法完全捕捉客户的观点。例如,快餐店的评分一般都很低;因此,4星评分的快餐店比4星评分的意大利餐厅更出色。

业务表(Business Table)

  1. 从业务表文件中查找出餐厅

  2. 创建只包括餐厅(restaurants)的业务子表文件

  3. 创建包括评价,签到、小贴士的子表文件

  4. 从评价,签到和小贴士子文件中进行数据总结(例如:每个餐厅的签到/小贴士/评价总数量),并创建包括业务ID和求和字段的概况数据文件,该文件可以追加到餐厅(restaurants)文件中

  5. 合并概况数据到业务餐厅(restaurants)数据中,并形成最终的模型数据集

评价表(Reviews Table)

  1. 根据餐厅分类得到平均分,判断各餐厅是高于还是低于平均分(例如,在分类平均值中,泰式:4.5星,快餐店:3.5星)

  2. 基于餐厅类别平均分,创建好评的数据子集

  3. 基于餐厅类别平均分,创建差评的数据子集

  4. 连接从步骤2到步骤3得到的两个子集

  5. 从步骤4创建顶级菜肴的评价子集,对好评和差评的数据集根据评价进行主题建模。

◆ ◆ ◆

探索性数据分析

通过探索性分析,我们首先想要检测自己那些先入为主的观点。当我们想到5星餐厅时,我们不会想到是快餐店或者披萨店。我们想到的是富丽堂皇的欧洲菜,如意大利菜或法国菜。通过菜系进行分类计算评分平均值,我们得到了以下的信息图表,例如:泰式或希腊菜系会有很高的评分,而自助餐,快餐和鸡翅店会有较低的评分。这些数据似乎能支持我们的假设:餐厅的评分跟特定的菜系类别有关。

与此同时,当我们想象5星评分的餐厅时,一般不会想到路边的便宜小餐厅。为检测人均消费对餐厅评分的影响,我们绘制了以下Mosaic图。你看到的是关于价格范围和评分水平的卡方检验(它给出了一个很显著的P值 2.2e-16)。

Mosaic图使用颜色作为比较各价格范围和星级评分组合下,观测值与期待值的差别(译注:如图所示,横向为星级评分,分为9组,纵向为价格范围,分为4组。如果价格范围对星级评分没有影响,则各价格段的星级评分频率分布是均一的(即期待值),应显示为白色,而本例中多处显示为红色或蓝色,表示价格范围对星级评分有影响)。蓝颜色表示,相对于预期结果,实际上有更多的观测值,而红色却有更少的观测值。在本案例中,我们可以观察到,价格和星级评分不是完全独立的,该结果可通过χ2检测得到证实。

◆ ◆ ◆

预测模型

为从数据中确定出关键的影响特征,我们决定使用基于树的模型。相对于观察到的大量属性和特征,我们的数据表显得很稀疏。基于树的模型可以解决稀疏性问题,特别是XGBoost更为出色。我们选择了三种不同的模型:随机森林,XgBoost和梯度增强树。下图展示了基于XGBoost的结果,因为它具有更高的稳定性。

首先我们将所有的有效属性作为预测因子进行建模,拟合到了一个R square =0.936的模型。根据特征重要性的图示我们可以得出一个很强的影响因子——用户平均评价星级。然而,该信息并不是什么远见卓识;总体的商业评分是所有用户评分的平均值,因此显而易见该因素在图表中会很显著。我们决定移除所有跟评价相关的因素后,再重新运行XGBoost:

第二次运行时,R square 明显地下降到0.318,去除评价相关的因素后,我们无法很好的进行评分预测。这次试验中,地理位置,用餐人数,人均消费是重要的预测因子。

◆ ◆ ◆

主题建模

预处理

建立任何模型之前,我们都需要预处理点评文本:

  1. 删除常用的停用词,例如“在”,“和”,“但是”等等。。。

  2. 删除标点,规避非字符号

  3. 删除数字

  4. 删除无法写出的符号

  5. 去除空白符号

  6. 将文本转换为小写字母

  7. 把文本分词为二元词和三元词(n-gram语言模型中的bigrams和trigrams)

由于一些词汇与其他词汇连用时会改变其原有的意思,我们决定将点评文本分词为二元词组和三元词组(2或3字的组合) 。例如,如果将 “不好” 分成 “不” 和 “好” 两个单词,那么分析过程就会出错。

◆ ◆ ◆

LDA(主题模型)和数据可视化

为了理解点评数据中的关键主题,我们使用LDA主题建模算法来提取每个类别和每个评级中的20项关键主题。我们使用R语言扩展包 “LDAvis” 来进行交互式主题模型的可视化, 并且回答了这些问题:

  1. 每项关键主题都是什么意思?

  2. 这些关键主题普遍性怎么样?

  3. 这些关键主题是如何相互关联?

上图右侧结果是LDAvis对第一个问题的回答。在这张条形图中,y轴是词条,x轴是出现次数,你可以看出点评内容中特定词条在各主题内的出现次数。我们采用一种特殊的度量标准 -- 显著性(saliency) -- 来确定一项主题中最重要的词条。显著性就是词条在单个主题中出现频率相对其在整个点评文本中出现频率的比例。排列越靠前的词条也就越独特,相对于这项主题也就更重要。

上图左侧LDAvis的结果图叫做主题间距模型。它为主题模型提供全局视图,并且回答了后两个问题 -- 每个主题圆的直径代表每项主题的普遍性;詹森 - 香农离散度计算出主题间的相互距离,(詹森 - 香农离散度是测算两个概率分布间相似性的流行方法),然后再按比例调整每两个主题的间距。要点在于,两个气泡越是靠近彼此,它们就越相似。一图胜千言,因此我们将它纳入了我们的应用程序。

◆ ◆ ◆

应用程序

我们的最终产品为R Shiny应用程序,包含以下几项功能:

  1. 地图:餐厅成功的地理位置分析

  2. 主题建模:理解指定类别市场中的差评

  3. 料理画廊:理解好评中频繁出现的料理主题

我们的主要用户将是想要开餐厅或扩展餐厅的小企业主。

通过地图,用户可以找出开餐厅最好的地方,或是鸟瞰餐厅间的竞争状况。亚利桑那州的一张互动地图显示出了这些餐厅,它们被分为某类餐厅中 “高于同类平均水平” 和 “低于同类平均水平” 两组。用户通过点击地图上的标记就能获得有关餐馆的具体信息。现在假设用户希望开一家意大利餐厅:

◆ ◆ ◆

标识出地图上的大型片区 

在地图上,人们普遍喜欢意大利食品的最大片区就很可能是开餐厅的好地点。

◆ ◆ ◆

还有就是主题模型功能。

以前如果想要了解其他餐馆的负面点评,唯一方法就是阅读每一页点评。而主题模型是迅速汇总信息的最快方式。用户可以快速探索不同的主题气泡,并基于点评中词条的出现频率找出问题。例如,如果时间是一个很重要的问题,那么用户在开餐厅时就可以利用这一点。

◆ ◆ ◆

最后是菜单画廊功能。 

画廊可以显示出最受好评的食物。用户可以通过了解最流行的词条来建立自己餐厅的菜单。

通过使用预测模型和探索式数据分析(EDA),我们确定了要纳入应用程序YelpQuest中作为预测因子和过滤器的关键特征。而基于差评和好评的主题模型使我们的产品有望帮助未来小企业主们的成长和成功。

原文发布时间为:2016-11-22

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

分析全球最大美食点评网站万家餐厅数据 寻找餐厅经营成功的秘密相关推荐

  1. Python爬取、分析全球最美Top100女神榜单的数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 作者:菜鸟大叔 来源:程序员GitHub Python爬虫.数据分析.网站开发等案例教程视频免费在 ...

  2. 【爬虫与分析】--针对网易云课堂万部视频数据的实战

    本文主要内容为对网易云课堂抓取的数据进行分析,总抓取课程数据11253条,剔除价格异常(>2W)和课时数异常(>300节)的数据,剩余11184条数据(腾讯课堂的课程数也差不多也是这个量级 ...

  3. 为什么这么火?用 Python 爬取并分析了《雪中悍刀行》数据,发现了其中的秘密

    大家好,今天本文我们对腾讯热播剧<雪中悍刀行>的一次爬虫与数据分析,总爬取条数1W条评论并对数据进行可视化分析,喜欢本文记得收藏,点赞.关注.需要进交流群可以文末进来. 干货推荐 Pyth ...

  4. 全球及中国云厨房(仅限外卖的餐厅)行业前景态势与投资决策建议报告2022版

    全球及中国云厨房(仅限外卖的餐厅)行业前景态势与投资决策建议报告2022版 --------------------------------------- [修订日期]:2021年12月 [搜索鸿晟信 ...

  5. 全球及中国虚拟厨房(仅限外卖的餐厅)行业运营模式分析及发展规划建议研究报告2021-2027年版

    2020年,全球虚拟厨房(仅限外卖的餐厅)市场规模达到了 百万美元,预计2027年将达到 百万美元,年复合增长率(CAGR)为 % (2021-2027).中国市场规模增长快速,预计将由2020年的 ...

  6. 全球与中国的前50家最佳网站

    距新浪科技报道,美国<时代>周刊评出了2009年"50个最佳网站",图片分享网站Flickr.社会化书签网站Delicious.微博客网站Twitter.谷歌和视频网站 ...

  7. Python实现快速下载全球最大的旅游网站——Tripadvisor美食数据

    小知识: 1. Tripadvisor是全球领先的旅游网站,主要提供来自全球旅行者的点评和建议,全面覆盖全球的酒店.景点.餐厅.航空公司,以及旅行规划和酒店.景点.餐厅预订功能. 2. Tripadv ...

  8. 万豪国际预计于2022年将在全球范围内开设超过30家奢华酒店;四季酒店集团2023年全新私人飞机行程发布 | 全球旅报...

    四季酒店集团2023年全新私人飞机行程发布.国际奢华酒店管理公司--四季酒店集团宣布,基于宾客对四季私人飞机2022年行程的高度兴趣,2023年将继续推出适合家庭出行的"非洲奇迹之旅&quo ...

  9. 龙芯新款处理器发布;Citrix 产品曝“惊天漏洞”,影响全球 8 万家公司; AMD发布年度5大里程碑 ……...

    关注并标星星CSDN云计算 速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read   更快.更全了解泛云圈精彩news   go ...

最新文章

  1. ubuntu workerman kaer
  2. 02—C语言基本语句(上)
  3. Uncaught TypeError: Cannot read property 'style' of null
  4. FastTunnel - 打造人人都能搭建的内网穿透工具
  5. “约见”面试官系列之常见面试题之第一百零二篇之vue-router的两种模式(建议收藏)
  6. net core 3.1 swagger文档添加 不用xml配置
  7. IOS中扩展机制Category和associative
  8. 微信公众号(静默授权和分享)
  9. 谷粒学院-第二天笔记
  10. html雪花特效卡盟,吃鸡卡盟忍者必需死3 12月忍界试卷谜底一览
  11. 汇编原理6:opcode
  12. MIPS处理器 CPU控制信号
  13. lq到底是什么意思_lq是什么意思
  14. 信号处理中使用IPP库函数的基本设置
  15. 怎么把链接生成二维码?怎样制作一个链接二维码?
  16. 怎么把分钟转化成秒_一分钟短视频文案范文怎么写?短视频文案必爆公式分享(附文案范文模板)...
  17. Bentley 软件公司发起 2021 基础设施数字化光辉大奖赛项目征集活动
  18. java happen-before_java 内存模型中的happen-before 是什么?
  19. docker系统中/var/lib/docker/overlay2
  20. 计算机打印预览在哪,excel打印在哪里,EXCEL怎么退出成打印预览的画面

热门文章

  1. 2021/5/20爬虫第十四次课(selenium页面等待,打开多窗口)
  2. 使用Fluxion实现WiFi钓鱼
  3. 微信公众号如何设置弹幕效果
  4. 推流摄像头推RTMP视频流至EasyDSS视频直播点播平台Chrome浏览器无法播放如何解决?
  5. java setvisible怎么用_java – 在已经可见的帧上调用setVisible(true)
  6. 航空发动机强度与振动习题汇总
  7. 硬件知识——液晶显示器
  8. Android自动弹出软键盘(输入键盘)
  9. vim配置vimrc
  10. Hadoop 连接报错 Permission denied