| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 참조자
- c++코딩테스트합격자되기
- 깊은복사
- 멤버함수로구현
- STL
- 기본클래스
- 포인터
- python
- 얕은복사
- 주피터
- 동적바인딩
- 연산자오버로딩
- list comprehension
- 점프투파이썬
- 제네릭프로그래밍
- OOP
- 스택
- OpenCV
- 코딩테스트
- 코드잇
- 데이터사이언스
- 유도클래스
- C++
- 프로그래머스lv2
- 11382번
- 인프런
- 다형성
- 람다식
- 상속
- 백준
- Today
- Total
WjExplor Story
1-8. 머신러닝 기본기_2025.10.14 본문
1-8: 머신러닝 기본기 학습 (수학 기반)
1. 머신러닝과 수학: 왜 필요할까?
- 결론부터: 당장 딥러닝 앱을 만드는 데 수학이 필수적인 것은 아니며, GPT와 같은 도구를 활용해 많은 부분을 해결할 수 있습니다. 수학 때문에 이 분야를 포기하는 것은 추천하지 않습니다.
- 하지만, 수학을 알면 훨씬 이득입니다:
- 딥러닝 이론의 이해도가 달라집니다. (e.g., 경사하강법)
- 논문을 읽고 새로운 기술을 습득할 때 깊이 있는 이해가 가능합니다.
- 모델의 작동 방식을 이해하고 문제 해결 능력을 키울 수 있습니다.
학습 Tip: 경사하강법과 같은 어려운 개념은 한 번에 이해하기 어려울 수 있습니다. 시간을 가지고 여러 자료(강의, 유튜브 등)를 반복해서 보는 것을 추천합니다.
2. AI, 머신러닝, 딥러닝의 관계
- AI (Artificial Intelligence, 인공지능): 가장 넓은 개념. 인간의 지능을 모방하는 모든 기술을 의미합니다. (e.g., 정해진 규칙대로 움직이는 계산기)
- 머신러닝 (Machine Learning, 기계학습): AI의 한 분야. 컴퓨터가 데이터로부터 스스로 규칙을 학습하는 기술입니다.
- 딥러닝 (Deep Learning): 머신러닝의 한 분야. 인간의 뇌 신경망(Neural Network) 구조를 모방하여, 여러 층(Layer)의 신경망을 깊게 쌓아 학습하는 방식입니다.
질문: 챗GPT는 머신러닝일까, 딥러닝일까?
답변: 챗GPT는 딥러닝 모델이며, 딥러닝은 머신러닝에 포함되므로 머신러닝이기도 합니다.
퍼셉트론(Perceptron): 인공 신경망의 시작
인간의 뇌 신경세포(뉴런)가 전기 신호를 주고받는 과정을 수학적으로 단순하게 모델링한 것입니다.
- 여러 입력값(
x1,x2, ...)을 받습니다. - 각 입력값에 고유한 가중치(weight,
w1,w2, ...)가 곱해집니다. (신호의 중요도를 조절) - 모든 가중치가 적용된 입력값들이 합쳐져 특정 임계값을 넘으면, 결과(e.g., 1)를 출력하고 넘지 않으면 다른 결과(e.g., 0)를 출력합니다.
- 이 가중치(
w)와 편향(b) 같은 값들을 파라미터(Parameter)라고 부르며, 딥러닝 모델의 크기를 가늠하는 척도가 됩니다. (e.g., GPT-4의 파라미터는 약 1조 개로 추정)
3. 머신러닝은 언제 사용할까?
주요 사용 분야
- 이미지 인식, 음성 인식, 자연어 처리, 금융 사기 탐지 등
- 공통점: "규칙 기반(Rule-based) 방식으로 해결하기 매우 복잡하고 예외 상황이 많은 문제"
예시: '개'와 '머핀' 이미지 구분
단순히 if 색상 == '갈색' 과 같은 규칙으로는 머핀처럼 생긴 강아지나, 강아지처럼 생긴 머핀을 구분하기 어렵습니다. 머신러닝은 수많은 '개'와 '머핀' 사진 데이터를 보고 스스로 구분하는 특징(규칙)을 학습합니다.
사용하지 말아야 할 경우
- 센서로 사람 유무를 감지하는 것처럼, 더 간단하고 효율적인 해결책이 있을 때
- 굳이 머신러닝을 쓰면 시스템이 무거워지고 비용이 증가하여 비효율적일 수 있습니다. (오히려 감점 요인!)
4. 머신러닝의 주요 장르
| 구분 | 지도 학습 (Supervised) | 비지도 학습 (Unsupervised) | 강화 학습 (Reinforcement) |
|---|---|---|---|
| 핵심 | 정답(Label)이 있는 데이터로 학습 | 정답이 없는 데이터로 학습 | 보상(Reward)을 통해 학습 |
| 데이터 예시 | (이미지, '개'), (메일 내용, '스팸') | 고객 구매 내역, 식물 특징 데이터 | 게임 환경, 로봇 시뮬레이션 |
| 목표 | 데이터(X)와 정답(Y)의 관계를 학습하여 예측 | 데이터 내의 숨겨진 구조나 패턴 발견 | 보상을 최대로 받는 최적의 행동 방식 학습 |
| 주요 기법 | 분류(Classification), 회귀(Regression) | 군집화(Clustering), 차원 축소 | Q-러닝, 정책 경사 |
| 대표 예시 | 스팸 메일 필터, 주택 가격 예측 | 고객 그룹 분류, 이상 탐지 | 알파고, 자율 주행 드론 |
4.1. 지도 학습: 분류 vs 회귀
지도 학습은 예측하려는 값의 종류에 따라 분류와 회귀로 나뉩니다.
| 특징 | 분류 (Classification) | 회귀 (Regression) |
|---|---|---|
| 예측 대상 | 이산적인 값 (카테고리) | 연속적인 값 (수치) |
| 예시 | 스팸/정상, 개/고양이/새, A/B/C 등급 | 주택 가격, 내일 강수량, 학생의 키 |
| 결과 | 각 클래스에 속할 확률을 계산 후, 가장 높은 확률의 클래스 선택 | 특정 수치를 직접 예측 |
| 손실 함수 | 크로스 엔트로피 (Cross-Entropy) | MSE, MAE |
| 평가 방식 | "정확히 맞혔는가?" (정확도, F1-score 등) | "정답에 얼마나 가깝게 예측했는가?" (오차 기반) |
분류 vs 회귀 구분 퀴즈 (해설 포함)
- Q. 가격 예측은?
- A. 회귀. 가격은 1000원, 1000.5원 등 연속적인 수치로 표현됩니다.
- Q. 내일 주식 가격이 '오를지/떨어질지' 예측은?
- A. 분류. '오름', '떨어짐' 이라는 2개의 정해진 카테고리 중 하나를 고르는 문제입니다.
- Q. 얼굴 사진으로 '나이'를 예측하는 것은?
- A. 회귀. 나이는 25세, 25.1세, 25.2세처럼 연속된 값으로 볼 수 있기 때문입니다. (물론, '10대', '20대' 등으로 구간을 나누면 분류 문제가 될 수도 있지만, 보통은 회귀가 더 적합합니다.)
- Q. ChatGPT 같은 언어 모델은?
- A. 분류. 다음 단어를 예측할 때, 수만 개의 단어(카테고리) 중에서 가장 적절한 단어 하나를 고르는 분류 문제를 반복적으로 푸는 것입니다. 예를 들어 '안녕' 다음에 '하'가 올 확률, '가'가 올 확률 등을 모두 계산하여 가장 확률 높은 것을 선택합니다.
- Q. 주식 가격이 '오를지/떨어질지/보합일지' 예측은?
- A. 분류. '오름', '떨어짐', '보합' 이라는 3개의 정해진 카테고리 중 하나를 고르는 문제입니다.
5. Scikit-Learn을 활용한 머신러닝 파이프라인
현업에서는 대부분 scikit-learn 라이브러리를 사용해 머신러닝 모델을 만듭니다.
머신러닝 파이프라인 5단계
1. 데이터 분할 (Train / Validation / Test)
모델을 객관적으로 평가하기 위해 데이터를 나눕니다.
- Train (훈련용, 약 60%): 모델 학습 (교과서)
- Validation (검증용, 약 20%): 모델 성능 중간 점검 및 최적화 (모의고사)
- Test (테스트용, 약 20%): 최종 모델의 성능을 딱 한 번 평가 (수능)
2. 데이터 전처리 (Preprocessing)
모델이 데이터를 잘 이해할 수 있도록 다듬는 과정입니다. (결측치 처리, 스케일링 등)
- 스케일링(Scaling)이 필요한 이유: 키(170cm), 몸무게(60kg), 코 높이(4cm)처럼 변수 간 단위 차이가 크면, 모델이 단위가 큰 변수(키, 몸무게)에만 과도하게 집중할 수 있습니다.
StandardScaler등을 사용해 모든 변수의 단위를 비슷한 범위로 맞춰주어 동등한 조건에서 학습하게 합니다.
3. 모델 선택 및 하이퍼파라미터 탐색
- 모델 선택: 풀려는 문제(분류/회귀)에 맞는 모델을 선택합니다. (e.g.,
Ridge) - 하이퍼파라미터(Hyperparameter): 모델의 성능을 조절하기 위해 사람이 직접 설정하는 값입니다. (e.g., 학습 속도, 규제 강도
alpha) - 파라미터(Parameter): 모델이 학습 과정에서 스스로 업데이트하는 값입니다. (e.g., 가중치
w, 편향b) GridSearchCV: 우리가 지정한 하이퍼파라미터 후보들을 모두 시험해보고, 최적의 조합을 자동으로 찾아주는 도구입니다.
4. 모델 평가
최적화된 모델이 얼마나 좋은 성능을 내는지 검증/테스트 데이터로 점수를 확인합니다. (e.g., RMSE, R²)
5. 모델 저장 및 활용
학습이 끝난 모델과 전처리 도구(스케일러)를 파일(.pkl)로 저장해두면, 나중에 재학습 없이 바로 불러와 예측에 사용할 수 있습니다.
6. 머신러닝을 위한 핵심 선형대수
6.1. 데이터의 표현: 스칼라, 벡터, 행렬, 텐서
- 스칼라 (Scalar): 단일 숫자 (0차원). 예:
3.14 - 벡터 (Vector): 숫자의 1차원 배열. 예:
[1, 2, 3] - 행렬 (Matrix): 숫자의 2차원 배열 (직사각형). 예:
[[1, 2], [3, 4]] - 텐서 (Tensor): 3차원 이상의 다차원 배열. 딥러닝에서 데이터를 다루는 기본 단위입니다. (e.g., 흑백 이미지 100장:
(100, 28, 28))
혼동 주의: 배열의 차원(ndim) vs 벡터 공간의 차원
- 배열의 차원 (프로그래밍): 데이터를 감싸는 괄호의 개수.
np.array([1, 2, 3])는 1차원 배열(ndim=1).- 벡터 공간의 차원 (수학): 벡터를 표현하는 데 필요한 좌표축의 개수.
[1, 2, 3]은 3개의 좌표(x, y, z)를 가지므로 3차원 공간 ) 의 벡터입니다.
👉 결론:np.array([1, 2, 3])는 1차원 배열이지만, 3차원 공간의 벡터를 나타냅니다. 머신러닝에서는 주로 프로그래밍 관점의 '배열 차원'을 이야기합니다.
6.2. 행렬 곱 (Matrix Multiplication)
두 행렬 A와 B를 곱해 새로운 행렬 C를 만드는 연산입니다. C의 i행 j열 원소는 A의 i번째 행벡터와 B의 j번째 열벡터의 내적(Dot Product)으로 계산됩니다.
예시:

