실무에서 원활히 머신러닝으로 데이터를 분석하는 데 얼마나 많은 알고리즘을 알고 있어야 할까요?
선형, 군집, 트리 같은 기본 개념을 알고 XGBoost와 LightGBM 같은 최신 알고리즘을 알면 우선 현업에 필요한 기본적인 도구로써의 알고리즘은 갖춘 겁니다. 추가 공부는 지속적으로 발표되는 논문 등을 이용해 학습하면 됩니다. 그래서 제 책에서는 10가지 머신러닝 알고리즘을 다룹니다.
어떤 알고리즘은 성능면에서 매우 뛰어나서, 어떤 알고리즘은 꼭 이해할 필요가 있어서 선택했습니다. 8가지 알고리즘은 지도 학습, 나머지 2가지 알고리즘은 비지도 학습에 포함됩니다. 정형 데이터라면, 이 10가지 알고리즘만으로 현업과 캐글 컴피티션에서 충분히 좋은 성과를 낼 수 있습니다.
이제부터 10가지 알고리즘을 소개합니다.
1. 선형 회귀(Linear Regression)
선형 회귀는 가장 기초적인 머신러닝 모델입니다. 여러 가지 데이터를 활용하여 연속형 변수인 목표 변수를 예측해 내는 것이 목적입니다. 예를 들어 몸무게, 나이, BMI, 성별 등을 데이터로 활용하여 키와 같은 연속형 변수를 예측하는 겁니다. 연속형 변수는 165.5cm, 172.3cm, 182.9cm와 같이 연속적으로 이어질 수 있는 변수를 의미합니다. 반면 남성/여성으로 구분되는 성별은 연속형 변수가 아닙니다. 선형 회귀 모델에서는 예측할 종속변수만 연속형 변수면 족합니다. 예측하는 데 사용되는 그외 변수들은 연속형일 필요는 없습니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀
– 적합한 데이터 유형 : 종속변수와 독립변수가 선형 관계에 있는 데이터
▼ TOP 10 선정 이유
머신러닝 기초 알고리즘입니다. 복잡한 알고리즘에 비해서는 예측력이 떨어지지만 데이터 특성이 복잡하지 않을 때는 쉽고 빠른 예측이 가능하기 때문에 많이 사용됩니다. 다른 모델과의성능을 비교하는 베이스라인으로 사용하기도 합니다.
▼ 예시 그래프
▼ 장점
- 모델이 간단하기 때문에 구현과 해석이 쉽습니다.
- 같은 이유로 모델링하는 데 오랜 시간이 걸리지 않습니다.
▼ 단점
- 최신 알고리즘에 비해 예측력이 떨어집니다.
- 독립변수와 예측변수의 선형 관계를 전제로 하기 때문에, 이러한 전제에서 벗어나는 데이터에서는 좋은 예측을 보여주기 어렵습니다(선형 관계를 전제로 한다는 부분은 이 장의 마지막까지 보면 이해할 수 있습니다).
▼ 유용한 곳
- 연속된 변수를 예측하는 데 사용됩니다. 예를 들어 BMI(체질량지수), 매출액, 전력 사용량과 같은 변수를 떠올리시면 됩니다.
2. 로지스틱 회귀(Logistic Regression)
로지스틱 회귀 또한 선형 회귀처럼 기본 분석 모델입니다. 로지스틱 회귀 분석은 알고리즘의 근간을 선형 회귀 분석에 두고 있어서 선형 회귀 분석과 상당히 유사하지만 다루는 문제가 다릅니다. 선형 회귀 분석은 연속된 변수를 예측하는 반면, 로지스틱 회귀 분석은 Yes/No처럼 두 가지로 나뉘는 분류 문제를 다룹니다.
– 구분 : 지도 학습
– 문제 유형 : 분류
– 적합한 데이터 유형 : 종속변수와 독립변수가 선형 관계에 있는 데이터
▼ TOP 10 선정 이유
선형 회귀 분석과 마찬가지로, 너무나도 기본 알고리즘이라서 꼭 알고 있어야 합니다. 실제 이진분류가 필요한 상황이 많기 때문에 두 가지 범주를 구분하는 간단한 예측에 유용하며 딥러닝에서도 기본 지식입니다.
▼ 예시 그래프
▼ 장점
- 선형 회귀 분석만큼 구현하기 용이합니다.
- 계수(기울기)를 사용해 각 변수의 중요성을 쉽게 파악할 수 있습니다.
▼ 단점
- 선형 회귀 분석을 근간으로 하고 있기 때문에, 선형 관계가 아닌 데이터에 대한 예측력이 떨어집니다.
▼ 유용한 곳
- Yes/No, True/False와 같은 두 가지 범주로 나뉜 값을 예측하는 데 사용합니다.
- 분류 문제에 있어서 기준선Baseline으로 자주 활용됩니다(타 모델과 비교 목적).
3. K-최근접 이웃(KNN)
K-최근접 이웃은 거리 기반 모델입니다. 지금까지 다룬 알고리즘들과 달리 선형 관계를 전제로 하지 않습니다. 즉 각 데이터 간의 거리를 활용해서 새로운 데이터를 예측하는 모델입니다. 이때 가까이에 있는 데이터를 고려하여 예측값이 결정됩니다. K Nearest Neighbors라는 이름은 이를 잘 반영하고 있는데, K개의 가장 가까운 이웃 데이터에 의해 예측된다는 의미입니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀/분류
– 적합한 데이터 유형 : 아웃라이어가 적은 데이터
▼ TOP 10 선정 이유
다중분류 문제에 가장 간편히 적용할 수 있는 알고리즘입니다. 물론 최신 알고리즘들도 다중분류 문제에 사용하나, 데이터가 크지 않고 예측이 까다롭지 않은 상황에서 KNN을 사용하면 신속하고 쉽게 예측 모델을 구현할 수 있습니다. 그래서 베이스라인 모델로도 사용합니다.
▼ 예시 그래프
▼ 장점
- 수식에 대한 설명이 필요 없을 만큼 직관적이고 간단합니다.
- 선형 모델과 다르게 별도의 가정이 없습니다(예를 들어 선형 회귀는 독립변수와 종속변수의 선형 관계를 가정하고 있기 때문에, 이 가정이 들어맞지 않는 데이터에 취약하나, KNN은 이러한 가정이 없어서 더 자유롭습니다).
▼ 단점
- 데이터가 커질수록 상당히 느려질 수 있습니다.
- 아웃라이어에 취약합니다.
▼ 유용한 곳
- 주로 분류(Classification)에서 사용되며, 로지스틱 회귀(Logistic Regression)로 해결할 수 없는 3개 이상의 목표 변수들도 분류할 수 있습니다.
- 작은 데이터셋에 적합합니다.
4. 나이브 베이즈(Naive Bayes)
나이브 베이즈는 베이즈 정리를 적용한 조건부 확률 기반의 분류 모델입니다. 여기서 조건부 확률은 A가 일어났을 때 B가 일어날 확률을 의미합니다. 예를 들어 ‘무료라는 단어가 들어 있을 때 해당 메일이 스팸일 확률’ 같은 겁니다. 이러한 특징으로 스팸 필터링을 위한 대표적인 모델로 꼽힙니다. 최근에는 딥러닝 같은 대안이 있어서 나이브 베이즈 모델을 쓰고자 하는 상황이 많지는 않습니다만, 그래도 스팸 메일 필터처럼 자연어 처리가 목적일 때는 여전히 나이브 베이즈 모델이 좋은 선택이 될 수 있습니다(딥러닝이 자연어 처리에 더 탁월한 모습을 보여주지만, 딥러닝보다 간단한 방법으로 자연어 처리를 원할 때).
– 구분 : 지도 학습
– 문제 유형 : 분류
– 적합한 데이터 유형 : 독립변수의 종류가 매우 많은 경우
▼ TOP 10 선정 이유
범용성이 높지는 않지만 독립변수들이 모두 독립적이라면 충분히 경쟁력이 있는 알고리즘입니다. 특히나 딥러닝을 제외하고 자연어 처리에 가장 적합한 알고리즘입니다. 일반적인 데이터보다는 특수 상황을 고려해 배워두길 바랍니다.
▼ 예시 그래프
▼ 장점
- 비교적 간단한 알고리즘에 속하며 속도 또한 빠릅니다.
- 작은 훈련셋으로도 잘 예측합니다.
▼ 단점
- 모든 독립변수가 각각 독립적임을 전제로 하는데 이는 장점이 되기도 하고 단점이 되기도 합니다. 실제로 독립변수들이 모두 독립적이라면 다른 알고리즘보다 우수할 수 있지만, 실제 데이터에서 그런 경우가 많지 않기 때문에 단점이기도 합니다.
▼ 유용한 곳
- 각 독립변수들이 모두 독립적이고 그 중요도가 비슷할 때 유용합니다.
- 자연어 처리(NLP)에서 간단하지만 좋은 성능을 보여줍니다.
- 범주 형태의 변수가 많을 때 적합하며, 숫자형 변수가 많은 때는 적합하지 않습니다.
5. 결정 트리(Decision Tree)
결정 트리는 관측값과 목푯값을 연결시켜주는 예측 모델로서 나무 모양으로 데이터를 분류합니다. 수많은 트리 기반 모델의 기본 모델이 되는 중요 모델입니다. 트리 기반의 모델은 선형 모델과는 전혀 다른 특징을 가지는데, 선형 모델이 각 변수에 대한 기울기값들을 최적화하여 모델을 만들어나갔다면, 트리 모델에서는 각 변수의 특정 지점을 기준으로 데이터를 분류해가며 예측 모델을 만듭니다. 예를 들어 남자/여자로 나눠서 각 목푯값 평균치를 나눈다거나, 나이를 30세 이상/미만인 두 부류로 나눠서 평균치를 계산하는 방식으로 데이터를 무수하게 쪼개어나가고, 각 그룹에 대한 예측치를 만들어냅니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀/분류
– 적합한 데이터 유형 : 일반적인 데이터
▼ TOP 10 선정 이유
예측력과 성능으로만 따지면 결정 트리 모델을 사용할 일은 없습니다. 시각화가 매우 뛰어나다는 유일한 장점이 있을 뿐입니다. 하지만 앞으로 배울 다른 트리 기반 모델을 설명하려면 결정 트리를 알아야 합니다. 트리 기반 모델은 딥러닝을 제외하고는 현재 가장 유용하고 많이 쓰이는 트렌드이기 때문에 트리 모델을 필수로 알아둬야 합니다.
▼ 예시 그래프
▼ 장점
- 데이터에 대한 가정이 없는 모델입니다(Non-parametric Model). 예를 들어 선형 모델은 정규분포에 대한 가정이나 독립변수와 종속변수의 선형 관계 등을 가정으로 하는 모델인 반면, 결정 트리는 데이터에 대한 가정이 없으므로 어디에나 자유롭게 적용할 수 있습니다.
- 아웃라이어에 영향을 거의 받지 않습니다.
- 트리 그래프를 통해서 직관적으로 이해하고 설명할 수 있습니다. 즉 시각화에 굉장히 탁월합니다.
▼ 단점
- 트리가 무한정 깊어지면 오버피팅 문제를 야기할 수 있습니다.
- 앞으로 배울 발전된 트리 기반 모델들에 비하면 예측력이 상당히 떨어집니다.
▼ 유용한 곳
- 종속변수가 연속형 데이터와 범주형 데이터 모두에 사용할 수 있습니다.
- 모델링 결과를 시각화할 목적으로 가장 유용합니다.
- 아웃라이어가 문제될 정도로 많을 때 선형 모델보다 좋은 대안이 될 수 있습니다.
6. 랜덤 포레스트(Random Forest)
랜덤 포레스트 모델은 결정 트리의 단점인 오버피팅 문제를 완화시켜주는 발전된 형태의 트리 모델입니다. 랜덤으로 생성된 무수히 많은 트리를 이용하여 예측을 하기 때문에 랜덤 포레스트라 불립니다. 이렇게 여러 모델(여기서는 결정 트리)을 활용하여 하나의 모델을 이루는 기법을 앙상블이라 부릅니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀/분류
– 적합한 데이터 유형 : 일반적인 데이터
▼ TOP 10 선정 이유
앙상블 기법을 사용한 트리 기반 모델 중 가장 보편적인 방법입니다. 이후에 다루게 될 부스팅 모델에 비하면 예측력이나 속도에서 부족한 부분이 있고, 시각화에서는 결정 트리에 못미치나, 다음 단계인 부스팅 모델을 이해하려면 꼭 알아야 할 필수 알고리즘입니다.
▼ 예시 그래프
▼ 장점
- 결정 트리와 마찬가지로, 아웃라이어에 거의 영향을 받지 않습니다.
- 선형/비선형 데이터에 상관없이 잘 작동합니다.
▼ 단점
- 학습 속도가 상대적으로 느린 편입니다.
- 수많은 트리를 동원하기 때문에 모델에 대한 해석이 어렵습니다.
▼ 유용한 곳
- 앙상블 기법을 사용한 트리 기반 모델 중 가장 보편적인 방법입니다. 이후에 다루게 될 부스팅 모델에 비하면 예측력이나 속도에서 부족한 부분이 있고, 시각화 부분에서는 결정 트리에 못미치나, 다음 단계인 부스팅 모델을 이해하려면 꼭 알아야 할 필수 알고리즘입니다.
7. XG부스트(XGBoost)
랜덤 포레스트는 각 트리를 독립적으로 만드는 알고리즘입니다. 반면 부스팅은 순차적으로 트리를 만들어 이전 트리로부터 더 나은 트리를 만들어내는 알고리즘입니다. 부스팅 알고리즘은 트리 모델을 기반으로 한 최신 알고리즘 중 하나로, 랜덤 포레스트보다 훨씬 빠른 속도와 더 좋은 예측 능력을 보여줍니다. 이에 속하는 대표적인 알고리즘으로 XG부스트, 라이트GBM(LightGBM), 캣부스트(CatBoost) 등이 있습니다. 그중 XGBoost(eXtra Gradient Boost)가 가장 먼저 개발되기도 했고, 가장 널리 활용됩니다. XGBoost는 손실함수뿐만 아니라 모형 복잡도까지 고려합니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀/분류
– 적합한 데이터 유형 : 일반적인 데이터
▼ TOP 10 선정 이유
캐글 컴피티션 우승자가 많이 사용하는 성능이 검증된 부스팅 모델입니다. XGBoost 이후로도 다양한 부스팅 모델이 소개되었지만, 가장 인기 있는 모델이기 때문에 구글 검색에서 수많은 참고 자료(활용 예시, 다양한 하이퍼파라미터 튜닝)를 쉽게 접할 수 있습니다.
▼ 예시 그래프
▼ 장점
- 예측 속도가 상당히 빠르며, 예측력 또한 좋습니다.
- 변수 종류가 많고 데이터가 클수록 상대적으로 뛰어난 성능을 보여줍니다.
▼ 단점
- 복잡한 모델인 만큼, 해석에 어려움이 있습니다.
- 더 나은 성능을 위한 하이퍼파라미터 튜닝이 까다롭습니다.
▼ 유용한 곳
캐글 컴피티션의 우승자가 많이 사용하는 성능이 검증된 부스팅 모델입니다. XGBoost 이후로도 다양한 부스팅 모델들이 소개되었지만, 가장 인기있는 모델이기 때문에 구글 검색에서 수많은 참고 자료(활용 예시, 다양한 하이퍼파라미터 튜닝)들을 쉽게 접할 수 있습니다.
8. 라이트GBM(LightGBM)
XGBoost 이후로 나온 최신 부스팅 모델입니다. LightGBM이 등장하기 전까지는 XGBoost가 가장 인기있는 부스팅 모델이였지만, 점점 LightGBM이 XGBoost와 비슷한 수준 혹은 그 이상으로 활용되는 추세입니다. 캐글 컴피티션에서도 좋은 퍼포먼스를 많이 보여주어서 그 성능을 인정받았습니다. 리프 중심 트리 분할 방식을 사용합니다.
– 구분 : 지도 학습
– 문제 유형 : 회귀/분류
– 적합한 데이터 유형 : 일반적인 데이터
▼ TOP 10 선정 이유
표로 정리된 데이터(tabular data)에서 Catboost, XGBoost와 함께 가장 좋은 성능을 보여주는 알고리즘입니다. 성능을 비교하는 자료를 보면 대체로 LightGBM과 Catboost가 XGBoost보다 나은 성능을 보여주며, LightGBM과 Catboost는 상황에 따라 다른 결과를 보여주어 우열을 가리기 어렵습니다. 다만, 사람들에게 활용/언급되는 빈도는 아직까지는 LightGBM이 우위를 보입니다.
▼ 예시 그래프
▼ 장점
- XGBoost보다도 빠르고 높은 정확도를 보여주는 경우가 많습니다.
- 예측에 영향을 미친 변수의 중요도를 확인할 수 있습니다.
- 변수 종류가 많고 데이터가 클수록 상대적으로 뛰어난 성능을 보여줍니다.
▼ 단점
- 복잡한 모델인 만큼, 해석에 어려움이 있습니다.
- 하이퍼파라미터 튜닝이 까다롭습니다.
▼ 유용한 곳
표로 정리된 데이터(tabular data)에서 캣부스트, XGBoost와 함께 가장 좋은 성능을 보여주는 알고리즘입니다. 성능을 비교하는 자료를 보면 대체로 LightGBM와 캣부스트가 XGBoost보다 나은 성능을 보여주며, LightGBM과 캣부스트는 상황에 따라 다른 결과를 보여주어 우열을 가리기 어렵습니다. 다만, 사람들에게 활용/언급되는 빈도는 아직까지는 LightGBM이 우위를 보입니다.
9. K-평균 군집화(K Means Clustering)
K-평균 군집화는 비지도 학습의 대표적인 알고리즘 중으로 목표 변수가 없는 상태에서 데이터를 비슷한 유형끼리 묶어내는 머신러닝 기법입니다.K-최근접 이웃 알고리즘과 비슷하게 거리 기반으로 작동하며 적절한 K값을 사용자가 지정해야 합니다. 거리 기반으로 작동하기 때문에 데이터 위치가 가까운 데이터끼리 한 그룹으로 묶습니다. 이때 전체 그룹의 수는 사용자가 지정한 K개입니다.
– 구분 : 비지도 학습
▼ TOP 10 선정 이유
수많은 데이터를 가지고 있을 때, 데이터를 하나하나 직접 살펴보기에는 시간적인 한계가 따릅니다. 그렇다고 단순하게 통계적 정보만 살펴보는 것은 데이터를 너무 단순화하는 경향이 있습니다. 클러스터링은 이러한 상황에서 데이터를 적절한 수의 그룹으로 나누고 그 특징을 살펴볼 수 있는 장점을 제공합니다. 여러 클러스터링 기법 중에서도 K-평균 군집화는 가장 보편적이고 무난하게 사용됩니다.
▼ 예시 그래프
▼ 장점
- 구현이 비교적 간단합니다.
- 클러스터링 결과를 쉽게 해석할 수 있습니다.
▼ 단점
- 최적의 K값을 자동으로 찾지 못하고, 사용자가 직접 선택해야 합니다. 거리 기반 알고리즘이기 때문에, 변수의 스케일에 따라 다른 결과를 나타낼 수 있습니다.
▼ 유용한 곳
- 수많은 데이터를 가지고 있을 때, 데이터를 하나하나 직접 살펴보기에는 시간적인 한계가 따릅니다. 그렇다고 단순하게 통계적 정보만 살펴보는 것은 데이터를 너무 단순화하는 경향이 있습니다. 클러스터링은 이러한 상황에서 데이터를 적절한 수의 그룹으로 나누고 그 특징을 살펴볼 수 있는 장점을 제공합니다. 여러 클러스터링 기법 중에서도 K-평균 군집화는 가장 보편적이고 무난하게 사용됩니다.
10. 주성분 분석(PCA)
PCA는 Principal Component Analysis의 약자로, 주성분 분석이라고도 부릅니다. PCA는 지금까지 배운 알고리즘과는 전혀 다른 방식의 알고리즘입니다. 비지도 학습에 속하기 때문에 당연히 종속 변수는 존재하지 않고, 어떤 것을 예측하지도 분류하지도 않습니다. PCA의 목적은 데이터의 차원을 축소하는 데 있습니다. 차원 축소를 간단히 말하면 변수의 개수를 줄이되, 가능한 그 특성을 보존해내는 기법입니다. PCA는 기존의 변수 중 일부를 그대로 선택하는 방식이 아니라, 기존 변수들의 정보를 모두 반영하는 새로운 변수들을 만드는 방식으로 차원 축소를 합니다.
– 구분 : 비지도 학습
▼ TOP 10 선정 이유
PCA는 차원 축소 방법 중 가장 인기 있으며 구현하기 또한 쉬운 편입니다. 프로젝트 특성에 따라서 차원 축소가 필요하지 않은 경우도 많지만, 차원 축소를 시도해봄으로써 시각화 내지 모델링 효율성을 개선할 여지는 항상 있습니다. 따라서 알아두면 언젠가 유용하게 쓰게 될 알고리즘입니다.
▼ 예시 그래프
▼ 장점
- 다차원을 2차원에 적합하도록 차원 축소하여 시각화에 유용합니다.
- 변수 간의 높은 상관관계 문제를 해결해줍니다.
▼ 단점
- 기존 변수가 아닌 새로운 변수를 사용하여 해석하는 데 어려움이 있습니다.
- 차원이 축소됨에 따라 정보 손실이 불가피합니다.
▼ 유용한 곳
- 다차원 변수들을 2차원 그래프로 표현하는 데 사용할 수 있습니다.
- 변수가 너무 많아 모델 학습에 시간이 너무 오래 걸릴 때 (차원 축소를 진행하면 학습에 드는 시간을 줄일 수 있어) 유용합니다.
- 오버피팅을 방지하는 용도로 사용할 수도 있습니다.
이상으로 10가지 머신러닝 알고리즘을 알아보았습니다. 책에서는 각 알고리즘에 대한 더 자세한 내용과 데이터 분석 활용 예제를 확인하실 수 있습니다. 특히 데이터를 가공해서 더 나은 성능을 내도록 피처 엔지니어링에 중점을 두었습니다. 성능을 확인하기까지 과정이 짧지 않기 때문에 학습 마무리에서 [되짚어보기], [용어요약], [연습문제] 등을 제시합니다. 도움이 되길 빕니다.
삼성전자에 마케팅 직군으로 입사하여 앱스토어 결제 데이터를 운영 및 관리했습니다. 데이터에 관심이 생겨 미국으로 유학을 떠나 지금은 모바일 서비스 업체 IDT에서 데이터 사이언티스트로 일합니다. 문과 출신이 미국 현지 데이터 사이언티스트가 되기까지 파이썬과 머신러닝을 배우며 많은 시행착오를 겪었습니다. 제가 겪었던 시행착오를 덜어드리고, 머신러닝에 대한 재미를 전달하고자 유튜버로 활동하고 책을 집필합니다.
현) IDT Corporation (미국 모바일 서비스 업체) 데이터 사이언티스트
전) 콜롬비아 대학교, Machine Learning Tutor, 대학원생 대상
전) 콜롬비아 대학교, Big Data Immersion Program Teaching Assistant
전) 콜롬비아 대학교, M.S. in Applied Analytics
전) 삼성전자 무선사업부, 스마트폰 데이터 분석가
전) 삼성전자 무선사업부, 모바일앱 스토어 데이터 관리 및 운영
강의 : 패스트캠퍼스 〈파이썬을 활용한 이커머스 데이터 분석 입문〉
SNS : www.youtube.com/c/데싸노트
좋은 내용 잘 보고 갑니다.