WjExplor Story

1-8. 머신러닝 기본기(2)_2025.10.15 본문

AI 엔지니어 부트캠프/파이썬 데이터 분석 기초와 머신 러닝 기초

1-8. 머신러닝 기본기(2)_2025.10.15

더블유제이플로어 2025. 10. 15. 09:55

머신러닝 기본기

1. 벡터와 코사인 유사도

코사인 유사도(Cosine Similarity)

벡터 2개의 방향이 비슷한지를 측정하는 방법입니다. 벡터의 크기를 정규화하여 방향만 비교하면, 내적 값이 크게 나옵니다.

활용 예시:

  • 텍스트나 오디오 간 유사도 비교
  • 예: "왕"과 "여왕" 텍스트의 유사성 측정
  • 데이터를 벡터로 변환 후 코사인 유사도 계산

기하학적 해석

  • 유클리드 거리(Euclidean Distance): 두 점 사이의 실제 거리
  • 코사인 유사도(Cosine Similarity): 두 벡터가 이루는 각도(방향의 유사성)

→ 벡터의 길이와 방향을 이용해 데이터 간 관계를 측정합니다.


2. 선형변환(Linear Transformation)

벡터가 놓인 공간을 확대·축소·회전·투영시키는 행위를 선형변환이라고 합니다.

예시

$$A = \begin{bmatrix} 2 & 0 \ 0 & 3 \end{bmatrix}, \quad x = \begin{bmatrix} 1 \ 1 \end{bmatrix}$$

$$y = A x = \begin{bmatrix} 2 \ 3 \end{bmatrix}$$

→ $x$ 벡터가 x축 방향으로 2배, y축 방향으로 3배 늘어납니다.

머신러닝과의 관계:

  • 입력 데이터를 벡터/행렬 형태로 변환
  • 행렬 곱셈을 통해 출력 계산
  • 선형변환이 머신러닝의 계산 방식과 유사

3. 확률과 통계

기본 용어

  • 사건: 하나하나의 경우의 수
  • 표본 공간: 가능한 모든 결과
  • 확률: 사건이 일어날 가능성 (01 사이 값, 백분율로는 0100%)

예시: 주사위를 던졌을 때 3이 나올 확률 = 1/6

큰 수의 법칙

이론적 확률과 실제 실험 결과는 처음에는 다를 수 있지만, 시행 횟수가 많아질수록 실제 확률에 수렴합니다.

예시:

  • 동전 10번: 앞 7, 뒤 3 (이론과 차이)
  • 동전 10,000번: 앞 약 5,000, 뒤 약 5,000 (이론에 수렴)

Python 시뮬레이션 코드

import numpy as np
import pandas as pd

# 동전 10,000번 던지기 시뮬레이션
trials = np.random.choice(["앞", "뒤"], size=10000, p=[0.5, 0.5])
print(pd.value_counts(trials))

4. 확률변수

정의

확률변수(Random Variable): 확률실험의 결과를 실수로 대응시키는 함수

이산확률변수 (Discrete Random Variable)

  • 유한개 또는 셀 수 있는 무한개의 값
  • 자료형: 정수형(int)
  • 예시: 주사위 눈금 $X \in {1,2,3,4,5,6}$, 동전 앞/뒤 $Y \in {0,1}$

연속확률변수 (Continuous Random Variable)

  • 연속 구간의 값 (실수 전체 또는 일부)
  • 자료형: 실수형(float)
  • 예시: 사람의 키 $Z \in [140, 200]$ cm

중요한 차이점:

  • 이산: "주사위가 3이 나올 확률"처럼 특정 값의 확률 계산 가능
  • 연속: "키가 정확히 160.00000cm일 확률"은 0에 가까움 → 구간 확률로 계산 (예: 160~161cm일 확률)

5. 확률분포와 기대값

확률분포

확률변수가 각 값에 대해 나타날 가능성을 설명하는 규칙

  • 예시: 베르누이분포(동전), 이항분포(반복된 동전 던지기), 정규분포(자연 현상)

기대값 (Expected Value)

확률변수가 장기적으로 가질 값의 "중심"

이산형 예시: 주사위 $X$의 기대값
$$E[X] = \sum_{k=1}^6 k \cdot \frac{1}{6} = 3.5$$

직관적 설명: 주사위를 던져 나온 값으로 내기를 한다면, 평균적으로 3.5에 가까운 값이 나올 것으로 예상

연속형 예시: $X \sim U(0,1)$ (0~1 균등분포)
$$E[X] = \int_0^1 x , dx = 0.5$$

분산 (Variance)

기대값을 중심으로 한 값들의 퍼짐 정도

직관: 정규분포 그래프에서 종 모양의 폭이 좁아지면 분산이 작아집니다 (데이터가 중심에 모임)

Python 코드: 정규분포 생성 및 시각화

import numpy as np
import matplotlib.pyplot as plt

# 정규분포 난수 생성
# loc: 평균(mean), scale: 표준편차(standard deviation)
data = np.random.normal(loc=0, scale=1, size=1000)

print("평균:", np.mean(data))
print("분산:", np.var(data))

