更多项目请查看我的 github:https://github.com/bmor2552

由于现在空气中的所有不确定性,拿起一个新项目是一个人可以做的最好的事情之一,以消磨在家的空闲时间。那么,为什么不学习如何解决二进制分类问题呢?

一个女人耸了耸肩说为什么不

本周我们在 Flatiron 学校的模块 3 项目中,我能够与我的 02-17-2020 数据科学队列成员 Taki Yasuoka(github 链接:https://github.com/Tyasuoka)合作弄清楚如何预测客户是否会停止与电信公司的服务。您将在下面找到该项目的 github 链接。

https://github.com/Tyasuoka/Module_3_Project/tree/master

数据

数据由 Kaggle 成员 david_becks 提供,包括电信公司的流失和非流失。这些列包含有关客户使用的功能的信息,从区号到晚间分钟。下面的链接将引导您访问它。

https://www.kaggle.com/becksddf/churn-in-telecoms-dataset

过程

首先要做的事情是清理、探索和转换数据!!有了这个数据集,没有缺失值。我们确实发现了一些会干扰我们选择的模型的对象列。所以我们放弃了我们不需要的,并改造了我们确实需要的。

我们注意到数据的另一件事是,列名似乎会相互影响,即晚间分钟数和晚间费用。流失列也不平衡;流失比非流失少!

这后来成为一个问题,所以我们决定使用随机森林模型来解决它。为了衡量模型的执行情况,我们使用了 ROC_AUC(我们的模型在进行预测时的自信程度)和准确度得分(这些预测的正确程度)。

该模型

随机森林模型是一组决策树,即 THE END。

开个玩笑,让我们以我们的数据为例,从什么是决策树开始。

在我们的案例中,决策树模型会将其预测分为流失和非流失。可以把它想象成对苹果和橙子进行分类,或者对变化进行分类。决策树正在对其预测进行分类/排序!使用此模型的唯一问题是我们的非流失量超过了我们的流失量,因此我们的预测排序将在非流失方面受到很大影响。

不平衡秤正在平衡

我们不希望一个模型告诉使用每个人都会保留他们的服务,而不是告诉我们谁会断开他们的服务!我们想要一个模型,既可以预测谁是忠实客户,又可以预测谁需要额外关注,以免为时已晚!!

为了解决我们可以使用的数据的不平衡,您猜对了,更多的树!这就是随机森林出现的地方!随机森林使用套袋方法和随机选择来制作决策树的集合。这样做是为了消除多重共线性(也就是列相互交互)并平衡数据。

**旁注:由于随机森林使用随机抽样,这有助于平衡我们数据中的非流失和流失,您从给定数据中提取的样本越多,预测数据中流失和非流失的分布就越好。 **

结果:

这是该项目的github链接;这些笔记本包括有关调查结果的详细信息以及获得这些调查结果的代码。

https://github.com/Tyasuoka/Module_3_Project/tree/master

没有一个热编码器的随机森林

  • 准确度分数:0.936 aka 约 94%

  • ROC_AUC 分数 0.909 又名大约 91%

带有一个热编码器的随机森林

  • 准确度分数:0.942 又名大约 94%(但更高的 94%)

  • ROC_AUC 分数:0.934 aka 约 93%

旁注:在比您的目标分布更好的列上使用 OneHot 编码器。在我们的案例中,区号很好地分布在 3 个数字之间,因此为了帮助模型学习,我们将 OneHot 编码器应用于区号列,因此上述分数有所增加。

结论

当您处理现实世界中的二元分类问题时,请记住,如果存在多重共线性并且您的数据不平衡,那么要考虑的一个很好的模型是随机森林。为了帮助平衡模型的数据和性能,请尝试使用集成方法,例如编码。

未来建议

如果我要在没有时间框架的情况下重新做这个项目,我会从一个不太复杂的模型开始,比如逻辑回归。为了看看我是否可以提高该模型的性能,我会使用特征工程和集成方法。然后我会移动一个到决策树,最后是随机森林。从那里我将比较模型并选择最适合我要解决的业务问题的模型。

参考:以下是帮助分解我在此博客中讨论的所有内容的好网站。

随机森林和决策树

https://victorzhou.com/blog/intro-to-random-forests/

准确度得分

https://blog.floydhub.com/a-pirates-guide-to-accuracy-precision-recall-and-other-scores/

ROC_AUC 分数

https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5

一次热编码

https://www.analyticsvidhya.com/blog/2020/03/one-hot-encoding-vs-label-encoding-using-scikit-learn/

希望这会激励你学习新东西,甚至帮助你解决不同的二元分类问题。编码快乐!!!

一个女孩在打字时微笑

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