把MongoDB变成一个预测性数据库
在商业领域,人们对人工智能(AI)和机器学习(ML)的兴趣越来越大。ML/AI的预测能力能够以比人工分析更快的速度从检测到的模式中快速获得洞察力。企业意识到,这可以带来利润的增加、成本的降低和创新的加速。虽然大大小小的企业都能从人工智能的力量中受益,但实施预测分析项目可能既复杂又耗时。
领先的现代通用数据库平台MongoDB公司(纳斯达克股票代码:MDB)和将自动机器学习引入数据库的开源机器学习平台MindsDB建立了技术合作关系,以推进机器学习创新。这项合作旨在提高企业内数据科学和数据工程团队简化预测能力的能力,以解决现实世界的业务挑战。
什么是最好的方法?
一旦你确定了你想关注的初始ML项目,选择正确的工具和方法可以帮助加快建立、训练和优化模型的时间。如果你不知道ML模型要训练的具体维度,那么模型选择和特征工程可能会很耗时,也很困难。AutoML模型擅长于测试各种不同的算法,为感兴趣的假设建模。
现有的最先进的AutoML框架提供了优化性能的方法,包括调整超参数(如学习率或批量大小)。MindsDB AutoML框架超越了大多数传统的超参数调整自动化系统,实现了数据清理、数据预处理和特征工程的新型上游自动化。为了赋予用户透明的开发能力,该框架包含了可解释的工具,能够处理复杂的数据类型(NLP、时间序列、语言建模和异常检测),并通过允许导入他们选择的模型来为用户提供定制能力。
MindsDB还能在数据层生成预测--这是一个额外的重大进步,可以加快开发速度。使用MindsDB AI Tables在MongoDB Atlas中直接生成预测,使您能够将预测作为常规数据进行消费,查询这些预测,并通过简化部署工作流程来加快开发速度。
开始使用MindsDB
我们建议从cloud.mindsdb.com,以获得MindsDB的云管理版本。
MindsDB是一个开源项目(github.com/mindsdb/min…
使用Docker安装MindsDB
- 首先,通过运行检查你是否安装了docker:
docker run hello-world
- 为了拉动镜像,运行下面的命令:
docker pull mindsdb/mindsdb
- 然后,运行下面的命令来启动容器:
docker run -p 47334:47334 -p 47336:47336 mindsdb/mindsdb
如果docker不是一个选项,你可以遵循我们的文档,了解如何在本地安装MindsDB。(https://docs.mindsdb.com/)
设置连接
将MindsDB连接到MongoDB有两种方式:通过使用MindsDB Studio(GUI)或使用Mongo客户端(终端)。目前,整合工作是通过MindsDB的MongoDB API访问MongoDB作为一个新的数据源。关于连接到MongoDB的更多信息可以在这里找到。
使用Mongo shell来连接到MindsDB的MongoDB API。请注意,你必须有Mongo shell版本≥3.6才能使用MindsDB MongoDB API。如果你使用MindsDB Cloud来学习本教程,你可以跳过关于config.json的部分。
在启动MongoDB API之前,有一个默认的配置设置。Mongo主机将是MindsDB Mongo API,在主机密钥中定义为127.0.0.1。请看下面的config.json例子:
{
"api": {
"http": {
"host": "127.0.0.1",
"port": "47334"
},
"mysql": {}
"mongodb": {
"host": "127.0.0.1",
"port": "47336",
"user": "mindsdb",
"password": "",
"database": "mindsdb"
}
},
"config_version": "1.4",
"debug": true,
"integrations": {},
"storage_dir": "/mindsdb_storage"
}
上述config.json文件的位置可以在MindsDB服务器启动时日志的第一行输出中找到,是一个配置文件值。如果你想改变主机、默认的用户名或包括密码,你可以在那里进行修改。要通过GUI连接到MindsDBs。
我们可以使用MindsDB Studio在MindsDB和MongoDB之间创建一个连接,以访问我们希望训练模型的数据。从你喜欢的网络浏览器访问http://127.0.0.1:47334/ 或cloud.mindsdb.com/,以访问工作室。从左边的菜单中,选择数据库集成。然后,选择ADD DATABASE。在连接到数据库的窗口中:
-
选择MongoDB作为支持的数据库
-
添加后续信息,如Mongo主机、端口、用户名和密码。

现在,我们已经成功地与MongoDB数据库集成。下一步是使用Mongo-client连接到MindsDBs Mongo API并训练模型。
要连接到MindsDBs Mongo API的本地连接运行:
mongo --host 127.0.0.1 -u "username" -p "password"
如果你使用MindsDB云,你需要使用用户名/密码来连接到MindsDB Mongo API:
mongo --host mongo.cloud.mindsdb -u "cloud_username" -p "cloud_password"
然后使用MindsDBs数据库和列表集合:
use mindsdb
show collections

使用MQL训练一个新的机器学习模型
我们将利用Mongo查询语言(MQL)和MindsDB的力量来训练一个模型。该模型的目标是预测混凝土混合物的强度,其输入列包括年龄、用水量、添加剂的类型和数量,以使混合物更坚固。该数据集可以从Kaggle下载,它代表了日常建筑项目中的一个潜在商业用例,以优化混合料的强度,同时尽量减少材料的使用量--这是一个在不忽视功能的情况下节约成本的目标。你可以按照这个教程在Mongodb里面使用你的数据,或者干脆直接把csv文件导入一个叫做 material_strength的集合中。另外,你可以在这个网址上得到上述数据的导出集合。
为了训练一个新的模型,我们需要在 mindsdb.predictors 集合上调用 insert() 函数。值得注意的是,必须包括以下信息:
db.predictors.insert({
'name': 'strength',
'predict': 'concrete_strength',
'connection': 'MongoIntegration',
'select_data_query':{
'database': 'test_data',
'collection': 'material_strength',
'find': {}
}
})

name "是简单的模型名称,"predict "是我们旨在预测的特征,"connection "是我们用MindsDB Studio创建的MongoDB连接的名称。在select_data_query里面,我们应该提供数据库的名称、集合和find()函数来选择数据。
一旦你输入这些信息,MindsDB就开始训练过程。为了验证训练是否已经完成,你可以使用find()命令来检查 mindsdb.predictors集合里面的模型状态,例如。

成功的训练将返回一个 "状态":"完成 "的通知。MindsDB Studio提供了额外的有用信息来超越预测并解释结果。下图指的是特征导入,自动计算并显示,以揭示你的数据中哪些列可能对预测强度有影响。以下信息可以从MindsDB studio获得,方法是在你训练好的模型上选择预览选项。

此外,预览选项还为我们提供了一个混淆矩阵,以帮助我们通过对真实值和预测值进行分类来评估我们模型的性能。

由于这是一项回归任务,我们对真实值和预测值进行分层,以分析预测在反映基础数据模式方面的有效性。表现强劲的模型有一个明显的对角线成分:这表明一个模型能成功地检测到特征和输出分布之间的关系。位于远离主对角线的元素意味着预测不太准确(例如,这可能是由于这些输出区域的数据采样稀少)。下一步是使用MQL从模型集合中取回预测结果。
查询模型
在我们训练了一个模型后,我们可以去查询这个模型。使用MQL,我们将需要调用模型集合的find()方法。此外,我们需要提供我们想获得预测的具体数值。一个例子是:
db.strength.find({'age': 28,
'superPlasticizer': 2.5, slag: 1,
'water': 162, 'fineAggregate': 1040})

MindsDB创建的模型预测值为17.3,90%的置信度为真实值在confidence_interval 的下限和上限之内。一个重要的信息也是important_missing_information值,MindsDB建议在find()函数中包括水泥特征的值,将改善预测结果。
本教程强调了通过利用MindsDB的AutoML框架在MongoDB内部创建预测模型的步骤。使用现有的计算配置,上面的例子只花了不到五分钟,不需要大量的工具,也不需要在数据库之外的管道。利用MindsDB在MongoDB内的预测能力,开发人员现在可以以较低的成本建立机器学习模型,对模型的准确性有更深入的了解,并帮助用户做出更好的基于数据的决策。
利用MongoDB和MindsDB实现现代化
MongoDB通过简化和丰富数据为数据管理和探索提供了一个直观的过程。MindsDB通过简化现代化的机器学习、人工智能和正在进行的数据科学范围,帮助将数据转化为智能洞察力。
在有限的时间内,试用MindsDB连接到MongoDB,训练模型,并在云中运行预测。只需在这里注册。它是免费的(最终定价将在今年晚些时候公布),我们的团队可以在Slack和Github上获得反馈和支持。看看它,并让我们知道你想出了什么预测。