Artificial Intelligence/AI

Ⅳ 사이킷런과 선형회귀, 실습

seij 2024. 3. 25. 15:52

 

 

학습 목표

• 회귀분석의 개념과 독립변수, 종속변수를 이해한다.
• 사이킷런을 이용한 선형 회귀 알고리즘의 구현 방법을 익힌다.
• 다양한 오차의 개념을 이해하고 경사 하강법을 통해 최적화를 이루는 방법을 익힌다.
• 경사 하강법을 구현하기 위한 미분의 개념을 익힌다.

 

 

 

들어가며

• 강력한 파이썬 패키지들

 
 
• 머신러닝(machine learning)과 관련된 외부 라이브러리, 패키지(package)

 
 
 
• 시각화와 그래픽 라이브러리, 패키지

 
 
• 웹(Web) 서비스 개발을 위해서 널리 이용되는 라이브러리, 패키지


 

 

1. 머신러닝의 종류

머신러닝이 하려는 일

• 동작 방식을 일일이 지시하는 프로그램을 설계하지 않는다.
• 대신 변경 가능한 파라미터(parameter)에 의해 동작이 결정되는 융통성있는 프로그램을 만
든는 것 ☞ 모델(model)
• 파라미터가 바뀌면 동작도 바뀌고, 좋은 동작이 나오도록 파라미터를 변경하는 일 ☞ 학습


머신러닝의 정의와 종류

• 머신러닝을 공학적으로 다루기 위해서는 세 가지 중요한 요소
  ✓ 우선 해결해야 할 문제(작업) T
  ✓ 이 일을 수행하는 동작을 P라는 성능 척도를 통해 평가할 수 있어야 함.
  ✓ 지속적인 훈련 경험 E를 통해 이러한 평가의 점수를 더 나은 상태로 바꿀 수 있어야 함.

• 요즘 각광을 받고 있는 인공 신경망을 이용한 딥러닝(deep learning) 분야 역시 이 머신러닝의 한 분야

 

머신러닝의 종류

 지도 학습(Supervised Learning)
  ✓ 지도 학습에서 컴퓨터는 "교사"에 의해 데이터와 정답의 역할을 하는 레이블label을 제공받는다.
  ✓ 지도 학습의 목표는 입력을 출력에 매핑하는 일반적인 규칙을 학습하는 것이다. 

 


• 비지도 학습(Unsupervised Learning)
  ✓ 지도 학습과는 달리 외부에서 정답(label)을 주지 않고 학습 알고리즘이 스스로 입력으로부터 어떤 구조를 발견하는 학습이다.
  ✓ 비지도 학습을 사용하면 데이터에서 숨겨진 패턴(pattern)을 발견할 수 있다.
  ✓ 비지도 학습의 대표적인 예가 군집화(clustering)이다. 

 

분류와 군집화에 주로 사용

 



• 강화 학습(Reinforcement Learning)
  ✓ 강화 학습은 에이전트(agent), 환경(environment), 행동(action), 보상(reward)과 상태(state)라는 학습 데이터를 준다.
  ✓ ex) 게임 캐릭터가 게임 환경에서 특정한 행동을 수행하고, 이에 대한 보상을 통해 행동을 결정하는 정책(policy)을 바꾸어 나가는 방식이다.

 

게임분야에 강화학습을 주로 많이 사용




강화학습 워크플로

• 강화학습 워크플로(workflow)
① 환경 생성 : 에이전트와 환경 간 인터페이스 등의 강화학습 에이전트가 운영될 환경을 정의
② 보상 정의 : 에이전트가 성과를 작업 목표와 비교하기 위해 사용할 보상 신호 및 이 신호를 환경으로부터 계산하는 방법을 명시
③ 에이전트 생성 : 정책과 강화학습 훈련 알고리즘으로 구성된 에이전트를 생성
④ 에이전트 훈련 및 검증 : 훈련 옵션(중지 기준 등)을 설정하고 에이전트를 훈련해 정책을 조정
⑤ 정책 배포 : 정책은 독립된 의사 결정 시스템 주어진 상태에서 어떤 행동을 취할지를 알려주는 일종의 지침서 같은 것


※ 출처(그림): MathWorks, 강화학습 워크플로


 


2. 회귀분석과 독립변수, 종속변수

회귀분석과 독립변수, 종속변수

