Машинно обучение в R за начинаещи с пример



Този блог за машинно обучение с R ви помага да научите основните концепции на машинното обучение и да внедрите различни алгоритми за машинно обучение с R.

Машинно обучение с R

Машинното обучение е настоящето и бъдещето! От механизма за препоръки на Netflix до самоуправляващата се кола на Google, всичко е машинно обучение. Този блог за Машинното обучение с R ви помага да разберете основните концепции на машинното обучение, последвано от различни алгоритми за машинно обучение и прилагане на тези алгоритми за машинно обучение с R.

Този блог на тема „Машинно обучение с R“ се състои от следните раздели:





Машинно обучение с R | Едурека

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

Fish1 - машинно обучение с R - Edureka



Откъде знаеш, че всички те са риби?



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

Така функционира нашият мозък, но какво да кажем за една машина? Ако едно и също изображение се подава към машина, как машината ще го идентифицира като риба?

Това е мястото, където М achine Learning ще влезем. Ще продължим да подаваме изображения на риба на компютър с етикет „риба“ до машината научава всички свързани функции с риба.

След като машината научи всички функции, свързани с риба, ние ще ѝ подадем нови данни, за да определим колко е научила.

как да задам classpath в Java в Windows 10

С други думи, Сурови данни / Данни за обучение се дава на машината, така че тя учи всички функции, свързани с Данни за обучение. След като обучението е направено, то се дава Нови данни / Тестови данни за да се определи колко добре е научила машината.

Нека продължим напред в този блог за машинно обучение с R и да разберем за видовете машинно обучение.

Видове машинно обучение

  • Контролирано обучение:

Алгоритъмът за контролирано обучение се учи от известен набор от данни (данни за обучение), който има етикети, за да прави прогнози.

Регресията и класификацията са някои примери за контролирано обучение.

# Класификация:

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

За този пример, ако на първото наблюдение е даден етикет „Мъж“, то то е правилно класифицирано, но ако му е дадено етикет „Жена“, класификацията е погрешна. По същия начин за второто наблюдение, ако даденият етикет е „Жена“, той е правилно класифициран, в противен случай класификацията е грешна.

# Регресия:

Регресията е контролиран учебен алгоритъм, който помага при определяне как една променлива влияе върху друга променлива.

Тук „Living_area“ е независимата променлива, а „price“ е зависимата променлива, т.е. ние определяме как варира „price“ по отношение на „living_area“.

  • Учене без надзор:

Алгоритъмът за учене без надзор прави изводи от данни, които нямат етикети.

Групиране е пример за учене без надзор. „K-означава“, „Йерархично“, „Размити C-средства“ са някои примери за алгоритми за групиране.

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

  • Подсилващо обучение:

Усилващото обучение е вид алгоритъм за машинно обучение, при който машина / агент в един заобикаляща среда научава идеално поведение, за да увеличи максимално неговото представяне. Необходима е проста обратна връзка за награда, за да може агентът да научи поведението му, това е известно като усилващ сигнал .

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

Внедряване на машинно обучение с R:

Линейна регресия:

Ще работим с набора от данни за диаманти, за да приложим алгоритъм на линейна регресия:

Описание на набора от данни:

Преди да изградим какъвто и да е модел върху данните, трябва да ги разделим на набори „влак“ и „тест“. Моделът ще бъде изграден върху комплекта „влак“ и неговата точност ще бъде проверен на комплекта „тест“.

Трябва да заредим пакета “caTools”, за да разделим данните на два набора.

библиотека (caTools)

Пакетът “caTools” предоставя функция “sample.split ()”, която помага при разделянето на данните.

sample.split (диаманти $ цена, SplitRatio = 0.65) -> split_index

65% от наблюденията от колона с цени са получили етикет „true“, а останалите 35% са получили етикет „false“.

подмножество (диаманти, split_index == T) -> влак подмножество (диаманти, split_index == F) -> тест

Всички наблюдения, които имат етикет „true“, са съхранени в „ влак ”обект и тези наблюдения с етикет „false“ са били присвоени на набора „test“.

Сега, когато разделянето приключи и имаме набори „влак“ и „тест“, е време да изградим модела на линейна регресия върху комплекта за обучение.

Ще използваме функцията „lm ()“, за да изградим модела на линейна регресия върху данните „влак“. Ние определяме цена на диамантите по отношение на всички други променливи от набора от данни. Вграденият модел се съхранява в обекта “mod_regress”.

lm (цена ~., данни = влак) -> mod_regress

Сега, след като сме изградили модела, трябва да правим прогнози на „тестовия“ набор. Функцията “predict ()” се използва за получаване на прогнози. Необходими са два аргумента: вграден модел и тестов комплект. Предсказаните резултати се съхраняват в обекта “result_regress”.

предсказване (mod_regress, test) -> result_regress

Нека обвържем действителните ценови стойности от набора от данни „test“ и прогнозираните стойности в един набор от данни, използвайки функцията „cbind ()“. Новият кадър от данни се съхранява в „Final_Data“

cbind (Действително = тест $ цена, Предсказано = резултат_регрес) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Поглед към „Final_Data“, който включва действителни стойности и прогнозирани стойности:

Нека да намерим грешката, като извадим предвидените стойности от действителните стойности и добавим тази грешка като нова колона към „Final_Data“:

(Final_Data $ Actual- Final_Data $ Predicted) -> грешка
cbind (Final_Data, грешка) -> Final_Data

Поглед към „Final_Data“, който също включва грешката в прогнозата:

Сега ще продължим и ще изчислим „ Основна грешка в средния квадрат “ което дава обща грешка за всички прогнози

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

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

Ще изградим нов модел на линейна регресия върху комплекта „влак“, но този път ще изпуснем колоните „x“ и „y“ от независимите променливи, т.е. „цената“ на диамантите се определя от всички колони с изключение на „x“ и „y“.

Изграденият модел се съхранява в “mod_regress2”:

lm (цена ~.-y-z, данни = влак) -> mod_regress2

Прогнозираните резултати се съхраняват в “result_regress2”

предсказване (mod_regress2, тест) -> result_regress2

Действителните и прогнозните стойности се комбинират и съхраняват в “Final_Data2”:

cbind (Действително = тест $ цена, Предсказано = резултат_регрес2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Нека добавим и грешката в прогнозирането към „Final_Data2“

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, грешка2) -> Final_Data2

Поглед към „Final_Data2“:

Намиране на основна грешка в средния квадрат, за да получите общата грешка:

rmse2<-sqrt(mean(Final_Data2$error^2))

разлики между html и xml

Виждаме, че „rmse2“ е незначително по-малко от „rmse1“ и следователно вторият модел е незначително по-добър от първия модел.

Класификация:

Ще работим с набора от данни „car_purchase“, който да приложим рекурсивно разделяне което е алгоритъм за класификация.

Нека разделим данните на набори „train“ и „test“, като използваме функцията „sample.split ()“ от пакета „caTools“.

библиотека (caTools)

65% от наблюденията от колона „Закупени“ ще получат етикети „ИСТИНСКИ“, а останалите ще получат етикети „FALSE“.

sample.split (car_purchase $ Purchased, SplitRatio = 0.65) -> split_values

Всички наблюдения, които имат етикет „TRUE“, ще се съхраняват в данните „влак“, а тези, които имат етикет „FALSE“, ще бъдат присвоени на данни „тест“.

подмножество (car_purchase, split_values ​​== T) -> train_data
подмножество (car_purchase, split_values ​​== F) -> test_data

Време е да изградим алгоритъма за рекурсивно разделяне:

Ще започнем, като заредим пакета ‘rpart’:

библиотека (rpart)

Графата „Закупен“ ще бъде зависимата променлива, а всички останали колони са независимите променливи, т.е. ние определяме дали лицето е купило автомобила или не по отношение на всички други колони. Моделът е изграден върху „train_data“ и резултатът се съхранява в „mod1“.

rpart (Закупен ~., данни = данни за влака) -> mod1

Нека начертаем резултата:

парцел (mod1, марж = 0,1) текст (mod1, pretty = T, cex = 0.8)

Сега нека продължим напред и да предскажем резултатите на „test_data“. Като първи аргумент даваме вградения rpart модел “mod1”, тестовият набор “test_data” като втори аргумент и тип на предвиждане като “клас” за третия аргумент. Резултатът се съхранява в обект ‘result1’.

предсказване (mod1, test_data, type = 'class') -> result1

Нека да оценим точността на модела, използвайки функцията “confusionMatrix ()” от пакета caret.

библиотека (карета) confusionMatrix (таблица (test_data $ Purchased, result1))

Матрицата на объркването ни казва, че от 90 наблюдения, при които лицето не е закупило автомобила, 79 наблюдения са правилно класифицирани като „Не“, а 11 са класифицирани погрешно като „ДА“. По същия начин, от 50 наблюдения, при които лицето действително е закупило автомобила, 47 са били правилно класифицирани като „ДА“, а 3 са били неправилно класифицирани като „НЕ“.

Можем да намерим точността на модела, като разделим правилните прогнози с общи прогнози, т.е. (79 + 47) / (79 + 47 + 11 + 3).

K-Средства клъстериране:

Ще работим с набор от данни „ирис“, за да приложим к-средства за групиране:

Нека да премахнем колоната „Видове“ и да създадем нов набор от данни, който включва само първите четири колони от набора от данни „ирис“.

ирис [1: 4] -> ирис_к

Нека приемем, че броят на клъстерите е 3. Функцията “Kmeans ()” взема входните данни и броя на клъстерите, в които данните трябва да бъдат групирани. Синтаксисът е: k означава (данни, k), където k е броят на клъстерните центрове.

kmeans (iris_k, 3) -> k1

Анализиране на клъстерирането:

str (k1)

Функцията str () дава структурата на kmeans, която включва различни параметри като insidess, betweenss и т.н., анализирайки кои можете да разберете ефективността на kmeans.

interss: Между сумата на квадратите, т.е.подобност на вътреклъстер

Withinss: В рамките на сума от квадрат, т.е.

totwithinss: Сума от цялата вътрешност на всички клъстери, т.е. Общо вътрешно-клъстерно сходство

Доброто клъстериране ще има по-ниска стойност „tot.withinss“ и по-висока стойност „betweenss“, което зависи от броя на избраните първоначално клъстери „k“.

Времето е назряло да станете експерт по машинно обучение, за да се възползвате от новите възможности, които ви се случват. Това ни води до края на това „ Машинно обучение с R ”Блог. Надявам се, че този блог е информативен ползотворен.

Edureka има специално подготвен което ви помага да придобиете опит в алгоритмите за машинно обучение като K-Means Clustering, Tree Treasures, Random Forest, Naive Bayes. Ще научите понятията за статистика, времеви редове, извличане на текст и въведение в дълбокото обучение. Скоро започват нови партиди за този курс !!