Въведение в алгоритмите за машинно обучение

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

Категории на алгоритми за машинно обучение

Полето на алгоритмите за машинно обучение може да бъде категоризирано в -

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

Разделение на алгоритми за машинно обучение

Проблемите в алгоритмите за машинно обучение могат да бъдат разделени на -

  • Регресия - Съществува непрекъсната връзка между зависимите и независимите променливи. Целевата променлива има числен характер, докато независимите променливи могат да бъдат цифрови или категорични.
  • Класификация - Най-често срещаният проблем, който бихте намерили в реалния свят, е класифицирането на точка от данни в някакъв двоичен, мултиномен или порядъчен клас. В проблема с бинарна класификация целевата променлива има само два резултата (Да / Не, 0/1, вярно / невярно). В проблема с мултиномалната класификация има няколко класа в целевата променлива (Apple / Orange / Mango и т.н.). В задачата за класифициране на ординарната цел се подрежда променливата (например - степента на учениците).

Сега, за да разрешат този вид проблеми, програмистите и учените са разработили някои програми или алгоритми, които могат да се използват върху данните, за да правят прогнози. Тези алгоритми могат да бъдат разделени на линейни и нелинейни или базирани на дърво алгоритми. Линейни алгоритми като линейна регресия, логистична регресия обикновено се използват, когато има линейна връзка между характеристиката и целевата променлива, докато данните, които показват нелинейни модели, дървовидни методи, като дърво на решения, случайна гора, увеличаване на градиент и др. и др., се предпочитат.

Досега имахме кратка интуиция за машинното обучение. Сега бихте научили някои от неговите предварително програмирани алгоритми, които бихте могли да използвате в следващия си проект.

алгоритми

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

По-долу са някои от алгоритмите за машинно обучение, заедно с примерни фрагменти от код в python.

1. Линейна регресия

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

y = a * x + b + e, където y е целевата променлива, която се опитваме да предвидим, a е прехващането и b е наклонът, x е нашата зависима променлива, използвана за извършване на прогнозата. Това е проста линейна регресия, тъй като има само една независима променлива. В случай на множествена линейна регресия уравнението би било -

y = a1*x1 + a2*x2 + …… + a(n)*x(n) + b + e

Тук e е терминът за грешка и a1, a2 .. a (n) са коефициентът на независимите променливи.

За да се оцени производителността на модела, се използва показател, който в този случай може да бъде Root Mean Square Error, който е квадратен корен на средната стойност на сумата на разликата между действителните и прогнозираните стойности.

Целта на линейна регресия е да намери най-подходящата линия, която би минимизирала разликата между действителните и предвидените точки от данни.

Линейната регресия може да бъде написана на Python, както е по-долу -

2. Логистична регресия

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

В случай на мултикласов проблем функцията softmax се предпочита, тъй като сигмоидната функция отнема много време за изчисление.

Коефициентът, използван за оценка на класификационен проблем, обикновено е точност или кривата на ROC. Колкото повече е площта под ROC, толкова по-добър е моделът. Случайна графика би имала AUC 0, 5. Стойността 1 показва най-голяма точност, докато 0 означава най-малка точност.

Логистичната регресия може да бъде написана при ученето като -


3. K-Най-близките съседи

Алгоритмите за машинно обучение могат да се използват както за проблеми с класификацията, така и за регресия. Идеята на метода на KNN е, че той прогнозира стойността на нова точка от данни въз основа на своите K Най-близки съседи. K обикновено се предпочита като нечетно число, за да се избегне конфликт. Докато класифицирате всяка нова точка от данни, класът с най-висок режим в съседите се взема предвид. Докато за проблема с регресията средната стойност се счита за стойността.

Научих, че KNN се пише като -


KNN се използва при изграждането на двигател с препоръки.

4. Поддръжка на векторни машини

Алгоритъм за класификация, при който хиперплан разделя двата класа. При проблем с бинарна класификация два вектора от два различни класа се считат за известни като опорни вектори, а хиперпланът се изчертава на максимално разстояние от опорните вектори.

