머신러닝 & 딥러닝

머신러닝 대표 알고리즘의 종류: 선형 회귀, 로지스틱 회귀, 결정 트리, K-최근접 이웃 회귀

카루-R 2022. 5. 29. 13:07
반응형

환영합니다, Rolling Ress의 카루입니다.

이번에는 인공지능에서 사용되는 머신러닝 알고리즘 중 유명한 것들 몇 개를 골라 자세히 비교해보겠습니다. 언어와 매체 수행평가의 일환으로 그동안 올린 것들을 좀 정리해보는 시간이 될 거예요. 자세한 설명을 하기 전에, 간단하게 요약 설명 먼저 제시해드리겠습니다.

1. 선형 회귀(Linear Regression)

  • 특징: 독립변수 x와 종속변수 y의 관계를 선형으로 모델링한 것 (y=wx+b)
  • 장점: 비교적 간단하고 성능이 뛰어난 편에 속함
  • 단점: 음수값이 나오면 안 되는 상황에선 단순 선형 회귀를 사용할 수 없다.

2. 로지스틱 회귀 (Logistic Regression)

  • 특징: 선형 회귀를 사용하며, 이름은 회귀이지만 실제로는 분류 모델에 가까운 특성을 지님
  • 장점: 출력값이 0~1의 범위로 나오므로 확률 판정에 적합함
  • 단점: 시그모이드 함수의 입력값이 0일 때 출력이 정해지지 않음

3. K-최근접 이웃 회귀 (K-Nearest Neighbors Regression)

  • 특징: 이웃 샘플들의 값을 토대로 타깃값을 예측함
  • 장점: 직관적으로 추론이 가능하며, 극단적인 값의 영향을 적게 받음
  • 단점: 이상치 샘플을 제대로 예측할 수 없음 (극단적인 값이어도 항상 일정하게 예측한다)

4. 결정 트리 (Decision Tree)

  • 특징: 내부적인 기준을 통해 참/거짓을 판별한 후 노드가 뻗어나가는 형태
  • 장점: 전처리가 필요 없고 모델이 훈련된 과정을 명확하게 알 수 있음
  • 단점: 과대적합 문제가 발생할 수 있음

자, 이제 각각에 대해 자세히 설명해보도록 하겠습니다.


1. 선형 회귀 (Linear Regression)

우선 이 글에서 다루고 있는 모든 회귀 분석은 '회귀' 분석이므로, 독립변수와 종속변수가 모두 연속형 자료(양적 변수)라는 전제 하에 진행합니다. 여기서는 x축이 독립변수, y축이 종속변수인 겁니다. x의 값이 변함에 따라 y의 값도 변할 겁니다. 그런데, '얼마만큼' 변할까요? 선형 회귀는 바로 이 관계를 나타내는 직선을 찾는 게 목표입니다.

y = wx + b

이런 직선이 있다고 가정합시다. w는 가중치(weight)라고 부르며, b는 편향(bias)입니다. 선형 회귀는 바로 이 w, b값을 찾는 과정이라고 보시면 됩니다. 예를 들어, OO국제고 학생들 600명의 키와 몸무게를 표현한 데이터가 있다고 칩시다. 그러면 그 값들을 바탕으로 '키가 170cm이면 몸무게는 ___kg 일 것이다'라고 추론이 가능합니다. 이렇게 추정할 수 있도록 직선을 학습하는 겁니다.

학습 결과로 이런 직선이 나왔다고 가정해봅시다. 키가 175cm인 학생은 대략 63kg 정도의 몸무게를 가질 것이고, 키가 160cm인 학생은 47kg 정도의 몸무게를 가질 것이라고 예측이 가능하죠. 그런데, 단순 선형 회귀분석에는 중대한 문제가 있습니다. 지금 보시면 x의 값이 100 이하일 때 y의 값이 음수가 되어버리죠. "신장이 100cm 이하이면 몸무게가 음수겠구나!" 라는 이상한 결론이 나와버립니다. 이게 단순 선형 회귀분석의 한계점입니다.

2. 로지스틱 회귀 (Logistic Regression)

인공지능의 활성화 함수에서도 자주 사용되는 함수입니다. 함수식은 위처 생겼습니다. 특이하게 치역이 (0, 1)입니다. x값이 양의 무한대로 발산하면 함숫값은 1에 수렴하고, 음의 무한대로 발산하면 0에 수렴합니다. 실수 전체를 0에서 1사이의 범위로 압축한다는 장점 덕분에, 확률 계산에 상당히 많이 이용됩니다. 또한 그 특성 때문에 이진 분류(Binary Classification)에서도 많이 사용됩니다. 함숫값이 0.5보다 크면 양성(+) 클래스, 작으면 음성(-) 클래스로 분류하는 식으로요. 그런데 딱 0.5일 때는 어떻게 될까요? 그건 구현체마다 다릅니다. 다만 사이킷런에서는 음성으로 판단합니다.