# 히스토그램 시각화
plt.hist(data, bins=30, density=True, alpha=0.6, color="b", edgecolor="black")
plt.grid(alpha=0.3)
plt.show()

6. 조건부 확률과 베이즈 정리

조건부 확률

정의: 사건 B가 일어났다는 전제하에 A가 일어날 확률

$$P(A|B) = \frac{P(A \cap B)}{P(B)}$$

읽는 법: $P(A|B)$ → "B가 주어졌을 때 A의 확률"

🔍 조건부 확률 이해하기

직관적 설명:
전체 표본공간에서 생각하지 않고, 사건 B가 일어난 상황으로 표본공간을 축소합니다.

예시: 주사위 던지기

  • A: 짝수가 나오는 사건 = {2, 4, 6}
  • B: 4 이상이 나오는 사건 = {4, 5, 6}

$P(A|B)$를 구한다면?

  1. B가 일어났다는 것은 이미 {4, 5, 6} 중 하나가 나왔다는 의미
  2. 이 중에서 짝수는 {4, 6} → 2개
  3. 따라서 $P(A|B) = \frac{2}{3}$

공식으로 확인:

  • $P(A \cap B)$ = A와 B 모두 만족 = {4, 6} → $\frac{2}{6} = \frac{1}{3}$
  • $P(B)$ = {4, 5, 6} → $\frac{3}{6} = \frac{1}{2}$
  • $P(A|B) = \frac{1/3}{1/2} = \frac{2}{3}$ ✓

핵심: B라는 "조건"으로 관점을 좁힌 후, 그 안에서 A가 차지하는 비율을 계산


베이즈 정리

정의: 새로운 정보(증거)가 주어졌을 때 확률을 갱신하는 공식

$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

🔍 베이즈 정리 이해하기

직관적 설명:
"원인 → 결과" 방향의 확률을 알 때, "결과 → 원인" 방향의 확률을 구하는 방법

용어 정리:

  • $P(A)$: 사전확률(Prior) - 증거를 보기 전 A의 확률
  • $P(B|A)$: 가능도(Likelihood) - A가 참일 때 B가 관측될 확률
  • $P(B)$: 증거(Evidence) - B가 관측될 전체 확률
  • $P(A|B)$: 사후확률(Posterior) - B를 관측한 후 A의 확률

예시: 스팸메일 필터

  • A: 메일이 스팸이다
  • B: 메일에 "무료"라는 단어가 있다

알고 싶은 것: $P(A|B)$ = "무료"가 포함된 메일이 스팸일 확률

알고 있는 정보:

  1. $P(A) = 0.3$ (전체 메일 중 30%가 스팸)
  2. $P(B|A) = 0.8$ (스팸 메일의 80%에 "무료"가 포함)
  3. $P(B) = 0.4$ (전체 메일의 40%에 "무료"가 포함)

계산:
$$P(A|B) = \frac{0.8 \times 0.3}{0.4} = \frac{0.24}{0.4} = 0.6$$

→ "무료"가 포함된 메일이 스팸일 확률은 60%

핵심:

  • 처음에는 메일이 스팸일 확률을 30%로 추정 (사전확률)
  • "무료"라는 단어를 관측 (증거)
  • 이 정보를 반영하여 60%로 갱신 (사후확률)

머신러닝 응용:

  • 나이브 베이즈 분류기: 여러 단어의 출현을 조건으로 스팸 판별
  • 의료진단: 증상을 관측하여 질병 확률 갱신

머신러닝에서 확률·통계의 역할

  • 데이터의 불확실성을 수학적으로 모델링
  • 예측 결과에 신뢰도(probability) 부여
  • 확률 분포 기반 알고리즘:
    • 나이브 베이즈 분류기
    • 가우시안 혼합 모델(GMM)
    • Hidden Markov Model(HMM)

✅ 확률·통계 체크포인트

  • 확률은 사건이 일어날 가능성을 나타내며, 0~1 사이 값 (0% ~ 100%)
  • 확률변수는 이산형과 연속형으로 구분
  • 기대값과 분산은 데이터의 중심과 퍼짐을 나타냄
  • 조건부 확률과 베이즈 정리는 스팸 필터, 분류 문제 등에서 핵심
  • 머신러닝의 많은 모델은 확률적 사고를 기반으로 함

7. 미적분학 기초

머신러닝과 최적화

머신러닝은 최적화(Optimization) 문제와 깊은 관련이 있습니다.
최적화를 이해하기 위해서는 함수, 미분, 적분 개념이 필요합니다.

함수와 그래프

  • 함수: 입력 x → 출력 y
  • 머신러닝의 모델은 대부분 함수 형태로 표현됨
  • 입력(input)을 받아 출력(output)을 내보냄

8. 미분의 개념과 활용

미분이란?

미분: 순간 변화율, 즉 특정 지점에서의 기울기

머신러닝에서 미분의 역할

손실 함수(Loss Function)

오차를 나타내는 함수 (보통 2차 함수 형태)

