본문 바로가기
카테고리 없음

(10/6일) 머신러닝 기초 핵심 복습

by proprocess-manager 2026. 10. 6.
반응형
오늘의 핵심
머신러닝에서는 데이터를 그대로 사용하는 것이 아니라, Feature와 Label을 구분하고 → 데이터를 전처리하고 → 필요한 경우 Encoding과 Scaling을 적용한 후 → 모델이 학습할 수 있는 형태로 만드는 과정이 중요합니다.

1. 인공지능(AI) → 머신러닝 → 딥러닝

인공지능(AI)은 인간의 지적 능력인 학습과 추론 등을 컴퓨터로 구현하는 기술입니다. 머신러닝은 AI의 한 분야로, 데이터를 통해 패턴을 학습하고 새로운 데이터에 대한 예측이나 판단을 수행합니다. 딥러닝은 여러 층의 인공신경망을 사용하는 머신러닝의 한 분야입니다.

IBM은 머신러닝을 학습 데이터의 패턴을 학습하여 새로운 데이터에 대해 예측 또는 추론을 수행하는 AI의 한 분야로 설명하고 있습니다.

출처: IBM Machine Learning

구분 핵심 개념 대표 데이터
AI 인간의 지적 능력을 컴퓨터로 구현 다양한 데이터
머신러닝 데이터의 패턴을 학습하여 예측 정형 데이터에 많이 활용
딥러닝 신경망을 이용해 복잡한 패턴 학습 이미지, 텍스트 등

2. Feature와 Label

머신러닝에서 가장 먼저 이해해야 할 개념이 Feature와 Label입니다.

  • Feature : 정답을 예측하기 위해 사용하는 입력 데이터
  • Label : 우리가 예측하려는 정답

예를 들어 붓꽃 데이터를 이용하여 품종을 예측한다고 생각해 보겠습니다.

데이터 역할
sepal length Feature
sepal width Feature
petal length Feature
petal width Feature
setosa / versicolor / virginica Label

쉽게 기억하면 Feature = 문제를 풀기 위해 주는 정보, Label = 맞혀야 하는 정답입니다.

3. 지도학습과 비지도학습

지도학습(Supervised Learning)

정답이 있는 데이터를 이용하여 학습하는 방법입니다. 즉, Feature와 함께 정답인 Label이 존재합니다.

대표적인 문제는 크게 회귀와 분류로 나눌 수 있습니다.

종류 결과 예시
회귀 숫자 집값, 매출, 온도 예측
분류 범주 합격/불합격, 스팸/정상, 품종

비지도학습(Unsupervised Learning)

정답 Label이 없는 데이터를 이용하여 데이터 사이의 패턴이나 유사성을 찾는 방법입니다. 대표적인 방법이 클러스터링(Clustering)입니다.

예를 들어 고객 데이터를 가지고 구매 성향이 비슷한 고객끼리 여러 그룹으로 나누는 경우가 있습니다.

참고: IBM Supervised Learning

4. 데이터 분할

수집한 데이터를 100% 학습에 사용하지 않고, 일부는 모델의 성능을 확인하기 위해 남겨둡니다. 수업에서는 일반적인 예로 학습 데이터 60~80%, 시험 데이터 20~40%를 소개했습니다.

구분 역할
Train 모델을 학습시키는 데이터
Test 학습한 모델의 성능을 확인하는 데이터

5. 데이터 전처리(Preprocessing)

머신러닝을 수행하기 전에 데이터를 모델이 사용할 수 있는 형태로 정리하는 과정입니다.

  • 결측치(누락 데이터) 처리
  • 중복 데이터 처리
  • 이상치 처리
  • 문자 데이터 변환
  • 데이터 크기 조정(Scaling)

즉, 좋은 모델을 만들기 전에 좋은 데이터를 만드는 과정이라고 생각하면 이해하기 쉽습니다.

6. Feature Engineering(특성 공학)