• 회귀(Regression)
✓ 회귀분석은 대표적인 지도 학습 알고리즘으로 관측된 데이터를 통해
독립변수와 종속변수 사이의 숨어 있는 관계를 추정하는 것이다.

 

x가 독립변수



• 주택과 가격문제?
✓ 대상의 면적을 x 좌표에 입력하고 이들의 거래가격을 y 좌표에 매핑시킨 후,
이 상관관계를 가장 잘 설명하는 직선을 찾는 문제가 될 수 있다.
✓ 가설(hypothesis) 혹은 모델(model)

 

 

• 오차를 줄이는 방향으로 함수의 계수 w, b 를 최적화하는 과정을 수행 ☜ 기계학습
✓ 작업 T는 독립변수에 대응하는 종속변수를 추정하는 일이며, 주어진 데이터가 경험 E에 해당한다.
✓ 성능 척도 P는 예측한 값 𝑦 ̂과 데이터로 제공되는 목표값 y의 차이가 작을수록 높은 점수를
부여한다. 

w는 계수 절편은 b

 

 



3. 사이킷런을 이용한 선형 회귀

사이킷런과 선형회귀

사이킷런(scikit-learn)은 2007년도 구글 하계 코드 프로젝트 모임에 참여한 개발자들이 중심이 되어 시작된 라이브러리
 ✓ 사이킷런은 지도 학습, 비지도 학습을 위한 다양한 모델을 제공하며, 이 모델을 위한 시각화 도구,
교차 검증 도구들까지 매우 광범위한 기능을 제공한다. 

 

오른쪽은 비교와 군집화가 이루어지므로 비지도학습에 해당한다.

 

 

머신러닝에는 여러 단계가 필요하다.

첫 번째는 특성과 레이블로 이루어진 여러 데이터

두 번째는 데이터를 바탕으로 동작이 결정되는 모델

세 번째는 모델을 위한 적절한 하이퍼 파라미터

네 번째는 훈련단계

다섯 번째는 테스트&검증단계

 


• 특성(features)

  ✓ 관찰되는 현상에서 측정할 수 있는 개별적인 속성을 의미한다.
  ✓ 기계에게 이 현상을 학습하게 한다는 것은 이 특성을 사용하여 학습한다는 것을 의미한다.
  ✓ Y=f(x)의 함수를 찾는다고 할 때, 입력 데이터로 사용되는 x가 바로 특성이다.
  ✓ 특성이라는 것은 학습의 결과를 결정하는 데에 영향을 미치는 입력 데이터라고 할 수 있다.

 

 

 

★ 선형 회귀 모델의 계수와 절편

• 선형 회귀는 임의의 독립 변수 x와 이 변수에 따른 종속 변수 y와의 상관관계를
모델링하는 기법으로, 이 두 변수의 관계를 알아내거나 이 모델을 이용하여
y가 없는 x 값에 대해 y를 예측하는 데 사용할 수 있다.

 



 ✓ 여기서 m은 직선의 기울기이고 입력 변수 x에 곱해지는 계수(coefficient)이다.
 ✓ 그리고, x와 관계없이 y에 영향을 주는 값 b는 절편(intercept)이다.
 ✓ 절편은 y=mx 라는 회귀선을 위 또는 아래로 얼마나 평행이동 시킬지를 결정한다.

 

 

다중 회귀 모델의 계수와 절편

• 2개 이상의 변수가 있는 경우까지 확장될 수 있으며, 이를 다중 회귀분석이라고 한다. 


 ✓ 여기서 w와 x는 모두 벡터이고,
 ✓ w0 을 제외한 w=(w0, w1, … , wp) 를 계수,
 ✓ w0 를 절편이라고도 한다. 


다중회귀에서는 절편도 파라미터로 표현한다.

1차원일 때는 직선
3차원일 때는 평면처럼(그림과 같이)
3차원 이상은 하이퍼~로 나타낸다.



선형 회귀분석을 위한 가정

• 선형 회귀분석을 위한 4가지 기본 가정

 

 

 

 

 

 




4. 사이킷런을 이용한 선형 회귀, 실습

간단한 선형 회귀 실습

• 선형 모델 linear_model을 import
• LinearRegression() 생성자를 통해 선형 회귀 모델을 생성

 

regr = 참조변수



