您的生产数据库中没有标记为“目标变量”!
什么是目标变量?
目标变量是您试图用监督式机器学习模型预测的变量或指标。它通常被称为因变量、响应变量、’y’变量,甚至只是模型输出。
无论您更喜欢使用哪个术语(或者在统计课中使用哪个术语),这都是任何监督建模项目中最重要的变量。虽然对于那些有机器学习经验的人来说,这是显而易见的,但对于新手来说,它仍值得重申为什么如此重要。
从技术角度来看,您的目标变量的数据类型决定了您正在处理的建模项目类型。数字目标变量适用于回归模型,而分类变量意味着您正在处理分类模型。
但比模型类型更重要的是,您建模的整个原因在于目标变量。
为分类定义目标变量
表面上看,为分类定义目标变量可能看起来很容易。但如果您被要求构建一个尚未进行过模型化的数据模型,您的观点可能会改变。
当人们开始学习机器学习时,通常会得到相对干净的数据集,其中有明确定义的0和1可供用于分类建模。但根据我的经验,在关系数据库中找到与最终目标变量完全对齐的列是非常罕见的。
当然,在学习ML算法的背景下,这是完全有道理的,但当我看到生成了我在第一份数据科学家工作中有机会处理的“真实生活”建模数据集的SQL查询时,我确实起了反应。
让我们来看看在为订阅产品的客户流失定义目标变量时,我们需要对数据进行哪些类型的转换。这可能是一个保险单、Netflix订阅或其他任何产品。我创建了一些模仿我在生产中见过的数据的虚假数据,但如果与数据工程师如何构建这些表结构不符,还请您谅解。
示例1:取消日期
没有明确的1或0表示客户已流失(订阅到期),但在这个例子中,很容易进行相应的建模。如果subscription_end_date为null,则可以假设客户仍处于活跃状态。因此,我们可以应用一些基本逻辑,如果subscription end date不为空,则赋值为1;如果为空,则赋值为0,以便将目标变量的正类设定为流失客户。
足够简单。现在我们来看一个更复杂的例子。
例2:续约日期
现在想象一下,在我们的订阅表中又有一列。如果客户再次成为付费订阅者,我们有一列来记录何时发生的。
我们的第一个订阅结束的客户没有回来,所以我们可以安全地说他们离职了。
但是,关于第4位客户呢?他们在订阅结束后的第二天重新订阅。他们可能有月度订阅结束,或者信用卡过期,然后一旦意识到这一点,重新激活他们的订阅。一个会员资格暂停了一天足以说这个客户离职了吗?可能不是。但是如果是7天或30天的间隔呢?
第5位客户重新订阅了,但他们已经超过一年没有成为客户了。可以说他们已经离职了,但这就是与利益相关者和专业主题专家沟通的关键之处。我们可能会确定将一个中断超过30天的人定义为离职者,并得到以下结果:
这并不是一个简单的差异。您对目标定义可能会对成功预测目标的特征、模型的整体准确性以及项目的成功产生影响。
例如,如果第4位客户是我们平台非常活跃的用户(他们立即注意到失去了访问权限),而其他两位客户不是,那么与离职相关的预测功率特征将会受到我们糟糕的目标定义的抑制。
我考虑添加更多的例子,但我认为这两个蕴含的更广泛的观点已经很好地说明了问题。至于思考,目标创建的逻辑在拥有每个月付款的交易表、不同的订阅类型和长度、因促销活动而获得免费订阅的客户(我们可能要将他们全部过滤掉)等方面更容易出错。
一些建议
您的模型目标并不仅仅是0或1,它代表着分类建模项目的根本成功单元。因此,我对如何定义下一个项目中的目标变量有一些建议:
- 您的目标变量可能不会在一个表中被明确定义
- 花些时间,我指的是几天,甚至几周,来对手头数据如何定义目标变量以及该定义与业务目标之间的关系进行批判性思考。这很少是一项简单的任务,您最好在前期付出时间和精力,而不是需要改变定义。
- 在您的组织概念上,您的目标变量可能没有达成共识的定义。“离职”可以有很多定义方式,您可能永远没有一个完美的定义。但重要的是要通过与利益相关者的交谈来获得您作为建模者的定义。至少,在情况出现需要改变定义时,您对自己有所保留,而最好的情况是,您已经为构建成功的模型奠定了基础。
感谢您抽出时间阅读我的思考——我知道对于经验丰富的数据科学家来说,它们可能不是突破性的,但我希望那些新进入这个领域的人们能意识到课堂和工作之间的差距,并理解目标变量不应该被视为理所当然的东西——尽可能快地进入建模非常具有吸引力,但如果您这样做了——您可能会错过目标。
如果您喜欢这篇文章,请关注我!我定期写关于Python、Pandas和从数据分析转向数据科学等主题的文章。我还在Maven Analytics平台和Udemy上提供有关这些主题的课程——非常希望能在那里见到您!