현재 학교에서 머신러닝 과목을 수강중인데, 이 때 사용하고 있는 언어가 R이다.
한 때는 (군대가기전) R을 열심히 했던 시기가 있었는데, 군대를 다녀오니 R의 기초문법도 머리 속에 남지 않은 상태가 되어버렸다. 전역 후 한동안 파이썬을 주로 사용했기 때문인지, 자꾸 머릿속에서 R과 파이썬의 개념이 혼동되어 이 과목을 공부할 때마다 머리가 어지럽다..
이 과목을 공부할 때마다 느끼는 건, R이 꽤나 직관적인 머신러닝 함수들을 제공한다는 것이다. (사실 파이썬도 잘 모르긴 하는데, 내가 본 몇개의 statsmodels 모델링 함수들보다는 훨씬 직관적이라고 느꼈다.) 이를 제대로 활용해보고, 또 기억에 남기고자 R 머신러닝 함수 syntax에 대한 포스팅을 하고자 한다.
1. 선형회귀적합
library(ISLR2)
lm.fit <- lm(mpg~ disp + cyl, subset = train, data = Auto)
# response variable : mpg, predictors : disp + cyl
# subset: Auto 데이터에서 train의 index를 가지고 있는 부분집합에 대해서만 학습
# Auto 데이터 : (R에서 제공)
summary(lm.fit)
뜬금없이 subset인자는 왜 있는 건지 궁금할 수 있는데, 이는 다양한 형식으로 교차검증 (validation)할 때 매우 유용하게 사용되는 인자이다. 이를테면, training set인덱스를 미리 정해둔 다음 , subset에 그 인덱스 리스트를 전달하면, training data에 대해서만 학습하도록 할 수 있다.
변수 선택에 대하여 추가적 스킬들을 보이겠다. (사실 내가 과제하면서 막혔던 것들)
lm.fit <- lm(mpg~ disp + cylinders + disp:cylinders, data = Auto)
# disp:cylinders : 두 변수간의 interacton 항
lm.fit <- lm(mpg~., data = Auto)
#온점(.)은 mpg를 제외한 모든 변수에 관해 회귀적합시키라는 의미이다.
lm.fit <- lm(mpg~disp +I(disp^2), data = Auto)
#만약 변수의 제곱을 하나의 predictor로 사용하게 되면 I(x^p)의 형태로 표현할 수 있다.
2. 일반화선형모형 : generalized linear model -> glm()
기본적으로 lm과 문법이 동일하다.
다만 주의할 것은...
glm.fit <- glm(bin ~ x+y, data = data)
# x와 y로 bin 변수를 추측.
# 이때의 모델은 선형회귀모형이다. (lm과 동일)
glm.fit <- glm(bin ~ x+y, data = data, family = binomial)
# family = binomial을 통해 반응변수가 이항변수라는(0,1 둘중하나) 정보가 주어지면,
# glm함수는 Logistic Regression을 실시한다. (이항변수가 binomial일때 가장 범용적)
'Programming > R' 카테고리의 다른 글
Shrinkage Methods using R (0) | 2022.05.12 |
---|---|
Subset selection using R : regsubsets() (0) | 2022.05.08 |
Resampling using R : Cross-validation / Bootstrap (0) | 2022.05.08 |
R을 이용한 Classifiers : LDA, QDA, NaiveBayes (0) | 2022.05.08 |