머신러닝의 정의와 학습 흐름 정리
- 지도학습, 비지도학습, 강화학습, scikit-learn, 전처리와 모델링 과정까지 -
이 글은 머신러닝의 정의와 필요성, 머신러닝 학습의 종류, scikit-learn 라이브러리, 머신러닝 모델링 흐름, 그리고 인코딩·스케일링·데이터 분할 같은 주요 전처리 개념을 정리한 글이다. 기존 선형회귀 중심의 글과는 별도로, 머신러닝 전체 흐름을 이해하는 데 초점을 둔다.
목차
1. 머신러닝의 정의와 필요성
머신러닝은 컴퓨터가 데이터를 통해 학습하고, 데이터 속 패턴을 찾아 새로운 문제에 대해 예측하거나 판단하도록 만드는 방법이다.
1.1 머신러닝이란 무엇인가?
기계학습 또는 머신러닝은 기계, 즉 컴퓨터가 학습을 할 수 있도록 하는 연구 분야다.
인공지능을 소프트웨어적으로 구현하는 머신러닝은 컴퓨터가 데이터를 학습하고 스스로 패턴을 찾아내 적절한 작업을 수행하도록 학습하는 알고리즘이다. 사람이 모든 규칙을 직접 작성하는 것이 아니라, 데이터로부터 규칙과 패턴을 찾아내도록 하는 방식이라고 볼 수 있다.
Tom Mitchell(CMU 교수)은 머신러닝을 다음과 같이 정의했다.
이를 QA/QC 관점에서 해석하면 다음과 같다.
| 핵심 요소 | 의미 | QA/QC 관점의 예시 |
| 작업 T | 모델이 해결해야 하는 문제 | 제품 결함 탐지, 생산 공정 모니터링, 품질 평가 |
| 성능 지표 P | 모델이 얼마나 잘 수행했는지 측정하는 기준 | 정확도, 정밀도, 재현율 등 |
| 경험 E | 모델이 학습하는 데이터 | 수집된 생산 데이터, 검사 기록, 공정 센서 데이터 |
예를 들어 장비 이상 탐지 모델을 만든다고 생각해보자. 이때 작업 T는 장비 센서 데이터를 바탕으로 장비 상태를 정상 또는 비정상으로 분류하는 것이다. 경험 E는 장비 센서 데이터이고, 성능 지표 P는 정확도와 같은 평가 지표가 된다.
즉, 머신러닝은 데이터를 기반으로 경험을 쌓고, 그 경험을 통해 특정 작업의 성능을 점점 개선하는 과정이다.
2. 머신러닝 ⊃ AI ⊃ 딥러닝

AI, 머신러닝, 딥러닝은 포함 관계를 가진다. 딥러닝, 머신러닝, AI 순으로 개념의 범위가 넓어진다.
| 구분 | 설명 |
| AI | 마치 인간처럼 학습 및 추론을 할 수 있도록 만들어진 프로그램 또는 시스템 |
| 머신러닝 | 데이터를 활용해 명시적으로 프로그래밍되지 않고도 학습할 수 있는 알고리즘 |
| 딥러닝 | 머신러닝의 한 종류로, 인공 신경망을 이용해 거대한 데이터셋을 학습하는 방법 |
3. 제조업에서 머신러닝의 역할
제조업에서는 많은 품질 데이터, 검사 데이터, 설비 센서 데이터, 공정 데이터가 발생한다. 머신러닝은 이러한 데이터를 활용하여 품질 문제를 더 빠르게 파악하고, 불량을 예측하며, 생산성을 높이는 데 활용될 수 있다.
3.1 품질 데이터의 자동 분석
머신러닝은 대규모 품질 데이터를 자동으로 처리하고, 데이터 패턴과 상관관계를 분석하여 공정의 품질 문제를 실시간으로 식별한다. 사람이 직접 모든 데이터를 확인하기 어려운 상황에서도 모델이 이상 패턴을 찾아낼 수 있다.
3.2 공정 이상 탐지 및 예측
머신러닝 기반 이상 탐지 모델은 공정 데이터에서 비정상적인 패턴을 감지하여 결함 가능성을 사전에 예측한다. 이를 통해 문제가 실제 불량으로 이어지기 전에 조치할 시간을 확보할 수 있다.
3.3 결함률 감소와 생산성 향상
머신러닝은 결함 예측과 공정 최적화를 통해 제품의 결함률을 줄이고 생산성을 높이는 데 기여한다. QA/QC 관점에서는 품질 검사 자동화, 결함 원인 분석, 공정 조건 최적화 등에 활용할 수 있다.
4. 머신러닝 학습의 종류

