sp_rxPredict
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores: solo Windows
Genera un valor previsto para una entrada determinada que consta de un modelo de aprendizaje automático almacenado en un formato binario en una base de datos de SQL Server.
Proporciona puntuación en los modelos de aprendizaje automático de R y Python casi en tiempo real. sp_rxPredict
es un procedimiento almacenado escrito en C++y está optimizado específicamente para las operaciones de puntuación. sp_rxPredict
es un contenedor para:
Función | Envoltura |
---|---|
rxPredict Función R |
- RevoScaleR - MicrosoftML |
rx_predict función de Python | - revoscalepy - microsoftml |
El modelo debe crearse mediante R o Python. Sin embargo, una vez que se serializa y almacena en un formato binario en una instancia de motor de base de datos de destino, se puede consumir desde esa instancia del motor de base de datos, incluso cuando la integración de R o Python no está instalada. Para obtener más información, consulte Puntuación en tiempo real con sp_rxPredict en SQL Server.
Sintaxis
sp_rxPredict ( @model , @input )
[ ; ]
Argumentos
@model
Un modelo entrenado previamente en un formato admitido.
@input
Una consulta SQL válida.
Valores devueltos
Se devuelve una columna de puntuación, así como cualquier columna de paso a través del origen de datos de entrada.
Se pueden devolver columnas de puntuación adicionales, como el intervalo de confianza, si el algoritmo admite la generación de estos valores.
Comentarios
Para habilitar el uso del procedimiento almacenado, SQLCLR debe estar habilitado en la instancia.
Nota:
Hay implicaciones de seguridad para habilitar esta opción. Use una implementación alternativa, como la función PREDICT (Transact-SQL), si SQLCLR no se puede habilitar en el servidor.
El usuario necesita EXECUTE
permiso en la base de datos.
Algoritmos admitidos
Para crear y entrenar el modelo, use uno de los algoritmos admitidos para R o Python, proporcionados por SQL Server Machine Learning Services (R o Python), SQL Server 2016 R Services, SQL Server Machine Learning Server (independiente) (R o Python) o SQL Server 2016 R Server (independiente).
R: Modelos de RevoScaleR
1 Los modelos también admiten la puntuación nativa con la PREDICT
función .
R: Modelos de MicrosoftML
- rxFastTrees: Árbol rápido
- rxFastForest: Bosque rápido
- rxLogisticRegression: Regresión logística
- rxOneClassSvm: SVM de OneClass
- rxNeuralNet: Red neuronal
- rxFastLinear: Modelo lineal rápido
R: Transformaciones proporcionadas por MicrosoftML
- rxFastTrees: Árbol rápido
- concat: Transformación concat de Machine Learning
- categórico: Transformación de datos categóricos de Machine Learning
- categoricalHash: Transformación hash de categorías de Machine Learning
- selectFeatures: Transformación de selección de características de Machine Learning
Python: modelos de revoscalepy
1 Los modelos también admiten la puntuación nativa con la PREDICT
función .
Python: modelos microsoftml
- microsoftml.rx_fast_trees: árboles potenciados
- microsoftml.rx_fast_forest: bosque aleatorio
- microsoftml.rx_logistic_regression: regresión logística
- microsoftml.rx_oneclass_svm: detección de anomalías
- microsoftml.rx_neural_network: red neuronal
- microsoftml.rx_fast_linear: modelo lineal con ascenso de coordinadas dual estocástico
Python: Transformaciones proporcionadas por microsoftml
- microsoftml.rx_fast_trees: árboles potenciados
- microsoftml.concat: concatena varias columnas en un único vector
- microsoftml.categorical: convierte una columna de texto en categorías
- microsoftml.categorical_hash: aplica hash y convierte una columna de texto en categorías
Tipos de modelos no admitidos
No se admiten los siguientes tipos de modelo:
Modelos que usan los
rxGlm
algoritmos orxNaiveBayes
en RevoScaleR.Modelos PMML en R.
Modelos creados con otras bibliotecas que no son de Microsoft.
Los modelos que usan una función de transformación o una fórmula que contiene una transformación, como
A ~ log(B)
, por ejemplo, no se admiten en la puntuación en tiempo real. Para usar un modelo de este tipo, se recomienda realizar la transformación en los datos de entrada antes de pasar los datos a la puntuación en tiempo real.
La puntuación en tiempo real no usa un intérprete, por lo que no se admite ninguna funcionalidad que pueda requerir un intérprete durante el paso de puntuación.
Ejemplos
DECLARE @model =
SELECT @model
FROM model_table
WHERE model_name = 'rxLogit trained';
EXEC sp_rxPredict @model = @model,
@inputData = N'SELECT * FROM data';
Además de ser una consulta SQL válida, los datos de entrada de @inputData deben incluir columnas compatibles con las columnas del modelo almacenado.
sp_rxPredict
solo admite los siguientes tipos de columna de .NET: double
, float
, short
ushort
, long
, , ulong
y string
. Es posible que tenga que filtrar los tipos no admitidos en los datos de entrada antes de usarlos para la puntuación en tiempo real.
Para obtener información sobre los tipos SQL correspondientes, consulte Asignación de tipos de SQL-CLR o Asignación de datos de parámetros CLR.