Feature Engineering은 기존 데이터를 가공하여 머신러닝 모델이 사용할 수 있는 더 적절한 Feature를 만드는 과정입니다. IBM에서도 Feature Engineering을 원본 데이터를 변환·선택·생성하여 머신러닝에 적합한 Feature를 만드는 과정으로 설명합니다.

출처: IBM Feature Engineering

실제 사용 예시: 파생 변수

예를 들어 광고비와 매출 데이터가 있다면 광고 효율을 나타내는 새로운 변수를 만들 수 있습니다.

광고비 = 100만원
매출 = 500만원

ROAS = 매출 ÷ 광고비 × 100

이처럼 기존 컬럼을 이용해 새로운 의미 있는 컬럼을 만드는 것이 Feature Engineering의 한 예입니다.

7. One-Hot Encoding

범주형 데이터를 여러 개의 0과 1 컬럼으로 변환하는 방법입니다. pandas의 get_dummies()는 범주형 변수의 서로 다른 값마다 0/1 형태의 새로운 변수를 생성합니다.

출처: pandas get_dummies 공식 문서

실제 사용 예시

다음과 같은 데이터가 있다고 가정합니다.

Channel
Google
Naver
Facebook

다음 명령어로 변환할 수 있습니다.

df = pd.get_dummies(data=df, dtype=int)

변환하면 다음과 같은 형태가 됩니다.

Channel_Google Channel_Naver Channel_Facebook
1 0 0
0 1 0
0 0 1

8. Label Encoding

문자 형태의 범주를 숫자로 바꾸는 방식입니다. 수업에서는 특히 yes/no처럼 두 개의 범주 또는 정답 Label처럼 비교적 적은 범주의 데이터를 숫자로 바꾸는 예를 다뤘습니다.

실제 사용 예시

df = df.replace({
    'yes': 1,
    'no': 0
})

즉, 문자열 yes → 1, no → 0으로 바꾸는 것입니다.

주의할 점
One-Hot Encoding과 Label Encoding은 목적이 다릅니다. 범주 사이에 순서가 없는 일반적인 범주형 Feature라면 One-Hot Encoding이 자주 사용됩니다.

9. Scaling이 필요한 이유

데이터의 컬럼마다 숫자의 크기가 크게 다를 수 있습니다.

Feature 예시 값
방문 횟수 15
구매 금액 5,500,000

두 데이터의 단위와 숫자 크기가 너무 다르기 때문에 모델에 따라 Feature의 스케일을 조정할 필요가 있습니다. 이 과정을 Scaling이라고 합니다.

10. 정규화(Normalization) — MinMaxScaler

수업에서는 정규화를 최소값을 0, 최대값을 1로 맞추는 방법으로 학습했습니다. scikit-learn의 MinMaxScaler는 각 Feature를 지정된 범위로 선형 변환하며 기본 범위는 0~1입니다.

출처: scikit-learn MinMaxScaler 공식 문서

기본 공식

(값 - 최소값) ÷ (최대값 - 최소값)

실제 사용 예시

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

data_norm = scaler.fit_transform(df)

예를 들어 데이터가 10, 20, 30이라면 정규화 후에는 0, 0.5, 1과 같은 형태가 됩니다.

11. 표준화(Standardization) — StandardScaler

표준화는 데이터를 평균 0, 표준편차 1을 기준으로 변환하는 방법입니다. scikit-learn의 StandardScaler는 평균을 제거하고 단위 분산이 되도록 Feature를 변환합니다.

출처: scikit-learn StandardScaler 공식 문서

기본 공식

(값 - 평균) ÷ 표준편차

실제 사용 예시

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

data_std = scaler.fit_transform(df)

12. 정규화와 표준화 비교

구분 정규화 표준화
대표 도구 MinMaxScaler() StandardScaler()
기준 최소값 / 최대값 평균 / 표준편차
대표 결과 0 ~ 1 평균 0, 표준편차 1
음수 기본 범위에서는 없음 발생 가능
암기 포인트
정규화 → MinMaxScaler → 0~1
표준화 → StandardScaler → 평균 0, 표준편차 1