머신러닝 학습 방식은 크게 지도학습, 비지도학습, 강화학습으로 나눌 수 있다.
| 학습 종류 | 핵심 개념 | 대표 문제 |
| 지도학습 | 정답이 있는 데이터를 사용해 모델을 학습한다. | 분류, 회귀 |
| 비지도학습 | 정답 없이 데이터의 패턴이나 구조를 찾는다. | 클러스터링, 차원 축소, 연관 규칙 |
| 강화학습 | 보상을 최대화하고 벌을 최소화하는 방향으로 학습한다. | 게임 AI, 로봇 제어, 자율주행 |
5. 지도학습 : 분류
정답이 있는 데이터를 활용해 모델을 학습시키는 방법이다. 입력값 X가 주어지면 이에 대한 정답 Label y를 함께 제공하여 학습한다. 대표적인 지도학습 문제에는 분류와 회귀가 있다.
5.1 분류란 무엇인가?
분류는 컴퓨터가 주어진 데이터를 보고, 미리 정해진 그룹 또는 카테고리 중 하나로 나누는 작업이다.
예를 들어 이메일을 스팸과 정상으로 나누거나, 제품을 정상과 불량으로 구분하거나, 장비 상태를 정상과 비정상으로 분류하는 작업이 분류에 해당한다.
5.2 분류 모델의 특징
- 입력 데이터: 레이블, 즉 정답이 포함된 데이터가 필요하다.
- 출력 데이터: 입력 데이터를 특정 범주로 분류한 결과가 출력된다.
- 대표 알고리즘: 로지스틱 회귀, 의사결정 트리, 랜덤 포레스트, SVM, 뉴럴 네트워크 등이 있다.
5.3 분류의 주요 유형
| 분류 유형 | 설명 | 예시 |
| 이진 분류 | 데이터가 두 개의 카테고리로 분류되는 경우 | 스팸/정상, 양성/음성, 장비 정상/비정상 |
| 다중 분류 | 데이터가 세 개 이상의 카테고리로 분류되는 경우 | 이미지 분류, 성적 등급 A/B/C/D/F, 제품 분류 A/B/C/D/E |
5.4 대표적인 분류 모델
로지스틱 회귀
로지스틱 회귀는 이름에 회귀가 들어가지만, 실제로는 이진 분류에 자주 사용되는 선형 모델이다. 입력 데이터를 바탕으로 어떤 클래스에 속할 확률을 계산하고, 기준값을 넘으면 특정 클래스로 분류한다.

의사결정 트리
의사결정 트리(Decision Tree)는 데이터를 특정 기준에 따라 분할하여 트리 구조로 표현하는 모델이다. 조건을 하나씩 따라가며 결론에 도달하는 방식이므로 해석이 쉽다. 스무고개처럼 질문을 반복하면서 데이터를 분류하는 구조와 비슷하다.
| Index | 날개 유무 | 비행 여부 | 지느러미 유무 | 정답 |
| 1번 데이터 | 있음 | 가능 | 없음 | 매 |
| 2번 데이터 | 없음 | NULL | 있음 | 돌고래 |

서포트 벡터 머신
서포트 벡터 머신(SVM)은 클래스 간의 최적의 경계선, 즉 결정 경계(Decision Boundary)를 찾아 데이터를 분류하는 모델이다.
- 결정 경계: 서로 다른 클래스를 나누는 경계선
- 서포트 벡터: 결정 경계에 가장 가까이 위치한 데이터 포인트
- 마진: 결정 경계선에서 가장 가까운 서포트 벡터까지의 거리

5.5 분류의 예시 사례: 제조업 품질 관리
제조업 품질 관리에서는 머신러닝 분류 모델을 활용하여 불량품을 탐지할 수 있다. 예를 들어 현대자동차 또는 현대모비스와 같은 자동차 부품 생산 현장에서는 품질 검사 자동화에 머신러닝을 활용할 수 있다.
- 사례: 생산 공정에서 머신러닝을 활용한 품질 검사 자동화
- 데이터: 차량 부품의 크기, 표면 결함, 센서 데이터
- 적용: 머신러닝 모델로 불량품을 실시간 탐지하여 생산 효율성을 높이고 품질 비용을 절감
6. 지도학습: 회귀
6.1 회귀란 무엇인가?
회귀는 데이터를 기반으로 연속적인 숫자 값을 예측하는 작업이다.
예를 들어 집의 크기를 바탕으로 집값을 예측하거나, 공정 온도와 압력을 바탕으로 제품 두께를 예측하거나, 날씨와 행사 일정 데이터를 바탕으로 매출을 예측하는 문제가 회귀에 해당한다.
6.2 회귀의 주요 유형
선형 회귀
선형 회귀는 데이터가 직선 형태로 분포한다고 가정하여 예측하는 모델이다. 간단하고 직관적이며, 변수 간 관계를 설명하는 데 적합하다.
예를 들어 집의 크기와 가격 사이의 관계를 예측하는 문제에 사용할 수 있다.

