| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 다형성
- 11382번
- python
- 스택
- 깊은복사
- 제네릭프로그래밍
- 인프런
- 포인터
- OOP
- 백준
- 유도클래스
- 람다식
- STL
- 상속
- 주피터
- 점프투파이썬
- C++
- 얕은복사
- list comprehension
- 멤버함수로구현
- 프로그래머스lv2
- OpenCV
- 기본클래스
- 동적바인딩
- 코딩테스트
- 참조자
- c++코딩테스트합격자되기
- 연산자오버로딩
- 데이터사이언스
- 코드잇
- Today
- Total
WjExplor Story
1-8. 머신러닝 기본기(2)_2025.10.15 본문
머신러닝 기본기
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. 확률과 통계
기본 용어
- 사건: 하나하나의 경우의 수
- 표본 공간: 가능한 모든 결과
- 확률: 사건이 일어날 가능성 (0
1 사이 값, 백분율로는 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)$를 구한다면?
- B가 일어났다는 것은 이미 {4, 5, 6} 중 하나가 나왔다는 의미
- 이 중에서 짝수는 {4, 6} → 2개
- 따라서 $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)$ = "무료"가 포함된 메일이 스팸일 확률
알고 있는 정보:
- $P(A) = 0.3$ (전체 메일 중 30%가 스팸)
- $P(B|A) = 0.8$ (스팸 메일의 80%에 "무료"가 포함)
- $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)의 원리
- 현재 위치에서 미분값(기울기) 계산
- 기울기가 양수 → 왼쪽으로 이동
- 기울기가 음수 → 오른쪽으로 이동
- 반복하여 기울기가 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)$$
별칭: 겉미분 × 속미분
계산 방법
- $g(x)$를 $t$로 치환
- $y = f(t)$로 표현
- $\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)$ 를 미분하시오.
풀이:
- 바깥 함수: $f(u) = \sin(u)$
- 안쪽 함수: $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$ 를 미분하시오.
풀이:
- 바깥 함수: $f(u) = u^3$
- 안쪽 함수: $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)$가 될까?
기하학적 이해:
- $\sin(x)$는 단위원에서 y좌표 (높이)
- $\cos(x)$는 단위원에서 x좌표 (폭)
- $x$가 조금 증가할 때 $\sin(x)$의 변화율은 그 지점의 접선 기울기
- 이 접선 기울기가 정확히 $\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$ 값으로 결정 (음수는 감소 방향)
수학적 증명: 극한과 테일러 급수를 이용한 엄밀한 증명이 있지만, 실용적으로는 이 공식을 외워서 사용하면 됩니다!
💡 핵심 요약
- 벡터와 선형변환: 머신러닝은 벡터 연산을 기반으로 함
- 확률과 통계: 불확실성을 수학적으로 모델링, 결과 해석에 필수
- 미분과 최적화: 손실 함수의 최소점을 찾기 위해 미분(기울기) 활용
- 합성함수의 미분: 신경망처럼 함수가 중첩된 구조에서 역전파(backpropagation)의 기초
🎯 다음 학습 주제
- 지도 학습 알고리즘
- 데이터 전처리 기법
- 모델링 성능 향상 테크닉
- 캐글(Kaggle) 실습
'AI 엔지니어 부트캠프 > 파이썬 데이터 분석 기초와 머신 러닝 기초' 카테고리의 다른 글
| 위클리 페이퍼 진행_2025.10.27 (0) | 2025.10.27 |
|---|---|
| 위클리 페이퍼 진행_2025.10.20 (0) | 2025.10.20 |
| 1-8. 머신러닝 기본기_2025.10.14 (1) | 2025.10.14 |
| 위클리 페이퍼 진행_2025.10.13 (0) | 2025.10.13 |
| 펭귄 데이터셋 EDA_데이터분석.ipynb (0) | 2025.10.02 |