아무튼, 로지스틱 회귀는 선형 방정식을 사용해 분류를 진행합니다. 선형 회귀를 하고, 이후 위에 그려진 시그모이드 함수 또는 소프트맥스 함수를 통해 확률을 판단합니다. 예를 들어 분류할 클래스가 A, B, C가 있다면 입력값이 A일 확률 31%, B일 확률 19%, C일 확률 50%와 같은 형식으로 출력되어 '아, 이건 C일 확률이 높겠구나'와 같이 예상이 가능한 겁니다.

3. K-최근접 이웃 회귀 (K-Nearest Neighbors Regression)

k-최근접 이웃 회귀는 주변 샘플들을 이용하여 값을 추론합니다. 주변 데이터가 주황색 원처럼 있다고 가정합시. 이들을 이어서 만든 삼각형의 외심을 노란색 점이라고 할 때, 노란색 원에 들어갈 숫자는 무엇일까요? 이들의 평균, 즉 100이 될 것입다. k-최근접 이웃 회귀는 이런 식으로 주변 샘플들의 값을 이용해 타겟의 값을 예측합니다. k의 값은 임의의 자연수가 될 수 있습니다. k = 1이면, 주변 샘플 중 가장 가까운 하나의 샘플을 이용하여 값을 추론합니다. k = 10이면, 주변 샘플 중 가까운 10개의 샘플의 평균치를 추정값으로 계산합니다. 복잡한 계산을 할 필요가 없고, 주변 값들만 조사하면 되기 때문입니다. 그러나, 치명적인 문제가 존재합니다.

여기서 k-NN을 이용하기 가장 이상적인 것들은 F, H, J등 중심에 몰려있는 점들일 것입니다. 사실 A~P까지 확장해도 큰 무리는 없습니다. 그런데, 점 Q의 값을 예측하려면 어떨까요? 아무리 가까운 점 세 개를 골라봤자 K, P, N (또는 L) 정도일 것입니다. 너무 멀리 떨어져 있기에, 이런 경우에는 예측을 제대로 할 수 없습니다. 사실상 K나 Q나 비슷한 값으로 추론하게 된다는 뜻입니. 이런 경우에는 차라리 선형 회귀가 나을 수 있습니다.

이걸 선형 회귀로 풀어봅시다. 점 R, S를 임의로 잡으면 잔차를 최소화하면서 Q도 그럭저럭 설명할 수 있습니다. k-NN 알고리즘은 간단하지만, 극단적인 경우를 추론하기 어렵다는 한계가 있습다.

4. 결정 트리 (Decision Tree)

결정트리는 조금 복잡합니다. 노드라는 개념이 새롭게 등장하는데, 각각의 노드는 조건식을 가지고 있습니다. 이 조건식이 참인 경우와 거짓인 경우 각각 다른 방향으로 파생되며, 또 다른 노드가 만들어집니다. 최종적인 결론에 도달할 때까지 이러한 과정을 반복합니다. 일반적으로 회귀 알고리즘을 사용하는 경우 데이터를 정제하는 표준화 작업이 필요합니다. 그러나, 결정 트리의 경우 그러한 표준화 작업이 필요 없다는 게 가장 큰 장점입니다. 조건식을 이용하여 상향식 분기를 할 수 있으니까요. 또한, 의사결정 과정을 파악할 수 있다는 게 장점입니다. 선형 회귀의 경우 y = wx + b라는 수식은 알 수 있어도, 그 w와 b 값이 대체 어떻게 구해졌는지는 알 수 없습니다. 인공지능에선 '블랙박스'라는 표현을 사용하죠. 그러나 결정트리는 내부에 조건식을 갖고 있는 덕분에, 결괏값이 도출된 경로가 명확합니다. 한 가지 단점이 있다면, 과대적합이 일어나기 쉽습니다. 너무 훈련 데이터에만 맞춰져서 실제 예측시에 성능이 떨어지는 거죠.


자, 이렇게 머신러닝에서 중요한 네 가지 알고리즘을 다루어보았습니다. 특히 로지스틱 회귀에서 사용되는 시그모이드 함수는 딥러닝에서도 중요한 역할을 하니 꼭 기억하시는 게 좋아요. 무엇이 좋다라는 절대적인 기준은 없으니, 상황에 따라 가장 적절한 알고리즘을 사용하면 됩니다.

반응형