다항 회귀
다항 회귀는 데이터를 비선형적으로 모델링할 때 사용하는 회귀 모델이다. 데이터가 직선이 아니라 곡선 형태로 변하는 경우에 사용할 수 있다. 예를 들어 기온에 따라 판매량이 증가하다가 일정 온도 이후 다시 감소하는 경우, 단순 직선보다 곡선 형태의 모델이 더 적합할 수 있다.

릿지 회귀와 라쏘 회귀
릿지 회귀(Ridge Regression)와 라쏘 회귀(Lasso Regression)는 규제를 추가한 선형 회귀 모델이다. 여기서 규제란 모델이 학습 데이터에만 너무 과도하게 맞춰지는 과적합(Overfitting)을 방지하기 위해 일종의 패널티를 부여하는 방법이다.
예를 들어 기온에 따른 판매량 데이터를 완벽하게 맞추려고 10차, 20차 다항식처럼 지나치게 복잡한 선을 그리면, 모델은 훈련 데이터에는 잘 맞지만 새로운 데이터에서는 엉망으로 예측할 수 있다. 이때 모델의 가중치, 즉 계수 w 값들이 비정상적으로 커질 수 있다.
릿지와 라쏘 회귀는 가중치 값이 너무 커지지 못하도록 억제하는 조건을 추가하여 모델을 부드럽고 일반화하기 좋게 만든다.
| 모델 | 규제 방식 | 핵심 설명 |
| 릿지 회귀 | L2 규제 | 모든 변수를 살려두되, 튀는 변수 없이 가중치를 전반적으로 작게 줄여 모델을 안정적으로 만든다. 입력 변수들 사이에 상관관계가 높을 때, 즉 다중공선성이 있을 때 효과적이다. |
| 라쏘 회귀 | L1 규제 | 덜 중요한 변수의 가중치를 완전히 0으로 만들 수 있다. 따라서 변수 선택 효과가 있다. |

서포트 벡터 회귀
서포트 벡터 회귀(SVR)는 서포트 벡터 머신(SVM)을 기반으로 연속적인 값을 예측하는 회귀 모델이다. SVM이 분류에서 결정 경계를 찾는 방식이라면, SVR은 일정 오차 범위 안에서 데이터를 잘 설명하는 함수를 찾는 방식이라고 볼 수 있다.

결정 트리 회귀와 랜덤 포레스트 회귀
결정 트리 회귀와 랜덤 포레스트 회귀는 의사결정 트리를 기반으로 데이터를 나누어 예측하는 모델이다. 회귀 문제에서는 잔차 제곱의 합이 최소가 되도록 데이터를 분할하고, 각 영역의 평균값을 예측 결과로 생성한다.
복잡한 공정 데이터에서 품질을 예측하는 문제처럼 변수 간 관계가 단순한 직선으로 설명되지 않을 때 트리 기반 회귀 모델을 사용할 수 있다.

딥러닝 기반 회귀
딥러닝 기반 회귀는 신경망을 활용하여 복잡한 관계를 학습하는 회귀 방법이다. 데이터가 많고 변수 간 관계가 복잡할 때 사용할 수 있다. 예를 들어 의료 데이터에서 질병 진행 정도를 예측하거나, 대규모 센서 데이터를 기반으로 복잡한 품질 지표를 예측하는 데 활용할 수 있다.

6.3 회귀의 예시 사례
| 사례 | 설명 | 활용 데이터 |
| 매출 예측 | 대형 유통사에서 상품 판매 데이터, 날씨, 행사 일정, 지역별 구매 데이터를 분석해 특정 점포와 상품의 매출을 예측한다. |
판매 데이터, 날씨, 행사 일정, 지역별 구매 데이터 |
| 주택 가격 예측 | 부동산 플랫폼에서 지역별 거래 데이터, 평수, 층수, 학군, 대중교통 접근성 등을 활용해 주택 가격을 예측한다. |
거래 데이터, 평수, 층수, 학군, 교통 정보 |
| 공정 품질 관리 | 배터리 생산 공정에서 온도, 압력, 공정 시간을 입력 데이터로 활용해 두께와 전류 용량을 예측하고 불량률을 최소화한다. |
온도, 압력, 공정 시간, 검사값 |
| 날씨 예측 | 기온, 강수량, 풍속을 예측하여 에너지 수요와 공급의 균형을 맞추는 데 활용한다. |
기상 데이터, 전력 수요 데이터 |
| 주식 가격 예측 | 과거 종가, 거래량, 매수·매도 패턴, 환율, 경제 지표 등을 사용해 특정 종목의 미래 주가를 예측한다. |
주가, 거래량, 환율, 경제 지표 |
| 에너지 사용량 예측 | 건물별 전력 사용 데이터를 머신러닝으로 분석하여 시간대별 전력 소비량을 예측한다. |
전력 사용량, 시간대, 건물 정보 |
7. 비지도학습
비지도학습은 데이터를 사전에 레이블, 즉 정답을 주지 않고 데이터의 패턴이나 구조를 발견하는 것에 초점을 맞춘 머신러닝 방법이다. 쉽게 말해 데이터를 스스로 분류하거나 숨겨진 관계를 찾는 탐정 같은 역할을 한다.
7.1 비지도학습의 정의와 특징
비지도학습은 레이블이 없는 데이터를 분석하여 데이터 간의 관계, 그룹, 패턴 등을 찾는 알고리즘이다. 목적은 데이터 내부의 숨겨진 구조나 특징을 발견하여 사람이 알지 못했던 새로운 인사이트를 제공하는 것이다.
- 정답이 없기 때문에 정확도보다는 데이터 간의 유사성과 차이를 측정하는 데 중점을 둔다.
- 주로 탐색적 데이터 분석(EDA)과 데이터 전처리 단계에서 활용된다.
- 데이터의 숨겨진 구조, 그룹, 패턴, 관계를 찾는 데 유용하다.
7.2 클러스터링
클러스터링은 데이터를 유사한 그룹으로 묶는 작업이다. 정답이 없더라도 데이터의 특징을 기준으로 비슷한 데이터끼리 군집을 형성한다.
- 고객을 구매 패턴에 따라 VIP 고객, 일반 고객 등으로 나누기
- 유전자 데이터를 분석해 비슷한 유전자 그룹 찾기
- 넷플릭스 콘텐츠 유사성 지도처럼 콘텐츠 간 유사성을 기반으로 그룹화하기

대표적인 클러스터링 알고리즘에는 K-Means, DBSCAN, 계층적 클러스터링이 있다.
7.3 차원 축소
차원 축소는 데이터를 더 간결하고 중요한 특징만 남기는 작업이다. 변수의 수가 너무 많을 때 핵심 정보를 유지하면서 데이터 차원을 줄이는 데 사용된다.
예를 들어 공정 라인이 3개이고 제품을 3가지 만든다고 가정해도 센서 데이터가 수천 개 이상 발생할 수 있다. 이처럼 센서 데이터가 2,050개처럼 매우 많다면 모든 변수를 그대로 분석하기 어렵다. 이때 차원 축소를 통해 수많은 센서 데이터를 몇 가지 중요한 지표로 요약할 수 있다. 대표적인 차원 축소 알고리즘에는 PCA(주성분 분석), t-SNE, UMAP이 있다.
7.4 연관 규칙 학습
연관 규칙 학습은 데이터 간의 상관관계를 발견하는 작업이다. 어떤 항목이 함께 발생하는지, 특정 행동 이후 어떤 행동이 이어질 가능성이 높은지 등을 찾는다.
- 장바구니 분석: 우유를 사면 빵도 살 확률이 높다.
- 사용자 행동 분석: 특정 영화를 본 사람은 다른 특정 영화를 볼 가능성이 높다.
8. 강화학습
강화학습은 보상을 통해 상은 최대화하고 벌은 최소화하는 방향으로 행위를 강화하는 학습이다.
강화학습에서는 에이전트가 시행착오를 통해 학습한다. 이는 실제 사람이나 동물이 경험을 통해 학습하는 방식과 유사하다. 에이전트는 어떤 행동을 했을 때 보상을 받으면 그 행동을 더 자주 하게 되고, 벌을 받으면 그 행동을 줄이도록 학습한다.

9. scikit-learn 라이브러리
scikit-learn은 Python에서 머신러닝 분석을 할 때 유용하게 사용할 수 있는 대표적인 라이브러리다. 보통 sklearn이라는 약어로 사용한다.
9.1 scikit-learn 설치
scikit-learn은 다음 명령어를 실행하여 설치할 수 있다.
9.2 scikit-learn으로 할 수 있는 것
| 기능 | 설명 |
| 지도학습 | 분류, 회귀 모델을 사용할 수 있다. 예를 들어 로지스틱 회귀, 랜덤 포레스트 등이 있다. |
| 비지도학습 | 클러스터링, 차원 축소를 수행할 수 있다. 예를 들어 K-Means, PCA 등이 있다. |
| 전처리 | 스케일링, 인코딩, 결측치 처리 등을 지원한다. |
| 모델 평가 | 정확도, 혼동행렬, 교차검증 등 모델 평가 기능을 제공한다. |
| 데이터 분할 | 학습 데이터와 테스트 데이터를 나눌 수 있다. |
9.3 자주 사용하는 모듈
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn import svm
from sklearn import tree
from sklearn.ensemble import RandomForestClassifier
9.4 import와 from ... import의 차이
Python을 사용할 때는 보통 다음과 같이 라이브러리를 가져온다.
import numpy as np
import pandas as pd
그런데 scikit-learn에서는 다음처럼 from ... import 형태를 자주 사용한다.
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
scikit-learn은 창고처럼 도구가 방마다 나뉘어 있는 구조에 가깝다. 그래서 from sklearn.model_selection import train_test_split처럼 필요한 기능이 있는 위치로 직접 찾아가서 가져오는 방식이 자주 사용된다.
반면 numpy와 pandas는 자주 쓰는 도구가 입구에 진열되어 있는 구조처럼 사용할 수 있다. 그래서 np.array(), pd.DataFrame()처럼 바로 꺼내 쓰는 방식이 자연스럽다.
10. 머신러닝 모델링
머신러닝 모델링은 단순히 모델을 하나 선택해 실행하는 과정이 아니다. 문제를 정의하고, 데이터를 수집하고, 전처리와 EDA를 수행한 뒤, 모델을 학습하고 평가하며 개선하는 반복 과정이다.

10.1 문제 정의
가장 먼저 모델로 해결하고 싶은 문제가 무엇인지 명확히 정의해야 한다.
- 타겟이 있는 데이터인가?
- 타겟이 있다면 분류 문제인가, 회귀 예측 문제인가?
- 타겟이 없는 데이터라면 어떤 가치를 뽑아내고 싶은가?
- 지도학습을 사용할 것인가, 비지도학습을 사용할 것인가?
문제를 정의한 뒤에는 문제에 대한 접근 방식을 정해야 한다. 이 과정에는 가설 설정과 모델 설정이 포함된다.
10.2 데이터 전처리
데이터 전처리는 머신러닝 모델링에서 매우 중요한 단계다. 데이터가 잘 정리되어 있지 않으면 좋은 모델을 사용해도 원하는 성능을 얻기 어렵다.
데이터 수집
문제 해결에 사용하기 위한 데이터를 수집한다. 데이터는 잘 정리되어 있는 경우도 있지만, 실제 분석에서는 결측치, 이상치, 타입 오류 등이 포함된 경우가 많다.
데이터 클리닝
데이터 클리닝은 분석에 적합한 형태로 데이터를 정제하고 가공하는 단계다.
- 데이터 타입 확인
- 결측치 처리
- 이상치 제거
- 필요한 경우 정규화 또는 표준화 진행
피처 엔지니어링
피처 엔지니어링은 다양한 독립변수 중에서 분석에 활용할 변수를 적절하게 선택하거나, 필요에 따라 새로운 변수를 생성하는 과정이다.
- 도메인 지식을 활용해 중요한 변수를 선택한다.
- EDA를 통해 변수 간 상관관계를 분석한다.
- 기존 변수를 조합해 새로운 변수를 만들 수 있다.
데이터 분할
데이터 분할은 분석에 사용할 데이터를 나누는 작업이다. 보통 Train/Test 데이터로 구분하거나 Train/Validation/Test 데이터로 구분한다.
- Train : Test 비중은 보통 8:2 정도로 나눈다.
- 예를 들어 데이터가 10,000개라면 8,000개를 Train, 2,000개를 Test로 사용할 수 있다.
- 시계열 데이터의 경우는 특정 시점을 기준으로 데이터를 나누는 것이 적절하다.
10.3 모델링
모델링 단계에서는 학습에 사용할 모델을 선택하고 모델을 생성한다. 이후 학습 데이터를 이용해 모델을 학습시키고, 테스트 데이터를 이용해 예측을 진행한다.
| 학습 유형 | 모델 예시 | 주요 용도 |
| 지도학습 - 회귀 | 선형 회귀, 랜덤 포레스트 회귀, SVM 회귀 | 연속적인 숫자 값 예측 |
| 지도학습 - 분류 | 로지스틱 회귀, 랜덤 포레스트, SVM | 정상/불량, 양성/음성 등 범주 예측 |
| 비지도학습 - 군집 분석 | K-Means, DBSCAN | 비슷한 데이터끼리 그룹화 |
| 차원 축소 | PCA | 전처리 또는 데이터 요약 |
10.4 모델 평가
모델 학습이 끝나면 성능 지표를 활용해 모델의 성능을 평가한다. 문제 유형에 따라 사용하는 평가 지표가 다르다.
| 문제 유형 | 평가 지표 |
| 분류 모델 | 정확도 Accuracy, 정밀도 Precision, 재현율 Recall, F1 Score |
| 회귀 모델 | MSE, RMSE, MAE |
| 군집 분석 | 군집화된 결과물을 직접 확인하고, 군집 간 차이를 해석 |
10.5 하이퍼파라미터 튜닝
모델 성능을 끌어올리기 위해서는 모델의 하이퍼파라미터 값을 변경하며 학습과 평가 과정을 반복한다. 하이퍼파라미터란 모델을 학습하기 전에 사용자가 직접 설정해야 하는 변수다. 동일한 모델이더라도 어떤 값을 설정하느냐에 따라 모델 성능이 달라질 수 있다.
예를 들어 모델 성능이 78%였다면, 하이퍼파라미터 튜닝을 통해 80%, 85~88%까지 개선될 수도 있다. 물론 항상 성능이 향상되는 것은 아니며, 검증 데이터를 기준으로 적절한 값을 찾아야 한다.
11. 인코딩
인코딩은 범주형 데이터를 숫자로 변환하는 과정이다.
11.1 범주형 데이터란?
범주형 데이터는 숫자처럼 연속적인 값이 아니라, 특정한 범주 또는 이름으로 표현되는 데이터다. 즉, 의미 있는 그룹으로 구분되는 값이다.
예를 들어 성별, 혈액형, 제품 종류, 설비 ID, 품질 등급 등이 범주형 데이터에 해당한다.
11.2 인코딩이 필요한 이유
- 머신러닝 모델은 기본적으로 숫자만 입력받을 수 있다.
- 문자열을 그대로 넣으면 모델이 학습하지 못한다.
- 따라서 범주형 데이터를 숫자 형태로 변환해야 한다.
11.3 One-Hot Encoding
One-Hot Encoding은 가장 많이 사용하는 인코딩 방법 중 하나다. 순서가 없는 범주형 변수를 다룰 때 가장 안전하고 효과적인 방법이다.
성별, 혈액형처럼 순서가 없는 범주형 변수나 범주의 개수가 너무 많지 않은 경우에 사용할 수 있다.
One-Hot Encoding은 각 범주를 새로운 열로 만들고, 해당 여부를 0과 1로 표시한다. 예를 들어 혈액형 A, B, O가 있다면 A열, B열, O열을 만들고 각 행에 0 또는 1을 표시한다.
import pandas as pd
# 1. 샘플 데이터프레임 생성
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "David"],
"blood_type": ["A", "B", "O", "AB"]
})
print("원본 데이터:")
print(df)
# 2. One-Hot Encoding 적용
df_encoded = pd.get_dummies(df, columns=["blood_type"])
print("
One-Hot Encoding 결과:")
print(df_encoded)
One-Hot Encoding을 할 때는 pandas의 get_dummies()를 사용할 수 있다.
11.4 Label Encoding
Label Encoding은 문자형 데이터를 정수로 변환하는 간단한 방법이다. 주로 순서가 있는 범주형 변수를 처리할 때 유용하다.
예를 들어 low < medium < high, 초급 < 중급 < 고급처럼 순서가 있는 범주형 변수에 사용할 수 있다. 또는 범주는 있지만 One-Hot Encoding을 사용하기에는 범주의 수가 너무 많은 경우에도 사용할 수 있다.
트리 기반 모델인 Random Forest나 XGBoost 등은 순서가 없는 범주형 값에 정수값이 부여되어도 비교적 잘 처리하는 경우가 있다.
Label Encoding은 각 범주에 대해 고유한 정수값을 할당한다. 예를 들어 만족, 보통, 불만이라는 값이 있다면 만족은 2, 보통은 1, 불만은 0처럼 변환할 수 있다. 불량품과 양품을 분류하는 경우 불량품은 0, 양품은 1로 변환할 수도 있다.
import pandas as pd
from sklearn.preprocessing import LabelEncoder
# 예시 데이터
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "David"],
"satisfaction": ["만족", "보통", "불만", "만족"]
})
print("원본 데이터:")
print(df)
# Label Encoding
le = LabelEncoder()
df["satisfaction_encoded"] = le.fit_transform(df["satisfaction"])
print("
Label Encoding 결과:")
print(df)
LabelEncoder는 scikit-learn에서 가져와서 선언해야 한다.
12. 스케일링
스케일링은 머신러닝에서 수치형 데이터의 단위, 즉 스케일을 맞추는 전처리 과정이다.
12.1 스케일링이 필요한 이유
머신러닝 모델은 입력 변수들의 크기 차이에 민감할 수 있다. 스케일이 크거나 단위가 다른 변수는 모델이 편향되게 학습하는 원인이 될 수 있다. 예를 들어 키와 연봉 변수가 함께 있다고 하자.
- 키(cm): 160~190, 최대값과 최소값의 차이는 약 30
- 연봉(만원): 1,000~10,000, 최대값과 최소값의 차이는 약 9,000
이 경우 연봉 값의 크기가 압도적으로 크기 때문에 모델이 연봉 변수만 중요하게 보고 학습할 수 있다. 따라서 수치형 데이터의 단위를 맞추는 스케일링이 필요하다.
12.2 StandardScaler
StandardScaler는 각 값을 평균 0, 표준편차 1이 되도록 변환하는 표준화 방법이다.
StandardScaler는 데이터가 정규분포에 가깝거나 대칭적일 때 사용하기 좋다. 값의 분포 자체를 보존하고 싶을 때도 사용할 수 있다. 즉, 데이터의 모양은 유지하면서 중심을 0으로 옮기고 크기를 표준편차 1로 맞추는 방식이다.

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import LabelEncoder
# 예시 데이터 (5개의 샘플, 2개의 특성)
X_train = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
# StandardScaler 초기화
scaler = StandardScaler()
# 데이터 표준화
X_train_scaled = scaler.fit_transform(X_train)
print(X_train_scaled)
다만 StandardScaler는 평균과 표준편차를 사용하므로, 이상치가 있으면 평균과 표준편차가 흔들릴 수 있다.
12.3 MinMaxScaler
MinMaxScaler는 각 값을 0~1 사이로 변환하는 정규화 방법이다. 값의 범위를 일정한 크기로 맞춰야 할 때 사용하며, 데이터 분포가 정규분포가 아닐 때도 사용할 수 있다.
from sklearn.preprocessing import MinMaxScaler
# 예시 데이터 (5개의 샘플, 2개의 특성)
X_train = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
# MinMaxScaler 초기화
scaler = MinMaxScaler()
# 데이터 정규화
X_train_scaled = scaler.fit_transform(X_train)
print(X_train_scaled)
다만 MinMaxScaler는 이상치가 하나라도 있으면 전체 범위가 압축될 수 있다. 따라서 이상치가 많은 데이터에서는 주의가 필요하다.
12.4 SVM과 스케일링
SVM은 feature의 scale에 민감한 모델이다. 각 변수의 스케일이 크게 다르면 결정 경계가 왜곡될 수 있다. 따라서 SVM을 사용할 때는 스케일링을 통해 feature의 단위를 맞추면 결정 경계가 더 좋아질 수 있다.
| 스케일링 방식 | 변환 기준 | 사용 상황 | 주의점 |
| StandardScaler | 평균 0, 표준편차 1 | 정규분포에 가깝거나 분포 형태를 유지하고 싶을 때 | 이상치가 있으면 평균과 표준편차가 흔들릴 수 있다. |
| MinMaxScaler | 0~1 사이 값으로 변환 | 값의 범위를 일정하게 맞추고 싶을 때 | 이상치가 있으면 전체 값이 압축될 수 있다. |
13. 데이터 분할
데이터 분할은 모델을 훈련하고 평가하기 위해 데이터를 훈련 데이터와 테스트 데이터로 나누는 과정이다.
| 구분 | 역할 |
| 훈련 데이터 | 모델 학습에 사용한다. |
| 테스트 데이터 | 모델이 본 적 없는 데이터로, 일반화 성능을 평가한다. |
| 검증 데이터 | 모델 선택이나 하이퍼파라미터 튜닝에 사용한다. |
13.1 왜 데이터를 나눠야 할까?
데이터를 나누는 이유는 모델이 훈련 데이터만 잘 맞추고 새로운 데이터에서는 잘 맞추지 못하는 과적합을 방지하기 위해서다. 테스트 데이터를 따로 두면 모델의 일반화 성능, 즉 실제 상황에서도 잘 작동하는지를 객관적으로 평가할 수 있다.
13.2 데이터 분할 비율
보통 Train : Test 비율은 8:2 또는 7:3 정도를 사용한다. 경우에 따라 Train : Validation : Test를 7:2:1 정도로 나누기도 한다. 데이터가 많을수록 테스트셋 비율을 조금 줄여도 된다.
import pandas as pd
from sklearn.model_selection import train_test_split
# 예시 데이터 생성
data = {
"feature1": range(100),
"feature2": range(100, 200),
"label": [0] * 80 + [1] * 20 # 불균형 데이터
}
df = pd.DataFrame(data)
# X(입력), y(출력) 분리
X = df[["feature1", "feature2"]]
y = df["label"]
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.3,
random_state=42
)
# 결과 확인
print("훈련 데이터 크기:", X_train.shape)
print("테스트 데이터 크기:", X_test.shape)
분류 문제에서 클래스 비율이 불균형한 경우에는 stratify 옵션을 사용해 훈련 데이터와 테스트 데이터의 클래스 비율을 비슷하게 유지할 수 있다.
14. 오늘의 요약
14.1 머신러닝 핵심 요약
- 머신러닝은 데이터를 분석하여 패턴을 학습하고, 이를 바탕으로 예측이나 결정을 내리는 인공지능 기술이다.
- 지도학습은 입력 데이터와 해당 데이터에 대한 정답, 즉 레이블을 사용하여 모델을 학습시키는 방법이다.
- 지도학습의 목표는 학습 데이터를 통해 모델을 훈련시킨 후, 새로운 입력 데이터에 대해 예측할 수 있는 모델을 만드는 것이다.
- 지도학습은 크게 분류와 회귀 문제로 나뉜다.
- 분류는 주어진 데이터를 여러 클래스 중 하나로 분류하는 문제다.
- 회귀는 연속적인 값을 예측하는 문제다.
- 비지도학습은 레이블이 없는 데이터를 사용하여 패턴이나 구조를 학습하는 방법이다.
- 비지도학습의 주요 방법에는 클러스터링과 차원 축소가 있다.
- 강화학습은 보상을 최대화하고 벌을 최소화하는 방향으로 시행착오를 통해 학습하는 방법이다.
14.2 머신러닝 모델링 요약
- 문제 정의
- 데이터 수집 및 준비
- 데이터 탐색 EDA 및 전처리
- 데이터 분할
- 모델 선택
- 모델 학습
- 모델 평가
- 하이퍼파라미터 튜닝
14.3 전처리 요약
| 전처리 | 목적 | 대표 방법 |
| 인코딩 | 범주형 데이터를 숫자로 변환한다. | One-Hot Encoding, Label Encoding |
| 스케일링 | 수치형 데이터의 단위를 맞춰 모델의 민감도를 완화한다. | StandardScaler, MinMaxScaler |
| 데이터 분할 | 모델 학습과 평가 데이터를 분리해 과적합을 방지한다. | train_test_split |
머신러닝은 단순히 모델을 실행하는 기술이 아니라, 문제 정의부터 데이터 수집, 전처리, 모델 선택, 학습, 평가, 튜닝까지 이어지는 전체 과정이다. 좋은 모델을 만들기 위해서는 알고리즘보다 먼저 데이터의 형태와 문제 유형을 정확히 이해해야 한다.
출처
※ KDT 빅데이터 기반 품질 관리(QA/QC) 양성 과정 6회차
'TIL > 머신러닝' 카테고리의 다른 글
| 선형 모델 이후의 모델링 프로세스 실습 (0) | 2026.06.29 |
|---|---|
| 로지스틱 회귀와 분류 평가 지표 정리 (0) | 2026.06.24 |
| 머신러닝 : 데이터 전처리부터 모델링과 평가까지 (0) | 2026.06.18 |
| 머신러닝 기초와 선형회귀 이해하기 (0) | 2026.06.17 |
| VS Code 설치 및 설정 방법 : Python과 Jupyter Notebook 실습 환경 조성하기 (0) | 2026.06.17 |
