пятница, 29 ноября 2024 г.

AutoML, Hyper Param, Otus, peter-and-wolf

AutoML, Hyper Param

Shapely

The Shapely User Manual





H2o, Data

H2o, Data

Data In H2O — H2O documentation


LAMA, LightAutoML, Tools

LAMA, LightAutoML










четверг, 28 ноября 2024 г.

AutoKeras, Tools

AutoKeras


















Tools, Cat Boost

Tools, Cat Boost

Tools, Books

Tools



среда, 27 ноября 2024 г.

DVC, MLTools

DVC

https://dvc.org/

https://habr.com/ru/companies/raiffeisenbank/articles/461803/

https://habr.com/ru/articles/776014/

https://mlops-guide.github.io/Versionamento/

FinGPT-Forecaster, MLTools

FinGPT-Forecaster

https://huggingface.co/FinGPT

https://ai4finance-foundation.github.io/FinNLP/

https://huggingface.co/spaces/FinGPT/FinGPT-Forecaster

https://github.com/AI4Finance-Foundation/FinGPT


crontab guru, cronitor, MLTools

https://crontab.guru/

https://crontab.guru/every-5-minutes

https://github.com/yinheli/crontab.guru/blob/master/docs/every-8-hours

ClearML, Habr, MLTools

ClearML, Habr

https://clear.ml/

https://habr.com/ru/articles/691314/

MLflow, Habr, MLTools

MLflow, Habr


MLflow - это инструмент для управления жизненным циклом машинного обучения: отслеживание экспериментов, управление и деплой моделей и проектов. В этом руководстве мы посмотрим, как организовать эксперименты и запуски, оптимизировать гиперпараметры с помощью optuna, сравнивать модели и выбирать лучшие параметры. Также рассмотрим логирование моделей, использование их в разных форматах, упаковку проекта в MLproject и установку удаленного Tracking Server MLflow.

вторник, 12 ноября 2024 г.

mlfinlab, hudson

financial ML tool - Prog.World

financial ML tool

If you've tried to apply machine learning techniques to financial data, you've probably encountered a lot of pitfalls, from noisy data to autocorrelation problems. mlfinlab is a library that implements advanced techniques from the book of Marcos Lopez de Prado”Advances in Financial Machine Learning“. It allows you not to reinvent the wheel, but to use time-tested methods to solve complex problems of financial ML.

Let's start with installation. Nothing complicated:

pip install mlfinlab

Now let's import the necessary modules:

import pandas as pd
import numpy as np
import mlfinlab

Extracting data

For example, we will use historical data on Apple shares (ticker: AAPL). Let's use the library yfinance to download data.

import yfinance as yf

ticker="AAPL"
data = yf.download(ticker, start="2020-01-01", end='2021-01-01', interval="1d")
prices = data['Close']

Bar markings

Regular time bars can be misleading due to uneven market activity. mlfinlab offers an alternative – creating bars based on volume, dollars or number of ticks.

Let's create dollar bars with a threshold of 1 million dollars.

from mlfinlab.data_structures import StandardBars

db = StandardBars(bar_type="dollar", threshold=1e6)
dollar_bars = db.batch_run(data)

The data is now grouped by actual market activity.

Event marking

Determining significant price changes is an important point in financial marketing. We use CUSUM filter to identify trend change points.

from mlfinlab.filters.filters import cusum_filter

threshold = 0.02  # 2% изменение цены
events = cusum_filter(prices, threshold=threshold)

We received a list of dates when the price changed by more than 2%. These are potential entry or exit points.

Triple barrier to help

Now we need to assign labels to our events so that the model can learn. We use the method Triple Barrier Method.

from mlfinlab.labeling.labeling import get_events, get_bins

# Устанавливаем вертикальные барьеры через 5 дней
vertical_barriers = mlfinlab.labeling.add_vertical_barrier(t_events=events, close=prices, num_days=5)

# Получаем события с учетом тройного барьера
events = get_events(close=prices,
                    t_events=events,
                    pt_sl=[1, 1],  # Устанавливаем пороги прибыли и убытка
                    target=None,
                    min_ret=0.01,
                    vertical_barrier_times=vertical_barriers)

# Получаем метки
labels = get_bins(events=events, close=prices)

Now there are tags that take into account not only price changes, but also the time factor.

Applying meta labeling

