Як масштабувати розробку алгоритму?


18

Працюючи над аналітичним аналізом даних та розробкою алгоритмів, я знаходжу, що більшу частину свого часу я проводжу в циклі візуалізації, записую якийсь код, працює за невеликим набором даних, повторюю. Дані, які я маю, зазвичай є типом злиття з комп'ютерним зором / сенсором, а алгоритми важкі для зору (наприклад, виявлення та відстеження об'єктів тощо), і алгоритми, що знаходяться на полиці, не працюють у цьому контексті. Я вважаю, що для цього потрібно багато ітерацій (наприклад, набрати тип алгоритму або налаштувати параметри в алгоритмі, або отримати візуалізацію права), а також тривалість запуску навіть на невеликому наборі даних досить довга, тому все разом це потребує певного часу.

Як можна розробити алгоритм самостійно і зробити його більш масштабованим?

Деякі конкретні проблеми:

Як можна зменшити кількість повторень? (Окрім того, коли який алгоритм, не кажучи вже про його специфіку, не здається легко передбачити без спроб різних версій та вивчення їх поведінки)

Як працювати на великих наборах даних під час розробки? (Часто перехід від малого до великого набору даних - це коли бачите купу нової поведінки та нових проблем)

Як можна швидше налаштувати параметри алгоритму?

Як застосувати інструменти машинного навчання до самої розробки алгоритму? (Наприклад, замість того, щоб алгоритм писати вручну, напишіть кілька простих будівельних блоків і комбінуйте їх у спосіб, який вивчили з проблеми тощо)

Відповіді:


7

По-перше, якщо ваші дані мають стільки варіацій (у функції часу, контексту та інших), що ускладнює застосування єдиної стратегії, щоб впоратися з нею, можливо, вам буде цікаво зробити попередній часовий / контекстуальний /. Характеристика набору даних. Характеризація даних, тобто вилучення інформації про те, як змінюється обсяг або специфіка вмісту за деякими критеріями, зазвичай забезпечує краще розуміння (більш чітке та точне), ніж просто виведення алгоритмів на грубій основі.

Отже, відповідаючи на кожне запитання:

  1. характеристика, безумовно, є засобом зменшення кількості ітерацій , намагаючись вибрати належні алгоритми для конкретних даних;
  2. якщо у вас є дискретний набір критеріїв, за якими ваші дані змінюються, стає набагато простіше масштабувати рішення, оскільки ви будете знати, яку інформацію ви отримаєте / втратите, якби застосували простіші / конкретні рішення;
  3. після характеристики вам також буде простіше вибрати параметри, оскільки ви знаєте, з якими конкретними даними ви матимете справу;
  4. нарешті, ви можете використовувати алгоритми вилучення даних / машинного навчання для підтримки цієї характеристики. Це включає використання:
    • алгоритми кластеризації для зменшення розмірності даних;
    • алгоритми класифікації для вирішення конкретних властивостей можуть містити дані у функції часу / контексту / ...;
    • правила асоціації для прогнозування конкретних знань із набору даних, одночасно вдосконалюючи / чітко визначаючи дані, що використовуються для подальшого аналізу;
    • та інші можливі стратегії та аналізи.

А ось список деяких критеріїв , за якими для аналізу даних, які можуть виявитися корисними.


5

Дві речі, які можуть бути вам корисними:

  1. метанавчання для прискорення пошуку потрібної моделі та оптимальних параметрів. Мета навчання полягає у застосуванні інструментів машинного навчання до проблеми пошуку правильного інструменту / параметрів машинного навчання для проблеми. Наприклад, цей документ для практичного прикладу;

  2. gpucomputing для прискорення роботи алгоритму на великих наборах даних. Наприклад, OpenCV може використовувати графічні процесори , які дуже ефективні при обробці зображень / відеозаписів і можуть принести від 10 до 100 прискорень стосовно процесорів. Оскільки ваш комп'ютер, швидше за все, має графічний процесор, здатний на gpucomputing, ви можете отримати багато часу, використовуючи його.


4

Здогадується, що, ймовірно, ви бачили цю демонстрацію YouTube та пов’язану з ними Google Tech Talk , пов’язану з цими документами:

І цей набір коду на GitHub для OpenTLD . Якщо ви перевірте "читати мене" на GitHub тут, ви помітите, що вказано електронний лист автора (Zdenek Kalal) , тому, можливо, варто надіслати йому електронне повідомлення про ваші запитання або навіть запропонувати йому відповісти на це питання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.