회귀

분류(Classification)와 회귀(Regression)는 두 가지 그룹의 지도 학습 알고리즘 문제입니다. 지도 학습에서는 알고리즘을 사용하여 레이블과 특징이 있는 데이터 세트에서 패턴을 찾도록 모델을 학습시킵니다. 분류는 레이블이 지정된 알려진 항목의 예를 바탕으로 항목이 어떤 범주에 속하는지 예측합니다. 회귀는 타깃 결과 레이블과 한 개 이상의 특징 변수 간의 관계를 추정하여 연속적인 숫자 값을 예측합니다. 결정 트리와 같은 많은 지도 학습 알고리즘을 분류 또는 회귀에 사용할 수 있습니다.

통계학에서 회귀 분석은 종속 변수와 한 개 이상의 독립 변수 간의 관계를 수학적으로 측정합니다. 회귀 알고리즘에는 수많은 유형이 있습니다. 선형 회귀는 예를 들어 집값과 같은 숫자 값을 예측하려는 회귀 분석에 사용하는 알고리즘입니다. 로지스틱 회귀는 예를 들어 이메일이 스팸일 확률과 같이 어떤 항목이 특정 클래스에 속할 확률을 예측하려는 분류에 사용하는 알고리즘입니다.

 

선형 회귀란?

선형 회귀는 데이터 포인트 집합을 통해 선형 모델을 맞추어 목표 결과 레이블과 하나 이상의 특징 변수 간의 관계를 추정하여 숫자 값을 예측합니다. 결과 y(레이블)는 직선으로 추정할 수 있으며 다음과 같이 시각화할 수 있습니다.

y = intercept + ci * xi + Error

여기서 xi는 입력 변수(특징)이고 매개변수 ci, intercept 및 Error는 각각 회귀 계수, 상수 오프셋 및 오차입니다. 계수 ci는 해당 독립 변수(x 특징)의 단위 증가에 대한 종속 변수(y 레이블)의 증가로 해석할 수 있습니다. 아래의 간단한 예제에서는, 집의 크기(x 특징)에 따라 집값(y 레이블)을 추정하는 데 선형 회귀를 사용합니다.

Using linear regression to predict house price by house size.

x 및 y 점과 선 간의 거리에 따라 독립 변수와 종속 변수 간의 연결 강도가 결정됩니다. 선의 기울기는 곡선상 점의 오프셋 제곱합을 최소화하는 최소제곱법을 사용하여 결정되는 경우가 많습니다.

Least squares method seeks to reduce the area under the curve.

출처: Wikipedia

선형 회귀에는 단순 선형 회귀와 다중 선형 회귀의 두 가지 기본 유형이 있습니다. 단순 선형 회귀에서는 한 개의 독립 변수를 사용하여 단일 종속 변수의 결과를 설명하거나 예측합니다. 다중 선형 회귀에서는 두 개 이상의 독립 변수를 사용하여 같은 작업을 합니다.

회귀는 주로 결과를 예측하는 데 사용됩니다. 예를 들어, 칫솔질과 충치 사이의 상관관계를 찾는 데 회귀를 사용할 수 있습니다. x축은 특정 모집단에서 충치가 발생한 빈도이고 y축은 이 모집단의 사람들이 이를 닦는 빈도입니다. 주간 양치 빈도와 충치 개수를 나타낸 차트에서 각 사람은 점으로 표시됩니다. 실제 경우에는 차트에 점이 많이 분포하며, 자주 양치하는 사람도 충치가 생길 수 있고, 드물게 양치하는 사람은 충치가 없는 경우도 있습니다. 그러나 충치에 대한 정보를 고려하면, 모든 점에 가장 가깝게 닿는 선은 아마도 아래쪽으로 기울어져 있을 것입니다.

회귀 분석의 가장 유용한 적용 사례 중 하나는 날씨입니다. 변수 간에 강한 상관관계가 성립할 때—예를 들어, 동남 대서양의 해수 온도와 허리케인의 발생 빈도 간에—공식을 만들어 독립 변수의 변화에 따라 미래의 사건을 예측할 수 있습니다.

