Supervised Learning (지도 학습) 이란?
Supervised Learning (지도 학습) 또는 Supervised Machine Learning은 머신러닝과 인공지능 분야의 한 카테고리입니다. Supervised (지도)라고 불리는 이유는, 이 방법은 라벨링 된 데이터를 기반하여 학습을 하기 때문입니다. 모델은 데이터를 학습하면서 데이터를 가장 잘 나타내는 모델이 되기 위해 계속해서 모델을 수정해 나갑니다. Supervised Leargning (지도 학습)은 실제 여러 가지 산업 분야에서 활용되고 있습니다. 가장 쉽게 생각할 수 있는 예로는 스팸 메일 필터링 (classification) 하는 것을 생각해 볼 수 있습니다.
Supervised Learning (지도 학습)은 어떻게 구현되나요?
Supervised Learning (지도 학습)의 학습 데이터(Training dataset)는 여러개의 인풋과 아웃풋으로 구성되어 있습니다. 알고리즘은 데이터를 학습하면서 데이터를 가장 잘 나타내는 모델을 만들어 나가며 loss function을 통해 에러율을 계산하며 이를 최소화하는 방향으로 수렴해 나갑니다.
Supervised Learning(지도학습) 은 두가지 타입으로 크게 나눠 생각해 볼 수 있습니다.
- Classification (분류) : 데이터들을 정해진 카테고리별로 구분하는 일을 하는 것을 Classification이라고 합니다. 이는 Supervised Learning (지도학습)으로 하는 가장 대표적인 태스크입니다.
- Regression (회귀분석) : 여러개의 인풋 속성들과 아웃풋 사이의 상관관계를 분석하여 학습되지 않은 데이터가 주어졌을 때 아웃풋을 계산할 수 있는 모델을 Regression (회귀분석)이라고 합니다.
Supervised Learning(지도학습)의 활용 사례는 어떤 것들이 있나요?
- 이미지/ 물건 인식 (Image recognition, Object detection) : 얼굴인식이나 셀프드라이빙 차의 장애물 감지 등이 이에 해당됩니다.
- 감정 분석 (Sentiment Analysis) : 고객들의 리뷰나 SNS 데이터를 활용해 해당 텍스트에 들어있는 감정에 대해 분석하는 일도 할 수 있습니다.
- 스팸메일 감지/분류 : 스팸메일의 경우 어떤 특징들이 있는지 데이터 속성을 학습하여 스팸메일을 자동으로 분류하는 모델도 생각해볼 수 있습니다.
- Fraud Detection : 정상적인 거래와 비정상적인 거래의 데이터 패턴 학습을 통해 이를 구별할 수 있습니다.
- 채용 분야 AI : AI 인터뷰, 지원서 AI 자동분류 등도 최근 기업들이 많이 적용하고 있습니다. 이런 AI들도 특정 데이터 기반 Supervised Learning 방법으로 학습되어 지원자들의 인터뷰 내용과, 지원서 내용을 분석하여 합격/불합격으로 구분하게 됩니다.
Supervised Learning(지도학습)에 해당하는 알고리즘은 어떤 것들이 있나요?
다음 알고리즘들이 Supervised Learning(지도학습)에 해당되는 대표적인 알고리즘입니다.
- Linear Regression
- Logistic Regression
- Support Vector Machine (SVM)
- K-nearest neighbor
- Random forest
Supervised Learning (지도학습)의 한계점
Supervised Learning(지도학습)은 널리 사용되고 가장 대표적인 머신러닝 종류이지만 다음의 한계를 가지고 있습니다.
- 많은 양의 라벨링 데이터를 요구하며, 라벨링된 데이터는 한정적이고 가격이 비쌉니다.
- 학습 데이터(Training Data) 를 기반으로 만들어진 모델이기 때문에, 예측해야 하는 데이터들이 학습데이터와 패턴이 다르다면 예측을 제대로 하지 못할 수 있습니다.
- 인간이 능력적인 한계로 할 수 없는 복잡한 일들을 수행하는 것은 어려울 수 있습니다.
파이썬 Scikit Learn 패키지로 Supervised Learning (지도학습) 구현해보기
Scikit Learn 패키지는 머신러닝을 아주 간단한 몇 줄로 구현 가능토록 도와줍니다. 이번 포스팅에서는 단순 예시를 보여드리고 향후 좀 더 복잡한 예제들을 다뤄보도록 하겠습니다.
from sklearn import datasets
from sklearn import tree
from sklearn.model_selection import train_test_split
iris = datasets.load_iris() #iris data 로드하기
X = iris.data
y = iris.target
# Train 데이터와 test 데이터로 7:3 비율로 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# Classifier 지정해주기, 다른 모델을 사용하려면 이부분 바꿔주기 (위에도 import 새로 해주기)
clf = tree.DecisionTreeClassifier()
# 모델 학습하는 부분
clf.fit(X_train, y_train)
# test data에 테스트(predict) 하기
y_pred = clf.predict(X_test)
이번 포스팅에서는 Supervised Learning이 무엇인지, 실제 활용 사례는 어떤 것들이 있는지, 대표적인 알고리즘에는 어떤 것들이 있는지, 한계점은 무엇인지 그리고 Scikit Learn 패키지로 구현하는 예제에 대해 알아보았습니다. 다음에는 Unsupervised Learning에 대해 알아보도록 하겠습니다. ^^
'머신러닝' 카테고리의 다른 글
Classification Decision Tree (결정트리) 개념 - Information gain, impurity, Entropy 이해 (1) | 2023.02.01 |
---|---|
Reinforcement Learning (강화학습) 이란? (0) | 2023.01.30 |
Unsupervised Learning (비지도 학습) 이란? (1) | 2023.01.28 |
머신러닝 모델의 종류에는 어떤 것들이 있나요? (0) | 2023.01.28 |
머신러닝 소개 : 머신러닝 분야의 매력, 활용 사례, 공부 방법 (1) | 2023.01.27 |
댓글