클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

머신러닝 2 - 선형 회귀 모델 개념 및 모델링 사용 방법 익혀보기 본문

인공지능/머신러닝

머신러닝 2 - 선형 회귀 모델 개념 및 모델링 사용 방법 익혀보기

huenuri 2024. 9. 16. 17:29

늦은 점심을 먹고 3시가 훌쩍 넘어서 다시 오후 공부를 시작해본다. 지금부터 3시간 40분 정도 공부를 할 생각이다. 이번에 공부할 단원은 선형 회귀 모델인데 여기서부터는 수업을 하나도 들어본 적이 없어서 과연 잘 따라갈 수 있을지 걱정이 된다.

그래도 열심히 공부하고 잘 이해가 되지 않는 건 반복해서 들어보려고 한다. 제발 수업 영상이 중간에 잘리지 않고 다 잘 나오기를 바라면서 공부를 시작해본다.


 

 

 

 

선형 회귀 모델 개념 학습

 

가장 오래 사용되어 왔고 딥러닝의 기본 기술이 되는 선형 회귀 모델에 대해서 학습해보겠다.

 

 

 

 

선형 모델은 선형 수식을 만들어서 예측하는 모델이다. KNN,  Tree 모델도 자신만의 고유한  알고리즘을 갖고있는 모델 중 하나이다. KNN은 최근접이웃모델이라고 부른다. 어떤 데이터와 가까이에 존재하는 데이터를 기반으로 예측을 수행하는 모델이다. 데이터가 모여있으면 같은 유형의 결과물일 수 있다고 추측하는 가장 단순한 모델이라고 할 수 있다.

트리모델은 트리(나무) 모양을 만들어 예측을 수행하는 모델이다. 이 트리 안에는 참 또는 거짓이 되는 질문을 만들어 구성한다. 데이터를 예측하기 위해 최적의 질문 묶음을 나무 구조로 만들어 예측한다.

 

KNN 모델은 데이터를 가까이에 놓고 가장 유사한추천하다고 생각되는 내용을 추천해줄 때 사용한다. 트리모델은 딥러닝을 기반으로 하는 표 형태의 데이터 분석에서 많이 사용하는 편이다.

데이터는 컬럼들을 가지고 있는데 여기 컬럼 하나하나를 feature 특성이라고 한다. 입력 특성은 학습하기에 필요한 입력하는 데이터들을 지칭한다.

선형 함수는 1차원 함수를 말한다. 

 

 

예를 들어 성적을 예측하는 모델을 만들고자 할 때 성적은 예측값 자체엔 y값이 된다. 성적은 공부 시간에 많이 반영이 된다고 하면 이는 x값이 된다. 성적에 얼마나 영향을 많이 주는지에 대해 기울기값과 절편을 학습하는 것이 선형 모델의 원리이다.


 

 

 

 

 

문제는 x이고 정답은 y가 된다. 입력 특성은 공부 시간인 1개이며, 여기에 4개가 표로 나온 것은 데이터 샘플이라고 한다. 7시간 공부할 때 점수가 얼마가 될지 선형 수식으로 예측한다.

 

 

 

 

 

컴퓨터는 y = 10x + 0이라는 수식을 만들어낸다. 그리고 이 결과를 좌표 공간에 그어보면 직선이 그려진다.

 

 

 

 

 

선형 회귀는 원래 통계학에서 나온 것인데 이것을 머신러닝에서 차용해서 사용하는 것이다. 머신러닝을 공부하다보면 용어가 혼재되어 있는데 이 용어를 다양하게 익히는 것이 좋다. 인공지능 관점으로 볼 때 독립변수는 입력 특성으로 많이 부른다. y값 종속변수는 예측값이라고 한다.

실제 학습은 a, b를 학습하는 것이다. 수학적으로 볼 때 a값이 어떻게 변하느냐에 따라 기울기 값이 달라진다. 인공지능에서는 기울기를 가중치(weight)라고 부른다. 들어오는 x값이 예측하려는 y값에 얼마나 많은 영향을 주느냐를 의미하기 때문이다.

 

가중치를 w라는 문자로 y = wx + b 등으로 사용하기도 한다. 입력 특성을 2개 이상의 값들로 구성할 경우는 다중 회귀 모델, 하나일 때는 단순 회귀 모델이라고 부른다.


 

 

 

입력 특성이 원하는 값만큼 존재한다. 첫번째 입력 특성이 y에 얼마나 영향을 주는지 w1은 학습하고 각각의 입력 특성에 따른 가중치를 학습하는 것이 선형 모델이다. 이렇게 3개의 입력 특성이 들어가면 다중 회귀 모델이 된다. 그리고 앞의 숫자는 해당 입력 특성의 가중치를 표현한다. 성적에 큰 영향을 주지 않는 입력 특성은 봉사활동 시간이라고 할 수 있다.

 

이제 선형 회귀 모델의 예제를 만들어보며 나머지 학습을 이어가기로 하자.


 

 

 

선형 회귀 모델 사용해보기

 

 


 

 

선형회귀 모델링하기

학습에 관련된 모델과 평가 함수들을 구현해놓은 사이킷런이라는 라이브러리가 있다. 

 

 

 

 

파이썬도 클래스명과 소괄호를 이용하면 생성자가 호출되며 선형회귀 모델이 이 안에 들어오게 된다. 학습할 때 들어가는 문제 데이터는 2차원 shape이길 바란다. 하지만 우리가 앞에서 만든 x는 1차원 데이터를 2차원으로 바꾸어 주는 작업을 진행한다. 열을 1열로 하면 행은 자연스럽게 4행이 된다. 원래 정해져 있는 데이터 개수 옆에 -1을 붙이면 하나의 숫자만 계산하고 자동으로 나머지를 계산해준다.

 

 

 

평가는 데이터셋이 너무 적어서 어렵고 바로 예측하는 단계로 넘어가보겠다.

 

 

 

 

현재 시점에서 왼쪽으로 15번 이동하는 것이다. 즉 거의 0에 가까운 계산치이다. 수식은 y = 10x + 0이 된다.

 


 

 

학습을 마치고

오후 공부를 시작한지 30분도 되지 않아서 너무 졸려서 1시간 가까이 잠을 자고 일어나서 나머지 공부를 진행해보았다. 선형 회귀 모델의 개념과 기본적인 사용법을 익혀보았다. 그동안 이름은 많이 들어보았으나 어디에 쓰는 건지 어떻게 사용하는건지도 몰랐었지만 이번 시간을 통해 배울 수 있어서 정말 좋았다.

처음 들어보는 수업임에도 따라가는데 무리가 없었다. 다음 포스트에서는 다중 선형회귀 모델에 대해서 공부해보려고 한다. 함수를 공부해보고 싶은 마음이 들며 수업이 정말 재미있었다.