회귀 분석은 지금까지의 금리를 기반으로 투자 계좌의 미래 가치를 예측하는 등의 금융 시나리오에도 유용할 수 있습니다. 금리는 매월 변하지만, 장기적으로는 어떤 패턴이 나타나 투자금의 증가율을 어느 정도 정확하게 전망하는 데 사용할 수 있습니다.

이 기법은 관계가 직관적으로 명확하지 않은 요인 간의 상관관계를 밝히는 데도 유용합니다. 그러나 상관관계와 인과관계는 서로 다른 개념임을 기억하는 것이 중요합니다. 이 둘을 혼동하면 잘못된 가정을 내리는 위험한 상황이 발생할 수 있습니다. 예를 들어, 아이스크림 매출과 익사 사고의 빈도는 제3의 요인인 여름 때문에 상관관계가 있지만, 아이스크림을 먹는 것이 익사와 관련이 있다고 생각할 이유는 전혀 없습니다.

여기서 다중 선형 회귀가 유용합니다. 다중 선형 회귀는 여러 독립 변수를 분석하여 단일 종속 변수의 결과를 예측합니다. 또한, 종속 변수와 독립 변수 사이에 선형 관계가 존재한다고 가정하고, 잔차(회귀 선 위 또는 아래에 위치한 점)가 정규 분포하며, 모든 무작위 변수가 동일한 유한 분산을 가진다고 가정합니다.

다중 선형 회귀는 종속 변수에 대해 독립 변수가 미치는 영향력의 상대 강도를 파악하고 종속 변수에 대해 독립 변수의 특정 단일 집합이 미치는 영향력을 측정하는 데 사용할 수 있습니다. 따라서 원자재 가격을 전망하는 것처럼 수많은 요인이 작용하는 문제 집합에서는 단순 선형 회귀보다 더 유용합니다.

세 번째 유형인 비선형 회귀에서는 데이터 피팅을 통해 모델을 찾고 수학적 함수로 표현합니다. 보통 여러 개의 변수를 포함하고 관계는 직선보다 곡선으로 나타납니다. 비선형 회귀는 독립 변수와 종속 변수 간의 관계가 임의적인 모델을 추정할 수 있습니다. 일반적인 한 예로는 시간에 따른 인구 변화 예측을 들 수 있습니다. 인구와 시간 사이에는 뚜렷한 관계가 있지만, 해마다 인구 변화에 영향을 미치는 요인이 다양해서 이 관계는 선형이 아닙니다. 비선형 인구 증가 모델을 사용하면 인구 측정이 수행되지 않은 시기의 인구를 예측할 수 있습니다.

로지스틱 회귀란?

로지스틱 회귀(Logistic Regression)는 입력 변수(특징)를 사용하여 제한된 클래스 값 중 하나를 가질 수 있는 범주형 결과 변수(레이블)를 예측하는 분류 모델입니다.  이항 로지스틱 회귀는 두 개의 이진 출력 범주로 제한되는 반면, 다항 로지스틱 회귀는 두 개 이상의 클래스를 허용합니다. 로지스틱 회귀의 예로는 건강 상태를 '건강함'/'건강하지 않음'으로 분류하거나, 이미지를 '자전거'/'기차'/'자동차'/'트럭'으로 분류하는 것을 들 수 있습니다.

로지스틱 회귀는 가중치가 적용된 입력값에 로지스틱 시그모이드 함수를 적용하여 데이터 클래스에 대한 예측을 생성합니다.

The logistic sigmoid function.

그림: 로지스틱 시그모이드 함수 The logistic sigmoid function.. 이미지 출처

로지스틱 회귀 모델은 종속 변수의 확률을 독립 변수의 함수로 추정합니다. 종속 변수는 예측하려는 출력(레이블)이고, 독립 변수 또는 특징은 출력에 영향을 줄 것으로 생각되는 요인입니다.