• 선형 회귀를 위한 입력 데이터 집합 X (독립변수)
• 정답에 해당하는 y (종속변수)

 

선형회귀에서는 입력은 무조건 2차원 벡터이지만 결과값은 무조건 1차원으로 나온다.

fit은 학습을 시키는 함수

앞에가 독립변수 뒤에가 종속변수의 형태로 (인수가) 들어간다.



• 직선의 식과 선형 회귀 직선이 실제 데이터를 얼마나 잘 설명하는 모델인가?

  ✓ 직선의 기울기 regr 모델의 coef_ 속성값으로 얻을 수 있으며,
  ✓ 직선의 절편은 intercept_ 속성값으로 얻을 수 있으며,
  ✓ score() 메소드를 통해서 이 모델의 점수를 알아볼 수 있다

 

 

100%에 가깝게 나오지 않는 이유는 데이터가 너무 없기 때문이다.

데이터가 5개 뿐이다. 데이터가 10개, 20개 증가하면 관계점수 또한 올라갈 것이다.





• 데이터를 시각화하고 차원을 증가

 

시각화라는 말이 나오면 무조건 matplotlib 라이브러리를 사용한다.
predict(x) 예측하는 함수를 기억해두자.

 

 

 

 



• 키가 167인 동윤이의 키를 넣어서 그 추정값을 출력

 

2차원 벡터의 형태로 값을 입력한다. (대괄호 2개)
167이 들어왔을 때는 대략적으로 56.2kg으로 추정된다고 예측값을 알려준다.



• 여자/남자의 체중 차이를 반영한 선형 회귀 모델 적용을 위한 데이터

 

생성자를 통해서 참조변수를 하나 만들고
참조변수 regr을 통해서 계수와 절편, 점수 등을 구하는 코드

 

 

 

 

실습파일

 

 

 

 

 

 

5. 가설의 정확도를 평가하는 오차

MAE vs MSE

• 평균 절대 오차(mean absolute error, MAE)
• 평균 제곱 오차(mean square error, MSE)

 

 

 



MAE 보다는 MSE

• 평균 절대 오차(MAE)

 ✓ 머신러닝에서 사용 가능한 오차함수 중에서 비교적 단순한 오차 함수이다.
 ✓ 예측값 y^과 관측값 y의 차이값의 절대값을 구한 후 이 값들의 평균값을 사용한다. (개요)
 ✓ 즉, 직관적이며 계산이 편리하다. (장점)
 ✓ 축적을 보정하지 않기 때문에 앞의 값의 10배에 해당하는 (10, 12), (20, 24), (30, 25), (40, 46), (50, 54) 값에 대해서 동일한 10%오차가 발생하더라도 10배의 차이가 나는 문제가 있다.
 ✓ 절대값의 사용으로 인해 미분이 불가능한 지점이 발생한다는 문제가 있다. (단점)

 

MSE를 더 많이 사용한다.

절댓값을 사용해서 미분이 불가능하다.


• 평균 제곱 오차(MSE)

 ✓ 머신러닝에서 사용하는 대표적인 오차 척도

 


오차함수의 구현

• 넘파이를 이용하여 MSE 구현

T수식을 써보세요



• 사이킷런을 이용한 MSE 구현

 

mean_squared_error : 평균제곱오차를 가져다 쓰는 것

 



MAE 보다는 MSE

• WHY?

✓ 미분불가능

 

미분이 불가능하다
초록색은 예측모델이다.
w가 0.75일 때, 1.0일 때, 1.25일 때 모델이다.

각각의 파라미터 공간 값에서의 평균 제곱 오차값을 보는 것
0.75일 때 오차가 대략 33정도 된다. 1.0일 때는 7, 1.25일 때는 50정도 된다.
오차가 작아질수록 성능이 좋은 모델이라고 볼 수 있다. 

평균제곱오차를 이용하게 되면 사각형에 대한 넓이, w에 대한 평균제곱오차값으로 최적해, 최솟값, 꺾이는 부분을 알 수 있다. 

그래서 오차를 분석해서 가장 좋은 최적값을 찾을 수 있다는 게 장점이다.

 

이와 같이 방법을 경사하강법이라고 한다.
보통 경사하강법으로 최적해를 많이 찾는다. 다시 말해, MSE로 봤을 때 이야기다.

 

마지막 실습

04_1 선형 회귀 퀴즈.ipynb
0.03MB