-
[2장] ISL with R : KNN 알고리즘 실습해보기 in R기초지식/ISL with R(통계학) 2021. 1. 2. 02:00반응형
1. 들어가며
앞 글에서 ( [2장] ISL with R : KNN 알고리즘 실습해보기 ) KNN 알고리즘을 손으로 계산해 봤다. 그런데 실무에서는 KNN 알고리즘을 일일이 엑셀로 계산해서 사용하는 경우는 없을 것이다. 앞선 글에서는 Training 데이터 6개 Test 데이터 1개로 아주 적은 데이터로 분석했지만, 실무에서 쓰이는 데이터는 몇만 ~ 몇 십만 개의 샘플이 기본이기 때문이다. 따라서 많은 전문가들은 R이나 python 같은 프로그램을 이용해서 데이터를 분석한다. "ISL with R"은 제목처럼 R이라는 통계 패키지를 이용해서 데이터 분석을 보여주고 있다.
이번 2장에서는 R의 설치 방법과 기본적인 함수를 소개하고 있다.. ( R의 설치 관련 사항은 통계프로그램 설치 : R with anaconda 에 적어놨다. ) 이하에서는 2장에서 배운 기본적인 R프로그래밍 지식을 이용해서 앞 선 글에서 실습했던 KNN 알고리즘을 구현해 보려고 한다.
2. KNN 알고리즘 in R
1) KNN in R
앞 글에서 KNN 알고리즘 구현을 위해서 "유클리드 거리", "좌표" 같은 문과로서 굉장히 당혹스러운 단어들을 접해야 했다. R에서는 KNN이 라이브러리에 구현되어 있기 때문에 구조만 알면 전혀 어려울 것이 없다. 먼저 knn 함수는 class 라는 라이브러리에 있기 때문에 "library(class)"로 class 라이브러리를 불러오고 "? knn"으로 knn 함수가 도대체 뭔지 알아본다.
그림1: ?knn 오른쪽에 결과가 뜨는데, 역시나 어려운 내용에 영어로 되어 있어서 뭔소린지 모르겠다. 우리가 알아야 될 핵심만 요약하면 다음과 같다.
① knn 함수에는 train 데이터, test 데이터, cl 데이터, K 값 이 4 가지가 들어감
② train 데이터를 기반으로 test 데이터의 cl 값을 판별하는데, 판별을 위한 K 값을 임의로 정하면 됨.
2) KNN 구현해보기
위에서 두 줄로 정리한 knn 함수를 앞 글의 샘플 데이터로 구현해 보자.
표1: [2장] ISL with R : KNN 알고리즘 실습해보기 기초데이터 위 표1에서 train 데이터는 2020-09-29 ~ 2020-12-18까지 6개 샘플에 대한 USD/KRW, KOSPI, 3Y(국고채 3년)의 전일대비 변화율 (%) 값을 의미하고, test 데이터는 판별의 대상인 ( 0%, 0%, 0% )가 되고, cl 데이터는 train 데이터의 결과이다. (삼성전자의 상승/하락/동일인지 여부 ) 추가적으로 K를 임의로 설정해 주면 knn을 r에 구현할 수 있게 된다. 이를 정리하면 아래와 같다.
그림1: knn 구현 코드를 상세하게 설명하면.
ⓘ class 라이브러리 불러오기 ② setwd 로 csv 파일 불러올 디렉터리를 잡아줌 ③ read.csv를 통해서 표 1의 데이터를 읽어 들여서 raw_data라는 변수에 집어넣음 ④ raw_data의 20-09-29 ~ 20-12-18까지 6개의 샘플에 대한 "USD/KRW", "KOSPI", "3Y" 칼럼만 선택하여 train 데이터를 만듦 ⑤ matrix(c(0,0,0),1,3)을 통해서 "USD/KRW", "KOSPI", "3Y" 칼럼에 대해서 0%, 0%, 0% 값을 갖는 test 데이터를 만듦 ⑥ 20-09-29 ~20-12-18까지 6개 샘플에 대한 삼성 주식의 방향("상승/하락/동일")으로 구성된 cl 데이터 생성 ( raw_data [,5] => raw_data의 5열만 선택 ) ⑦ knn(train, test, cl, k=1) knn 함수에 train, test, cl을 넣고 k=1로 설정하여 knn 알고리즘을 돌린 것이다.
이렇게 knn 함수를 돌리면, 앞 글에서 손으로 계산한 것처럼 "동일" 이라는 결괏값이 나옴을 알 수 있다. 데이터가 늘어나더라도 train, test, cl 데이터만 잘 정의해 준다면 손쉽게 knn 알고리즘을 돌려볼 수 있는 것이다.
결론: 통계 복수전공이라도 할껄...
반응형'기초지식 > ISL with R(통계학)' 카테고리의 다른 글
[3장]ISL with R : 단순선형회귀 실습 in R(환율을 통한 주가예측) (0) 2022.10.21 [3장]ISL with R : 선형 회귀계수 계산 (0) 2022.08.15 [3장]ISL with R : 선형 회귀분석 기초 (0) 2022.08.14 [2장] ISL with R : KNN 알고리즘 실습해보기 (0) 2021.01.02 [1장] ISL with R 소개 (0) 2020.08.28