2주차 스터디의 주제는 ‘Regression’이였습니다.
“세상의 모든 문제는 하나의 직선으로 그상관 관계를 표현할 수 있다” 라는 개념에서 파생된 회귀!
머신러닝에 있어서는 가장 중요하면서도 가장 간단한 개념이 아닐까 싶은데요!
바로 시작하겠습니다.
Regression
수식은 이렇게 표현할 수 있습니다. 우리가 눈여겨 보아야 하는건 b가 되겠군요! 사전밋업에서도 언급했듯이, 여러분이 b가 될것이라 했는데요! 그이유는 바로 종속변수인 ‘저’는 여러 독립변수인 ‘상황’의 영향을 받아도 b(가중치)인 ‘여러분’과 적절한 상호작용을 통해 저희는 훌륭한 모델로 다시 태어날 수 있으니까요!
Regression의 종류
회귀
회귀는 하나의 변수가 나머지 다른 변수들과의 선형적 관계를 갖는가의 여부를 분석하는 하나의 방법이다.즉 하나의 종속변수와 독립변수 사이의 관계를 명시하는 것을 우리는 회귀라고 한다.
회귀모델은 위의 사진과 같이 구분을 할 수 있다. 독립변수가 1개이면 단순회귀(Simple Regression), 독립변수가 2개이상 이면 다중회귀(Multiple Regression)로 분류 할 수 있으며 각각을 또 두가지로 분류 할 수 있는데 회귀계수(기울기, x의상수값)가 선형이면 선형회귀, 비선형이면 비선형 회귀모델로 구분을 할 수 있다.
단순선형회귀
종속변수를 하나의 독립변수로 예측하는 것을 말합니다.
B0과 B1은 회귀계수, ε은 오차항 이라고 한다.
위 그림처럼, 회귀 직선은 잔차들의 제곱들의 합 RSS(Residual sum of squares)를 최소화 하는 직선을 나타냅니다.
RSS는 SSE(Sum of Squares Error)라고도 말하며, 이 값이 회귀 모델의 비용함수(Cost Function)가 됩니다.
비용함수가 최소화 하는 모델을 찾는 과정을 학습이라고 말합니다.
다중선형회귀
단순선형회귀와 같이 독립변수 X의 변화에 따른 종속변수 y의 변화를 선으로서 예측하는 기법인데, 독립변수 X가 여러개인 분석기법입니다.
독립변수 X가 여러개 = 특성(feature)이 여러개라는 뜻을 나타냅니다.
다항 회귀
데이터셋이 선형적이라면 단순 선형회귀 역시 높은 성능을 보일 수 있겠지만,
이처럼 데이터셋이 비선형인 경우 다항회귀를 사용하는 것이 더 높은 성능을 기대할 수 있습니다.
sklearn에서 제공하는 PolynomialFeatures 클래스는 dgree 파라미터를 이용해 degree에 해당하는 다항식 피쳐로 변환해 사용이 가능합니다.
SVR
Regression 에 사용되는 SVM(분류(classification), 회귀(regression), 특이점 판별(outliers detection) 에 쓰이는지도 학습 머신 러닝 방법 중 하나이다.) 모델을 의미(분류 문제는 SVC)
SVM 을 회귀에 적용하는 방법은, SVC 와 목표를 반대로 하는 것입니다.
즉, 마진 내부에 데이터가 최대한 많이 들어가도록 학습하는 것이다.
마진의 폭은 epilson 이라는 하이퍼파라미터(절대상수)를 사용하여 조절이 가능합니다.
의사결정나무
의사결정나무는 회귀문제와 분류 문제에 모두 적용할 수 있습니다.
회귀문제는 회귀분석처럼 연속적인 변수에 대한 예측을 하는 것이고, 분류문제는 판변분석과 같이 어느 부류에 속하는 것인가를 예측하는 것입니다.
예를 들어보자.
우리가 자주하는 스무고개와 같은 방식으로 예, 아니오를 반복하며 추론하는 방식입니다.
생각보다 성능이 좋아 간단한 문제를 풀 때 자주 사용한다.
Regression-python
Importing the libraries
Importing the dataset
연차에 따른 연봉에대한 데이터셋을 import해왔다. 늘 그렇듯 x,y에 할당해 주면된다.!
Splitting the dataset into the Training set and Test set
X,y만 지정해주고 test size 는 1/3으로 설정 하였다.
Training the Simple Linear Regression model on the Training set
linear_modle 에서 LinearRegression을 import해왔다.
fit으로 입혀주기만 하면 모델이 학습된다..!
Predicting the Test set results
.predict로 예측값에 접근해보면
Visualising the Training set results
그래프 이름을 정해주고 x-label, y-label을 지정해주면
이런식으로 그래프를 그려줄 수 있다.
Visualising the Test set results
Regression-R
Set As Working Directory
R studio에서 오늘 실습에 사용할 Salary.csv파일을 선택후 더보기를 눌러 Set As Working Directory로 설정을 완료하면
콘솔창에 이렇게 표시가 됨과 동시에
이렇게 csv파일이 열리게 된다.
Splitting the dataset
데이터셋 분할을 하기위해선믄 우리는 caTools를 가져와야 한다는 것을 지난번 R 실습에서 배웠다.
해당 flow그대로 진행을 해본다면
여기까지가 분할을 해주는 과정이고
후에 이처럼 작성하면 우리는 훈련데이터는 TRUE로 검증 데이터는 FALSE로 표시된다는 것을 알 수 있다.
feature scaling
이 작업은 R에서 이용 중인 단순 선형 회귀 패키지가 알아서 해준다.
그러니 우리는 신경쓰지 않아도 된다.
fitting
regressor = lm이라고 코드를 적은후 f1을 눌러보면
이와같은 설명을 볼 수 있는데 argument를 보면
'formula'
종속 변수
독립 변수이렇게 입력을 해주고 두번째 argument인 data를 입력해 주면 된다.이처럼 입력후 실행을해보면
regressor가 표시되기 시작한다.콘솔 영역에
summary(regressor)이처럼 입력하면
이렇게 단순 선형 회귀 모델에 대한 정보가 표시된다.
Predicting the Test set results
이처럼 입력하면
y_pred가 생성되는 것을 확인할 수 있다.콘솔창에
y_pred 를 입력해보면
이 숫자가 나타내는 건 테스트 세트의 관측값 10건에 상응하는 임금 예측이 된다.
P-value
P-value에 대하여 조금더 깊게 알아보기!
P-Value란 무엇인가?
우선 통계적 유의성을 이해해 보도록 하자.
통계적 유의성
동전던지기로 생각을 해보도록 하자.
가능한 출력은 앞면,뒷면으로 예상할 수 있다. (입력이 동전을 던지는 행위라고 가정을하면)
fair coin은 한 세계관에서 공정한 동전이다.
fair coin은 귀무 가설로 우리가 시작점으로 삼은 가설 이다.
이 세계의 동전은 양면이다.
not a fair coin은 다른 세계관, 공정하지 않은 동전이다.not a fair coin은 대립 가설로 H a라고도 불리는데이 세계의 동전은 뒷면만 있다.
우리가 확인해야 할것은 동전을 던져서 우리가 어떠한 세계관에 있는 것인지를 확인하려는 것이다.
"귀무가설의 세계관인지 대립가설의 세계관인지"를 동전을 던져서 확인해 보고자 하는 것이다.
우선 도박사의 오류를 제외하고생각해 보도록 하자 우리가 따지는 것은 독립시행이 아닌 연속시행을 경우에 두고 말한다.
우선 귀무 가설 즉 이 동전이 공정한 동전이 옳다고 가정을 해보고 시작을 해보겠다.
confidence는 내가 이 동전이 공정하다고 옳다는 생각을 수치화 지표라고 생각을 해보자.
처음에 동전을 던졌을때 뒷면이 나올확률은 1/2이다. 이건 부정할 수 없는 참이라고 가정을한다.
confidence:0.5// 그럴수 있지
두번 연속 뒷면이 나올확률은 1/4이다.confidence:0.25 //운이 좋았네
세번 연속 뒷면이 나올확률은 1/8이다.confidence:0.125 // 뭔가 이상한데
네번 연속 뒷면이 나올확률은 1/16이다.confidence:0.0625 // 이게 말이되나..?
다섯번 연속 뒷면이 나올 확률은 1/32이다.confidence:0.03125 // ?????????
즉 다섯번 연속 뒷면(혹은 앞면)이 나올려면 최소한 32번의 동전을 연속으로 5번 던지는 행위가 있어야 가능하다고 즉 confidence가 1.0이 되어야 내가 생각한 귀무 가설이 옳다고 생각을 할 것이다.
하지만 단한번의 독립시행에서 이와같은 결과가 도출 되었다.
그렇다면 우리는 의심을 할 수 밖에 없는데 '의심을 하는것이 합리적인 수치'를 우리는 통계적 유의성이라고 부르기로 한것이다.
이를 간단히 표로 그려보자면
이처럼 표현할 수 있다. 바로저 알파값이 '의심을 하는것이 합리적인 수치'즉 통계적 유의성이 되는 것이다.
이때야 우리는 귀무가설이 틀렸다고 부정할 수 있는것이다.
그것도 '합리적으로' 말이다.
그래서 우리는 오늘 합리적으로 의심을 해도 되는 수치 p-value에 대하여 알아보았다.
지금 가까이 동전이 있다면 동전을 던져서 5번연속 같은면이 나온다면 당신은 H a 세계관에 살고 있다고 합리적인 의심을 해보아도 된다.
본 스터디는 Udemy의 <【한글자막】 머신러닝의 모든 것 with Python, R> 강의를 활용해 진행됐습니다. 강의에 대한 자세한 정보는 아래에서 확인하실 수 있습니다.
ai관련 stack이 어렵다고만 느끼시는 분들에게 같은 초심자로써 어떤 마음으로 입문하면 수월히 배워볼 수 있는지, 또한 머신러닝 엔지니어가 된다면 세상에 단 하나뿐인 프로그램을 설계해보는 흥미로운 일을 매일같이 반복할 수 있다는 것을 같이 알아가고 싶습니다! 저는 이 스터디를 다듣고난후 ai의 기본에대한 깊은 이해를 얻고 싶습니다! 어떤 일이든 기본이 제일 중요하다고 생각듭니다 :)