초보자를위한 R의 머신 러닝 예제



R을 사용한 기계 학습에 대한이 블로그는 기계 학습의 핵심 개념을 배우고 R을 사용하여 다양한 기계 학습 알고리즘을 구현하는 데 도움이됩니다.

R을 사용한 머신 러닝

머신 러닝은 현재이자 미래입니다! Netflix의 추천 엔진에서 Google의 자율 주행 차에 이르기까지 모든 것이 머신 러닝입니다. R을 사용한 기계 학습에 대한이 블로그는 기계 학습의 핵심 개념에 이어 다양한 기계 학습 알고리즘을 이해하고 이러한 기계 학습 알고리즘을 R로 구현하는 데 도움이됩니다.

'R을 사용한 기계 학습'에 대한이 블로그는 다음 섹션으로 구성됩니다.





R을 사용한 머신 러닝 | Edureka

기계 학습 이해

Fish1- R을 사용한 머신 러닝-Edureka



그것들이 모두 물고기인지 어떻게 알 수 있습니까?



어렸을 때, 당신은 물고기 그림을 보았을 것입니다. 그리고 유치원 교사 나 부모로부터 이것이 물고기이며 지느러미, 아가미, 한 쌍의 물고기와 같은 특정한 특징이 있다고 들었을 것입니다. 눈, 꼬리 등등. 이제 뇌가 이러한 기능을 가진 이미지를 발견 할 때마다 자동으로 물고기로 등록합니다. 배운 물고기라는 것입니다.

그것이 우리의 뇌가 기능하는 방식이지만 기계는 어떻습니까? 동일한 이미지가 기계에 공급되는 경우 기계는이를 물고기인지 어떻게 식별합니까?

r 예제를 통한 머신 러닝

여기가 M achine 학습 'fish'태그가있는 컴퓨터에 물고기 이미지를 계속 공급합니다. 기계는 관련된 모든 기능을 학습합니다 와 함께 물고기.

기계가 물고기와 관련된 모든 기능을 학습하면 학습 한 정도를 확인하기 위해 새로운 데이터를 제공합니다.

다시 말해, 원시 데이터 / 교육 데이터 기계에 주어 지므로 배운다 관련된 모든 기능 훈련 데이터. 일단 학습이 끝나면 주어집니다 새로운 데이터 / 테스트 데이터 기계가 얼마나 잘 학습했는지 확인합니다.

이 기계 학습 with R 블로그에서 계속 진행하고 기계 학습 유형에 대해 이해하겠습니다.

기계 학습의 유형

  • 지도 학습 :

지도 학습 알고리즘은 예측을위한 레이블이있는 알려진 데이터 세트 (Training Data)에서 학습합니다.

회귀 및 분류는 감독 학습의 몇 가지 예입니다.

#분류:

분류는 새로운 관찰이 속하는 범주 집합을 결정합니다. 즉, 분류 알고리즘은 학습 데이터의 모든 특징과 레이블을 학습하고 여기에 새로운 데이터가 주어지면 학습 한 내용에 따라 새로운 관찰에 레이블을 할당해야합니다. 훈련 데이터에서.

이 예에서 첫 번째 관측치에 'Man'이라는 레이블이 지정되면 올바르게 분류되지만 'Woman'이라는 레이블이 지정되면 분류가 잘못된 것입니다. 두 번째 관찰의 경우와 유사하게 지정된 레이블이 'Woman'이면 올바르게 분류되고 그렇지 않으면 분류가 잘못되었습니다.

# 회귀 :

회귀는 한 변수가 다른 변수에 어떤 영향을 미치는지 결정하는 데 도움이되는지도 학습 알고리즘입니다.

여기에서 'living_area'는 독립 변수이고 'price'는 종속 변수입니다. 즉, 'living_area'에 대해 '가격'이 어떻게 달라지는 지 결정합니다.

  • 비지도 학습 :

비지도 학습 알고리즘은 레이블이없는 데이터에서 추론을 도출합니다.

클러스터링 비지도 학습의 예입니다. 'K- 평균', '계층 적', '퍼지 C- 평균'은 클러스터링 알고리즘의 몇 가지 예입니다.

이 예에서 관측 값 집합은 두 개의 군집으로 나뉩니다. 클러스터링은 관측치 간의 유사성을 기반으로 수행됩니다. 클러스터 내 유사성은 높고 클러스터 간 유사성은 낮습니다.

  • 강화 학습 :