7. 벡터의 거리와 유사도
컴퓨터는 이미지, 텍스트 등의 데이터를 숫자로 이루어진 벡터로 변환하여 처리합니다. 따라서 두 벡터의 관계(거리, 유사도)를 계산하는 것은 "두 데이터가 얼마나 가깝거나 다른지"를 파악하는 핵심적인 방법입니다.
7.1. 유클리드 거리 (Euclidean Distance)
- 정의: 두 점 사이의 가장 짧은 직선거리. 피타고라스 정리를 다차원으로 확장한 것입니다.
- 수식:

강의 내용 수정 및 보충
"길이의 차를 더해서 루트 씌우면 된다" -> 부정확한 표현입니다.
정확한 설명: 각 차원(원소)별로 값의 차이를 제곱하고, 그 값들을 모두 더한 뒤, 마지막에 제곱근(루트)을 씌우는 것입니다.
"유클리드는 방향 정보를 가지고 있다" -> 잘못된 설명입니다.
정확한 설명: 유클리드 거리는 두 벡터(점)가 얼마나 멀리 떨어져 있는지를 나타내는 스칼라 값(거리의 크기)입니다. 여기에는 방향 정보가 포함되지 않습니다. 두 벡터가 정반대 방향을 가리키더라도, 원점에서의 거리가 같다면 두 벡터 사이의 유클리드 거리는 특정 값으로 계산될 뿐입니다.
7.2. 내적 (Dot Product)과 코사인 유사도 (Cosine Similarity)
- 내적: 두 벡터의 각 원소를 곱한 뒤 모두 더한 값. 결과가 크면 "두 벡터의 방향이 비슷할 경향이 있다"고 해석할 수 있습니다.
- 내적의 한계: 벡터의 크기(magnitude)에 영향을 받습니다. 방향이 같아도 벡터의 길이가 길면 내적 값은 무한정 커질 수 있어, 순수한 방향의 유사도를 비교하기 어렵습니다.
- 코사인 유사도: 이 한계를 극복하기 위해, 각 벡터의 크기를 1로 정규화(normalize)한 뒤 내적을 계산하는 방법입니다. 즉, 벡터의 크기 영향을 제거하고 오직 방향의 유사성만을 측정합니다.
- 결과 해석:
- +1: 두 벡터가 완전히 같은 방향. (가장 유사)
- 0: 두 벡터가 직각을 이룸. (관련성 없음)
- -1: 두 벡터가 완전히 반대 방향. (가장 비유사)

