Кратко ръководство за избор на правилния алгоритъм за вашия конкретен проблем с машинното обучение

Това е въпрос, с който повечето учени по данни и практикуващи машинно обучение са се сблъсквали в някакъв момент от кариерата си. Изборът на правилния алгоритъм за машинно обучение, който да се приложи върху конкретен набор от данни, винаги е било предизвикателна задача. Предлага се голямо разнообразие от алгоритми за машинно обучение, вариращи от линейни модели като линейна или логистична регресия, поддържащи векторни машини (SVM), базирани на дървета модели като дървета на решения, произволни гори и градиентно усилени дървета на решения (GBDT) и накрая невронните Мрежи, които са съвсем различен клас алгоритми.

За да разберете правилния алгоритъм за вашия конкретен проблем с прогнозиране, можете да си зададете следните въпроси и в зависимост от отговорите си можете да направите кратък списък, ако не един, някои алгоритми и да ги изпробвате за задачата си за прогнозиране.

Q1. Размер на данните за обучение — Колко примера за обучение имате във вашия набор от данни?

Ако размерът на вашия набор от данни е много голям, алгоритми като невронни мрежи, опорни векторни машини (SVM), произволни гори и градиентно подсилени дървета на решения (GBDT) могат да бъдат добър избор, тъй като те могат да обработват големи масиви от данни. Всъщност невронните мрежи работят добре само когато им се доставя достатъчно количество данни. Докато алгоритми като линейна или логистична регресия, Naive Bayes не се представят толкова добре при голям набор от данни, те са подходящи за по-малък набор от данни.

Q2. Брой характеристики — Колко характеристики присъстват във вашия набор от данни?

Голям брой функции могат да повлияят на работата на някои алгоритми, както и да направят времето за обучение неосъществимо дълго. В такива случаи първо трябва да се опитате да намалите размерността на данните, като използвате техники за избор на функции, така че да премахнете характеристиките, които не допринасят много за прогнозирането на вашия модел. Освен това алгоритми като дълбоки невронни мрежи и ансамбълни модели обикновено се считат за способни да обработват хиляди характеристики, докато други алгоритми са скромни по своя капацитет.

Q3. Интерпретируемост — Вашият модел трябва ли да обяснява всяка своя прогноза?

Интерпретируемостта на модела е важна, защото ни позволява да предприемем конкретни действия за решаване на основния проблем. Някои от точните алгоритми като невронни мрежи и ансамбълни модели са известни като „черни кутии“, тъй като работата им е сложна и е много трудно да се разбере защо са направили конкретна прогноза. Следователно тези алгоритми не са интерпретируеми, докато алгоритми като K-най-близкия съсед (KNN), логистична регресия и опорни векторни машини (SVM) се считат за доста интерпретируеми и начинът, по който те правят своите прогнози, е много ясен.

Q4. Линейни срещу нелинейни данни — Вашите данни линейно разделими ли са?

Ако да, тогава линейните модели като логистична или линейна регресия, SVM с линейно ядро ​​могат да бъдат добър избор. Но ако данните са нелинейни, тогава тези алгоритми няма да могат да моделират вашите данни правилно. В такива случаи алгоритмите, базирани на дърво, като дървета на решенията, случайни гори, GBDT, както и невронни мрежи, ще работят по-добре.

Q5. Скорост на обучение — Колко време можете да отделите за обучение на вашия модел?

Известно е, че невронните мрежи и моделите за дълбоко обучение се обучават много бавно, тъй като имат голям брой параметри за настройка. Прости алгоритми като линейна или логистична регресия, дървета на решенията са много по-бързи. Докато случайните гори също могат да бъдат обучени бързо чрез използване на машина с множество ядра, което може значително да намали времето за обучение.

Q6. Скорост на прогнозиране — Колко бърз трябва да бъде вашият модел, когато правите прогнози? Вашият модел изисква ли висока производителност?

Например, самоуправляващите се автомобили се нуждаят от светкавично бърза скорост на прогнозиране, докато за други случаи, като диагностика на рак, ние се грижим повече за точността на прогнозата, отколкото за скоростта на прогнозиране. Алгоритми като SVM, линейна или логистична регресия и невронни мрежи имат изключително висока скорост на прогнозиране. Други като моделите KNN, Ensemble и Deep Learning са по-бавни.

Това са някои от често срещаните показатели, които се вземат предвид при подбора на алгоритъм, който да се приложи за конкретен проблем. Може да има допълнителни показатели, които трябва да се вземат предвид в зависимост от вида на проблема, който решавате. Освен това бих искал да подчертая факта, че опитът играе голяма роля при избора на правилния алгоритъм. Когато решавате все повече и повече проблеми с машинното обучение, толкова по-уверени ще бъдете в избора на правилния алгоритъм за даден проблем.

Така че продължавайте да практикувате и да решавате !!!