강화 학습은 기계 학습 알고리즘의 한 유형으로 기계 / 에이전트환경 성능을 극대화하기 위해 이상적인 행동을 배웁니다. 에이전트가 행동을 배우려면 간단한 보상 피드백이 필요합니다. 강화 신호 .

해 보자 팩맨 예를 들면. 팩맨이 계속 음식을 먹으면 점수를 얻지 만 몬스터와 충돌하면 생명을 잃습니다. 따라서 팩맨은 더 많은 음식을 먹고 몬스터를 피해야한다는 것을 알게됩니다.성능을 향상시키기 위해

R로 기계 학습 구현 :

선형 회귀:

선형 회귀 알고리즘을 구현하기 위해 diamonds 데이터 세트로 작업 할 것입니다.

데이터 세트에 대한 설명 :

데이터에 대한 모델을 구축하기 전에 데이터를 'train'및 'test'세트로 분할해야합니다. 모델은 'train'세트를 기반으로 작성되며 'test'세트에서 정확성이 확인됩니다.

데이터를 두 세트로 분할하려면 'caTools'패키지를로드해야합니다.

라이브러리 (caTools)

'caTools'패키지는 데이터 분할에 도움이되는 'sample.split ()'함수를 제공합니다.

sample.split (diamonds $ price, SplitRatio = 0.65)-> split_index

가격 열의 관측치 중 65 %에는 '참'레이블이 지정되고 나머지 35 %에는 '거짓'레이블이 지정되었습니다.

하위 집합 (diamonds, split_index == T)-> train 하위 집합 (diamonds, split_index == F)-> 테스트

'참'레이블이있는 모든 관측치는 ' train”개체 '거짓'레이블이있는 관찰은 '테스트'세트에 할당되었습니다.

이제 분할이 완료되고 '훈련'및 '테스트'세트가 있으므로 훈련 세트에 선형 회귀 모델을 구축 할 차례입니다.

'train'데이터에 대한 선형 회귀 모델을 구축하기 위해 'lm ()'함수를 사용할 것입니다. 우리는 가격 데이터 세트의 다른 모든 변수와 관련하여 다이아몬드의 빌드 된 모델은 'mod_regress'개체에 저장됩니다.

lm (가격 ~., 데이터 = 기차)-> mod_regress

이제 모델을 구축 했으므로 '테스트'세트에 대한 예측을해야합니다. 'predict ()'함수는 예측을 가져 오는 데 사용됩니다. 두 가지 인수가 필요합니다. 빌드 된 모델 그리고 테스트 세트. 예측 결과는“result_regress”개체에 저장됩니다.

예측 (mod_regress, test)-> result_regress

'cbind ()'함수를 사용하여 'test'데이터 세트의 실제 가격 값과 예측 값을 단일 데이터 세트로 결합 해 보겠습니다. 새 데이터 프레임은 'Final_Data'에 저장됩니다.

cbind (Actual = test $ price, Predicted = result_regress)-> Final_Data 
as.data.frame (최종 _ 데이터)-> 최종 _ 데이터

실제 값과 예측 값으로 구성된 'Final_Data'살펴보기 :

실제 값에서 예측 값을 빼서 오류를 찾고이 오류를 'Final_Data'에 새 열로 추가해 보겠습니다.

(Final_Data $ Actual- Final_Data $ Predicted)-> 오류
cbind (최종 _ 데이터, 오류)-> 최종 _ 데이터

예측 오류도 포함하는 'Final_Data'살펴보기 :

이제 계속해서 ' 제곱 평균 제곱근 오차” 모든 예측에 대해 집계 오류를 제공합니다.

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

계속해서 두 모델의 정확도를 비교하고 더 나은 모델을 결정할 수 있도록 다른 모델을 만들어 보겠습니다.

'train'세트에 대해 새로운 선형 회귀 모델을 만들지 만 이번에는 독립 변수에서 'x'및 'y'열을 삭제합니다. 즉 다이아몬드의 '가격'은 모든 'x'및 'y'를 제외한 열.

빌드 된 모델은 'mod_regress2'에 저장됩니다.

lm (가격 ~ .-y-z, 데이터 = 기차)-> 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 (최종 _ 데이터 2, 오류 2)-> 최종 _ 데이터 2