궁금증
Q. 차원이 똑같아야 비교할 수 있나요? 1차원과 3차원은 비교할 수 없나요?
A. 네, 비교할 수 없습니다. 반드시 차원이 같아야 합니다.
이유: 유클리드 거리, 코사인 유사도 같은 계산은 모두 두 벡터의 같은 인덱스(차원)에 있는 원소끼리 연산을 수행합니다. (p1과 q1, p2와 q2처럼) 만약 두 벡터의 차원(길이)이 다르면, 짝을 지어 계산할 원소가 없으므로 거나 유사도를 정의할 수 없습니다.
예시: '사랑'이라는 단어를 [0.8, 0.2, 0.5] (3차원) 벡터로 표현했다면, 유사도를 비교할 '우정'이라는 단어도 반드시 [0.7, 0.3, 0.6]처럼 똑같은 3차원 벡터로 표현되어야 합니다.
'AI 엔지니어 부트캠프 > 파이썬 데이터 분석 기초와 머신 러닝 기초' 카테고리의 다른 글
| 위클리 페이퍼 진행_2025.10.20 (0) | 2025.10.20 |
|---|---|
| 1-8. 머신러닝 기본기(2)_2025.10.15 (0) | 2025.10.15 |
| 위클리 페이퍼 진행_2025.10.13 (0) | 2025.10.13 |
| 펭귄 데이터셋 EDA_데이터분석.ipynb (0) | 2025.10.02 |
| DataFrame 마스터하기 (0) | 2025.10.01 |