13. 구간화(Binning) — pd.cut()

연속적인 숫자 데이터를 일정한 구간으로 나누어 범주 형태로 바꾸는 방법입니다. 수업에서는 연령 데이터를 어린이, 청소년, 청년, 중년, 노년 등으로 구간화하는 예를 학습했습니다.

실제 사용 예시

df['age_group'] = pd.cut(
    x=df['age'],
    bins=[0, 12, 19, 49, 70, 100],
    labels=['어린이', '청소년', '청년', '중년', '노년']
)

예를 들어 나이가 35세라면 지정한 구간에 따라 청년이라는 범주로 변환할 수 있습니다.

핵심 명령어: pd.cut()

14. DataFrame에서 원하는 행만 찾기 — query()

pandas의 query()는 조건에 맞는 DataFrame의 행을 선택할 때 사용할 수 있습니다. SQL의 WHERE 조건과 비슷한 역할로 이해하면 쉽습니다.

실제 사용 예시 ①

Channel이 Google인 데이터만 가져오려면:

df1 = df.query('Channel == "Google"')

실제 사용 예시 ② — AND

국어와 영어가 모두 70점 이상인 학생을 찾는다면:

df.query('(국어 >= 70) & (영어 >= 70)')

실제 사용 예시 ③ — OR

국어 또는 영어 중 하나라도 70점 이상인 경우:

df.query('(국어 >= 70) | (영어 >= 70)')

15. 오늘 배운 주요 명령어 정리

목적 명령어 기억할 내용
One-Hot Encoding pd.get_dummies() 범주별 0/1 컬럼 생성
문자 → 숫자 df.replace() yes/no 등을 1/0으로 변환
정규화 MinMaxScaler() 기본 범위 0~1
표준화 StandardScaler() 평균 0, 표준편차 1
구간화 pd.cut() 연속형 데이터를 구간으로 변환
조건 검색 df.query() 조건에 맞는 행 추출
AND & 두 조건 모두 만족
OR | 둘 중 하나 만족

16. 오늘 수업을 한 문장으로 정리하면

데이터를 수집한다 → 전처리한다 → Feature를 만든다 → 문자를 숫자로 변환한다 → 필요한 경우 Scaling한다 → 머신러닝 모델이 학습할 수 있는 데이터로 만든다.

17. 초보자가 꼭 기억할 9가지

  1. Feature = 예측에 사용하는 입력값
  2. Label = 예측해야 하는 정답
  3. 지도학습 = 정답이 있음
  4. 비지도학습 = 정답 없이 패턴을 찾음
  5. One-Hot Encoding = 범주별 새로운 0/1 컬럼 생성
  6. Label Encoding = 범주를 숫자로 변환
  7. MinMaxScaler = 데이터를 기본적으로 0~1 범위로 변환
  8. StandardScaler = 평균 0, 표준편차 1을 기준으로 변환
  9. pd.cut() = 숫자를 구간으로 나누고 df.query() = 조건에 맞는 행을 찾음
다음 학습에서 중요한 부분
오늘 배운 내용은 머신러닝 모델 자체보다 모델에 넣기 전 데이터를 준비하는 과정에 가깝습니다. 따라서 앞으로 모델을 학습할 때는 “이 데이터가 Feature인가? Label인가? 문자 데이터를 변환해야 하는가? 데이터 크기를 맞춰야 하는가?” 를 먼저 생각하면 좋습니다.

※ 본 글은 2026년 10월 6일 SKN 데이터분석 수업 자료를 바탕으로 학습 내용을 복습하기 위해 작성했습니다. 추가 정의와 명령어 설명은 pandas, scikit-learn 및 IBM의 공식·기술 자료를 참고하여 보완했습니다.

반응형