如何使用SQL创建机器学习算法?
0 901
0
该提问暂无详细描述
收藏
2021-03-12 08:42 更新 小眼的铁板烧 •  3524
共 1 个回答
高赞 时间
0

插入”自动构建/训练模型

可以使用“插入”自动构建/训练模型,并使用“选择”语句对其进行查询。例如:

INSERT INTO mindsdb.predictors(name, predict, select_data_query) VALUES('model_name', 'target_variable', 'SELECT * FROM table_name'); 
 
SELECT <predicted_variable> FROM <ML_model> WHERE <conditions>

它是通过AI Tables完成的,AI Tables是MindsDB的一种开源技术与最流行的数据库进行本地集成。 此解决方案通过标准数据库功能(例如联合存储引擎(MySQL,MariaDB)或ODBC驱动程序(Microsoft SQL Server)等)工作。 基本上,AI表会自动从数据库中的数据中学习,并通过标准SQL查询提供预测。它们看起来像常规表,但实际上是虚拟的。模型训练和处理是在MindsDB服务器上完成的,该服务器可能与数据库分开并在GPU机器上运行。 此外-优点在于可以将它同时连接到多个数据库!例如,你从PostgreSQL数据库中包含的数据训练ML模型,并从后端有MySQL的Web应用程序查询预测。相同的AI表在两个数据库上都是可见的-因为它们是虚拟的。

图形用户界面

还有一个图形用户界面,这使得使用模型更加容易,并提供了额外的可解释性见解,以了解准确性等。 AI Tables在其预测引擎(由Facebook AI团队开发)的后端使用PyTorch,许多人认为PyTorch是最好的开源深度学习框架。 因此,在数据库内部进行机器学习有很多好处。例如,不必为ML工作流构建和维护应用程序集成,也无需更改应用程序或BI工具。由于数据是机器学习的主要成分,因此数据层是最佳的选择。

直接编写

数据集上决策树的快速SQL实现iris

select Sepal_Length, Sepal_Width, Petal_Length, Petal_Width, Species, 
    case when Petal_Width < 0.75 then 'setosa' 
         when Petal_Width >= 0.75 and Petal_Width < 1.35 then 'versicolor' 
         when Petal_Width >= 0.75 and Petal_Width < 1.75 and Petal_Width >= 1.35 and Sepal_Width < 2.65 then 'virginica' 
         when Petal_Width >= 0.75 and Petal_Width < 1.75 and Petal_Width >= 1.35 and Sepal_Width >= 2.65 then 'versicolor' 
         when Petal_Width >= 0.75 and Petal_Width >= 1.75 then 'virginica' 
    end as Prediction 
    from iris_new 

所使用的规则是使用R中的程序包生成的tree,并受75%的数据训练。提取规则很简单,并且可以直观地完成:

fit <- tree(Species ~ ., data = training) 
plot(fit) 
text(fit) 

请注意,该模型仅具有〜97%的精度。虽然可以开发出一个完全适合数据的决策树,但要避免这样做以避免过度拟合,并指出这种方法的局限性。

转载自:https://www.quora.com/How-do-I-create-a-machine-learning-algorithm-with-SQL

收藏
2021-03-12 09:13 更新 空心人 •  3374