“Final_Data2”살펴보기 :

자바 객체 배열 생성

집계 오류를 얻기 위해 제곱 평균 제곱근 오류 찾기 :

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

'rmse2'가 'rmse1'보다 약간 작으므로 두 번째 모델이 첫 번째 모델보다 약간 낫다는 것을 알 수 있습니다.

자바에서 참조로 전달

분류:

'car_purchase'데이터 세트로 작업하여 재귀 분할 분류 알고리즘입니다.

'caTools'패키지의 'sample.split ()'함수를 사용하여 데이터를 'train'및 'test'세트로 분할 해 보겠습니다.

라이브러리 (caTools)

'Purchased'열의 관측치 중 65 %에 'TRUE'레이블이 지정되고 나머지에는 'FALSE'레이블이 지정됩니다.

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

'TRUE'레이블이있는 모든 관측치는 'train'데이터에 저장되고 'FALSE'레이블이있는 관측치는 'test'데이터에 할당됩니다.

subset (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, margin = 0.1) 텍스트 (mod1, pretty = T, cex = 0.8)

이제 'test_data'에 대한 결과를 예측해 보겠습니다. 빌드 된 rpart 모델 'mod1'을 첫 번째 인수로, 테스트 세트 'test_data'를 두 번째 인수로, 예측 유형을 세 번째 인수에 대한 '클래스'로 지정합니다. 결과는‘result1’개체에 저장됩니다.

predict (mod1, test_data, type = 'class')-> result1

caret 패키지의 'confusionMatrix ()'함수를 사용하여 모델의 정확성을 평가 해 보겠습니다.

라이브러리 (캐럿) confusionMatrix (table (test_data $ Purchased, result1))

혼동 행렬은 그 사람이 자동차를 구매하지 않은 90 개의 관측치 중 79 개의 관측치가 '아니오'로 올바르게 분류되었고 11 개가 '예'로 잘못 분류되었음을 알려줍니다. 유사하게, 그 사람이 실제로 자동차를 구입 한 50 개의 관측치 중 47 개는 '예'로 올바르게 분류되었고 3 개는 '아니오'로 잘못 분류되었습니다.

정확한 예측을 총 예측 (예 : (79 + 47) / (79 + 47 + 11 + 3))으로 나누어 모델의 정확도를 찾을 수 있습니다.

K- 평균 클러스터링 :

k- 평균 클러스터링을 구현하기 위해 'iris'데이터 세트로 작업 할 것입니다.

'Species'열을 제거하고 'iris'데이터 세트에서 처음 4 개 열로만 구성된 새 데이터 세트를 생성 해 보겠습니다.

홍채 [1 : 4]-> 홍채 _k

클러스터 수를 3 개로합시다.“Kmeans ()”함수는 입력 데이터와 데이터가 클러스터링 될 클러스터 수를받습니다. 구문은 다음과 같습니다. kmeans (data, k) 여기서 k는 군집 중심의 수입니다.

kmeans (iris_k, 3)-> k1

클러스터링 분석 :

str (k1)

str () 함수는 withinss, betweenss 등과 같은 다양한 매개 변수를 포함하는 kmeans의 구조를 제공하여 kmeans의 성능을 확인할 수있는 것을 분석합니다.

betweenss : 제곱합 사이, 즉 군집 내 유사성

withinss : 제곱합 이내 즉 군집 간 유사성

totwithinss : 모든 군집의 모든 내부의 합, 즉 전체 군집 내 유사성

좋은 클러스터링은 초기에 선택한 클러스터 'k'의 수에 따라 더 낮은 'tot.withinss'값과 더 높은 'betweenss'값을 갖습니다.

여러분에게 다가오는 새로운 기회를 활용하기 위해 머신 러닝 전문가가 될 때가되었습니다. 이것으로 우리는이 ' R을 사용한 머신 러닝 ”블로그. 이 블로그가 유익한 정보가 되었기를 바랍니다.

Edureka는 특별히 선별 된 K-Means Clustering, Decision Trees, Random Forest, Naive Bayes와 같은 기계 학습 알고리즘에 대한 전문 지식을 습득하는 데 도움이됩니다. 통계, 시계열, 텍스트 마이닝의 개념과 딥 러닝에 대한 소개도 배우게됩니다. 이 과정의 새로운 배치가 곧 시작됩니다 !!