본문 바로가기

전체 글

(34)
모형 타당성 검증 : 잔차분석 우리가 회귀분석을 이용하여 데이터를 분석할 때, 따르는 몇가지 기본 가정들이 있다. Y와 X는 선형 관계를 이룸 랜덤 오차 Epsilon의 등분 산성 랜덤 오차 Epsilon의 독립성 랜덤오차 Epsilon의 정규성 랜덤오차 Epsilon의 평균은 0. 풀어서 쓰면 위의 5가지 가정을 베이스로 하여 회귀분석이 이루어지는 것이다. 자. 이제 회귀분석을 다 했다고 하자. 결과가 어땠든 간에, 이 모델이 타당하다고 할 수 있을까? 아까 가정이 옳음을 보이지 못한다면, 회귀분석 과정 자체에 대한 의구심이 생길 수밖에 없다. 위 가정이 옳음을 보이는 것을 '모형 타당성 검증'이라고 한다. 모형 타당성 검증이 어떻게 이루어지는지를 알기 전에, 만약 모형 타당성 검증을 했는데 위 가정이 틀리다고 결과가 나왔다면, 무..
Logistic Regression 에서의 Regularization 머신러닝 초보자인 나는 지금 introdution to Machine Learning with Python이라는 책을 보고 있다. 책을 보던 중 지도학습 파트의 선형 이진 분류기 부분에서, Logistic Regression 과 SVM 내용이 나오는데, 여기서 regularization 의 개념이 나온다. 물론 Lasso 와 Ridge regression에서의 regularization의 개념은 배운 바 있지만, Logistic Regression에서의 규제는 어떻게 적용하는지 들어본 바 없었다. 로지스틱 회귀에서의 규제항? 로지스틱 회귀를 자세히 봐보자. GLM 구성요소에 따라 이를 분석해보면, Random Component : Y ~ B(P) -> y는 확률이 p인 이항분포를 따른다. Systemic..
Shrinkage Methods using R Shrinkage Methods 로 대표적인 방법은 ridge regression 과 lasso이다. 이들은 각각 선형다중회귀식에 각각의 제약을 부과하여 비교적 영향력이 약한 변수들의 효과를 약화시키는 효과를 준다. 이때 이러한 제약의 정도를 대표하는 값을 lambda라고 두었다. 이를 R에서 구현한 함수들을 알아보자. 먼저 사전작업이 필요하다. 입력데이터 행렬을 만들어 줘야한다. x
2022 여름방학 checklist 1. 무릎 수술 : 이것때매 활동적인 활동들은 당분간 힘들 것 같다ㅠㅠ 2. Adsp 취득 3. Sas Base 취득 : 어차피 학교 계속 다니려면 필요할듯 4. 사회조사분석사 필기합 5. 1학기 정리 겸 블로그 포스팅 6. 머신러닝 공부 - 핸즈온 머신러닝 7. 영어 speaking : 전화영어?
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 인자를..
<중회귀분석> 2. 중회귀분석 추정계수의 Properties 앞 포스팅에서, $$ \hat{B} = (X'X)^{-1}X'Y $$ 임을 보였다. 이제, B_hat의 성질에 대하여 탐구해보자. 우리가 사실 궁금한 것은, B_hat을 True B의 추정량으로 쓸 만 한가? 그리고 그 분산은 어떻게 되는가? 이다. 따라서, 우리가 알아볼 properties 들은 다음과 같다. 1. B_hat이 unbiased estimator인가? 2. B_hat의 분산은 어떻게 되는가? 차례로 알아보자. 1. B_hat이 unbiased estimator인가? $$ E(\hat{B}) = E((X'X)^{-1}X'Y) = E((X'X)^{-1}X'(XB + \varepsilon)) $$ $$ = E((X'X)^{-1}X'XB) + E((X'X)^{-1}X'\varepsilon) = ..
<중회귀분석> 회귀계수 찾기 중회귀모형에서 $$ Y_i = B_0 + B_1X_1 + .... + \varepsilon $$ 인데, Simple regression에서 LSE estimator를 구하는 방식과 같이 우리는 잔차 e의 제곱합이 최소가 되게 하는 B를 구하면 된다. 이를 행렬로 표시하면 $$ \sum e^2 = (Y - X\hat{B})'(Y - X\hat{B}) $$. 여기서, Y는 y값들의 행벡터, B_hat은 추정 parameters 의 행벡터이다. 이제 위 값을 B_hat에 대해 미분하면, $$ X'X\hat{B} = X'Y $$ 라는 중회귀분석에서의 normal equation을 얻게 된다. 이때, 이 방정식을 만족시키는 점이 최저점임은 구해진 normal equation을 사용하면 얻을 수 있다. 이 때 만약..
2. 단순회귀분석-회귀계수 검정(1) 저번 포스팅에서 회귀계수를 구하는 방법 대하여 다뤘다. 회귀계수 추정값을 구하고 나서의 문제는, 이 회귀계수가 실제값이랑 얼마나 차이가 나느냐일 것이다. 왜냐하면 회귀계수를 구하는데 우리가 사용한 데이터는 모집단에서 일부분을 추출한 '표본'이기 때문이다. 그렇다면, 회귀계수를 어떻게 검정할 것인가를 생각해보자. 다행히 이러한 검정을 위해, 통계학자들은 이러한 상황에서 유용하게 쓰일 수 있는 여러 분포를 정립시켜 놓았다. 결론적으로 말하면, 다음 단순회귀모형 Y = Bo + B1x에서 (y, bo, b1은 추정값) Bo, B1을 표준화한 Zo, Z1의 분포는 표준정규분포를 따른다. 다만, 이 때 Var(Bo)와 Var(B1)을 추정하는 과정에서 Zo, Z1이 t분포를 따르는 식으로 변형이 되게 된다. 간단..
1. 단순회귀분석 - 회귀계수의 유도 단순회귀분석에서, 회귀계수를 구할 때 Y = Bo + B1X에서 B1 = Sxy/Sxx, Bo = Y_bar - B1*X_bar, 여기서 Bo와 B1는 Least Squared Estimator 이 됨을 알고 있다. 이를 증명해보자. 별거 없다. 쨋든 위 증명에 따라 LSE추정량을 산출하였다.
포스팅을 시작하며. 나는 군대를 전역한 지 얼마 안된 한국나이 24살, 99년생 대학교 2학년 통계학과 학부생이다. 19년도에 대학교에 입학해서 3학기 동안 생각없이 놀다가 군대를 다녀오고 나서 첫학기인 요즘 내가 항상 느끼는 생각은, 나라는 사람은 너무나도 모자란 사람이라는 것이었다. 3년동안 공부를 제대로 해본적이 없어 머리는 깡통수준이고, 특별한 스펙이라 할 것도 없다. 사실 블로그 포스팅이라도 시작해보는 것도 있다. 뭐라도 해야 할 것 같은 생각, 그리고 배운 것을 기록하고 싶다는 생각에 휩싸여, 지금 새벽 네시라는 시간에 무작정 사이트 접속해서 블로그란 걸 하나 만들었다. 여기 이 블로그에는 주로 내가 '데이터사이언티스트' 라는 막연한 진로를 좇아가며 배우는 내용들을 하나하나 기록해보고자 한다. 나는 머리가 특출나..