스터디 포스트 >  머신러닝의 모든것 with python, R

Regression - 1

유성훈 멘토
계발하는 개발자 입니다 :)

머신러닝의 모든 것 - 2주차

 
💡
2주차 스터디의 주제는 ‘Regression’ 이였습니다. “세상의 모든 문제는 하나의 직선으로 그상관 관계를 표현할 수 있다” 라는 개념에서 파생된 회귀! 머신러닝에 있어서는 가장 중요하면서도 가장 간단한 개념이 아닐까 싶은데요! 바로 시작하겠습니다.
 

Regression

notion image
수식은 이렇게 표현할 수 있습니다. 우리가 눈여겨 보아야 하는건 b가 되겠군요! 사전밋업에서도 언급했듯이, 여러분이 b가 될것이라 했는데요! 그이유는 바로 종속변수인 ‘저’는 여러 독립변수인 ‘상황’의 영향을 받아도 b(가중치)인 ‘여러분’과 적절한 상호작용을 통해 저희는 훌륭한 모델로 다시 태어날 수 있으니까요!
 

 

Regression의 종류

회귀

회귀는 하나의 변수가 나머지 다른 변수들과의 선형적 관계를 갖는가의 여부를 분석하는 하나의 방법이다.즉 하나의 종속변수와 독립변수 사이의 관계를 명시하는 것을 우리는 회귀라고 한다.
notion image
회귀모델은 위의 사진과 같이 구분을 할 수 있다. 독립변수가 1개이면 단순회귀(Simple Regression), 독립변수가 2개이상 이면 다중회귀(Multiple Regression)로 분류 할 수 있으며 각각을 또 두가지로 분류 할 수 있는데 회귀계수(기울기, x의상수값)가 선형이면 선형회귀, 비선형이면 비선형 회귀모델로 구분을 할 수 있다.
 
notion image

단순선형회귀

  • 종속변수를 하나의 독립변수로 예측하는 것을 말합니다.
notion image
B0과 B1은 회귀계수, ε은 오차항 이라고 한다.
notion image
위 그림처럼, 회귀 직선은 잔차들의 제곱들의 합 RSS(Residual sum of squares)를 최소화 하는 직선을 나타냅니다.
RSS는 SSE(Sum of Squares Error)라고도 말하며, 이 값이 회귀 모델의 비용함수(Cost Function)가 됩니다.
비용함수가 최소화 하는 모델을 찾는 과정을 학습이라고 말합니다.
 

다중선형회귀

단순선형회귀와 같이 독립변수 X의 변화에 따른 종속변수 y의 변화를 선으로서 예측하는 기법인데, 독립변수 X가 여러개인 분석기법입니다.
독립변수 X가 여러개 = 특성(feature)이 여러개라는 뜻을 나타냅니다.
 

다항 회귀

notion image
데이터셋이 선형적이라면 단순 선형회귀 역시 높은 성능을 보일 수 있겠지만,
이처럼 데이터셋이 비선형인 경우 다항회귀를 사용하는 것이 더 높은 성능을 기대할 수 있습니다.
notion image
sklearn에서 제공하는 PolynomialFeatures 클래스는 dgree 파라미터를 이용해 degree에 해당하는 다항식 피쳐로 변환해 사용이 가능합니다.
 

SVR

Regression 에 사용되는 SVM(분류(classification), 회귀(regression), 특이점 판별(outliers detection) 에 쓰이는지도 학습 머신 러닝 방법 중 하나이다.) 모델을 의미(분류 문제는 SVC)
notion image
SVM 을 회귀에 적용하는 방법은, SVC 와 목표를 반대로 하는 것입니다.
즉, 마진 내부에 데이터가 최대한 많이 들어가도록 학습하는 것이다.
마진의 폭은 epilson 이라는 하이퍼파라미터(절대상수)를 사용하여 조절이 가능합니다.
 

의사결정나무

의사결정나무는 회귀문제와 분류 문제에 모두 적용할 수 있습니다.
회귀문제는 회귀분석처럼 연속적인 변수에 대한 예측을 하는 것이고, 분류문제는 판변분석과 같이 어느 부류에 속하는 것인가를 예측하는 것입니다.
notion image
notion image
 
예를 들어보자.
notion image
 
우리가 자주하는 스무고개와 같은 방식으로 예, 아니오를 반복하며 추론하는 방식입니다.
생각보다 성능이 좋아 간단한 문제를 풀 때 자주 사용한다.
 
notion image
 

 

Regression-python

 

Importing the libraries

 
notion image
 
 

Importing the dataset

 
notion image
연차에 따른 연봉에대한 데이터셋을 import해왔다. 늘 그렇듯 x,y에 할당해 주면된다.!
 

Splitting the dataset into the Training set and Test set

 
notion image
X,y만 지정해주고 test size 는 1/3으로 설정 하였다.
 
 

Training the Simple Linear Regression model on the Training set

notion image
linear_modle 에서 LinearRegression을 import해왔다.
fit으로 입혀주기만 하면 모델이 학습된다..!
 
 

