Los analistas de datos se enfrentan a una ardua tarea. Para poder seguir el ritmo del aumento exponencial de los datos en su organización, deben encontrar el equilibrio entre el trabajo que se debe hacer para obtener información precisa y la necesidad de tomar decisiones rápido.
Aunque tratan de entender y explicar las anomalías de forma rápida, analizar en profundidad los datos supone una valiosa inversión de tiempo y esfuerzo. Y las herramientas existentes de análisis común, que deberían hacerles el trabajo más fácil, no siempre sirven para hacer frente al volumen de datos diario. Los analistas tienen dificultades para gestionar todas estas situaciones y, al mismo tiempo, garantizar que los datos que utilizan en los análisis avanzados se procesan de forma segura.
Los algoritmos de aprendizaje automático (machine learning, ML) pueden ser la solución a algunos de estos desafíos. Sin embargo, las lagunas de conocimiento en la programación y la ciencia de datos, así como las complejas infraestructuras de procesamiento, impiden a los analistas adoptar el ML.
En Snowflake creemos que los analistas pueden aprovechar las ventajas del ML, siempre y cuando consigamos omitir algunas de las dificultades de los marcos de ML.
Por este motivo, en el Summit 2023, anunciamos la incorporación de varias funciones con tecnología de ML en vista previa pública. Estas conocidas funciones SQL utilizan el ML para ayudar a los analistas a tomar mejores decisiones más rápido. En esta entrada de blog, explicaremos cómo funcionan exactamente estas funciones con tecnología de ML.
Forecasting
Los analistas ya pueden utilizar la nueva función Forecasting para crear previsiones de series temporales con un tratamiento automatizado de la estacionalidad, la escalabilidad y mucho más.
// This shows training & prediction for revenues in daily_revenue_v
create snowflake.ml.forecast revenue_projector(
input_data => SYSTEM$REFERENCE('VIEW', 'daily_revenue_v'),
timestamp_colname => 'ts',
target_colname => 'revenue'
);
// The model is now ready for prediction.
call revenue_projector!forecast(
forecasting_periods => 30, // how far out to project!
config_object => {'prediction_interval': 0.9} // optional range of values with this probability
);
Al hacer uso de esta funcionalidad, los analistas podrán entrenar modelos de ML con el objetivo de utilizarlos en la generación constante de predicciones. Gracias a Forecasting, pueden generar una estimación prevista, así como un rango de estimaciones conocidas como intervalos de predicción. Estos intervalos indican el rango probable dentro del cual se espera que se encuentren las previsiones.
Esta funcionalidad facilita el trabajo a los analistas que, por ejemplo, estiman los ingresos futuros y quieren obtener previsiones precisas de los volúmenes de ventas por tienda, sin tener que recurrir a la ayuda de su equipo de ciencia de datos.
Forecasting permite a los analistas generar predicciones para una sola serie temporal o para varias categorías dentro de una misma serie temporal. Por ejemplo, si trabajas en el sector del retail, en lugar de prever las ventas agregadas de un artículo en todas las tiendas, puedes prever las ventas por cada tienda. Esta función permite aumentar la precisión de cada previsión con una línea de código adicional sencilla.
// Add series_colname to predict sales by category.
create snowflake.ml.forecast revenue_projector_by_store(
input_data => SYSTEM$REFERENCE('VIEW', 'daily_revenue_v'),
timestamp_colname => 'ts',
target_colname => 'revenue',
series_colname => 'store_id'
);
// The model is now ready for prediction.
call revenue_projector_by_store!forecast(
forecasting_periods => 30, // Predict sales for one month.
);
Puedes mejorar aún más la calidad de las predicciones al incluir variables externas, tanto numéricas como categóricas. Así, por ejemplo, si se sabe que los días festivos tienen un gran impacto en los volúmenes de ventas de retail, incluir esas fechas como variable exógena debería mejorar la precisión de las previsiones.
Forecasting también permite generar predicciones en intervalos temporales personalizados, como 4 horas, 1 día o 7 días. Esperamos que esta flexibilidad pueda ayudarte a obtener previsiones adaptadas a tus necesidades y plazos específicos sin tener que recurrir a la ayuda del equipo de ciencia de datos.
Anomaly Detection
¿Y si los analistas pudieran utilizar el ML para identificar los valores atípicos y activar alertas? Ahora pueden hacerlo gracias a nuestra nueva función Anomaly Detection. Los analistas pueden utilizarla para detectar eventos atípicos que deberían investigarse en busca de actividades sospechosas y para localizar situaciones con pocas probabilidades de repetirse que deban excluirse de futuros análisis.
En concreto, Anomaly Detection predice las anomalías en una sola serie temporal o en varias categorías dentro de una misma serie. Este método de detección de anomalías con tecnología de ML es útil si se desea reemplazar los umbrales estáticos para identificar valores atípicos y, en su lugar, recurrir a un modelo que cree una referencia inteligente y dinámica para los datos.
Para poder controlar el número de falsos positivos que la función puede arrojar, se puede ajustar el tamaño del intervalo de predicción utilizado para identificar las anomalías. Puedes utilizar las tareas y alertas de Snowflake para recibir automáticamente una notificación cuando se identifique una anomalía, como se muestra a continuación.
-- Set up a task to train your model on a weekly basis.
create or replace task train_anomaly_detection_task
warehouse = LARGE_WAREHOUSE
SCHEDULE = 'USING CRON 0 0 * * 0 America/Los_Angeles' -- Run at midnight every Sunday.
as EXECUTE IMMEDIATE
$$
begin
create or replace snowflake.ml.ANOMALY_DETECTION my_model(input_data => SYSTEM$REFERENCE('VIEW', 'view_of_your_input_data'),
timestamp_colname => 'ts',
target_colname => 'y',
label_colname => '');
end;
$$;
-- Start your task's execution.
alter task train_anomaly_detection_task resume;
-- Create a table to store your anomaly detection results.
create or replace table anomaly_detection_results (
ts timestamp_ntz,
y float,
forecast float,
lb float,
ub float,
is_anomaly boolean,
percentile float,
distance float
);
-- Call your model to detect anomalies on a daily basis.
create or replace task detect_anomalies_task
warehouse = LARGE_WAREHOUSE
SCHEDULE = 'USING CRON 0 0 * * * America/Los_Angeles' -- Run at midnight, daily.
as EXECUTE IMMEDIATE
$$
begin
call my_model!detect_anomalies(
input_data => SYSTEM$REFERENCE('VIEW', 'view_of_your_data_to_monitor'),
timestamp_colname =>'ts',
target_colname => 'y',
config_object => {'prediction_interval': 0.99});
insert into anomaly_detection_results (ts, y, forecast, lb, ub, is_anomaly, percentile, distance)
select * from table(result_scan(last_query_id()));
end;
$$;
-- Start your task's execution.
alter task detect_anomalies_task resume;
-- Setup alert based on the results from anomaly detection
CREATE OR REPLACE ALERT anomaly_detection_alert
WAREHOUSE = LARGE_WAREHOUSE
SCHEDULE = 'USING CRON 0 1 * * * America/Los_Angeles' -- Run at 1 am, daily.
IF (EXISTS (select * from anomaly_detection_results where is_anomaly=True and ts > dateadd('day',-1,current_timestamp()))
THEN
call SYSTEM$SEND_EMAIL(
'SNOWML_ANOMALY_DETECTION_ALERTS',
'[email protected]',
'Anomaly Detected in data stream',
concat(
'Anomaly Detected in data stream',
'Value outside of confidence interval detected'
)
);
-- Start your alert's execution.
alter alert anomaly_detection_alert resume;
Contribution Explorer
Ahora, los analistas pueden utilizar el ML para identificar rápidamente las dimensiones que contribuyen al cambio de una métrica determinada en dos intervalos de tiempo diferentes definidos por el usuario. Si detectas una anomalía en una métrica empresarial clave como las ventas o el uso, querrás saber qué ha contribuido a esa anomalía y encontrar la causa raíz. Contribution Explorer examina millones de combinaciones de dimensiones y sus valores para encontrar las dimensiones y sus valores —denominados “segmentos”— más sorprendentes. Por ejemplo, puede ocurrir que un cliente concreto de una región determinada haya dejado de utilizar tu producto de repente.
De hecho, puedes utilizar Contribution Explorer para analizar periódicamente las métricas y encontrar así tesoros ocultos, aunque no haya ninguna anomalía aparente en el nivel agregado. Por ejemplo, incluso si parece que no hay anomalías en las ventas, es posible que las ventas a dos clientes diferentes hayan crecido y disminuido al mismo tiempo.
with input as (
select
// Select dimensions to "mine"
{ 'country': input_table.dim_country,
'vertical': input_table.dim_vertical
} as categorical_dimensions,
{
} as continuous_dimensions, // less common but available
// This is the metric for comparison
input_table.kpi,
// Label control & test periods for comparison
iff(ds between '2020-08-01' and '2020-08-20', TRUE, FALSE) as label
from input_table
where (ds between '2020-05-01' and '2020-05-20')
or (ds between '2020-08-01' and '2020-08-20')
)
// Now use the above data to compare contributions of dimension segments
select res.* from input, table(
snowflake.ml.top_insights(
input.categorical_dimensions,
input.continuous_dimensions,
CAST(input.kpi as float),
input.label
)
over (partition by 0)
) res order by res.relative_change desc;
¿Qué hace únicas a las funciones con tecnología de ML de Snowflake?
Elasticidad, operaciones casi nulas, gobernanza de datos y mucho más
Cuando se utilizan las funciones con tecnología de ML de Snowflake, es fácil escalar de una a millones de combinaciones de dimensión y valor: todo es posible gracias a la elasticidad y las operaciones casi nulas del motor de Snowflake. Además, puedes integrar llamadas a las funciones Forecasting, Anomaly Detection y Contribution Explorer en tus flujos de datos, tal como lo harías con cualquier otra función SQL. Estas funciones, junto con las tareas y alertas de Snowflake, te permiten entrenar automáticamente nuevos modelos cada semana a medida que obtienes nuevos datos, generas predicciones cada día u hora (según sea necesario), y recibes alertas cuando detectes alguna anomalía que debe investigarse.
Independientemente de cómo utilices las funciones con tecnología de ML, obtendrás la gobernanza de datos uniforme de Snowflake en todos los datos de entrada y salida de las funciones.
Gama de capacidades de ML
Las funciones con tecnología de ML complementan a la perfección las funciones de ML de Snowpark basadas en la ciencia de datos. Las primeras se encargan de entrenar y evaluar modelos, entre otras muchas cosas, y requieren un esfuerzo mínimo por parte del analista o del responsable de la toma de decisiones; mientras que las segundas proporcionan una gama de herramientas variada y flexible a los científicos de datos para que puedan crear sus propios modelos.
Juntas, ofrecen un abanico de opciones entre las que elegir en función de la naturaleza del problema y del gasto en ciencia de datos que se quiera dedicar a resolverlo.
Extracción de información para el ML de herramientas BI como Sigma
Es un orgullo colaborar con Sigma, una herramienta de inteligencia empresarial (business intelligence, BI) compatible con las funciones con tecnología de ML de Snowflake y que ofrece una interfaz fácil de usar para que los usuarios empresariales puedan extraer información del ML. Ofrece soporte de front-end para las funciones Time Series Forecasting y Contribution Explorer de Snowflake.
Al activar estas funciones en tu cuenta de Snowflake y conceder acceso al rol de Sigma, podrás utilizar los conjuntos de datos de Sigma, que proporcionan un punto de partida simplificado para los análisis tabulares y visuales. Para utilizar Time Series Forecasting o Contribution Explorer, identifica la tabla o el conjunto de datos que quieras, agrupa los datos según el grado de detalle que prefieras y crea las métricas de agregación para la exploración. Prepara la tabla, crea una vista de almacén, define un conjunto de datos con SQL personalizado y aplica la función correspondiente mediante la sintaxis proporcionada.
Time Series Forecasting arroja como resultado un conjunto de predicciones basadas en tiempo. Contribution Explorer proporciona una lista ordenada de segmentos que contribuyen en gran medida al aumento de las métricas clave. Los dos conjuntos de datos se pueden integrar fácilmente con libros de trabajo, lo que permite visualizarlos, explorarlos y fusionarlos con otras tablas del almacén. Para mejorar la interacción, sustituye las variables estáticas de SQL personalizado por parámetros, lo que permitirá a los usuarios modificar las funciones dentro del libro de trabajo.
Forecasting
Contribution Explorer
Este conjunto de datos se puede utilizar fácilmente en cualquier libro de trabajo, ya que ofrece una visualización y exploración sencillas, además de la posibilidad de unirlo a otras tablas del almacén para obtener una comprensión completa de las métricas futuras previstas. Pruébalo.
¿Y ahora qué?
Los primeros comentarios de los clientes nos han permitido trabajar para ampliar las funciones mencionadas anteriormente y aumentar el conjunto de capacidades de formas nuevas e interesantes. Anomaly Detection y Contribution Explorer utilizan datos de series temporales, pero no tienen por qué limitarse a eso. También sirven para otros datos: para encontrar valores atípicos entre los clientes o para comparar cohortes de usuarios y encontrar los segmentos más interesantes que marcan la diferencia entre las cohortes. De hecho, estamos trabajando a fin de ampliar los datos que las funciones con tecnología de ML abarcan.
A medida que desarrollamos estas funciones, buscamos clientes que las prueben y nos den su opinión. Mantente al tanto y contacta con los equipos de cuentas para tener acceso a futuros avances a cuando estén disponibles. Y no olvides compartir tus casos de uso aquí. El futuro de lo que se puede hacer con el ML es casi ilimitado: se prevé que las funciones con tecnología de ML aumenten las capacidades a las que puedes acceder para obtener mejores resultados empresariales, sin tener que preocuparte por estar al día de las continuas investigaciones sobre ML.
Para obtener más información sobre las funciones con tecnología de ML, consulta la documentación de Snowflake.