in今日份知识你摄入了么?
对于那些不想过度依赖通过高昂成本获取新客户的公司而言,留住现有客户非常重要。市场营销、销售及客户保留部门需要确保客户满意度,鼓励客户消费,适时为客户提供优惠,减少客户流失。 
MindsDB 可以通过分析大量客户的数据及必要交互,识别并评估客户流失风险,以减少客户流失。
MindsDB 机器学习可以帮助市场营销、销售和客户保留团队确定最佳鼓励措施,及最佳提供报价时机,帮助公司最大限度地减少客户流失率。

在本教程中,你将学习如何使用 SQL 查询训练机器学习模型,并通过三个简单的步骤进行预测:

  • 1. 将包含客户数据的数据库连接至 MindsDB(用于预测AI层的数据库)
  • 2. 使用 INSERT 语句自动训练机器学习模型。
  • 3. 使用 MindsDB“AI 表”中的简单 SELECT 语句查询预测(此特殊表在被查询时从 ML 模型返回数据)
在数据层通过 SQL执行机器学习,可以在许多方面为你提供帮助,例如删除不必要的 ETL 处理、与数据无缝集成、以及在 BI 工具中进行预测分析。接下来,我们将通过实例,向你展示如何预测电信公司新客户流失概率。
请注意,在操作过程中,你可以通过连接到自己的数据库,使用不同的数据——此工作流程适用于大多数机器学习用例。
// 必备条件
在本教程中,我们将使用minddb Cloud。第一步,在 cloud.mindsdb.com 上创建一个免费帐户。成功登录后,你将被重定向到 MindsDB Studio。
MindsDB 入门页面上提供了详细的安装说明。
// 数据库连接(Database Connection)
首先,我们需要将 MindsDB 连接到存储客户流失数据的数据库。在左侧导航中,单击数据库(Database)。接下来,单击ADD DATABASE。在这里,我们需要提供连接数据库所需的所有参数。
  • Supported Database — 选择要连接的数据库
  • Integrations Name — 添加集成名称
  • Database — 数据库名称
  • Host — 数据库主机名
  • Port — 数据库端口
  • Username ——数据库用户
  • Password ——用户密码
然后,单击连接(CONNECT)
创建数据源(Create Datasource)
现在,我们已成功将 MindsDB 连接至数据库。现在,我们需要创建一个数据源,它要求我们将 MindsDB 连接到 Customer Churn 表。单击NEW DATASET并添加:
  • Datasource Name— 你正在创建的新源名称
  • Database— 要连接的数据库名称
  • Query — SELECT 语句从数据库中选择数据,例如 SELECT * FROM table_name;
填写完毕后,单击 CREATE。现在,我们已经成功创建了一个连接至数据库的新数据源。下一步,使用 MySQL 客户端连接到 MindsDB 的 MySQL API ,训练一个新模型,帮助我们预测客户流失。
连接至 MindsDB 的 MySQL API
接下来,我将使用 MySQL 命令行客户端,但你可以用最适合你的客户端,例如 MySQL Workbench、Dbeaver 等。首先,将 MindsDB Cloud 用户连接至 MySQL API:
在上面的命令中,我们明确指明了主机名和用户名,以及用于连接的密码。
如果你的屏幕显示如上,那么你已成功连接。如果你遇到身份验证错误,请确保你提供的是用于在 MindsDB Cloud 上创建帐户的电子邮件。
// 数据概览(Data Overview)
在本教程中,我们将使用客户流失数据集。每行代表一个客户,我们将训练一个机器学习模型,帮助我们预测客户是否会停止使用公司产品。下面是对数据中每个特征的简短描述。
  • CustomerId —客户 ID
  • Gender — 男性或女性客户
  • SeniorCitizen — 客户是否为老年人 (1, 0)
  • Partner — 客户是否有合作伙伴(Yes, No)
  • Dependents — 客户是否有家属(Yes, No)
  • Tenure — 客户在公司停留的月数
  • PhoneService — 客户是否有电话服务(是,否)
  • MultipleLines — 客户是否有多条线路(是、否、无电话服务)
  • InternetServic — 客户的互联网服务提供商(DSL、光纤、否)
  • OnlineSecurity — 客户网络是否有安全(是、否、无互联网服务)
  • OnlineBackup — 客户是否有在线备份(是、否、无互联网服务)
  • DeviceProtection — 客户是否有设备保护(是、否、无互联网服务)
  • TechSupport — 客户是否有技术支持(是、否、无互联网服务)
  • StreamingTv— 客户是否有流媒体电视(是、否、无互联网服务)
  • StreamingMovies — 客户是否有流媒体电影(是、否、无互联网服务)
  • Contract——客户的合同期限(按月、一年、两年)
  • PaperlessBilling — 客户是否有无纸化账单(是,否)
  • PaymentMethod — 客户的付款方式(电子支票、邮寄支票、银行转账(自动)、信用卡(自动))
  • MonthlyCharges — 每月收费金额
  • TotalCharges — 向客户收取的总金额
  • Churn - 客户是否流失(是或否)。这是我们想要预测的最终结果。
// 使用 SQL 语句训练/查询模型
现在,我们将通过使用 MindsDB Studio 创建的数据源训练一个新的机器学习模型。
切换回 mysql-client 并运行:
你会看到 MindsDB 数据库中有 2 个可用的表。为了训练新的机器学习模型,我们需要在预测变量表中插入一条新记录,如下所示:
需要提供的值有:

  • name (string) - 模型的名称
  • predict (string) - 你想要预测的特征
  • external_datasource (string) — 我们用 MindsDB Studio 创建的数据源名称
  • training_options (JSON 作为逗号分隔的字符串) — 包含额外训练参数的可选值。完整的参数列表可在 PredictorInterface 文档中查找。
训练预测客户流失的模型:

这一步,我们是在创建一个名为 customer_churn 的模型,从而预测客户流失,同时忽略作为模型无关列的性别列。另还需要注意一点,在本例中, MindsDB 自动检测将自动检查ID 列 customerId 并忽略。这样,我们就正式开始了模型训练。如果想要检查训练是否完成,你可以从预测变量表中选择模型名称:
下一步,查询模型并预测客户流失。让我们可以想象出一个客户,该客户将只使用 DSL 服务,不使用电话服务和多条线路,她使用我们服务 1 个月了,并且有一个伴侣。将所有这些信息添加到 WHERE 子句中。
MindsDB预测该客户流失的可能性有80%。这里,我们需要检查一件重要的事情—— important_missing_information 值,其中 MindsDB 指向重要的缺失信息,从而提供更准确的预测,在本例中为 Contract、MonthlyCharges、TotalCharges 和 OnlineBackup。我们将这些值添加至 WHERE 子句中,并运行新的查询:
现在,我们可以看到,该客户仍然会流失,但 MindsDB 作出此预测结果的可能性为 98%。
// 结论
在本教程中,我们看到了将机器学习直接引入数据库层并使用 SQL 查询训练/查询机器学习模型,是非常简单的,并演示了如何用 SQL 查询构建机器学习模型,而且仅需三步即可预测。

如果你时间有限,你可以尝试使用 MindsDB 连接数据源、训练模型并在云端运行预测。试试看你能做出哪些预测。感谢你的阅读!
原文作者:Zoran Pandovski, MindsDB
翻译作者:Lia
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://medium.com/mindsdb/predict-customer-churn-using-sql-3d7a840a8ec7
本周公开课预告
往期精彩回顾

点「在看」的人都变好看了哦
点击“阅读原文”查看数据应用学院核心课程
继续阅读
阅读原文