본문 바로가기

Programming

(6)
Shrinkage Methods using R Shrinkage Methods 로 대표적인 방법은 ridge regression 과 lasso이다. 이들은 각각 선형다중회귀식에 각각의 제약을 부과하여 비교적 영향력이 약한 변수들의 효과를 약화시키는 효과를 준다. 이때 이러한 제약의 정도를 대표하는 값을 lambda라고 두었다. 이를 R에서 구현한 함수들을 알아보자. 먼저 사전작업이 필요하다. 입력데이터 행렬을 만들어 줘야한다. x
Subset selection using R : regsubsets() 주어진 데이터에 쓸 수 있는 예측변수가 너무 많을 때, 그 중 어떤 것을 선택할 것인지는 모델 생성에서 아주 중요한 문제이다. 이 때 regsubsets() 함수는 , Best Subset selection, forward selection ,backward selection을 모두 지원한다. library(leaps) regfit.full
Resampling using R : Cross-validation / Bootstrap 1 Cross-validation(교차검증) 을 위한 R함수로, boot 라이브러리의 cv.glm함수를 사용할 수 있다. library(boot) #glm.fit 이라는 generalized linear model이 있다고 가정을 하자. cv.err n = 데이터 수 : LOOCV 수행 #cv.err$delta : 길이가 2인 벡터를 반환하는데, 첫번째는 raw cv error 추정값, 두번째는 수정된 cv error 추정값이다. #이 때, cv.glm 안에 lm모델을 넣으면 cv가 제대로 동작하지를 않는다. #family 인자를 지정하지 않으면 glm도 least square estimate를 산출하므로, glm 모델을 인자값으로 전달하도록 하자. 2. Bootstrap을 할때는, boot라이브러리의 ..
R을 이용한 Classifiers : LDA, QDA, NaiveBayes 반응변수가 범주형 변수 일 때, 예측변수와 반응변수간의 관계를 설명하는 분류기(classifiers) 모델링이 쓰이게 된다. 다양한 모델들이 있지만, 그 중 Logistic Regression, LDA, QDA, NaiveBayes 모델 이 가장 널리 알려진 것들인데, 이것들은 모두 R에서 이미 구현이 되어있다. LDA, QDA, NaiveBayes 에 관해 간단히 설명을 하자면, (베이즈 정리를 통한 설명) 이들은 모두 베이즈 정리를 응용하여, 즉 적절한 가정과 이미 주어진 사전확률을 통하여 사후확률(posterior)을 예측하는 모델들이다. 이 때, 사전확률(prior) P(X= k | Y )에 대하여, 각 Y의 수준에서 X의 분포가 정규분포를 따른다고 가정을 한다. 이를 이용하면, 베이즈 정리를 통..
R : lm() / glm() 현재 학교에서 머신러닝 과목을 수강중인데, 이 때 사용하고 있는 언어가 R이다. 한 때는 (군대가기전) R을 열심히 했던 시기가 있었는데, 군대를 다녀오니 R의 기초문법도 머리 속에 남지 않은 상태가 되어버렸다. 전역 후 한동안 파이썬을 주로 사용했기 때문인지, 자꾸 머릿속에서 R과 파이썬의 개념이 혼동되어 이 과목을 공부할 때마다 머리가 어지럽다.. 이 과목을 공부할 때마다 느끼는 건, R이 꽤나 직관적인 머신러닝 함수들을 제공한다는 것이다. (사실 파이썬도 잘 모르긴 하는데, 내가 본 몇개의 statsmodels 모델링 함수들보다는 훨씬 직관적이라고 느꼈다.) 이를 제대로 활용해보고, 또 기억에 남기고자 R 머신러닝 함수 syntax에 대한 포스팅을 하고자 한다. 1. 선형회귀적합 library(IS..
Pandas read_json 함수 : json 파일 읽기 JSON : javascript object notation 의 준말. 형태를 보니, 파이썬의 dictionary와 비슷한 형태를 띄고 있다. 마침 여러줄로 된 json파일을 pd.read_json을 이용해 가져올 일이 있었는데, import json records = [json.loads(line) for line in file] 책을 보니 한 줄 씩 추출하도록 되어있길래, 한번에 할 수 있는 pd.read_json을 이용해 해보기로 했다. pd.read_json(file) 문제는 이렇게 여러 줄로 된 json 파일을 읽을 때, trailing data라는 오류가 발생한다. 아마 여러줄을 읽는 과정에서 생기는 에러같은데, pd.read_json(file, lines = True) 뒤에 lines 인자를..