일반화된 선형 회귀에서는 데이터 입력이 정규 분포를 따르지 않아도 됩니다. 테스트 데이터가 다양한 분포를 가질 수 있습니다. 로지스틱 회귀는 응답 변수가 로짓 함수를 따르는 특수한 경우의 일반화된 선형 회귀입니다. 로짓 함수의 입력값은 0과 1 사이의 확률 p입니다. 확률 p에 대한 오즈비는 p/(1-p)로 정의되고, 로짓 함수는 이 오즈비의 로그, 즉 로그 오즈로 정의됩니다.

Logit(p) = Log(odds) = Log (p/(1-p))

로지스틱 회귀 모델의 품질은 적합도와 예측력의 척도로 결정됩니다. 결정계수는 종속 변수를 통해 로지스틱 함수의 독립 변수가 얼마나 잘 예측될 수 있는지를 측정한 것으로, 0과 1 사이의 값입니다. Cox-Snell R2와 McFadden R2를 포함하여 여러 가지 방법으로 결정계수를 계산할 수 있습니다. 반면에 적합도는 Pearson 카이제곱, Hosmer-Lemeshow, Stukel 검정 등의 검정을 이용하여 측정할 수 있습니다. 어떤 검정 유형을 사용해야 적합한지는 p-값, 상호작용과 2차 효과, 데이터 그룹화 등의 요인에 따라 달라집니다.

로지스틱 회귀 적용

로지스틱 회귀는 비선형 퍼셉트론 또는 은닉층 없는 신경망과 비슷합니다. 로지스틱 회귀는 의료 및 사회과학처럼 데이터가 부족한 분야에서 가장 유용하며, 실험 결과를 분석하고 해석하는 데 쓰입니다. 회귀는 빠르고 간단해서 매우 큰 규모의 데이터 세트에도 사용됩니다. 그러나 로지스틱 회귀는 연속되는 결과를 예측하는 데 적용할 수 없고 독립적이지 않은 데이터 세트에 사용할 수도 없습니다. 또한 로지스틱 회귀를 사용할 때는 모델이 데이터에 과적합될 가능성도 있습니다.

회귀를 사용하는 이유는?

머신 러닝의 주된 용도 중 하나는 결과를 예측하는 것입니다. 이는 회귀 분석의 주요한 가치이기도 합니다. 회귀는 변수 간의 상관관계를 파악하는 데 도움이 되는 지도 학습 기법으로, 하나 이상의 예측 변수를 기반으로 연속적인 출력을 예측할 수 있습니다. 머신 러닝 알고리즘은 이전의 구매 패턴을 기반으로 고객의 제품 구매 가능성을 예측하고, 특성을 기준으로 사물을 분류하고, 트럭의 경로 변경이 배송 일정에 미칠 영향을 파악하는 것과 같은 함수를 위해 여러 종류의 회귀 분석을 사용할 수 있습니다.

최소제곱 모델을 사용하여 회귀선의 기울기를 계산하는 일은 시간이 많이 소요되므로 머신 러닝에 아주 적합합니다. 고려하는 변수의 수가 많을수록 결과와 회귀 모델의 품질이 향상됩니다. 머신 러닝 알고리즘은 사람보다 훨씬 더 많은 수의 변수를 고려할 수 있으므로 변수를 추가하여 더 나은 결과를 얻을 수 있습니다.

GPU에서 회귀 분석이 더 잘 실행되는 이유

구조적으로 볼 때, CPU는 단 몇 개의 코어와 많은 캐시 메모리로 구성되어 있어 한 번에 처리할 수 있는 소프트웨어 스레드가 적습니다. 반대로 GPU는 수백 개의 코어로 구성되어 있어 수천 개의 스레드를 동시에 처리할 수 있습니다.

The difference between a CPU and GPU.