특징:

  • 오차가 큰 구간: 기울기가 가파름
  • 오차가 작은 구간: 기울기가 0에 가까움 (그래프의 최저점)

경사하강법(Gradient Descent)의 원리

  1. 현재 위치에서 미분값(기울기) 계산
  2. 기울기가 양수 → 왼쪽으로 이동
  3. 기울기가 음수 → 오른쪽으로 이동
  4. 반복하여 기울기가 0인 지점(최소점)으로 수렴

미분의 두 가지 의미:

  • 미분 전 값 $f(x)$: 현재 손실의 크기 → "지금 모델이 얼마나 틀렸는가"
  • 미분 후 값 $f'(x)$: 기울기(gradient) → "어느 방향으로, 얼마나 이동해야 손실이 줄어드는가"

극소점과 최적화

  • 극소점/극대점: 미분값이 0인 지점
  • 머신러닝의 학습: 결국 극소점(손실 최소점)을 찾아가는 과정 ⭐

9. 합성함수의 미분 (Chain Rule)

합성함수란?

함수 안에 또 다른 함수가 들어있는 형태

$$y = f(g(x))$$

머신러닝에서의 예:

  • 신경망: 입력 → 가중치 곱 → 활성화 함수 → 손실함수
  • 함수가 여러 단계로 겹쳐진 구조

연쇄법칙 (Chain Rule)

합성함수의 미분 = 바깥 함수의 미분 × 안쪽 함수의 미분

$$\frac{dy}{dx} = f'(g(x)) \cdot g'(x)$$

별칭: 겉미분 × 속미분

계산 방법

  1. $g(x)$를 $t$로 치환
  2. $y = f(t)$로 표현
  3. $\frac{dy}{dx} = \frac{dy}{dt} \cdot \frac{dt}{dx} = f'(t) \cdot g'(x) = f'(g(x)) \cdot g'(x)$

예시 1: 단일 합성함수

문제: $y = \sin(3x)$ 를 미분하시오.

풀이:

  1. 바깥 함수: $f(u) = \sin(u)$
  2. 안쪽 함수: $g(x) = 3x$

미분:
$$\frac{dy}{dx} = f'(g(x)) \cdot g'(x) = \cos(3x) \cdot 3 = 3\cos(3x)$$

👉 바깥 함수의 미분(cos) × 안쪽 함수의 미분(3)


예시 2: 복합적인 합성함수

문제: $y = (2x + 1)^3$ 를 미분하시오.

풀이:

  1. 바깥 함수: $f(u) = u^3$
  2. 안쪽 함수: $g(x) = 2x + 1$

미분:

  • 바깥 함수 미분: $f'(u) = 3u^2$
  • 안쪽 함수 미분: $g'(x) = 2$

$$\frac{dy}{dx} = 3(2x+1)^2 \cdot 2 = 6(2x+1)^2$$


📚 삼각함수 미분 공식

함수 도함수
$\sin(x)$ $\cos(x)$
$\cos(x)$ $-\sin(x)$
$\tan(x)$ $\sec^2(x) = \frac{1}{\cos^2(x)}$

🔍 삼각함수 미분의 직관적 이해

왜 $\sin(x)$를 미분하면 $\cos(x)$가 될까?

기하학적 이해:

  1. $\sin(x)$는 단위원에서 y좌표 (높이)
  2. $\cos(x)$는 단위원에서 x좌표 (폭)
  3. $x$가 조금 증가할 때 $\sin(x)$의 변화율은 그 지점의 접선 기울기
  4. 이 접선 기울기가 정확히 $\cos(x)$ 값과 일치

그래프로 확인:

  • $x = 0$일 때: $\sin(0) = 0$이고, 이 지점의 기울기는 1 → $\cos(0) = 1$ ✓
  • $x = \frac{\pi}{2}$일 때: $\sin(\frac{\pi}{2}) = 1$ (최댓값), 기울기는 0 → $\cos(\frac{\pi}{2}) = 0$ ✓
  • $x = \pi$일 때: $\sin(\pi) = 0$이고, 기울기는 -1 → $\cos(\pi) = -1$ ✓

직관:

  • $\sin$ 함수가 증가하는 속도는 $\cos$ 값으로 결정
  • $\cos$ 함수가 증가하는 속도는 $-\sin$ 값으로 결정 (음수는 감소 방향)

수학적 증명: 극한과 테일러 급수를 이용한 엄밀한 증명이 있지만, 실용적으로는 이 공식을 외워서 사용하면 됩니다!


💡 핵심 요약

  1. 벡터와 선형변환: 머신러닝은 벡터 연산을 기반으로 함
  2. 확률과 통계: 불확실성을 수학적으로 모델링, 결과 해석에 필수
  3. 미분과 최적화: 손실 함수의 최소점을 찾기 위해 미분(기울기) 활용
  4. 합성함수의 미분: 신경망처럼 함수가 중첩된 구조에서 역전파(backpropagation)의 기초

🎯 다음 학습 주제

  • 지도 학습 알고리즘
  • 데이터 전처리 기법
  • 모델링 성능 향상 테크닉
  • 캐글(Kaggle) 실습