머신러닝/[패스트캠퍼스]머신러닝&AI 첫걸음 시작하기 : 머신러닝 인강

[자기계발 챌린지] 패스트캠퍼스 KDC 머신러닝 - 머신러닝&AI 첫걸음 시작하기 : 머신러닝 인강 - 2주차 : 머신러닝의 시작 회귀분석(1)

uomnf97 2021. 11. 23. 23:56

안녕하세요~ 

패스트캠퍼스 KDC 머신러닝&AI첫걸음 강의를 수강하고 있는 제이덥입니다~

오늘도 자기계발 챌린지에 참여하기 위해 

2주차 공부했던 내용에서 

어려웠던 내용, 유익했던 것, 강의를 통해 얻은 것들을 공유해보려고 합니다~

그럼 회귀분석에 대해 배워볼까요?!ㅎㅎ

.

.

"먼저 포스팅 관련 내용은

[KDC] 패스트캠퍼스 머신러닝& AI 첫걸음 시작하기 강의를 토대로 작성되었음을 알려드리며, 

자세한 공부 하기를 원하시는 분들은 패스트캠퍼스강의를 수강하시기 바랍니다!"

.

.

 

이번 강의에서는 
"회귀"

에 대해서 집중적으로 배웠습니다~

 

회귀분석의 개념, 모델링 방법, 검증 방법 등을 배웠고

이를 바탕으로 실습하는 시간을 가졌습니다. 

저번 강의에서는 머신러닝의 이론적인 배경과 수학적, 통계적 이론을 습득하느라 많이 힘들었는데, 

이번 강의 중간중간에는 배웠던 것을 실습으로 익힐 기회가 있어서 쉽게 흡수할 수 있었던 것 같네요!

배웠던 내용을 강의안을 노출시키지 않는 선에서 간단하게 정리해보고 오늘을 마무리해보려고 합니다.

 

배운 내용을 크게 구분해주자면 

선형 회귀의 개념, 회귀계수를 추정하는 방법, 의미, 검정 파트로 다음 네 가지 주제에 대해 학습했습니다.

단순 선형 회귀, 다중 선형 회귀, 다항 선형 회귀, 로지스틱 회귀

이렇게 총 4가지 주제에 대해서 학습했습니다.

 

회귀 분석이란 지도 학습 중 하나로 크게 두가지로 나뉩니다. 연속형 변수를 예측하는 회귀분석 모델과 분류를 하는 분류모델로 말입니다.

 

회귀 분석 모델은 y=f(x)꼴로 입력변수 x에 대해 y의 관계를 모델링한 것으로 최종적으로 y를 예측하는 것이 목표입니다. 

 

이를 위해 선형 / 비선형 모델로 회귀 학습을 할 수 있으며 지금 부터는 단순 선형회귀에 잠깐 살펴보고 넘어가도록 하겠습니다. 

 

단순 선형 회귀는 가장 간단한 선형회귀 모델입니다. 

그래프 출처 : https://medium.com/@Aaron__Kim/%EC%84%A0%ED%98%95-%ED%9A%8C%EA%B7%80%EC%9D%98-%EA%B2%B0%EC%A0%95%EA%B3%84%EC%88%98-linear-regression-r-squared-determination-coefficient-a66e4a32a9d6

 

그리고 위에서 보는 것 같이 여러 직선 중 가장 직선과 데이터 차이가 제일 작은 직선을 선택합니다.

잔차(residual)가 즉 "실제 값-예측 값"이 가장 적은 직선을 선택하는 것인데요. 

이 때 SSE라는 sum(잔차^2)을 이용해서 구합니다. 

 

사실 그동안 제곱을 하는 이유는 단순히 모델링의 정확도를 개선하기 위해 

오차에 많은 페널티를 주는 줄 알고 있었는데요, 

이번 강의를 통해 왜 제곱을 하는지 알게 되었던 것 같습니다. 

 

제곱을 하지 않을 경우 무수히 많은 해가 만들어지며, 

절댓값을 취할 경우 미분 불가능한 점이 생겨, 

제곱을 취할 경우에 올바른 해와 함께 미분이 가능해 

쉽게 값을 구할 수 있어서 였습니다. 

 

그 동안 의문을 가지고 있던 부분이 풀리는 느낌이 들어 성취감이 배로 느껴졌던 것 같습니다 ㅎㅎ

그리고 회귀계수가 뜻하는 것을 수식으로 뿐만 아니라 직접 설명해주셔서 직관적으로 이해할 수 있었고, 

명확하게 알지 못하던 SST, SSE , SSR, R-Square값까지 올바르게 이해하게 됬네요. 