Както можете да видите, една линия разделя двата класа. Въпреки това, в повечето случаи данните не биха били толкова съвършени и обикновен хиперплан не би могъл да раздели класовете. Следователно, трябва да настроите параметри като Regularization, Kernel, Gamma и т.н.

Ядрото може да бъде линейно или полиномно в зависимост от това как се разделят данните. В този случай ядрото е с линеен характер. В случай на регуларизация, трябва да изберете оптимална стойност на C, тъй като високата стойност може да доведе до преобличане, докато малка стойност би могла да се окаже недостатъчна за модела. Влиянието на единичен пример за обучение се определя от Gamma. Точките близо до линията се считат за висока гама и обратно, за ниска гама.

В sklearn SVM се пише като -


5. Наивен Байес

Той работи на принципа на теоремата на Байес, който открива вероятността от събитие, като се имат предвид някои истински условия. Теоремата на Байес е представена като -

Алгоритъмът се нарича Naive, защото смята, че всички променливи са независими и наличието на една променлива няма никакво отношение към другите променливи, което никога не е така в реалния живот. Naive Bayes може да се използва в класификацията на електронната поща и в класификацията на текстове.

Код Naive Bayes в Python -

6. Дърво на решения

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

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

В sklearn, дърветата на решения се кодират като -



7. Случайна гора

За да се намали прекаляването в дървото на решенията, е необходимо да се намали дисперсията на модела и по този начин концепцията за пакетиране се появи. Baging е техника, при която изходът на няколко класификатори се взема за формиране на крайния резултат. Random Forest е един такъв метод за пакетиране, при който наборът от данни се изважда в множество набори от данни и функциите се избират произволно за всеки набор. След това върху всяка извадка от данни се прилага алгоритъмът на дървото за решение, за да се получи изходът от всеки режим. В случай на проблем с регресията се приема средната стойност на изхода на всички модели, докато в случай на проблем с класификацията се счита, че класът, който получава максимален вот, класифицира точката с данни. Случайната гора не се влияе от отшелници, липсващи стойности в данните, а също така помага и за намаляване на размерите. Въпреки това, не е интерпретируем кой недостатък за Random Forest. В Python бихте могли да кодирате Random Forest като -


8. К-означава клъстериране

Досега работихме с контролирани проблеми с обучението, където за всеки вход има съответен резултат. Сега бихме научили за обучението без надзор, когато данните са без етикет и трябва да бъдат групирани в конкретни групи. Налични са няколко техники за клъстериране. Най-често срещаният от тях обаче е групирането на K-средства. Ink-означава, k се отнася до броя на клъстерите, които трябва да бъдат настроени, преди да се поддържа максимална разлика в набора от данни. След като k е зададен, центроидите се инициализират. След това центроидите се регулират многократно, така че разстоянието между точките на данни в центъра е максимално и разстоянието между две отделни е максимално. Евклидово разстояние, разстояние от Манхатън и др. Са някои от формулите за разстояние, използвани за тази цел.

Стойността на k може да се намери от метода на лакътя.

К-клъстерирането на средства се използва в индустриите за електронна търговия, където клиентите са групирани заедно въз основа на техните поведенчески модели. Може да се използва и в Risk Analytics. По-долу е кодът на python -


Заключение: Алгоритми за машинно обучение

Data Scientist е най-сексапилната работа през 21- ви век, а машинното обучение със сигурност е една от основните му области на опит. За да бъде Data Scientist, човек трябва да притежава задълбочено разбиране на всички тези алгоритми, както и няколко други нови техники, като Deep Learning.

Препоръчителни статии

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

  1. Техники за машинно обучение
  2. Какво е дълбокото обучение
  3. Data Scientist срещу машинно обучение
  4. Контролирано обучение срещу необучено обучение
  5. Хиперпараметрово машинно обучение
  6. Какво е усилване на обучението?
  7. Най-използваните техники на ансамбълното обучение
  8. Пълно ръководство за примери на алгоритъм C ++
  9. Ръководство за етапите на жизнения цикъл на машинното обучение

Категория: