Машинное обучение в R для начинающих на примере



Этот блог о машинном обучении с R поможет вам изучить основные концепции машинного обучения и реализовать различные алгоритмы машинного обучения с помощью R.

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

Машинное обучение - это настоящее и будущее! От системы рекомендаций Netflix до беспилотных автомобилей Google - все это машинное обучение. Этот блог о машинном обучении с R поможет вам понять основные концепции машинного обучения, за которым следуют различные алгоритмы машинного обучения и реализовать эти алгоритмы машинного обучения с помощью R.

Этот блог «Машинное обучение с R» состоит из следующих разделов:





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

что такое повар и марионетка

Понимание машинного обучения

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



Откуда вы знаете, что все это рыбы?



В детстве вы могли встретить изображение рыбы, и ваши воспитатели в детском саду или родители сказали бы вам, что это рыба, и у нее есть некоторые специфические особенности, связанные с ней, например, у нее есть плавники, жабры, пара глаза, хвостик и так далее. Теперь, когда ваш мозг встречает изображение с таким набором функций, он автоматически регистрирует его как рыбу, потому что ваш мозг научился что это рыба.

Так работает наш мозг, а как насчет машины? Если то же изображение подается в машину, как машина распознает, что это рыба?

Здесь M ачин обучение входит. Мы будем продолжать загружать изображения рыб в компьютер с тегом «рыба», пока машина изучает все связанные функции с рыбы.

Как только машина изучит все функции, связанные с рыбой, мы скормим ей новые данные, чтобы определить, сколько она узнала.

Другими словами, Необработанные данные / данные обучения дается машине, чтобы она учится все функции, связанные с Данные обучения. Как только обучение закончено, ему дается Новые данные / данные испытаний чтобы определить, насколько хорошо машина научилась.

Давайте продолжим в этом блоге «Машинное обучение с R» и разберемся с типами машинного обучения.

Типы машинного обучения

  • Обучение с учителем:

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

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

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

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

В этом примере, если первое наблюдение получает ярлык «Мужчина», тогда оно правильно классифицируется, но если ему присваивается ярлык «Женщина», классификация неверна. Точно так же и во втором наблюдении, если дана метка «Женщина», это правильно, иначе классификация неверна.

# Регрессия:

Регрессия - это контролируемый алгоритм обучения, который помогает определить, как одна переменная влияет на другую.

Здесь «living_area» - это независимая переменная, а «price» - это зависимая переменная, т.е. мы определяем, как изменяется «цена» по отношению к «living_area».

  • Обучение без учителя:

Алгоритм неконтролируемого обучения делает выводы из данных, не имеющих меток.

Кластеризация является примером обучения без учителя. «К-средние», «Иерархические», «Нечеткие C-средние» - вот некоторые примеры алгоритмов кластеризации.

В этом примере набор наблюдений разделен на два кластера. Кластеризация выполняется на основе сходства наблюдений. Существует высокое внутрикластерное сходство и низкое межкластерное сходство, то есть существует очень высокое сходство между всеми автобусами, но низкое сходство между автобусами и автомобилями.

  • Обучение с подкреплением:

Обучение с подкреплением - это тип алгоритма машинного обучения, в котором машина / агент в Окружающая среда учится идеальному поведению, чтобы добиться максимальной эффективности. Чтобы агент узнал о своем поведении, требуется простая обратная связь о вознаграждении, это называется сигнал подкрепления .

Давайте принимать Пакман Например. Пока пакман ест еду, он зарабатывает очки, но когда он сталкивается с монстром, он теряет свою жизнь. Таким образом, Пакман узнает, что ему нужно есть больше еды и избегать монстров.чтобы улучшить его производительность.

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

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

Мы будем работать с набором данных ромбов, чтобы реализовать алгоритм линейной регрессии:

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

Перед построением любой модели на основе данных мы должны разделить данные на «обучающие» и «тестовые» наборы. Модель будет построена на «шлейфе», и ее точность будет проверяться на «тестовом».

Нам нужно загрузить пакет «caTools», чтобы разделить данные на два набора.

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

Пакет «caTools» предоставляет функцию «sample.split ()», которая помогает в разделении данных.

sample.split (цена алмазов $, SplitRatio = 0,65) -> split_index

65% наблюдений из столбца цен были присвоены метки «истинные», а остальные 35% - «ложные».

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

Все наблюдения с меткой «истинное» были сохранены в папке « поезд »объект и те наблюдения, имеющие метку «ложь», были отнесены к «тестовой» выборке.

Теперь, когда разделение завершено и у нас есть «обучающий» и «тестовый» наборы, пора построить модель линейной регрессии на обучающем наборе.

Хадуп трудно выучить

Мы будем использовать функцию «lm ()» для построения модели линейной регрессии на «поездах». Мы определяем цена ромбов по отношению ко всем другим переменным набора данных. Построенная модель сохраняется в объекте «mod_regress».

lm (цена ~., data = train) -> mod_regress

Теперь, когда мы построили модель, нам нужно сделать прогнозы на «тестовом» наборе. Функция «предсказать ()» используется для получения прогнозов. Требуется два аргумента: построенная модель и набор тестов. Прогнозируемые результаты сохраняются в объекте «result_regress».

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

Давайте свяжем фактические значения цен из «тестового» набора данных и прогнозируемые значения в один набор данных с помощью функции «cbind ()». Новый фрейм данных хранится в «Final_Data»

cbind (Actual = test $ price, Predicted = result_regress) -> 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, data = train) -> mod_regress2

Прогнозируемые результаты хранятся в «result_regress2».

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

Фактические и прогнозируемые значения объединяются и сохраняются в «Final_Data2»:

cbind (Actual = test $ price, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Давайте также добавим ошибку предсказания в «Final_Data2»

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Взгляд на «Final_Data2»:

Нахождение среднеквадратичной ошибки для получения совокупной ошибки:

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

Мы видим, что «rmse2» незначительно меньше, чем «rmse1», и, следовательно, вторая модель немного лучше, чем первая.

что такое keyerror в Python

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

Мы будем работать с набором данных car_purchase, чтобы реализовать рекурсивное разбиение который представляет собой алгоритм классификации.

Давайте разделим данные на «обучающие» и «тестовые» наборы с помощью функции «sample.split ()» из пакета «caTools».

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

65% наблюдений из столбца «Куплено» будут присвоены метки «ИСТИНА», а остальным - метки «ЛОЖЬ».

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

Все наблюдения с меткой «ИСТИНА» будут сохранены в «обучающих» данных, а те наблюдения с меткой «ЛОЖЬ» будут присвоены «тестовым» данным.

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

Пришло время построить алгоритм рекурсивного разбиения:

Начнем с загрузки пакета «rpart»:

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

Столбец «Куплено» будет зависимой переменной, а все остальные столбцы - независимыми переменными, то есть мы определяем, купил ли человек автомобиль или нет, по всем остальным столбцам. Модель построена на «train_data», а результат сохраняется в «mod1».

rpart (Куплено ~., data = train_data) -> mod1

Построим результат:

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

Теперь давайте продолжим и спрогнозируем результаты для test_data. Мы передаем построенную модель rpart «mod1» в качестве первого аргумента, набор тестов «test_data» в качестве второго аргумента и тип прогноза как «класс» для третьего аргумента. Результат сохраняется в объекте «результат1».

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

Давайте оценим точность модели с помощью функции confusionMatrix () из пакета каретки.

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

Матрица недоразумений говорит нам, что из 90 наблюдений, в которых человек не покупал машину, 79 наблюдений были справедливо классифицированы как «Нет», а 11 были ошибочно классифицированы как «ДА». Точно так же из 50 наблюдений, в которых человек действительно купил машину, 47 были справедливо классифицированы как «ДА», а 3 - ошибочно классифицированы как «НЕТ».

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

Кластеризация K-средних:

Мы будем работать с набором данных «iris», чтобы реализовать кластеризацию k-средних:

Давайте удалим столбец «Виды» и создадим новый набор данных, который будет включать только первые четыре столбца из набора данных «радужная оболочка».

ирис [1: 4] -> iris_k

Примем количество кластеров равным 3. Функция «Kmeans ()» принимает входные данные и количество кластеров, в которых данные должны быть кластеризованы. Синтаксис: kmeans (data, k), где k - количество центров кластера.

kmeans (iris_k, 3) -> k1

Анализируя кластеризацию:

ул (к1)

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

betweenss: Между суммой квадратов, т.е. внутрикластерным сходством

insidess: в пределах суммы квадратов, то есть межкластерного сходства

totwithinss: сумма всех внутрикластеров, т.е. общее внутрикластерное сходство.

Хорошая кластеризация будет иметь более низкое значение «tot.withinss» и более высокое значение «betweenss», которое зависит от количества кластеров «k», выбранного изначально.

Пришло время стать экспертом в области машинного обучения, чтобы воспользоваться новыми возможностями, которые появляются на вашем пути. Это подводит нас к концу этого « Машинное обучение с R »Блог. Я надеюсь, что этот блог был информативным и плодотворным.

Эдурека имеет специально подобранный который поможет вам получить опыт в алгоритмах машинного обучения, таких как кластеризация K-средних, деревья решений, случайный лес, наивный байесовский анализ. Вы познакомитесь с концепциями статистики, временных рядов, интеллектуального анализа текста, а также познакомитесь с глубоким обучением. Новые партии для этого курса скоро начнутся !!