Predicting the Test set results

 
notion image
.predict로 예측값에 접근해보면
 
 

Visualising the Training set results

notion image
그래프 이름을 정해주고 x-label, y-label을 지정해주면
이런식으로 그래프를 그려줄 수 있다.
notion image
 
 

Visualising the Test set results

 
notion image
 
 

Regression-R

 

Set As Working Directory

notion image
R studio에서 오늘 실습에 사용할 Salary.csv파일을 선택후 더보기를 눌러 Set As Working Directory로 설정을 완료하면
notion image
콘솔창에 이렇게 표시가 됨과 동시에
notion image
이렇게 csv파일이 열리게 된다.
 

Splitting the dataset

데이터셋 분할을 하기위해선믄 우리는 caTools를 가져와야 한다는 것을 지난번 R 실습에서 배웠다.
해당 flow그대로 진행을 해본다면
notion image
여기까지가 분할을 해주는 과정이고
notion image
후에 이처럼 작성하면 우리는 훈련데이터는 TRUE로 검증 데이터는 FALSE로 표시된다는 것을 알 수 있다.
notion image
 

feature scaling

이 작업은 R에서 이용 중인 단순 선형 회귀 패키지가 알아서 해준다.
그러니 우리는 신경쓰지 않아도 된다.
 

fitting

regressor = lm이라고 코드를 적은후 f1을 눌러보면
notion image
이와같은 설명을 볼 수 있는데 argument를 보면
  • 'formula'
  • 종속 변수
  • 독립 변수이렇게 입력을 해주고 두번째 argument인 data를 입력해 주면 된다.이처럼 입력후 실행을해보면
    • notion image
      notion image
notion image
regressor가 표시되기 시작한다.콘솔 영역에
summary(regressor)이처럼 입력하면
notion image
이렇게 단순 선형 회귀 모델에 대한 정보가 표시된다.
 

Predicting the Test set results

notion image
이처럼 입력하면
notion image
y_pred가 생성되는 것을 확인할 수 있다.콘솔창에
y_pred 를 입력해보면
notion image
이 숫자가 나타내는 건 테스트 세트의 관측값 10건에 상응하는 임금 예측이 된다.
 

 

P-value

 

P-value에 대하여 조금더 깊게 알아보기!

P-Value란 무엇인가?

우선 통계적 유의성을 이해해 보도록 하자.

통계적 유의성

동전던지기로 생각을 해보도록 하자.
notion image
가능한 출력은 앞면,뒷면으로 예상할 수 있다. (입력이 동전을 던지는 행위라고 가정을하면)
notion image
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이 되어야 내가 생각한 귀무 가설이 옳다고 생각을 할 것이다.
하지만 단한번의 독립시행에서 이와같은 결과가 도출 되었다.
그렇다면 우리는 의심을 할 수 밖에 없는데 '의심을 하는것이 합리적인 수치'를 우리는 통계적 유의성이라고 부르기로 한것이다.
이를 간단히 표로 그려보자면
notion image
 
이처럼 표현할 수 있다. 바로저 알파값이 '의심을 하는것이 합리적인 수치'즉 통계적 유의성이 되는 것이다.
이때야 우리는 귀무가설이 틀렸다고 부정할 수 있는것이다.
그것도 '합리적으로' 말이다.
그래서 우리는 오늘 합리적으로 의심을 해도 되는 수치 p-value에 대하여 알아보았다.
지금 가까이 동전이 있다면 동전을 던져서 5번연속 같은면이 나온다면 당신은 H a 세계관에 살고 있다고 합리적인 의심을 해보아도 된다.
 
 
 
 
본 스터디는 Udemy의 <【한글자막】 머신러닝의 모든 것 with Python, R> 강의를 활용해 진행됐습니다. 강의에 대한 자세한 정보는 아래에서 확인하실 수 있습니다.
 
 
프밍 스터디는 Udemy Korea와 함께 합니다.
 
 
원하는 스터디가 없다면? 다른 스터디 개설 신청하기
누군가 아직 원하는 스터디를 개설하지 않았나요? 여러분이 직접 개설 신청 해 주세요!
이 포스트는
"머신러닝의 모든것 with python, R" 스터디의 진행 결과입니다
진행중인 스터디
머신러닝의 모든것 with python, R
ai관련 stack이 어렵다고만 느끼시는 분들에게 같은 초심자로써 어떤 마음으로 입문하면 수월히 배워볼 수 있는지, 또한 머신러닝 엔지니어가 된다면 세상에 단 하나뿐인 프로그램을 설계해보는 흥미로운 일을 매일같이 반복할 수 있다는 것을 같이 알아가고 싶습니다! 저는 이 스터디를 다듣고난후 ai의 기본에대한 깊은 이해를 얻고 싶습니다! 어떤 일이든 기본이 제일 중요하다고 생각듭니다 :)
유성훈 멘토
계발하는 개발자 입니다 :)