想从事数据科学,你需要掌握这个关键技能!
知道如何应用不同的Python或R算法非常简单:我们所有人都知道只需修改一行或两行代码,就可以从线性回归变为神经网络。或者是SVM,或者您喜欢的任何其他花式模型。
定义超参数也不是那么困难:只需创建一个交叉验证和网格搜索值,这将提升您的模型指标。部署模型可能比较棘手,但是,通过一些持久性、大量的教程和无限的试错,您将能够上传一个可以每分钟处理数百万个请求的体面模型(或者您可以使用Marvin等工具,这将为你做很多工作)。但是这能够让你把人群区分开么?最佳数据科学家的关键技能是什么?
简短明了:它知道如何从数据中创建分析视图。
事务型数据库 - 存储来自交易的数据的数据库,例如订单、支付、访问日志等 - 被定制用于存储来自应用交易的数据,并且不直接用于数据科学。构建这些数据库的开发人员并没有想到,也不应该考虑如何将它们用于分析。他们只是创建了数据模型,可以提高当时编写的应用程序的性能。
尝试使用事务基础创建机器学习模型根本不起作用,除非您想要预测事务。数据科学家通常需要分析基础才能使用。那么,分析基础究竟是什么?它与事务型基础有什么区别?
分析数据库究竟是什么?
为研究构建和组织分析数据库,我们来看下,创建用于预测客户流失与购物车产品推荐的数据库是不同的,但是,两者的来源可能相同:事务型数据库。客户流失预测必须对每个客户的行为数据进行分组,这样就可以在一段时间内观察客户行为。至于产品推荐,必须按会话对数据进行分组,以预测哪些商品与购物车相关联。
能够创建分析数据库比精通多种算法更重要
了解如何创建分析基础是数据科学家可以开发的最重要的技能之一。同时,它也是在网络公开课、辅导课中较少教授的课程之一。为了将事务数据库转换为分析数据库,您有必要真正了解您正在使用的业务。这与批判性思维一起,是正确解决问题的基础。
数据科学家通常需要目标来训练他/她的模型。如果你看看Kaggle,你就会发现无数的竞赛和数据集,其中目标已经定义并且在训练和评估基础中可用。但是,事务数据库通常不会有可供使用的目标。数据科学家必须定义客户何时放弃服务,以便他/她可以创建流失模型。只是需要定义什么是不良付款行为,才可以预测默认值。创建目标和分析数据一致性并不是那么明显:它需要一个漫长的调查过程,这通常会使您的经理感到失望(直到现在,他们仍相信他们已经拥有了所有的数据,差的只是一个数据科学家罢了。)
然而,现实情况是,数据科学比将数据提供给模型和评估性能指标的即插即用过程要大得多。
试想一下,在这种情况下,您拥有一个数据库,其中有几位销售分析师根据行为特征对潜在客户进行了分类。为了对客户进行分类,分析师必须在谈判期间判断潜在客户的行为,然后为客户选择适当的资料并填写表格。我们这里有一些潜在的问题:
- 在同一次谈判期间,分析师对潜在客户的判断不一定与另一位分析师的判断相同。不同的分析师可以在不同的配置文件中对相同的线索进行分类。
- 分析师真的了解每种行为特征代表什么吗?是否有明确的标准来分类“配置文件X”而不是“配置文件Y”中的潜在客户?
- 在收集期间,流程是否有变化,例如插入新的行为类/配置文件?如果是这种情况,您将必须考虑到这种情况。
- 如何收集数据?每次与潜在客户的新联系都会改变行为特征,以便分析师真正挑选出最佳人选吗?
- 管理者是否要求准确地执行此分类?如果分析师需要回答的只是一个“无聊”的过程,那么很有可能某些分类只是“因为这项工作必须”。当行为特征总是以相同的顺序呈现给分析师时,这个问题变得更加明显:目标可能偏向第一个选项。
在此过程之后,您可能会得出结论,到目前为止收集的数据完全没用,因为没有标准和流程。这肯定会令很多人失望(甚至可能会让你感到失望)。
创建信用违约预测的分析数据库(行为分数)
为了使创建分析数据库的过程更加清晰,让我们看一下正确定义问题所需的一组程序示例,并创建一个分析数据库来执行预测。
创建模型来预测客户信用违约涉及一系列必须由数据科学家做出的业务和技术决策
想象一下,假设您从事的是金融服务行业,您将面临以下问题:
我们需要创建一个模型,确定哪些客户在未来不会支付发票。
为此,您需要创建描述客户付款的变量。然后有必要创建一个回归模型,能够整理好的和坏的付款人。最后,您需要计算客户好坏的概率。
1.定义什么是目标
您不会在数据库中的任何位置找到分类变量,该变量指示某个客户是好还是坏付款人。首先,有必要定义好客户或坏客户。为此,我们可以研究逾期付款。例如,您可能会发现平均延迟为20天,但75%的发票是在到期日之后的17天内支付的。
然后,您可以通过逾期天数的付款来设计累积分配。因此,您将能够验证在30天后,87%的发票已经支付。但是,在6个月后,这个百分比将增加到只有90%。然后,我们可以使用贝叶斯推理来预测客户在逾期30天后支付发票的概率。
我们可以得出的结论是,如果客户的付款已经延迟了30天,他/她将来偿还债务的可能性非常低(仅为23%)。要做出好的或坏的支付行为的判断,判定为不太好的付款人。
2.创建观察和表现框架
我们有兴趣使用过去时间范围内的行为数据来预测客户未来某个时间段的违约概率。选择这些框架的大小是一个比统计更多的商业/谈判决策,记住它们必须足够大以包含几个客户的行为观察。太短的窗口会增加观测的方差,从而使模型会失去精确度。
定义:
根据客户过去12个月的行为,我想预测他/她在未来6个月内成为优秀付款人的可能性。
为了实现此定义,您需要:
- 定义一个距离当前日期至少6个月的观察点。
- 定义一个观察框架,该框架在观察点之前12个月开始并以其结束。
- 定义在观察点后6个月延伸的性能框架。
- 定义一个好的付款人是什么。我们之前做过的事!
构建问题的时间是创建分析数据库过程中非常重要的一步
请注意,此定义带来了一些含义:
- 您需要至少有18个月的数据
- 您的预测必然会受到时间限制。每次运行模型时,它都会计算未来6个月内的默认概率。
- 在为分析数据库创建功能时,观察点和时间范围的大小始终是您的参考
3.创建目标功能
现在我们已经定义了什么是我们的目标以及什么是观察和性能框架,最终可以在数据库上创建目标。为此,您将在性能时间范围内计算每个客户的最大到期天数,并根据以下规则创建GOOD_PAYER变量:
因此,如果在执行时间范围内,客户的付款延迟了30天以上,即使发票稍后付款,他/她也会被归类为不良。
我们输入0为坏,1为好,因为我们要定义得分越高,默认概率越低。
4.其他
现在我们需要广泛的业务结构知识,因此我们可以从我们的基础中执行一些排除。例子:
- 排除在观察点没有信用额度的每个客户
- 排除在观察点发生超过30天的发票的每位客户,因为我们已经知道他们是不好的付款人
- 排除从未进行过交易的每个客户
5.特征构建
在本研究中,基数必须按客户分组。每个变量必须在观察时间范围内描绘客户的某种行为。以下是一些可以设计的变量示例:
创建用于提供预测客户默认值的行为评分模型的分析数据库示例
状态:个人信息功能 - 表示客户所在的省/州
年龄:个人信息功能 - 表示在观察点计算的客户年龄
性别:个人信息功能 - 表示客户的性别
MOB:预定月 - 自客户登录到观察点以来的几个月
AVG_LIMIT:观察12个月内限制使用的平均百分比
MAX_LIMIT:观察12个月内限制使用的最大百分比
PURCHASE_TOTAL:观察12个月内的总购买金额
DPD_OP:观察点过去的天数
MAX_DPD:观察12个月内的最长天数。如果所有发票都提前支付,可能会是负面的。
AVG_DPD:观察12个月内的平均天数。如果所有发票都提前支付,可能会是负面的。
BEFORE_DUE_QTY:在观察的12个月内到期之前支付的发票数量。
GOOD_PAYER:目标 - 指示客户在性能窗口的6个月内发票是否逾期30天以上。
6.表演时间!
现在我们终于要谈论建立一个模型了!您现在可以应用您在数据科学课程中学到的所有知识。您的分析基础已经设计好,可以采取行动了,在本例中是数据处理和应用模型。
最简单的解决方案是使用上面创建的变量应用逻辑回归,以便预测GOOD_PAYER目标。模型将为每个客户返回0和1之间的值,表明他/她成为一个好付款人的概率。
请记住始终正确解释结果:
该分数将表明某个客户在未来6个月内拖欠付款不超过30天的可能性。