Financial data is often unbalanced: the number of successful transactions may be significantly lower than the number of unsuccessful ones. Meta labeling helps solve this problem.

from mlfinlab.meta_labeling.meta_labeling import MetaLabeling

meta = MetaLabeling()
meta_labels = meta.get_meta_labels(events, prices)

Meta-labeling can improve the accuracy of a model by teaching it to recognize the conditions under which initial predictions should be trusted.

Accounting for autocorrelation

Autocorrelation may cause the model to overfit. We use the method Computation of the Effective Sample Size (ESS).

from mlfinlab.sample_weights import get_weights_by_time_decay

# Получаем веса с учетом времени
weights = get_weights_by_time_decay(meta_labels['t1'], decay=0.5)

This allows you to adjust the sample weights, reducing the impact of autocorrelation on the model.

Now you can train the model

It's time to train our model. We use XGBoostbecause why not?

import xgboost as xgb
from sklearn.model_selection import train_test_split

# Подготавливаем данные
X = prices.loc[labels.index].to_frame()
y = labels['bin']

# Разбиваем на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# Создаем DMatrix для XGBoost
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# Задаем параметры модели
params = {
    'objective': 'binary:logistic',
    'eval_metric': 'auc',
}

# Обучаем модель
bst = xgb.train(params, dtrain, num_boost_round=100)

Let's look at the quality of our model.

from sklearn.metrics import classification_report

# Предсказываем
y_pred = bst.predict(dtest)
y_pred_binary = [1 if y > 0.5 else 0 for y in y_pred]

# Выводим отчет
print(classification_report(y_test, y_pred_binary))

To make sure that our model is not overtrained, we use the method Walk-forward validation.

from mlfinlab.cross_validation.cross_validation import ml_cross_val_score

scores = ml_cross_val_score(bst, X, y, cv=5, sample_weight=weights)
print('Средний AUC: ', np.mean(scores))

Conclusion

We went through the main functions mlfinlab and saw how this library makes life easier.

Where to go next?

  • Explore Fractionally Differentiated Features to create stationary time series.

  • Try it Bet Sizing for capital management.

  • Research Clustering Algorithms to identify hidden patterns.

You can find out more about the library read here.

On October 28, an open lesson will be held on the topic “Building a sales agent based on reinforcement learning algorithms.” Participants will learn how to build a financial market model, create and train a sales agent using a specialized framework. If interested, sign up for a lesson on the ML for Financial Analysis course page.

HUDSON, mlfinlab, Pulse, ML

Machine Learning Financial Laboratory (mlfinlab)

понедельник, 4 ноября 2024 г.

MS, WSL, Linux, Windows

WSL

Access to Linux from Windows

https://learn.microsoft.com/ru-ru/windows/wsl/install

Giga chat. Deep RL01

1. Использование WSL (Windows Subsystem for Linux):

Самый простой способ получить доступ ко всем возможностям Linux на Windows — использовать

подсистему Windows для Linux (WSL). Это позволит вам запускать Ubuntu или другую дистрибутив

Linux прямо внутри Windows без использования виртуальной машины.

После установки WSL вы сможете следовать инструкциям по установке и настройке SLM-Lab так же,

как на Linux-машине.

Инструкции по установке WSL можно найти на официальном сайте Microsoft: Документация по WSL.

2. Установка зависимостей и настройка среды:

Для работы с Python-библиотеками и фреймворками, такими как SLM-Lab, обычно требуется

установка соответствующих пакетов и зависимостей. Если вы используете WSL, то можете устанавливать пакеты через pip или conda, как на обычной Linux-системе.

3. Работа с Visual Studio Code (VSCode):

Visual Studio Code поддерживает интеграцию с WSL. Это означает, что вы можете открывать

проекты в WSL и редактировать файлы непосредственно в VSCode, используя возможности удаленной

разработки. Вам потребуется установить расширение Remote Development Pack для VSCode.

Инструкция по настройке работы с WSL в VSCode доступна на официальной странице расширения:

Remote Development in WSL.

Итоговый план действий:

  1. Установить WSL на вашем компьютере с Windows.
  2. Открыть терминал WSL.
  3. Клонировать репозиторий SLM-Lab и перейти на нужную ветку (book), как указано в инструкции.
  4. Установить необходимые зависимости с помощью скрипта ./bin/setup.
  5. Настроить Visual Studio Code для работы с проектом в WSL с помощью расширения Remote Development.
  6. Следовать дальнейшим инструкциям из книги для запуска примеров и выполнения экспериментов.