또한 귀무가설, 대립가설 등 제가 모르던 검정방법을 배울 수 있어서 좋았네요. ㅎㅎ

마지막으로 실습에서 이를 적용해서 설명해주셔서 이제는 잊어버리지 않을 것 같네요 ~

 

그리고 다중 회귀에 대해서 배웠습니다. 

다중 회귀는 단순 선형회귀에서 항을 늘린것입니다. 그렇기에 개념이나 MSE, SSE를 구하는 방법이 유사합니다. 

컴퓨터를 이용해서 구해주기 때문에 행렬을 이용해서 쉽게 계산한다고 하네요. 

실제로 numpy의 dot을 이용해서 쉽게 연산을 해서 빠르게 값을 구하는 것 보고 

어렸을 때 배웠던 행렬이 매번 머신러닝 혹은 딥러닝과 같은 AI 모델을 구현하며 유용성을 몸에 익히는 것 같네요.

 

 

다만 다중 회귀분석에서 단순회귀 분석과 다르게 다중공선성이라는 문제가 발생합니다. 

사실 이 부분에 대해서는 전혀 무지했었는데요~ 

명확한 개념과 함께 발생한 이유, 해결 방법 등을 익히며 익히는 시간을 가졌습니다. 

다중공선성은 항이 증가하면서 생긴 현상인데요

변수끼리 서로 영향을 줘 변수해석을 어렵게 하고 모델의 정확도를 떨어뜨리게 합니다. 

 

이를 진단하는 VIF 방법 그리고 해결하는 방법을 배웠습니다. 

그러나 아쉽게도 완벽한 해결 방법은 없고 해결하기 위해 Stepwise, forward feeding, backward feeding과 같은 방식을 적용한다고 하네요. 

 

그리고 다항 회귀 분석은 항의 차수가 올라가는 건데요. 

이 역시 다중 선형회귀와 비슷하며 다만 overfitting을 방지하기 위해 항의 차수를 최대한 낮춰야(2차항) 한다는 것을 배웠습니다. 

 

마지막으로 로직스틱 회귀, 즉 이진 형태의 출력 변수를 예측하는 회귀분석 방법을 배웠습니다. 

선형 모델을 확률로 예측하며, 회귀 계수를 축소하는 이유, 축소법 등에 대해서 배웠습니다!

 

사실 이번 강의 전 유튜브나 블로그로 관련내용을 학습 한 적이 있었습니다. 

그때에는 직관적으로 이해를 하고 이렇게 다양한 관점으로 선형회귀를 접해보지 않았었습니다. 

그래서 그런지 이번 강의와 관련된 내용이 매우 다양한 관점으로 관련된 내용을 접했습니다. 

수학적으로, 통계적으로 그리고 그래프 관점에서 접했던 것 같습니다. 

그리고 강의자 분께서 관련내용에 대해서 구현할 때 유의해야할 점들을 짚어 주셔서 많은 도움이 되었던 것 같습니다. 

후에 대회를 참가할때나 학교에서 프로젝트를 진행할 때 많은 도움이 될 수 있을 것 같습니다. 

 

그리고 이번 강의를 통해서 좋은 데이터 분석 좋은 머신러닝 모델을 만들기 위해서 많은 노력을 쏟아 부어야겠다는 생각이 들었습니다. 

단순히 함수를 알고 있다고 해서 올바르게 쓸 수 있다는 것이 아니라 문제 상황에 대한 설정도 명확하게 알고 있어야 하고 

이를 바탕으로 가설을 세우고 학습 모델을 만들며 데이터 관점, 수학적 관점, 그래프 관점에서 다양하게 학습모델을 검증해야 된다는 것을

머리로 뿐만 아니라 직접 체험하며 확실하게 알게 되었던 것 같습니다. 

또한 해결방법을 적용한다고 해서 반드시 문제가 해결 되는 것이 아니며, 

개발자의 역량에 많은 부분이 달려있다라는 생각을 하게 된 것 같네요. 

이번주도 좋은 강의를 들으며 학습을 했던 것 같네요. 

읽어주셔서 감사하고, 오늘 블로그를 본 분들 모두 좋은 하루 되시길 바랍니다 :)

P.S 아래에는 제 개발 환경에서 실습을 했다는 인증 샷입니다~

패스트 캠퍼스의 강의이기 때문에 코드부분은 공개 할 수 없지만 따라해보며 만들어봤던 사진과 

제 workspace를 첨부합니다~

출처 나의 m1 맥북

출처 :

1) 패스트 캠퍼스 : https://fastcampus.co.kr

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

2) 강사님 :

이경택 강사님 - 머신러닝&AI 첫 걸음 시작하기 2주차 Chpater 04,Chapter05, Chapter06