数据分享|Python爱彼迎Airbnb新用户体验数据XGBoost、随机森林预测

简介: 数据分享|Python爱彼迎Airbnb新用户体验数据XGBoost、随机森林预测

全文链接:http://tecdat.cn/?p=32380

分析师:Zhuhua Huang


在多项用户数中寻找与预测值相关的属性。查看各个特征的分布与特征之间的关联。分析用户数据,查看特定人群的使用习惯进行产品优化。最后选择合适的模型与参数来进行预测点击文末“阅读原文”获取完整数据


解决方案


任务/目标

根据爱彼迎的2009-2014年的用户数据查看文末了解数据免费获取方式,预测用户第一次预约的目的地城市。同时分析用户的行为习惯。

 

数据源准备


数据源包含训练集用户数据与测试集用户数据,用户数据包含id, 性别,年龄,创建账户时间,第一次预定时间,目的地城市(需预测值)等。

首先将训练集数据与测试集数据整合在一起。查看数据并清洗数据,处理脏值 将年龄中的离群值(<18 或 >100)删除。


特征转换


通过画图(柱状图,箱形图)直观展示每个特征的分布情况和该特征对于预测值的影响。

图表 1 性别分布

图表 2 性别与预测值的关系

图表3 App使用种类与目标城市的分布

 

通过分析,将无意义的特征值删除,如用户id,第一次激活时间等。

将分类数据(性别,语言,使用的设备类型)进行独热编码。

并将时间类型数据转化成年,月,日变量。寻找不同月份与账号创建的关联。

图表4 2013年每月账号创建统计

图表5 2013年每月目的地城市分析


点击标题查阅往期内容


PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化


01

02

03

04


构造


以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。


划分训练集和测试集

为了证实模型的准确性,将训练集中的数据再分为训练集和测试集。当账户创造时间为2014年以前时,数据为训练集,2014年为测试集。


建模


XGBoost:


高效地实现了GBDT算法并进行了算法和工程上的许多改进,其原理是不断地添加树,每次添加一个树会学习一个新函数f(x),并拟合上次预测的残差。

当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数

最后只需要将每棵树对应的分数加起来就是该样本的预测值。

最后选取概率最大的预测值作为预测结果。


随机森林:


随机森林是一种集成学习,通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。它依靠于决策树的投票选择来决定最后的分类结果。

模型优化

1.特征提取,样本抽样,参数调参。

通过图像可以看出,部分目标城市在某些月份观光量增多。

年纪较长(40+)的人群更倾向于去US。

未填写性别信息的人更倾向于不预定。

使用英语为母语的人群相较于其他人群更倾向于去US。

大多数用户更倾向于使用web进行操作,也有一部分使用ios系统操作。

可以向年长人群与母语为英语人群更多的推荐US的住宿信息,其他人群则多样化的推广。

优化ios,安卓等系统上的产品,以此获得更多用户。

通过使用XGBoost来进行预测,最终得到准确率为0.628

通过使用随机森林来进行预测,最终得到准确率为0.749

可以得出使用随即森林算法比XGBoost准确性更高。

输出/预测结果(部分):


关于作者

在此对Zhuhua Huang对本文所作的贡献表示诚挚感谢,她在西交利物浦大学完成了信息与计算科学学位。擅长数据采集与处理。

相关文章
|
2天前
|
存储 JSON 数据库
Python中列表数据的保存与读取:以txt文件为例
Python中列表数据的保存与读取:以txt文件为例
16 2
|
2天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
22 1
|
1天前
|
Web App开发 JSON JavaScript
利用 python 分析基金,合理分析数据让赚钱赢在起跑线!(1)
利用 python 分析基金,合理分析数据让赚钱赢在起跑线!(1)
|
2天前
|
存储 JSON 数据格式
Python知识点——高维数据的格式化
Python知识点——高维数据的格式化
5 0
|
2天前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
5 0
|
2天前
|
存储 机器学习/深度学习 数据可视化
基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表
基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表
8 1
|
2天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
14 0
|
机器学习/深度学习 数据可视化 测试技术
实战:用Python实现随机森林
随机森林如何实现?为什么要用随机森林?看这篇足够了!
4344 0
|
机器学习/深度学习 算法 Python
|
2天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1