Таким образом, при правильной настройке WSL и VSCode вы сможете комфортно работать с примерами и экспериментировать с библиотекой SLM-Lab на Windows.

Работа с виртуальными машинами (VM) действительно является еще одним вариантом для запуска Linux-среды на Windows. Давайте рассмотрим плюсы и минусы этого подхода по сравнению с использованием WSL.

Плюсы работы с виртуальной машиной:

  1. Полноценная среда:Виртуальная машина предоставляет полноценную операционную систему Linux, включая графический интерфейс, если он необходим. Это дает возможность полностью контролировать среду и настраивать её под конкретные нужды.
  2. Изоляция:Все процессы и приложения работают внутри виртуальной машины, что обеспечивает изоляцию от основной системы. Это снижает риск повреждения хостовой системы и упрощает управление ресурсами.
  3. Совместимость:Некоторые программы и инструменты могут лучше работать в полноценной Linux-системе, чем в WSL, особенно те, которые требуют специфических настроек или аппаратной поддержки.
  4. Портативность:Можно легко переносить виртуальную машину между различными компьютерами или системами, сохраняя все настройки и данные.

Минусы работы с виртуальной машиной:

  1. Производительность:Запуск виртуальной машины требует дополнительных ресурсов процессора, памяти и дискового пространства. Это может привести к снижению производительности по сравнению с нативным выполнением программ.
  2. Настройка:Создание и настройка виртуальной машины может потребовать больше времени и усилий, чем установка WSL. Нужно выбрать гипервизор (например, Hyper-V, VirtualBox, VMware), установить гостевую ОС и настроить сетевые подключения.
  3. Интеграция с хостовой системой:Интеграция между виртуальной машиной и хостовой системой может быть менее удобной, чем у WSL. Например, обмен файлами и копирование данных между двумя системами может требовать дополнительных шагов.
  4. Обновления и поддержка:Поддержание актуальности виртуальной машины и всех установленных приложений может занять больше времени, поскольку обновления нужно выполнять отдельно для каждой виртуальной среды.

Сравнение с WSL:

  • Производительность:WSL работает быстрее, так как использует ядро хоста и минимизирует накладные расходы на эмуляцию оборудования.
  • Удобство использования:Работа с WSL интегрирована в Windows, что делает её более удобной для повседневного использования. Вы можете быстро переключаться между командной строкой Windows и WSL без необходимости перезагрузки или входа в другую систему.
  • Поддержка:Microsoft активно развивает WSL и регулярно выпускает обновления, улучшая производительность и стабильность. В случае виртуальной машины вам придется самостоятельно следить за обновлениями и поддерживать работоспособность системы.

Заключение:

Если ваша цель — максимально простая и производительная среда для работы с SLM-Lab и другими инструментами глубокого обучения, то WSL может оказаться лучшим выбором. Он интегрируется с Windows, требует меньше ресурсов и проще в настройке.

Однако, если вам нужна полная свобода в управлении средой, графический интерфейс или дополнительные функции, недоступные в WSL (например, некоторые низкоуровневые драйверы), то виртуальная машина может стать предпочтительным решением.

Эксплуатация модели, созданной в Linux, на платформе Windows возможна, но потребует некоторых дополнительных шагов. Вот несколько вариантов, как это можно реализовать:

1. Создание кросс-платформенной модели

Если модель разрабатывается с использованием кросс-платформенных библиотек и инструментов (таких как TensorFlow, PyTorch, Keras и др.), то экспортированная модель должна быть совместима с обеими платформами. Для этого необходимо:

  • Использовать стандартные форматы экспорта моделей, такие как ONNX, SavedModel (для TensorFlow) или TorchScript (для PyTorch).
  • Убедиться, что все зависимости, используемые моделью, доступны и на целевой платформе (Windows).

2. Экспорт модели в стандартный формат

Для переноса модели с одной платформы на другую часто используют универсальные форматы, такие как Open Neural Network Exchange (ONNX):

  • Экспорт модели из Python в формате ONNX.
  • Импорт модели в Windows-приложение с использованием ONNX Runtime или других поддерживающих этот формат библиотек.

