머신 러닝의 분류: 알아야 할 모든 것

머신 러닝의 분류: 알아야 할 모든 것
분류란 무엇인가요?
**분류는 데이터를 미리 정의된 클래스로 분류하는 지도 머신 러닝 접근 방식입니다. 입력이 주어지면 분류 모델은 입력이 속한 카테고리 또는 레이블을 예측합니다. 머신 러닝에서 가장 일반적인 작업 중 하나이며 이메일 스팸 탐지부터 의료 진단에 이르기까지 다양한 실제 애플리케이션에서 사용됩니다.
예를 들어, 이메일 데이터 세트가 있는 경우 분류 모델은 각 이메일을 "스팸" 또는 "스팸 아님"으로 분류하는 방법을 학습할 수 있습니다.
분류는 어떻게 작동하나요?
분류에서는 머신러닝 모델을 데이터 세트에 대해 학습시켜 입력된 특징에 따라 데이터를 미리 정의된 클래스로 분류합니다. 모델은 각 입력이 출력 레이블과 연결된 레이블이 지정된 데이터 세트를 사용하여 학습됩니다. 모델은 훈련 중에 데이터의 패턴을 학습하고 이러한 패턴을 사용하여 보이지 않는 새로운 데이터의 레이블을 예측합니다.
예를 들어 이메일이 스팸인지 여부를 분류하는 작업을 한다고 가정해 보겠습니다. 학습 단계에서 모델에 이메일과 함께 레이블('스팸' 또는 '스팸 아님')이 제공됩니다. 이 모델은 특정 키워드의 존재 여부나 발신자 주소와 같은 특징을 분석하여 패턴을 식별합니다. 모델이 학습된 후에는 동일한 기능을 분석하여 새 이메일이 도착하면 '스팸' 또는 '스팸 아님' 범주에 속하는지 여부를 예측합니다.
그림- 이메일 분류 프로세스.png](https://assets.zilliz.com/Figure_Email_classification_process_e699751827.png)
그림: 이메일 분류 프로세스
분류 유형
분류 문제는 데이터의 성격과 클래스 수에 따라 다양한 형태로 나타납니다. 다음은 가장 일반적인 유형입니다:
이진 분류
이진 분류는 가능한 클래스 또는 결과가 두 가지뿐인 경우입니다. 모델은 입력이 두 가지 범주 중 어느 범주에 속하는지 예측합니다. 대표적인 예로 이메일 스팸 탐지를 들 수 있습니다. 모델은 수신되는 이메일이 "스팸"인지 "스팸이 아닌지"를 결정해야 합니다. 옵션이 두 가지뿐이므로 이 분류 작업은 이진 분류 작업입니다.
다중 클래스 분류
다중 클래스 분류에서는 모델이 두 개 이상의 가능한 카테고리에서 하나의 레이블을 예측합니다. 각 입력은 정확히 하나의 클래스에 할당됩니다. 좋은 예로 이미지 인식을 들 수 있는데, 여기서 모델은 이미지를 "고양이", "개" 또는 "새"로 분류할 수 있습니다. 이진 분류와 달리 이 모델은 여러 개의 서로 다른 클래스를 다루며 각 입력에 대해 올바른 클래스를 식별해야 합니다.
다중 레이블 분류
다중 레이블 분류는 각 입력이 동시에 여러 클래스에 속할 수 있는 경우입니다. 예를 들어, 사진에 태그를 붙일 때 '일몰', '해변', '사람'이라는 태그를 동시에 붙일 수 있습니다. 각 태그는 서로 다른 클래스를 나타내며, 모델은 입력에 대한 모든 관련 레이블을 예측하는 방법을 학습합니다. 이는 동일한 입력에 여러 개의 레이블을 할당할 수 있다는 점에서 다중 클래스 분류와 다릅니다.
그림: 분류 유형
분류 알고리즘의 학습자
머신러닝에서 분류 알고리즘은 학습 데이터로부터 일반화하는 방식에 따라 분류할 수 있습니다. 이들은 게으른 학습자와 열성 학습자입니다. 이 두 가지 유형은 예측을 위해 데이터를 처리하는 시기와 방법에 따라 구분됩니다.
게으른 학습자
게으른 학습자는 예측 쿼리를 받을 때까지 일반화를 지연시키는 알고리즘입니다. 학습 단계에서 모델을 구축하지 않고 학습 데이터를 저장한 후 새로운 입력이 분류되어야 할 때만 계산을 수행합니다.
예시 알고리즘: k-Nearest Neighbors(k-NN), 사례 기반 추론(CBR).
열성적인 학습자
반면, 열성적인 학습자는 훈련 단계에서 바로 일반 모델을 구축하려고 합니다. 이들은 학습 데이터를 분석하고 기본 패턴을 학습한 다음 학습 데이터를 폐기합니다. 일단 모델이 구축되면 새로운 데이터를 빠르게 예측할 수 있습니다.
알고리즘 예시: 의사 결정 트리, 랜덤 포레스트, 서포트 벡터 머신(SVM), 로지스틱 회귀.
| 관점 | 게으른 학습자 | 열성적인 학습자 |
| 모델 생성 | 학습 중에 모델을 구축하지 않고 데이터를 암기합니다. | 학습 중에 데이터를 모델로 일반화합니다. |
| 트레이닝 시간 | 짧은 트레이닝 시간; 모델을 구축하지 않습니다. | 훈련 시간이 길어짐; 데이터를 기반으로 모델을 구축합니다. |
| 예측 시간 | 쿼리 시점에 데이터를 처리하므로 예측 속도가 느립니다. | 모델이 미리 구축되어 있으므로 예측 속도가 빠릅니다. |
| 메모리 요구 사항 | 더 높은 메모리 요구 사항; 전체 데이터 집합을 저장합니다. | 메모리 요구량 낮음; 모델 매개변수만 저장합니다. |
| 예제 알고리즘 | k-NN, 사례 기반 추론 | 의사 결정 트리, 로지스틱 회귀, 랜덤 포레스트 |
표: 게으른 학습자와 열성적인 학습자 비교
분류 알고리즘 ## 분류 알고리즘
이제 일반적으로 사용되는 몇 가지 분류 알고리즘에 대해 알아보겠습니다.
로지스틱 회귀
로지스틱 회귀는 이진 분류 작업에서 레이블을 예측할 때만 확률을 사용합니다. 연속 값을 예측하는 선형 회귀와 달리 로지스틱 회귀는 로지스틱 함수(시그모이드를 사용하여 출력을 0과 1 사이의 범위로 매핑하여 두 클래스에 대한 확률을 예측합니다.) 예/아니오 또는 0/1 시나리오와 같이 결과가 이진인 경우에 널리 사용됩니다.
그림- 로지스틱 회귀 작업 중.png](https://assets.zilliz.com/Figure_Logistic_regression_working_0b2ce2b99c.png)
그림- 로지스틱 회귀 작업
의사 결정 트리
의사 결정 트리는 기능 값을 기반으로 데이터를 분할하여 가능한 각 의사 결정에 대해 분기를 만드는 모델입니다. 각 노드는 피처를 나타내고 분기는 해당 피처의 값에 따른 결정을 나타냅니다. 이 과정은 알고리즘이 예측된 클래스의 리프 노드를 결정할 때까지 계속됩니다. 의사 결정 트리는 해석하기 쉬우며 이진 및 다중 클래스 분류 작업을 처리할 수 있습니다.
그림: 의사 결정 트리 구조
랜덤 포레스트
랜덤 포리스트는 여러 개의 트리를 구성하고 예측을 결합하여 의사 결정 트리를 개선합니다. 포리스트의 각 트리는 데이터와 특징의 무작위 하위 집합으로 구축됩니다. 최종 예측은 결과의 평균(회귀 작업의 경우) 또는 다수결 투표(분류 작업의 경우)를 통해 이루어집니다. 이렇게 하면 과적합을 줄이고 정확도를 높일 수 있습니다.
그림: 랜덤 포리스트 작업 중
서포트 벡터 머신(SVM)
서포트 벡터 머신은 서로 다른 클래스의 데이터 포인트를 구분하는 최적의 하이퍼플레인을 찾는 방식으로 작동합니다. 이 하이퍼플레인은 2차원의 선이지만 SVM은 고차원 데이터도 처리할 수 있습니다. 핵심 아이디어는 각 클래스에서 가장 가까운 데이터 포인트(서포트 벡터) 사이의 마진을 최대화하는 것입니다. SVM은 이진 및 다중 클래스 분류 문제, 특히 데이터를 선형적으로 분리할 수 없는 경우에 효과적입니다.
그림- SVM 작동 중.png](https://assets.zilliz.com/Figure_SVM_working_6267b2fe4a.png)
그림- SVM 작동
k-Nearest Neighbors(k-NN)
k-NN 알고리즘](https://zilliz.com/blog/k-nearest-neighbor-algorithm-for-machine-learning)은 가장 가까운 이웃 k개의 클래스를 기반으로 데이터 포인트를 분류합니다. 새 데이터 포인트를 도입할 때 알고리즘은 유클리드 거리와 같은 유사성 메트릭을 기반으로 가장 가까운 k개의 포인트를 살펴보고 새 포인트에 다수 클래스를 할당합니다. 이 알고리즘은 소규모 데이터 세트에 유용한 간단한 인스턴스 기반 학습 알고리즘입니다.
그림- kNN 알고리즘 작동 중.png
그림: kNN 알고리즘 작동 중
나이브 베이즈
나이브 베이즈는 베이즈 정리를 기반으로 하며 데이터의 특징이 서로 독립적이라고 가정합니다(따라서 "나이브"라는 용어가 사용됨). 이러한 가정에도 불구하고 다양한 실제 작업, 특히 데이터에 범주형 특징이 있는 경우 뛰어난 성능을 발휘합니다. 입력이 주어졌을 때 각 클래스의 확률을 계산하고 확률이 가장 높은 클래스를 할당하는 방식으로 작동합니다.
P(C|X) = P(X|C) . P(C)P(X))
여기서 P(C∣X)는 입력이 주어진 클래스의 사후 확률, P(X∣C)는 클래스가 주어진 입력의 가능성, P(C)는 클래스의 사전 확률, P(X)는 입력의 확률입니다. 나이브 베이즈는 관찰된 특징을 바탕으로 분류에 대한 사후 확률이 가장 높은 클래스를 선택합니다.
그림-네이브 베이즈 알고리즘 작동 중.png](https://assets.zilliz.com/Figure_Naive_Bayes_algorithm_working_ea0a5ca81f.png)
그림: 나이브 베이즈 알고리즘 작동 중
분류의 ## 평가 지표
정확도 ### 정확도
정확도는 가장 간단한 지표로, 모델의 예측이 얼마나 자주 정확한지를 측정합니다. 정확도는 정확하게 예측한 사례 수를 전체 사례 수로 나누어 결정됩니다.
공식:
정확도 = (진양성 + 진음성)/총 인스턴스 수
정확도.png
정확도
정확도는 예측된 양성 사례 중 실제 양성 사례의 수를 측정합니다. 정확도는 오탐으로 인해 비용이 많이 드는 상황에서 중요합니다. 예를 들어 사기 탐지에서 정상적인 거래를 사기 거래로 예측하면 고객 불만이 발생할 수 있습니다.
공식:
정확도 = 정탐/(정탐 + 오탐)
precision.png
리콜
회수율은 양성으로 정확하게 식별된 양성 사례의 비율을 측정합니다. 리콜은 양성 사례를 놓쳐 비용이 많이 드는 경우에 유용합니다. 예를 들어, 진단 누락(위음성)은 오경보보다 질병 탐지에서 훨씬 더 큰 문제가 됩니다.
공식:
리콜 = 진양성/(진양성 + 오탐)
recall.png
F1-Score
F1-점수는 정확도와 리콜의 조화 평균입니다. 정확도와 회수율의 균형을 맞춰야 할 때, 특히 어느 한 쪽이 다른 쪽보다 더 중요할 때 유용합니다.
공식:
F1점수 = 2x(정확도 x 회수율)/(정확도 + 회수율)
FI score.png
실제 분류 사용 사례 ## 분류의 실제 사용 사례
분류 모델은 다양한 산업 분야에서 실제 문제를 해결하기 위해 널리 사용되고 있습니다. 다음은 몇 가지 실제 사례입니다:
**의료 진단: **머신러닝 모델은 의사가 환자 데이터를 "질병" 또는 "질병 없음" 등으로 분류하는 데 도움을 줍니다. 예를 들어, 의료 기록을 기반으로 환자의 당뇨병 여부를 예측하는 데 모델이 사용됩니다.
**감정 분석: 기업은 고객의 피드백을 이해하기 위해 감정 분석을 사용합니다. 예를 들어, 모델은 제품 리뷰를 분석하여 긍정, 부정 또는 중립으로 분류하여 기업이 고객 정서를 기반으로 제품을 개선할 수 있도록 지원합니다.
**사기 탐지: 은행과 금융 기관은 사기 거래를 탐지하기 위해 분류 모델을 사용합니다. 이 모델은 거래 데이터에서 패턴을 학습하고 각각을 '사기' 또는 '합법'으로 분류하여 금전적 손실을 방지합니다.
**이미지 내 객체 인식: **객체 인식 모델은 제조 및 보안과 같은 산업에서 특정 이미지 항목을 식별합니다. 예를 들어, 모델은 조립 라인에 있는 제품 사진을 분류하여 올바르게 조립된 제품만 검사를 통과하도록 할 수 있습니다.
얼굴 인식: 얼굴 인식 시스템은 보안 및 인증에 사용됩니다. 이 모델은 얼굴 이미지를 분류하여 사람의 신원을 식별하거나 확인하며, 일반적으로 스마트폰 잠금 해제, 디지털 출석 시스템 또는 공항 보안 검색에 사용됩니다.
**음성 인식: 음성 인식 모델은 음성 언어를 텍스트나 명령어로 변환합니다. 예를 들어 Siri나 Alexa와 같은 가상 비서는 사용자가 음성을 통해 디바이스와 상호 작용할 수 있도록 음성 단어를 명령으로 분류합니다.
의료 진단 테스트: 머신 러닝 모델은 엑스레이나 MRI 스캔과 같은 진단 테스트의 해석을 지원합니다. 의료 이미지를 '정상' 또는 '비정상'으로 분류하여 방사선 전문의가 더 빠르고 정확한 진단을 내릴 수 있도록 도와줍니다.
고객 행동 예측: 이커머스 플랫폼은 분류 모델을 사용하여 고객 행동을 예측합니다. 이러한 모델은 사용자를 '구매 가능성이 높음' 또는 '구매 가능성이 낮음'으로 분류하여 개인화된 마케팅 및 제품 추천을 제공합니다.
제품 분류: 리테일러는 머신러닝을 사용하여 '전자제품', '의류', '가정용품' 등의 제품을 설명에 따라 자동으로 분류합니다. 이를 통해 재고 관리를 간소화하고 고객 검색 경험을 개선할 수 있습니다.
멀웨어 분류: 사이버 보안에서 분류 모델은 멀웨어를 탐지하고 분류합니다. 이 모델은 소프트웨어 동작의 패턴을 분석하여 프로그램을 '안전' 또는 '악성'으로 분류하여 사이버 위협으로부터 시스템을 보호합니다.
분류의 일반적인 과제 ## 분류의 일반적인 과제
분류 모델을 구축할 때 모델의 성능에 영향을 미치는 몇 가지 문제가 발생할 수 있습니다. 다음은 세 가지 일반적인 과제입니다:
과적합
과적합은 모델이 학습 데이터에서는 잘 작동하지만 보이지 않는 새로운 데이터로 일반화하지 못하는 경우를 의미합니다. 이는 모델이 너무 복잡해져 기본 패턴이 아닌 훈련 세트의 노이즈나 특정 세부 사항을 포착하기 시작할 때 발생합니다.
데이터 불균형
데이터 불균형은 한 클래스가 다른 클래스보다 월등히 많은 경우입니다. 예를 들어 사기 탐지에서 사기 거래가 데이터의 1%에 불과할 수 있으며, 이로 인해 모델이 다수 클래스에 크게 편향될 수 있습니다. 이로 인해 소수 클래스에 대한 탐지가 제대로 이루어지지 않을 수 있습니다.
데이터의 노이즈
노이즈는 모델을 혼동할 수 있는 데이터의 무작위 오류나 관련 없는 정보를 말합니다. 노이즈 데이터에는 잘못 레이블이 지정된 예시, 이상값 또는 분류 작업에 기여하지 않는 관련 없는 특징이 포함될 수 있습니다. 노이즈가 있으면 모델의 성능이 저하되고 패턴을 감지하기가 더 어려워질 수 있습니다.
분류 대 회귀
분류와 회귀는 모두 지도 학습 알고리즘의 한 유형이지만, 서로 다른 종류의 작업에 사용됩니다. 아래는 다양한 측면을 기준으로 분류와 회귀를 비교한 것입니다:
| 관점 | 분류 | 회귀 |
| 목적 | 불연속형 레이블 또는 카테고리를 예측합니다. | 연속형 숫자 값을 예측합니다. |
| 출력 | 범주형: "스팸" 또는 "스팸 아님"과 같은 클래스. | 연속형: "가격" 또는 "온도"와 같은 값. |
| 예제 작업 | 이메일을 "스팸" 또는 "스팸 아님"으로 분류. | 특징에 따라 주택 가격 예측하기. |
| 사용된 알고리즘 | 로지스틱 회귀, 의사 결정 트리, 랜덤 포레스트 등 | 선형 회귀, 릿지 회귀, 다항식 회귀 등 |
| 평가 지표 | 정확도, 정밀도, 리콜, F1-점수, ROC-AUC 등 | 평균 제곱 오차(MSE), R-제곱, 평균 절대 오차(MAE). |
| 대상 변수의 특성 | 대상은 범주형입니다(예: 클래스 레이블). | 대상이 연속형입니다(예: 실수). |
| 출력 경계 | 고정된 클래스 경계가 있습니다(예: 이진의 경우 0 또는 1). | 고정 경계 없음; 출력은 실수 범위입니다. |
| 실제 사용 사례 | 스팸 탐지, 사기 탐지, 질병 분류. | 판매량, 주가, 일기 예보 예측. |
| 복잡한 모델링 가능 | 이진 및 다중 클래스 출력을 모두 처리할 수 있습니다. | 일반적으로 하나의 연속적인 값을 예측할 때 더 간단합니다. |
표: 분류와 회귀 비교
Milvus가 분류 작업에 어떻게 도움이 되나요?
데이터의 양과 복잡성이 증가함에 따라, 대용량 데이터 세트를 관리하고 쿼리하는 기존의 방식은 느리고 비효율적일 수 있습니다. 바로 이 부분에서 고성능 오픈소스 벡터 데이터베이스인 Milvus를 갖춘 Zilliz가 중요한 역할을 합니다.
이미지 인식](https://zilliz.com/vector-database-use-cases/image-similarity-search), 객체 감지, 동영상 유사도 검색, 스팸 탐지, 추천 시스템 등의 분류 작업은 텍스트 임베딩, 이미지 특징 또는 오디오 벡터와 같은 비정형 데이터의 고차원 표현을 처리해야 하는 경우가 많습니다. Milvus는 이러한 대량의 벡터 데이터를 효율적으로 관리하고 검색할 수 있도록 특별히 설계되었습니다.
분류를 위한 Milvus의 이점 ###
고차원 데이터 처리: 분류에서 모델은 예측을 위해 벡터화된 데이터(예: 단어 임베딩 또는 이미지 특징 벡터)에 의존하는 경우가 많습니다. Milvus는 이러한 벡터를 저장하고 관리하여 모델 훈련 및 추론 중에 대규모 데이터 세트에 빠르게 액세스할 수 있도록 최적화되어 있습니다.
빠른 유사도 검색: 분류 모델은 데이터 세트에서 가장 근접하게 일치하는 데이터 포인트를 찾아야 하는 경우가 많습니다. Milvus는 벡터 데이터에서 빠른 유사도 검색을 수행하여 이 프로세스를 가속화하여 가장 가까운 이웃을 기반으로 새로운 입력을 더 쉽게 분류할 수 있도록 합니다.
대규모 데이터 세트를 위한 확장성: Milvus는 분류 데이터 세트가 증가해도 빠르고 효율적인 성능을 유지합니다. Milvus는 수백만 개의 제품 벡터, 이미지 임베딩, 수천 개의 이미지 임베딩 등 방대한 양의 데이터에서도 분류 작업을 원활하게 실행할 수 있도록 원활하게 확장할 수 있습니다.
결론
분류는 사기 탐지부터 이미지 인식에 이르기까지 다양한 실제 애플리케이션에서 데이터의 레이블이나 카테고리를 예측하는 머신 러닝 기법입니다. 분류 모델을 성공적으로 구축하고 배포하려면 대량의 데이터, 종종 고차원 벡터를 처리해야 합니다. Milvus는 벡터 데이터를 위한 효율적인 저장, 빠른 검색, 확장성을 제공합니다. 빠른 유사도 검색을 통해 분류 작업의 성능을 향상시키고 데이터 세트가 증가함에 따라 원활하게 확장할 수 있습니다. Milvus를 사용하면 개발자는 대규모 분류 작업의 문제를 쉽게 처리할 수 있어 머신 러닝 환경에서 강력한 도구가 될 수 있습니다.
분류에 관한 ## 자주 묻는 질문
**머신 러닝에서 분류란 무엇인가요?
머신 러닝에서 분류란 주어진 입력의 특징을 기반으로 카테고리 또는 레이블을 예측하는 프로세스입니다. 라벨이 지정된 데이터를 사용하여 모델을 훈련시켜 패턴을 학습한 다음, 보이지 않는 새로운 데이터를 "스팸" 또는 "스팸 아님"과 같은 사전 정의된 클래스로 분류합니다.
- 분류 알고리즘은 회귀와 어떻게 다른가요?
분류 알고리즘은 클래스나 레이블과 같은 범주형 출력을 예측하는 반면, 회귀 알고리즘은 연속적인 숫자 값을 예측합니다. 예를 들어, 분류는 이메일이 스팸인지 여부를 판단하는 반면 회귀는 집 가격을 예측할 수 있습니다.
**분류 작업에서 데이터 준비가 중요한 이유는 무엇인가요?
데이터 준비는 입력 데이터가 깨끗하고 구조화되어 있으며 모델이 처리할 준비가 되어 있는지 확인합니다. 누락된 값을 처리하고, 데이터를 정규화하며, 가장 관련성이 높은 특징을 선택합니다. 적절한 준비는 모델의 정확도와 성능을 향상시킵니다.
- Milvus는 분류 작업에 어떤 도움을 주나요?
밀버스**는 이미지나 텍스트 임베딩과 같은 고차원 데이터를 효율적으로 저장하고 검색하는 오픈소스 벡터 데이터베이스입니다. 효율적인 유사도 검색을 통해 분류 속도를 높여 이미지 인식 및 추천 시스템과 같은 작업에서 대용량 데이터 세트를 쉽게 처리할 수 있습니다.
**분류의 일반적인 과제는 무엇이며 어떻게 해결할 수 있나요?
일반적인 문제로는 과적합, 데이터 불균형, 데이터의 노이즈 등이 있습니다. 이러한 문제는 정규화, 리샘플링 방법(예: SMOTE), 노이즈 감소 전략, 대규모 데이터 세트를 효율적으로 관리하기 위한 Milvus와 같은 확장 가능한 인프라 등의 기술을 사용해 해결할 수 있습니다.
관련 리소스
객체 감지가 무엇인가요? 종합 가이드](https://zilliz.com/learn/what-is-object-detection)
머신 러닝에서 가장 가까운 이웃(KNN) 알고리즘이란 무엇인가요?(https://zilliz.com/blog/k-nearest-neighbor-algorithm-for-machine-learning)
컴퓨터 비전의 이해 ](https://zilliz.com/learn/what-is-computer-vision)