선형 회귀 모델은 행렬 곱셈을 사용하며, 이 작업은 GPU에서 훨씬 빠르게 실행됩니다. 또한, GPU는 선형 회귀의 손실 함수를 계산하는 데도 유용합니다. 손실 함수는 결정의 비용을 매핑하며, 이는 최소 제곱 계산의 필수 요소입니다. 이 과정은 요소의 선형 조합을 계산하고 반복적으로 제곱하는 작업을 포함하며, GPU는 이러한 작업에서 매우 뛰어납니다.

딥 러닝의 로지스틱 회귀

딥 러닝에서, 분류에 사용되는 신경망의 마지막 층은 종종 로지스틱 회귀로 해석될 수 있습니다. 이 맥락에서는 딥 러닝 알고리즘을 다중 특징 학습 단계로 볼 수 있습니다. 각 단계에서 특징이 입력을 분류하는 로지스틱 회귀로 전달됩니다.

신경망은 수많은 동일 뉴런으로 구성되기 때문에 본질적으로 병렬성이 매우 높습니다. 이러한 병렬성은 자연스럽게 GPU로 매핑됩니다. GPU는 CPU만 사용하는 훈련에 비해 월등히 높은 연산 속도를 제공합니다. 이러한 이유로 GPU는 복잡한 대규모 신경망 기반 시스템을 훈련시키기 위한 플랫폼으로 선택되어 왔으며, 병렬성이 특징인 추론 작업 또한 GPU에서 실행하기에 매우 알맞습니다.

NVIDIA 딥 러닝 SDK는 로지스틱 회귀를 포함하여 GPU 가속 딥 러닝 애플리케이션을 설계 및 배포하는 데 유용한 여러 강력한 도구 및 라이브러리를 제공합니다. 이 딥 러닝 SDK에는 GPU 가속 딥 러닝 알고리즘을 구축할 수 있도록 광범위한 개발 환경을 제공하는 NVIDIA® CUDA® 툴킷 이 필요합니다.

GPU 가속 엔드 투 엔드 데이터 사이언스

NVIDIA RAPIDS 오픈 소스 소프트웨어 라이브러리 제품군은 CUDA 프리미티브를 기반으로 저수준 컴퓨팅 최적화를 수행하지만, 사용자 친화적인 Python 인터페이스를 통해 GPU 병렬 처리와 고대역폭 메모리 속도를 지원합니다. RAPIDS는 Pandas 및 Scikit-learn API와 같은 익숙한 인터페이스를 계속 사용하면서 엔드투엔드 데이터 사이언스 및 분석 파이프라인을 전적으로 GPU에서 실행할 수 있도록 합니다.

RAPIDS의 cuML 머신 러닝 알고리즘과 수학적 프리미티브는 Scikit-learn과 같은 익숙한 API를 따릅니다. 선형 회귀, 로지스틱 회귀, XGBoost 등의 인기 있는 알고리즘이 단일 GPU와 대규모 데이터센터 배포 모두에서 지원됩니다. 대규모 데이터 세트의 경우, GPU 기반 구현은 CPU 기반 구현보다 10~50배 더 빨리 완료할 수 있습니다.

Data preparation, model training, and visualization.

RAPIDS GPU DataFrame을 사용하면 Pandas와 같은 인터페이스를 사용하여 데이터를 GPU에 로드한 다음, 절대 GPU를 떠나지 않고 이 데이터를 연결된 다양한 머신 러닝 및 그래프 분석 알고리즘에 사용할 수 있습니다. 이러한 수준의 상호 운용성은 데이터 준비부터 머신 러닝과 딥 러닝에 이르는 엔드투엔드 파이프라인을 가속화할 수 있는 Apache Arrow와 같은 라이브러리를 통해 구현됩니다.

RAPIDS는 널리 사용되는 여러 데이터 사이언스 라이브러리 간의 장치 메모리 공유를 지원합니다. 그래서 GPU에 데이터가 유지되므로, 호스트 메모리에 반복적으로 복사하느라 높은 비용을 들일 필요가 없습니다.

Data preparation, model training, and visualization.