Пример экспорта модели в ONNX для PyTorch:

import torch
from torch.onnx import export

# Предположим, что model — это ваша обученная модель
model.eval()
dummy_input = torch.randn(1, 3, 224, 224)
export(model, dummy_input, "model.onnx")

Затем в Windows-приложении можно загрузить и использовать эту модель с помощью ONNX Runtime:

import onnxruntime as rt
sess = rt.InferenceSession("model.onnx")
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
pred_onx = sess.run([label_name], {input_name: x})[0]

3. Контейнеризация

Один из самых надежных способов обеспечить переносимость модели — это контейнеризация с использованием Docker. Контейнеры позволяют упаковывать всю необходимую среду вместе с моделью, обеспечивая одинаковую работу на любой платформе.

  • Создайте Docker-образ с вашей моделью и всеми необходимыми зависимостями.
  • Запустите этот образ на сервере или рабочей станции с Windows, используя Docker Desktop.

Пример Dockerfile для контейнера с моделью:

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "main.py"]

4. API-сервис

Если модель слишком сложная для локального развертывания на Windows, можно создать API-сервис, который будет обрабатывать запросы на предсказание. Этот сервис может быть размещен на сервере с Linux, а клиенты на Windows будут отправлять запросы через HTTP.

  • Разверните модель на сервере с Linux, используя Flask, FastAPI или другой веб-фреймворк.
  • Создайте клиентское приложение на Windows, которое будет отправлять запросы к этому API.

Пример простого Flask-сервиса:

from flask import Flask, request, jsonify
import numpy as np
import tensorflow as tf

app = Flask(__name__)
model = tf.keras.models.load_model('my_model.h5')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json['data']
    input_data = np.array(data, dtype=np.float32)
    prediction = model.predict(input_data)
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Заключение

Наиболее удобным способом эксплуатации модели, разработанной в Linux, на платформе Windows

будет использование кросс-платформенных форматов экспорта моделей (например, ONNX) или

контейнеризация (Docker). Эти подходы позволят избежать проблем с совместимостью и

обеспечат стабильную работу модели на обеих платформах.

Вы абсолютно правы! Библиотека SLM-Lab написана на Python, и сам язык Python является кросс-платформенным, что означает, что он может работать на разных операционных системах, включая Windows, Linux и macOS. Таким образом, теоретически, вы должны иметь возможность работать с этой библиотекой в Windows с использованием VSCode без каких-либо серьезных препятствий.

Почему возникают сложности?

Основная причина возможных трудностей заключается в том, что многие библиотеки и фреймворки, используемые в глубоком обучении, могут зависеть от специфичных для операционной системы компонентов или иметь разные версии зависимостей для разных платформ. Например:

  1. Зависимости:Некоторые библиотеки могут требовать установки дополнительных пакетов или зависимостей, которые могут отличаться для Windows и Linux. Например, библиотеки для работы с графикой (OpenGL) или мультимедиа (FFmpeg) могут иметь различные версии для разных операционных систем.
  2. Поддержка GPU:Если вы планируете использовать GPU для ускорения вычислений, то вам понадобится соответствующий драйвер CUDA, который доступен только для Linux и Windows. В этом случае вам может потребоваться дополнительная настройка окружения для работы на Windows.
  3. Совместимость с библиотеками:Хотя Python-коды являются кросс-платформенными, некоторые сторонние библиотеки могут быть оптимизированы для конкретной операционной системы. Например, некоторые библиотеки могут работать быстрее на Linux благодаря лучшей поддержке многопоточных вычислений или оптимизации под конкретное оборудование.

Как решить проблему?

Чтобы успешно работать с библиотекой SLM-Lab на Windows, вам следует предпринять следующие шаги:

  1. Установите Python и необходимые библиотеки:Убедитесь, что у вас установлена последняя версия Python и все необходимые библиотеки, указанные в требованиях SLM-Lab. Используйте pip для установки зависимостей.
  2. Проверьте совместимость зависимостей:Проверьте, какие версии библиотек требуются для Windows. Возможно, вам придется вручную изменить некоторые зависимости в файле requirements.txt или использовать альтернативные библиотеки, если оригинальные не поддерживают Windows.
  3. Используйте Anaconda или Miniconda:Anaconda и Miniconda предоставляют удобные средства управления пакетами и виртуальными окружениями, что может упростить установку и настройку необходимых библиотек.
  4. Настройте GPU-драйвера (если необходимо):Если вы хотите использовать GPU, убедитесь, что установлены последние версии драйверов NVIDIA и CUDA Toolkit.
  5. Тестируйте примеры:Попробуйте запустить простые примеры из документации SLM-Lab, чтобы убедиться, что всё работает корректно. Если возникнут ошибки, попробуйте искать решения в интернете или обратиться за помощью на форумах и в сообществах разработчиков.

Заключение

Работать с библиотекой SLM-Lab в Windows с использованием VSCode вполне реально,

однако это может потребовать дополнительной настройки и проверки совместимости зависимостей.

Если вы столкнетесь с проблемами, не стесняйтесь обращаться за помощью к сообществу разработчиков

или авторам библиотеки.

Действительно, если основная часть работы связана с подготовкой среды,

которая тесно интегрирована с Windows, то имеет смысл сосредоточиться именно на этой части процесса. В таком случае можно разделить разработку на два этапа:

  1. Подготовка среды и разметка данных:
    • Проводится на Windows, где у вас есть доступ ко всей необходимой инфраструктуре и инструментам.
    • Включает сбор данных, их обработку, разметку и подготовку для дальнейшего использования в моделях глубокого обучения.
  2. Тренировка и тестирование моделей:
    • Может проводиться либо на той же машине с Windows (если хватает вычислительных мощностей), либо на отдельной машине с Linux, где вы будете использовать алгоритмы глубокого обучения и фреймворки типа TensorFlow или PyTorch.

Подготовка среды и данных на Windows

На этапе подготовки среды и сбора данных важно уделить внимание следующим аспектам:

  • Сбор данных:Собирайте данные, которые будут использоваться для тренировки модели. Это могут быть логи событий, видео, изображения, текстовые данные и т.д.
  • Предварительная обработка данных:Очистите данные от шума, нормализуйте их, преобразуйте в нужный формат. Например, если вы работаете с изображениями, можно использовать библиотеки типа OpenCV для обработки изображений.
  • Разметка данных:Если ваши данные требуют ручной разметки (например, аннотация объектов на изображениях), используйте специализированные инструменты для этого. Например, LabelImg для разметки изображений или другие аналогичные инструменты.
  • Форматирование данных:Преобразуйте данные в формат, подходящий для использования в нейронных сетях. Например, создайте датасеты в формате CSV, TFRecord или другом, удобном для загрузки в модель.

Тренировка и тестирование модели

После того как данные готовы, можно переходить к этапу тренировки модели. Здесь у вас два варианта:

Вариант 1: Тренировка на Windows

Если у вас достаточно мощные ресурсы на Windows-машине (особенно если есть GPU), вы можете тренировать модель прямо на этой машине. Для этого:

  • Установите необходимые библиотеки и фреймворки (TensorFlow, PyTorch и т.п.).
  • Загрузите подготовленные данные и начните тренировку модели.
  • Оценивайте результаты, проводите гиперпараметрическую оптимизацию и улучшайте архитектуру модели.

Вариант 2: Перенос данных на Linux для тренировки

Если мощности Windows-машины ограничены или вы предпочитаете использовать Linux для тренировок, можно перенести подготовленные данные на Linux-сервер или рабочую станцию:

  • Скопируйте данные на машину с Linux.
  • Установите нужные библиотеки и фреймворки.
  • Начните тренировку модели, используя алгоритмы из SLM-Lab или другие доступные библиотеки.

Рекомендации

  • Автоматизация процессов:Постарайтесь автоматизировать как можно больше этапов подготовки данных и тренировки модели. Используйте скрипты для обработки данных, создания датасетов и запуска тренировок.
  • Контейнеризация:Рассмотрите возможность использования Docker для упаковки ваших моделей и зависимостей. Это поможет избежать проблем с совместимостью и упростит перенос модели между разными машинами.
  • Мониторинг и визуализация:Используйте инструменты типа TensorBoard для мониторинга прогресса тренировки и анализа результатов.

Таким образом, разделение процесса на этапы подготовки среды и тренировки моделей

позволит вам эффективно использовать сильные стороны обеих операционных систем:

Windows для подготовки данных и Linux для мощных вычислительных операций.