笔者邀请您,先思考:
1 如何做好数据科学项目?有哪些注意点?
使用柏林租赁价格分析的实例,包括如何从网络中抽取数据并进行清洗,获得更深入的见解,以及使用外部API设计特征等等。
有许多关于数据科学和机器学习的在线课程将指导您完成理论,并为您提供一些代码示例和对非常干净数据的分析。
然而,为了开始实践数据科学,最好是挑战现实生活中的问题。深入研究数据以便发现更深层次的见解。利用附加的数据源进行特征工程,构建独立的机器学习管道。
本文将指导您从头开始构建数据科学项目的主要步骤。 它基于现实生活中的问题 - 柏林租赁价格的主要驱动因素是什么? 它将提供对这种情况的分析。 它还将强调初学者在机器学习方面常犯的错误。
以下是将要详细讨论的步骤:
有很多问题可以通过分析数据来解决,但最好是找到一个你感兴趣的问题,这将激励你。在搜索主题时,你一定要专注于你的喜好和兴趣。
例如,如果您对医疗健康感兴趣,您可以从多个角度对该主题提供的数据提出质疑。“探索ChestXray14数据集:问题”是一个如何质疑医疗数据质量的例子。另一个例子-如果你对音乐感兴趣,你可以试着从它的音频预测歌曲的类型。
然而,我建议你不仅要专注于你的兴趣,还要倾听你周围的人在谈论什么。他们的困扰是什么?他们的抱怨是什么?他们在抱怨什么?这可能是数据科学项目的另一个好的想法来源。在那些人们仍在抱怨的情况下,这可能意味着问题在第一时间没有得到妥善解决。因此,如果您用数据挑战它,您可以提供更好的解决方案,并对如何理解这个主题产生影响。
这听起来可能有点太抽象了,所以让我们来看看我是如何想出这个分析柏林房租价格的主意的。
“如果我早知道这里的租金这么高,我就会为更高的薪水而谈判了。”
这只是我从最近搬到柏林工作的人那里听到的事情之一。大多数新来的人都抱怨说,他们没想到柏林的房价会这么贵,也没有关于这套公寓可能价格区间的统计数据。如果他们事先知道这一点,他们就可以在求职过程中要求更高的薪水,或者可以考虑其他选择。
我在谷歌上搜索了几家出租公寓的网站,问了几个人,但找不到任何可信的统计数据或当前市场价格的数据可视化。这就是我提出这个分析的想法的原因。
我想收集数据,建立一个互动仪表盘,你可以选择不同的选项,比如在柏林Mitte的一套40平方米的公寓,有阳台和配备齐全的厨房,它会显示价格范围。仅此一点,就能帮助人们了解柏林的房价。另外,通过机器学习,我可以识别租金的驱动因素,并运用不同的机器学习算法进行训练。
现在您已经对您的数据科学项目有了一个想法,您可以开始寻找数据了。有大量令人惊叹的数据存储库,如Kaggle、UCI ML存储库或数据集搜索引擎,以及包含有数据集的学术论文的网站。或者,您可以使用web抓取。
但要小心——旧数据无处不在。当我在柏林搜索租房价格的信息时,我发现了很多可视化的东西,但是它们都是旧的,或者没有具体的年份。
对于一些统计数据,他们甚至有一条告示说,这个价格只适用于一套50平方米的两室公寓,没有家具。但如果我想找一间带家具的小公寓呢?
由于我只能找到旧数据,我决定在网上抓取提供出租公寓的网站。Web抓取是一种通过自动化过程从网站中提取数据的技术。
我的web抓取博客文章详细介绍了web抓取的陷阱和设计模式。
以下是主要发现:
一旦您开始获取数据,尽早查看它以发现任何可能的问题是非常重要的。
在web抓取租赁数据时,我包含了一些小检查,比如所有特征缺失值的数量。网站管理员可以改变网站的HTML,这将导致我的程序不再获得数据。
一旦我确保web抓取的所有技术方面都得到覆盖,我认为数据几乎是理想的。然而,我花了大约一周的时间来清洗数据。
一旦您开始获取数据,尽早查看它以发现任何可能的问题是非常重要的。例如,如果您web抓取,您可能会错过一些重要的字段。如果您在将数据保存到文件中时使用逗号分隔符,并且其中一个字段还包含逗号,那么您的文件可能无法很好地分隔。
有几个重复的来源:
虽然第一种情况下的重复很容易通过ID识别,但是第二种情况下的重复非常复杂。原因是中介可以稍微更改描述,修改错误的价格,并将其作为新广告发布,以便ID也是新的。
我必须提出许多基于逻辑的规则来过滤旧版本的广告。 一旦我能够确定这些公寓将是实际的重复,但稍微做了修改,我可以按提取日期对它们进行排序,将最近的公寓作为最新的。
此外,一些中介会在一个月后增加或减少同一套房的价格。 有人告诉我,如果没有人想要这套公寓,价格会下降。 相反,有人告诉我,如果有很多人想要这套公寓,那么中介就会提高价格。 这些听起来很好解释。
现在我们已经准备好了一切,可以开始分析数据了。我知道数据科学家喜欢seaborn和ggplot2,以及许多静态可视化,他们可以从中获得一些见解。
然而,交互式仪表板可以帮助您和其他受众找到有用的见解。有很多简单易用的工具,如Tableau和Microstrategy。
我花了不到30分钟的时间创建了一个交互式仪表板,在这里可以选择所有重要的组件,并查看价格将如何变化。
柏林出租价格交互仪表盘:可以选择所有可能的配置,查看相应的价格分布。(数据日期:Winder 2017/18)
一个相当简单的仪表盘已经可以为新来者提供柏林房价的洞察,也可以成为出租公寓网站的良好用户驱动程序。
从这个数据可视化中你可以看到2.5个房间的价格分布属于2个房间公寓的分布。 这样做的原因是2.5间客房的大部分公寓都不在市中心,这当然会降低价格。
柏林公寓的价格分布和数量。
这些数据是在2017/18年冬天收集的,也会过时。然而,我的观点是,出租网站可以经常更新他们的统计数据和可视化,以为这个问题提供更多的透明度。
可视化可帮助您识别这些机器学习算法可能使用的重要属性或“特征”。 如果您使用的特征非常缺乏信息,则任何算法都会产生错误的预测。 凭借非常强大的特征,即使是非常简单的算法也能产生相当不错的结果。
在租赁价格项目中,价格是一个连续变量,因此这是一个典型的回归问题。 获取所有提取的信息后,我收集了以下特征,以便能够预测租赁价格。
然而,有一个特征是有问题的,那就是地址。这里有6.6万套公寓和大约4.4万套不同粒度的独特地址。大约有200个独特的邮政编码可以被转换成虚拟变量,但是这样就会丢失某个特定位置的非常宝贵的信息。
地址的不同粒度:街道与门牌号码,街道与隐藏的门牌号码,只有一个邮政编码。
当您获得新地址时,您会怎么做? 你要么google它在哪里或如何到达那里。
通过使用外部API可以获得4个附加特征,公寓的地址可以计算:
这四项特征可以显著提升了性能。
作者: Jekaterina Kokatjuhha 原文链接: https://www.kdnuggets.com/2018/12/build-data-science-project-from-scratch.html