Оптимальные проценты выборки
Оптимальные проценты выборки
Обзор стратегий сэмплирования
Для оптимизации производительности системы используются различные стратегии сэмплирования на разных этапах обработки данных. Это позволяет значительно ускорить процесс оптимизации без потери качества результатов.
Стратегии сэмплирования
graph TB
subgraph "Этапы оптимизации"
Start[Начальные данные]
First[Первые поколения]
Middle[Средние поколения]
Final[Финальные тесты]
end
subgraph "Стратегии"
VS[VolatilitySampling]
TS[TimeBasedSampling]
US[UniformSampling]
end
subgraph "Проценты выборки"
P5[5-10%]
P25[15-25%]
P100[100%]
end
subgraph "Качество результатов"
Q85[85-90%]
Q95[90-95%]
Q100[100%]
end
Start --> First
First --> Middle
Middle --> Final
First --> VS
Middle --> TS
Final --> US
VS --> P5
TS --> P25
US --> P100
P5 --> Q85
P25 --> Q95
P100 --> Q100Рекомендуемые проценты выборки
| Этап | Рекомендуемый % | Стратегия | Сохранение качества |
|---|---|---|---|
| Первые поколения | 5-10% | VolatilitySampling | 85-90% |
| Средние поколения | 15-25% | TimeBasedSampling | 90-95% |
| Финальные тесты | 100% | UniformSampling | 100% |
Стратегии сэмплирования
VolatilitySampling (5-10%)
- Применение: Первые поколения генетического алгоритма
- Принцип: Выборка на основе волатильности цены
- Преимущества: Быстрая оценка, сохранение ключевых паттернов
- Недостатки: Может пропустить стабильные периоды
TimeBasedSampling (15-25%)
- Применение: Средние поколения оптимизации
- Принцип: Равномерная выборка по времени
- Преимущества: Хороший баланс скорости и качества
- Недостатки: Может пропустить редкие события
UniformSampling (100%)
- Применение: Финальные тесты и валидация
- Принцип: Полная выборка всех данных
- Преимущества: Максимальная точность
- Недостатки: Медленная обработка
Оценка времени выполнения
Для 100k котировок на 1 CPU / 1 GB RAM:
graph LR
subgraph "Объем данных"
D100[100,000 котировок]
D25[25,000 котировок]
D10[10,000 котировок]
D5[5,000 котировок]
end
subgraph "Время обработки"
T120[~120 сек/агент]
T30[~30 сек/агент]
T12[~12 сек/агент]
T6[~6 сек/агент]
end
subgraph "Масштабирование"
S34000[34,000 дней]
S212[212 дней]
S85[85 дней]
S42[42 дня]
end
D100 --> T120
D25 --> T30
D10 --> T12
D5 --> T6
T120 --> S34000
T30 --> S212
T12 --> S85
T6 --> S42| Выборка | Котировок | Время/агент | 100 агентов | 9M комбинаций |
|---|---|---|---|---|
| 100% | 100,000 | ~120 сек | 3.3 часа | 34,000 дней (✗) |
| 25% | 25,000 | ~30 сек | 50 мин | 212 дней (✗) |
| 10% | 10,000 | ~12 сек | 20 мин | 85 дней (△) |
| 5% | 5,000 | ~6 сек | 10 мин | 42 дня (△) |
| GA (50 gen × 100 pop) | 5% | 6 сек | 8.3 часа | ✓ |
Рекомендации по настройке
Для разработки и тестирования
- Используйте 5-10% выборку для быстрой итерации
- Применяйте VolatilitySampling для выявления проблем
- Фокусируйтесь на ключевых параметрах
Для предварительной оптимизации
- Используйте 15-25% выборку для баланса
- Применяйте TimeBasedSampling для стабильности
- Оптимизируйте основные параметры
Для финальной валидации
- Используйте 100% выборку для точности
- Применяйте UniformSampling для полного покрытия
- Валидируйте все параметры
Оптимизация производительности
Параллельная обработка
performance:
large_data_processing:
enable_parallel_processing: true
max_parallel_workers: 4
enable_batch_processing: true
batch_size: 1000
Кэширование результатов
performance:
large_data_processing:
enable_caching: true
cache_ttl: "1h"
Адаптивная популяция
performance:
ml_optimization:
enable_adaptive_population: true
min_population_size: 25
max_population_size: 100
Мониторинг производительности
Метрики для отслеживания
ga_sampling_ratio— текущий процент выборкиga_processing_time— время обработки агентаga_population_size— размер популяцииga_generation_count— количество поколений
Алерты производительности
- Таймауты обработки (> 1200s)
- Высокое использование памяти (> 80%)
- Медленная сходимость (> 100 поколений)
Заключение
Правильный выбор стратегии сэмплирования критически важен для производительности системы. Рекомендуется:
- Начинать с малых выборок (5-10%) для быстрой итерации
- Увеличивать выборку (15-25%) для стабильной оптимизации
- Использовать полную выборку (100%) для финальной валидации
- Мониторить производительность и адаптировать стратегии
- Кэшировать результаты для повторного использования
Это позволяет достичь оптимального баланса между скоростью обработки и качеством результатов.