Хотя машинное обучение может быть сложным, оно также предлагает мощные инструменты для решения сложных задач и анализа больших и сложных наборов данных. Для развертывания машинного обучения компаниям нужны лучшие практики, процессы и инструменты, используемые для оптимизации и управления жизненным циклом моделей машинного обучения (ML). Это создает множество проблем, таких как сложность моделей машинного обучения, масштабируемость инфраструктуры, управление версиями моделей и данных, управление и соответствие нормативным требованиям. В дополнение к этому, аналитики, которые знают только SQL, нуждаются в острой кривой обучения, если они участвуют в проектах по науке о данных.
Snowflake упростила вам эту задачу благодаря новой функции под названием Функция ML. Эта функция позволяет обнаруживать закономерности в ваших данных с помощью встроенной модели, предоставляемой Snowflake. Вы можете обучить эту модель машинного обучения на своих данных, а затем предоставить прогнозы на основе тенденций в данных с помощью SQL. Вам не нужно иметь отдельную сложную инфраструктуру, и вы сможете предоставлять точные результаты быстро, масштабируемо и безопасно. Сегодня доступны следующие функции на основе машинного обучения: прогнозирование, обнаружение аномалий и исследование вклада, но позже появятся дополнительные функции.
Давайте посмотрим, как вы можете начать использовать его легко. В этом примере я использую данные об использовании электроэнергии для прогнозирования использования электроэнергии в моем доме. Я использую данные pge.com, которые можно загрузить в виде CSV-файла, только если вы живете в Северной Калифорнии. Здесь — это файл почасового использования данных, если у вас его нет.
- Загрузите данные в Snowflake: загрузите CSV-файл на внутреннюю сцену с помощью Snowsight или SnowSQL.
- Используйте схему вывода Snowflake для загрузки данных в таблицу
use role sysadmin; use demodb.ml; use warehouse demo_wh; LIST @mldata; CREATE OR REPLACE FILE FORMAT CSV_FF TYPE = csv PARSE_HEADER = true SKIP_HEADER = 1 error_on_column_count_mismatch=false; CREATE or REPLACE TABLE pge_data USING TEMPLATE ( SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*)) FROM TABLE( INFER_SCHEMA( LOCATION=>'@mldata/pge_elec_data.csv' , FILE_FORMAT=>'csv_ff' ) )); DESC TABLE pge_data; -- load data COPY INTO pge_data FROM @mldata/pge_elec_data.csv FILE_FORMAT = (FORMAT_NAME= 'csv_ff') MATCH_BY_COLUMN_NAME=CASE_INSENSITIVE;
3. Тренируйтесь с вашим набором данных и прогнозируйте его
-- train model with your data CREATE OR REPLACE snowflake.ml.forecast electric_usage(input_data => SYSTEM$REFERENCE('VIEW', 'pge_data_vw'), timestamp_colname => 'USAGE_DATE', target_colname => 'DAILY_USAGE' ); -- get the predictions for next thirty days CALL electric_usage!forecast(30); --put it togater with existing and prediction SELECT usage_date as ts, daily_usage as actuals, null as forecast, null as lower_bound, null as upper_bound FROM pge_data_vw UNION ALL SELECT ts, null as actuals, forecast, lower_bound, upper_bound FROM TABLE(RESULT_SCAN(-1)) ORDER BY 1; -- change snowsight output to chart and add actuals, and forcast column -- see which features are auto generated by the forecast algorithm call electric_usage!explain_feature_importance();
4. Расширьте/улучшите свой прогноз с помощью данных торговой площадки Snowflake. Получите данные о погоде из Marketplace и используйте температуру и облачность, чтобы увидеть влияние солнечной генерации и использования электроэнергии. Убедитесь, что вы создали базу данных из следующего набора данных Marketplace и дали имя GLOBAL_WEATHER_DATA для использования в прогнозировании.
-- create view from marketplace data based on my area create or replace view daily_weather_vw as select date_valid_std as wdate, postal_code, AVG_CLOUD_COVER_TOT_PCT as cloud_cover, AVG_TEMPERATURE_AIR_2M_F as temperature from global_Weather_data.standard_tile.history_day where postal_code = '94506'; -- join pge data with weather data based on date create or replace view pge_weather_vw as select pge.*, w.* from pge_data_vw as pge left join daily_weather_vw as w on pge.usage_date = w.wdate; -- create view to train the model based on past data, including weather create or replace view pge_weather_data_vw as select usage_date, daily_usage, cloud_cover, temperature from pge_weather_vw; -- create view based on weather forecast data from marketplace create or replace view weather_forecast_data_vw as select to_timestamp_ntz(date_valid_std) as daily_timestamp, AVG_CLOUD_COVER_TOT_PCT as cloud_cover, AVG_TEMPERATURE_AIR_2M_F as temperature from global_Weather_data.standard_tile.forecast_day where postal_code = '94506'; -- check the data select * from pge_weather_data_vw limit 10; select * from weather_forecast_data_vw limit 10; -- Train your model create or replace snowflake.ml.stateful_forecast electric_usage_weather( input_data => SYSTEM$REFERENCE('VIEW', 'pge_weather_data_vw'), timestamp_colname => 'usage_date', target_colname => 'daily_usage' ); -- Get predictions call electric_usage_weather!forecast (input_data => SYSTEM$REFERENCE('VIEW', 'weather_forecast_data_vw'), timestamp_colname => 'daily_timestamp'); -- show output in chart select usage_date as ts, daily_usage as actuals, null as forecast, null as lower_bound, null as upper_bound from pge_weather_data_vw union all select ts, null as actuals, forecast, lower_bound, upper_bound from table(result_scan(-1));
В дополнение к этому, если у вас есть аномалия в ваших данных, вы можете легко обнаружить ее, используя аналогичную функцию, и исключить ее, чтобы обучить модель, чтобы получить наиболее точные результаты. Существует так много вариантов использования, один из них заключается в том, что вы можете использовать это для прогнозирования использования кредита Snowflake:
create or replace table snowflake_credit_history as select TO_TIMESTAMP_NTZ(usage_date)::timestamp as usage_date, sum(credits_billed)::number credits from snowflake.account_usage.metering_daily_history group by all; --create forecasting create or replace snowflake.ml.forecast snow_credits ( INPUT_DATA => SYSTEM$REFERENCE('TABLE','snowflake_credit_history'), TIMESTAMP_COLNAME => 'usage_date', TARGET_COLNAME => 'credits' ); call snow_credits!FORECAST(FORECASTING_PERIODS => 30);
Машинное обучение стало более доступным и удобным для пользователей на платформах Snowflake с использованием функций на основе машинного обучения. Любой разработчик SQL может выполнять машинное обучение в Snowflake.
Это еще не все, вдобавок к этому Snowflake также позволяет вам создать собственную модель машинного обучения или перенести любую модель машинного обучения с полным жизненным циклом машинного обучения в Snowflake.
Удачного машинного обучения!
Отказ от ответственности: мнения, выраженные в этом сообщении, являются моими собственными и не обязательно мнением моего работодателя (Снежинка).