ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 머신 러닝을 위한 라이브러리 caret
    Data Analysis/R 패키지 2023. 3. 26. 23:24

    Table of Contents

    1. Introduction
    2. caret 라이브러리
    3. Reference

     

    Introduction

     2016년 3월 9일부터 10일, 12일, 13일, 15일까지 열린 5번 대결로 이세돌 9단과 구글 딥마인드에서 개발한 알파고의대결에서 승리한 알파고 덕에 인공지능에 대한 관심이 폭발적으로 늘기 시작했으며, 최근 오픈AI에서 개발한 Chatgpt로 한 차례 더 주목하기 시작했다. 이러한 인공지능을 구현하기 위해 다양한 머신러닝 알고리즘을 사용하는데, 이를 사용하기 위해서 R과 Python 등의 언어를 활용하여 수집한 데이터를 가공하여 학습 데이터와 검증용 데이터로 분류하고 문제에 맞는 머신러닝 알고리즘을 적용할 수 있다. 이때 사용하는 알고리즘에는 의사결정나무(Decision Trees), 랜덤포레스트(Random Forests), SVM(Support Vector Machine), 인공신경망(Neural Networks) 등이 있다. 우리가 보유하고 있는 데이터를 학습시킨 후 모델의 성능을 평가하기 위해서 정확도(Accuracy), 재현율(Recall), 정밀도(Precision), F1-Score 등을 이용한다.

     

    caret 라이브러리

    caret 라이브러리는 Classification and Regression Training의 약자로 종속변수가 명목형 변수인 분류를 하거나 연속형 변수인 예측으로 나뉘어 머신러닝을 적용할 수 있는 라이브러리이다. 샘플로 사용할 데이터는 mlbench에 담겨있는 Sonar 데이터를 활용한다. 먼저, 학습을 하기 전에 sample() 함수를 활용하여 학습데이터:검증데이터=7:3으로 구성하였다. 물론 caret 라이브러리에는 데이터 셋을 나누기 위해 createDatePartition() 함수가 있다. K-fold cross validation을 이용하여 최적의 파라미터를 찾아서 랜덤포레스트로 학습시킨다. 이때 생성된 학습 모델의 성능을 평가하기 위해 검증용 데이터를 넣어 혼동행렬(Confusion Matrix)를 구성하여 성능을 확인한다.

    install.packages("caret")
    library(caret)
    library(mlbench)
    set.seed(0214)
    
    data(Sonar)
    Sonar = Sonar
    
    index = sample(1:nrow(Sonar), round(nrow(Sonar)*0.7))
    train = Sonar[index,]
    test = Sonar[-index,]
    
    fitCon = trainControl(method = "repeatedcv", number = 5, repeats = 3)
    rf = train(Class ~ ., data = train, method = "rf", trControl = fitCon, verbose = F)
    
    predict(rf, newdata = test) %>%
       confusionMatrix(test$Class)

    [그림 1] Randomforest를 이용한 예측 결과

    Reference

    "Classification and Regression Training", Max Kuhn 외 9명, https://cran.r-project.org/web/packages/caret/caret.pdf

    댓글

Designed by Tistory.