ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🤖Machine Learning_Regression(회귀)
    머신러닝 2024. 2. 20. 17:30

    머신러닝의 지도학습은 회귀분류라는 두 가지 문제로 나눌 수 있다.

     

    회귀와 분류의 차이를 입력값, 출력값, 모델 형태로 살펴보자.

    회귀(Regression)와 분류(Classification) 입력값에 연속적인 값(실수형), 이산값(범주형) 등 제한 조건이 따로 없지만, 회귀는 출력값으로 연속값(실수형)이 나왔을 때 회귀 문제를 푼다라고 표현하고, 출력값이 이산값(범주형)으로 나온다면 분류 문제를 푼다고 정의할 수 있다.

    회귀모델은 연속값의 출력을 하기에  모델의 형태가 우리가 흔히 알고 있는 일반적인 함수의 형태(e.g. y = ax+b)가 되고, 분류 모델은 이산값(범주형)의 데이터를 출력하기에 이진 분류(e.g.'있다/없다'와 같이 클래스의 개수가 2개인 상황)라면 시그모이드(sigmoid) 함수, 다중 분류라면 일반적인 함수 형태에 시그모이드 함수 또는 소프트맥스(softmax) 함수가 추가가 된 모델의 형태이다.

     

    이제, 회귀 문제에 대해 어떻게 회귀 모델을 정의하고 어떻게 최적화 시키는 지를 공부해 보자.

     

    1.  사용할 용어 

    데이터는 피처(feature)라벨(label)로 구성된다.

    데이터에서 모델이 예측하고 싶어 하는 목표가 라벨, 나머지 칼럼은 피처라고 불린다.

    이는 독립변수(feature)종속변수(label)로도 불린다.

    라벨은 y로 표기하면, 라벨의 유무로 지도학습, 비지도 학습을 구분한다.

    지도학습 상황에서 라벨이 이산값이라면 분류문제, 실수값이라면 회귀문제를 푼다고 표현한다.

     

    - Feature(=attribute, 피처)

    데이터 X의 특징, 혹은 항목을 의미한다.

    앞으로 N은 데이터 샘플 개수, D는 피처의 개수로 표현할 것이다.

    ** 피처를 행렬(행과 열)로 표현된 수학적인 매트릭스나 벡터로 표현하고자 할 때, X_ND(_이후는 아래첨자)

     

    - Parameter(= weight, 파라미터, 가중치)

    데이터가 주어졌을 때 주어진 데이터(입력값) 말고, 정의한 모델(함수)이 가지고 있는 학습 가능한(learnable) 파라미터, w_D로 표현한다. 

    ** 일차함수에서는 기울기와 절편

     

    - Hyperparameter(하이퍼 파라미터)

    모델이 학습에 있어 모델이 가지고 있는 것이 아니라 인간이 정해야 하는 변수들로 학습률, 배치 크기 등이 있다.

    인공지능은 아직 완벽하지 않기에 전문가(사람)가 줘야 하는 데이터와 모델의 정의, 학습을 잘하기 위해 하이퍼 파라미터가 필요하다.

     

    - Input(입력값) vs Output(출력값)

    Input은 모델에 입력되는 값(전문가가 준 데이터)들 중에서 데이터의 피처 부분을 의미하고 X로 표기한다.

    Output은 모델로부터 출력되는 예측값이다.

     

    Point 💡 데이터는 학습데이터(train), 평가데이터(test)로 나누어 모델을 학습할 때는 학습 데이터만 사용하고 평가 데이터는 절대 모델 학습에 사용해서는 안되고 학습 데이터 안에서 y값 또한 모델에게 주어서는 안 된다.

    모델을 학습시킬 때 학습데이터의 X값 즉, 입력값만으로 예측을 시키고 예측값을 받아 가지고 있는 실제 값과 비교를 해 오류값을 다시 모델에게 입력을 시켜주고 다시 학습을 시켜 업데이트한다.

    따라서 y값을 모델에 학습에 직접 사용하진 않고 손실값(오류)을 뽑을 때만 사용한다.

     

    - 선형 모델 vs 비선형 모델

    Linear regression(선형 회귀)는 파라미터를 선형 결합식으로 표현 가능한 모델.

    + 데이터와 파라미터 사이의 관계가 선형적인 결합임을 의미

    ** 선형 결합식이란?

    데이터와 파라미터 사이의 관계가 일차식으로 결합된 형태 (ex) y = w_Dx_D+w_0) 혹은 y=w_2x^2 + w_1x+w_0과 같이 x와 가중치가 선형적으로 결합이 된 형태

    Nonlinear regression(비선형 회귀)는 선형 결합식으로 표현 불가능한 모델.

    ex) 로그함수, y = max(x,0)

     

    2. 기초 수학

    앞에서 살펴본 용어들을 바탕으로 '함수'에 대해 알아보자.

    함수는 두 집합 사이의 관계, 혹은 규칙을 의미하는 것으로 y = f(x)의 식으로 표현하고 이때 x는 입력값, y는 출력값이다.

    머신러닝에는 피처와 라벨이 존재하기에 피처와 라벨이 가지고 있는 관계가 존재할 것이다.

    우리는 완벽한 함수를 찾기 위해 모델을 정의하고 학습하며 우리가 찾아낸 y는 예측값이 된다.

     

    함수 중 일차 함수는 y가 x에 대한 일차식으로 표현되는 경우로 y = ax+b(a!= 0)로 표기하고, a를 기울기, b를 y절편이라고 한다.

    이차 함수는 y가 x에 대한 이차식으로 표현되는 경우로 y = a(x-p)^2 + q(a!=0)로 표기한다.

     

    함수를 살펴본 이유는 순간변화율을 알기 위해서인데 순간변화율은 x의 값이 미세하기 변화했을 때, y의 변화율을 말한다.

    간단하게 말해 어떤 x값(=a)에서의 그래프와 맞닿는 접선의 기울기를 의미한다.

    우리가 고등 수학에서 배웠던 미분이 바로 이 순간변화율(y값의 변화율)을 구하는 것이다.

    이러한 미분이 왜 머신러닝에서 가장 중요할까?

    함수의 최솟값에서 미분값(순간 변화율)은 항상 0이 된다는 특징 때문이다.

    이를 바탕으로 파라미터의 최적값을 구할 수 있다.

    실제값과 예측값의 차이를 손실값으로 정의한다면 이 차이를 최소화시켜 주는 파라미터를 찾는 것이 우리가 하고자 하는 머신러닝 학습의 핵심이다.

     

    앞으로 머신러닝이나 딥러닝을 공부하다 보면 매번 나오는 것이 자연상수 e이다.

    자연상수는 밑이 e 지수가 x인 함수를 미분했을 경우, 자기 자신이 나온다는 특징이 있다.

    이러한 자연상수는 시그모이드 함수와 소프트맥스 함수로도 연결이 된다.

     

    시그모이드함수는 클래스가 두 가지인 이진 분류 문제를 풀 때, 모델이 가지고 있어야 하는  비선형 함수이다.

    시그모이드 함수가 왜 분류 문제를 풀 때 필요할까?

    시그모이드 함수의 출력값은 항상 0 이상 1 이하이며, 중앙 출력값은 0.5이기에 시그모이드 함수의 예측값이 0.5보다 크면 1이라는 값에 무조건 더 가깝기에 1이라는 클래스로 분류하고 예측값이 0.5보다 작으면 클래스 0으로 분류하여 사용한다.

     

    소프트맥스 함수는 다중 분류 문제를 풀기 위한 비선형 함수이다.

    클래스가 2개 이상이라면 각 클래스에 대한 예측값을 모델을 통해 받게 되는데 이 예측값을 확률의 형태로 만들 때, 소프트맥스 함수를 사용한다.

     

    03. 선형 회귀_Linear Regression

    이제 본격적으로 선형 회귀에 대해 공부를 해보자.

    선형 회귀에는 3가지 종류가 있다.

    먼저, 단순 선형 회귀(simple linear regression)는 피처의 종류가 한 개인 데이터에 대한 회귀 모델이고 다중 선형 회귀(multiple linear regression)은 일반적인 상황으로 피처의 종류가 여러 개인 데이터에 대한 회귀 모델로 각각의 피처에 대해 파라미터를 붙여준다.

    마지막으로 다항 회귀(polynomial regression)은 독립 변수(피처)의 차수를 높인 회귀 모델이다.

    차수를 높이더라도 차수를 높인 피처를 우리는 새로운 피처로 가정/인식을 할 수 있기에 선형 회귀가 된다.

     

    ❕데이터를 받았다면 가장 먼저 피처와 라벨을 구분할 수 있어야 한다.

    그다음엔 라벨이 실수형인지 범주형인지 확인해 회귀문제인지, 분류모델인지 구분하고 

    그다음이 피처를 확인해 선형 회귀의 종류를 정해 모델을 정의하는 것이다.

    모델을 정의할 줄 알았으면 그 모델이 가지고 있는 학습 가능한 파라미터를 어떻게 하면 데이터에 잘 맞는 최적의 값으로 찾을 수 있는지를 알아야 한다.

     

    모델의 최적값을 얻는다는 것은 데이터 안에 피처와 라벨 간의 관계를 가장 잘 표현하는 것과 같은 의미이고 모델 예측값과 실제값이 차이가 가장 적은 모델을 찾아내는 것이다.

     

Designed by Tistory.