Чи можна підтримувати векторну машину підтримки у великих даних?


13

З обмеженими знаннями, які я маю про SVM, це добре для короткої та жирної матриці даних (безліч функцій і не надто багато примірників), але не для великих даних.X

Я розумію, одна з причин - матриця ядра - це матриця де є кількість екземплярів даних. Якщо у нас є 10000 даних, матриця буде мати елементів і може займати ~ 80G пам'яті.Kn×nnK1010

Чи є модифікація SVM, яку можна використовувати у великих даних? (Скажіть у масштабі від 100 К до 1М точок даних?)


Це допомогло б потенційним респондентам, якби ви обговорили мету СВМ за межі просто "великих даних". Це сказало, і нічого іншого не знаючи про ваш запит, чи є якась причина, що SVM не може бути використаний в алгоритмі ділення та перемоги?
Майк Хантер

Для чого ви використовуєте SVM? Чи можете ви використати альтернативний метод?
Том

Відповіді:


12

Як ви вже згадували, для зберігання матриці ядра потрібна пам'ять, яка масштабується квадратично з кількістю точок даних. Час навчання традиційних алгоритмів SVM також масштабується надлінійно з кількістю точок даних. Отже, ці алгоритми недоцільні для великих наборів даних.

Один з можливих прийомів - переформулювати кернелізований SVM як лінійний SVM. Кожен елемент матриці ядра представляє крапковий добуток між точками даних та після відображення їх (можливо, нелінійно) в простір функцій: . Зображення простору функційKijxixjKij=Φ(xi)Φ(xj)Φвизначається неявно функцією ядра, і kernelized SVM не чітко обчислює представлення простору функцій. Це обчислювально ефективно для наборів даних малого та середнього розміру, оскільки простір можливостей може бути дуже великим або навіть нескінченним. Але, як зазначено вище, це стає нездійсненним для великих наборів даних. Натомість ми можемо чітко відображати дані нелінійно у просторі функцій, а потім ефективно тренувати лінійну SVM на представленнях простору функцій. Зображення простору функцій може бути побудоване для наближення даної функції ядра, але використовувати менші розміри, ніж "повне" відображення простору функцій. Для великих наборів даних це все ще може дати нам багаті представлення простору функцій, але з набагато меншими розмірами, ніж точки даних.

Один із підходів до наближення ядра використовує наближення Ністрьома (Williams і Seeger 2001). Це спосіб наближення власних значень / власних векторів великої матриці за допомогою меншої підматриці. Інший підхід використовує рандомізовані функції і його іноді називають «випадковими кухонними мийками» (Rahimi and Recht 2007).

Ще один трюк для навчання SVM на великих наборах даних - наближення проблеми оптимізації за допомогою набору менших підпроблем. Наприклад, використання стохастичного градієнтного спуску для первинної проблеми є одним із підходів (серед багатьох інших). На фронті оптимізації було зроблено багато робіт. Менон (2009) дає хороше опитування.

Список літератури

Вільямс і Зеєгер (2001). Використання методу Nystroem для прискорення роботи ядер.

Рахімі і Рехт (2007). Випадкові функції для масштабних машин ядра.

Менон (2009) . Масштабні підтримуючі векторні машини: Алгоритми та теорія.

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