본문으로 바로가기
머신러닝 입문
LinkedInGitHub
WORKSPACE

EXPLORER

157 POSTS
BLOG
면접질문
해야하는 거
AI 시대, 개발자는 사라지는가?
Python Counter, 빈도수를 쉽게 세는 방법
정렬
1. 투 포인터
DFS와 BFS
알고리즘 논리
코딩 테스트 핵심 알고리즘 정리파이썬 딕셔너리와 코딩 테스트 활용
예시로 살펴보는 AXAX 프로젝트, 문제 정의부터 확산까지AX 시대의 가치 정의와 현장 리딩
MSA
1. Singleton PatternSOLID
Kafka의 핵심 설계 원리Kafka 메시징 시스템의 구성과 동작 방식Kafka 기본 개념과 EC2 Docker 구성
쿠버네티스 입문
Modular Monolith1. MonolithMSA, 서비스 분리와 운영의 원리
Socket이란 무엇인가
네크워크 참조 모델
전체 데이터 구조REST API의 개념과 설계 원칙2. Field/ Parameter / Argument/ this
Actuator 란?EntityManagerJPA 연관관계 매핑JPA 트랜잭션(Transaction)입력값 검증Java의 AOP(Aspect Oriented Programming)Async : AsynchronousBeanJPA(Java Persistence API)Proxy 패턴Spring MVCdocker container1. Spirng 필요컴포넌트 스캔
Spring 컨테이너
application.yamlLombok
이번 강의는 무엇을 노리고 있을까?Spring AI를 배우기 전에 정리할 것23
1. 기술 스택
개발 문서를 읽기 위한 핵심 기술 용어
Docker를 이해하기 위한 운영체제 기초
sigterm
6. 설정과 저장소, 앱을 운영할 수 있는 상태로 만들기5. Service와 Ingress, 요청은 어디로 흐를까4. 직접 실험하는 Kubernetes, Pod 복구부터 롤백까지3. kubectl과 Pod, 상태에서 원인을 찾는 법2. 클러스터는 명령을 어떻게 Pod로 바꿀까1. 쿠버네티스, 원하는 상태와 컨테이너 이미지Calico쿠버네티스 입문, 원하는 상태를 유지하는 시스템
Psql JSONB, 행 잠금, 멱등성Psql 함수,프로시져,트리거
머신러닝 입문딥러닝 학습 기본 개념데이터 시각화기초 통계와 ML 파이프라인 연결분석 자동화와 파이프라인 설계
CNN 아키텍처 발전 과정이미지 세그멘테이션 모델과 핵심 개념객체 탐지 모델과 핵심 개념
딥러닝 데이터셋 엔지니어링
딥러닝 학습 문제 진단과 디버깅
도메인 적응 방법현대 LLM 워크플로의 패턴
Transformer에서 LoRA 적용 대상 정하기LoRA (Low-Rank Adaptation)
LLM 양자화와 QLoRA
분산 학습과 MLOps딥러닝 모델 경량화와 추론 최적화딥러닝 기본 학습 테크닉딥러닝 중급 학습 테크닉
Mixture of Experts(MoE) 핵심 개념멀티모달 파운데이션 모델 핵심 개념State Space Model과 MambaTransformer와 Vision Transformer
Latent Space
1Chunking?
DevOps 기초 1편
실습에서는?Agile 개요, 왜 필요한가?
CI/CD 기초 4편: 배포 전략과 운영CI/CD 기초 3편: Jenkins와 Argo CD를 이용한 GitOps 배포CI/CD 기초 2편: Docker 이미지와 배포 파이프라인CI/CD 기초 1편: 개념과 GitHub Actions
OCI: 컨테이너 이미지와 런타임의 공통 표준Docker 기초 13편: Compose Healthcheck와 실전 구성Docker 기초 12편: Compose 네트워크와 VolumeDocker 기초 11편: Compose 명령어와 환경 변수Docker 기초 10편: Compose 기본 구조와 이미지 빌드Docker 기초 9편: Docker 및 Kubernetes 네트워크Docker 기초 8편: 컨테이너 런타임과 격리Docker 기초 7편: 이미지 Layer와 tar 내부 구조Docker 기초 6편: 이미지 Layer와 빌드 최적화Docker 기초 5편: 컨테이너 기본 명령어와 VolumeDocker 기초 4편: 가상화와 컨테이너 이미지 생명주기Docker 기초 3편: CI/CD 연결과 배포 원칙Docker 기초 2편: Layer, Registry, Volume과 NetworkDocker 기초 1편: Dockerfile, Image와 Container
NginxNginx 로드 밸런싱과 HTTPSNginx 리버스 프록시와 Spring Boot 연결Nginx 기초와 동작 구조
05. Pinia 상태 관리: store 설계와 사용법04. Vue 컴포넌트 설계: props, emit, slot과 생명주기03. Vue Composition API 정리02. Vue 기초 문법 점검: JavaScript, 템플릿01. Vue.js 입문: 핵심 구조와 렌더링
Java 심화 Part 3: 함수형 프로그래밍과 LambdaJava 심화 Part 2: AnnotationJava 심화 Part 1: Reflection
Java 기초 Part 5: Stream APIJava 기초 Part 4: 제네릭Java 기초 Part 3: 제어문Java 기초 Part 2: 주석과 JavadocJava 기초 Part 1: 백엔드 배경과 Java 실행 구조
Java 디버깅 Part 1: 자주 헷갈리는 핵심 개념Java 디버깅 Part 2: VS Code 자동 컴파일과 프로젝트 구조
Java 실행과 JVM Part 3: ClassLoader와 JVM 메모리Java 실행과 JVM Part 2: 메모리와 데이터 흐름Java 실행과 JVM Part 1: Java와 Python 컴파일 비교
Java 객체지향 Part 5: static 메서드와 중첩 클래스Java 객체지향 Part 4: 상속과 인터페이스Java 객체지향 Part 3: 좋은 설계와 OOP 4대 특성Java 객체지향 Part 2: OOP 핵심 문법Java 객체지향 Part 1: 클래스, 객체, 필드와 생성자
Spring 기초 Part 11: Actuator와 애플리케이션 모니터링Spring 기초 Part 10: 비동기 처리와 @AsyncSpring 기초 Part 9: JPA 트랜잭션과 동시성 제어Spring 기초 Part 8: AOP와 공통 관심사 분리Spring 기초 Part 7: Proxy 패턴과 Spring ProxySpring 기초 Part 6: JPA 연관관계 매핑Spring 기초 Part 5: EntityManager와 영속성 컨텍스트Spring 기초 Part 4: JPA, Entity와 RepositorySpring 기초 Part 3: REST API 요청값과 입력값 검증Spring 기초 Part 2: Spring MVC 요청 처리 흐름Spring 기초 Part 1: IoC, Bean, DI와 주요 Annotation
DNS = Domain Name System
Spring Boot, WebSocket, Vue, Docker 로 Raspberry Pi 실시간 모니터링 프로젝트 만들기 - 1편1. Spring Boot 구현
1. GitHub Project 만들기
Python 코드 품질: 디버깅부터 테스트와 자동화까지Python 01. 실행 구조와 실무 기초
sLLM 핵심 기술과 전체 구조제한된 자원에서 sLLM 구축하기
시대 단상에 대한 주저리주저리
WORKSPACE

SEARCH

제목, 카테고리와 태그로 검색하세요.

VERSION CONTROL

SOURCE CONTROL

masterGitHub Pages
저장소 열기
BUILD STATUS

RUN AND DEBUG

게시물은 GitHub Actions에서 검증하고 정적 페이지로 빌드합니다.

Actions 열기
WORKSPACE

MANAGE

홈 열기전체 게시물태그 보기블로그 소개
머신러닝 입문●
workspace>posts>deep learning>basic>ml-introduction.md
Deep Learning / Basic2026.09.011 min read6 tags

머신러닝 입문

머신러닝의 기본 개념과 데이터 분할, 학습 유형, Tree 기반 모델, SVM, Regularization을 정리한다.

QUICK SUMMARY

핵심 요약

머신러닝 문제 정의부터 주요 알고리즘을 선택하는 기준까지 입문 개념을 정리한다.

1. 입문

Artificial Intelligence
  → Machine Learning
    → Deep Learning

AI는 인간의 지능적인 행동을 컴퓨터로 구현한다는 큰 목표다.

ML은 사람이 모든 규칙을 직접 작성하지 않고 데이터에서 규칙을 학습하게 하는 방법이다.

DL은 Neural Network를 깊게 쌓아서 복잡한 패턴을 학습하는 ML 방법이다.

규칙을 사람이 만드는 것이 아니라 데이터로부터 규칙을 찾아내는 것

사람과 같은 AI를 만들기 위해서는, 사람과 같은 학습과정을 거쳐야 하는 것일까?

2. 정확히 무엇을 학습하는 것일까?

Task        T: 무엇을 해야 하는가?
Experience  E: 무엇을 보고 배우는가?
Performance P: 얼마나 잘하는가?

그렇다면,

Experience가 쌓이면서
  ↓
Performance가 좋아진다면
  ↓
Learning이 발생했다.

예를 들어 스팸 메일 분류라면 다음과 같다.

T = 이메일을 Spam / Normal로 분류
E = 과거 이메일 100,000개
P = Accuracy, F1 Score

처음에는 Accuracy가 70%였는데 데이터를 이용해 학습한 뒤 95%가 되었다면,

70% → 95%

즉, Experience를 이용해서 Task 수행 능력이 향상된 것이다. 이게 머신러닝에서 말하는 Learning이다.

3. 통계와 Machine Learning의 관점 차이

Statistics
  사람
    ↓
  가설 설정
    ↓
  데이터
    ↓
  가설 검증

가설을 사람이 세우고 통계적 방법론을 이용해서 가설을 검증한다.

Human Driven Approach

반대로 Machine Learning에서는 다음과 같이 접근한다.

Machine Learning
  데이터
    ↓
  패턴 탐색
    ↓
  관계 발견
    ↓
  예측

"반드시 소득이 중요할 것이다."

사람이 중요할 변수를 미리 결정하지 않고 데이터를 넣어놓는다.

나이
소득
직업
지역
검색 기록
구매 기록
...

이 중 무엇이 중요한지 모델이 찾아간다.

그래서 Data Driven Approach라고 표현한다. 중요한 것은 Statistics와 Machine Learning의 우열이 아니라 문제를 바라보는 관점의 차이다.

4. 머신러닝 문제는 일단 Classification과 Regression부터 구분

내가 예측하려는 Y가 무엇인가?

이게 가장 중요한 목표다.

교재에서는 이를 Classification과 Regression으로 구분한다.

Classification

정답이 Class다.

대출 승인 / 거절
정상 / 불량
고양이 / 개
포트홀 / 정상 도로

즉,

[ Y=\text{discrete value} ]

모델이 찾는 것은 Decision Boundary

         ● ● ●

------------- Decision Boundary

  ▲ ▲ ▲

Regression

아파트 가격 = 8.4억
내일 온도 = 27.3℃
배송 시간 = 32.5분
매출 = 123억

[ Y=\text{continuous value} ]

Best Fit

Y
│         ●
│      ●
│    ●
│  ●
│●
└──────── X
     /
    /
 Best Fit

따라서 가장 먼저 묻는 습관을 들이자

내가 예측하려는 (Y)가 Class인가? Number인가?

5. 머신러닝의 실제 학습 구조

전체 Dataset
     │
     ├── Train
     │
     ├── Validation
     │
     └── Test

각각의 역할이 좀 다르다.

Train

모델이 공부하는 문제집

모델의 Parameter를 학습한다.

Validation

모의고사

모델 구조와 Hyperparameter를 선택한다.

Decision Tree depth = 5?
Decision Tree depth = 10?
Decision Tree depth = 20?

Validation 성능을 보고 결정한다.

Test

수능

최종 모델의 성능을 평가한다.

Train
  ↓
Model training
  ↓
Validation
  ↓
Hyperparameter tuning
  ↓
최종 Model
  ↓
Test

Test 데이터로 튜닝하면 안 된다. Test까지 보고 계속 모델을 고쳐버리면 Test 데이터도 사실상 학습에 사용한 것이 된다.

6. 왜 이렇게 귀찮게 데이터를 나누는가?

바로 Overfitting 때문이다.

Overfitting은 Training Dataset을 너무 잘 외워버리는 현상이다.

예를 들어

모의고사 문제
  100문제 암기

모의고사 → 100점

수능
  새로운 문제 등장

→ 50점

ML도 같다.

Train Accuracy = 99%
Validation Accuracy = 75%
Test Accuracy = 72%

이러면 학습이 쓸모 없지 않은가?

새로운 데이터에서도 성능 유지

하는 것이 목표다.

7. 머신러닝의 세 가지 Learning Type

Machine Learning
  ├── Supervised Learning
  ├── Semi-Supervised Learning
  └── Unsupervised Learning

Supervised Learning

(X)와 (Y)가 모두 존재한다.

이미지Label
이미지1고양이
이미지2개
이미지3고양이

모델은 (X \rightarrow Y)를 학습한다.

Classification과 Regression이 대표적

Unsupervised Learning

Customer Data

        ● ●
     ● ● ●


                  ▲ ▲
               ▲ ▲ ▲


        ■ ■
      ■ ■

Cluster A
Cluster B
Cluster C

처럼 그룹을 발견한다. 교재에서는 Clustering, Estimation, Dimension Reduction을 설명한다.

Semi-Supervised Learning

현실에서는 다음과 같은 상황이 많다.

Labeled Data = 1,000개
Unlabeled Data = 1,000,000개

예를 들어 고양이와 강아지 사진이 있다고 해보자.

  • 정답 있는 사진 100장: 고양이, 강아지 표시가 있음
  • 정답 없는 사진 10,000장: 사진만 있고 정답은 없음

가장 단순한 사용 방법은 의사 라벨링이다.

  1. 정답 있는 100장으로 모델을 먼저 학습합니다.
  2. 학습한 모델에게 정답 없는 사진을 보여줍니다.
  3. 모델이 확신하는 사진에 임시 정답을 붙입니다.
  4. 원래 데이터와 임시 정답 데이터를 합쳐 다시 학습합니다.
정답 있는 데이터 100장
  ↓
초기 모델 학습
  ↓
정답 없는 데이터 10,000장 예측
  ↓
확신도가 높은 결과만 선택
  ↓
원래 정답 + 임시 정답으로 재학습

예를 들어 모델의 예측 결과가 다음과 같다면..

사진 A → 고양이 98%
사진 B → 강아지 95%
사진 C → 고양이 55%
# 1. 정답 있는 데이터로 먼저 학습
model.fit(labeled_x, labeled_y)

# 2. 정답 없는 데이터 예측
probabilities = model.predict_proba(unlabeled_x)

# 3. 가장 가능성 높은 정답과 확률
pseudo_labels = probabilities.argmax(axis=1)
confidence = probabilities.max(axis=1)

# 4. 확신도 90% 이상인 데이터만 선택
mask = confidence >= 0.9

selected_x = unlabeled_x[mask]
selected_y = pseudo_labels[mask]

# 5. 원래 데이터와 합쳐 다시 학습
new_x = concatenate([labeled_x, selected_x])
new_y = concatenate([labeled_y, selected_y])

model.fit(new_x, new_y)

와 같은 방법을 사용한다.

언제 사용하면 좋은가?

정답을 붙이는 작업이 비쌀 때 유용하다.

  • 의료 영상: 의사가 직접 진단 라벨을 붙여야 함
  • 고객 문의: 사람이 문의 유형을 분류해야 함
  • 불량품 이미지: 전문가가 정상과 불량을 판별해야 함
  • 음성 데이터: 사람이 직접 내용을 받아써야 함

다만 초기 모델이 틀린 임시 정답을 만들면 그 오답을 다시 학습하면서 성능이 나빠질 수도 있다. 그래서 보통 확신도가 높은 예측만 사용하고, 별도의 검증 데이터로 실제 성능을 확인한다.

8. 주요 머신러닝 모델

Tree-based
  ├── Decision Tree
  ├── Random Forest
  └── Boosting

Kernel-based
  └── SVM

Regularization
  ├── LASSO
  └── Ridge

철학을 이해하는 게 중요

9. Decision Tree

질문을 계속 던져 데이터를 점점 순수한 집단으로 나눈다.

날씨가 맑은가?
├── Yes
│   └── 습도가 높은가?
│       ├── Yes → 테니스 X
│       └── No  → 테니스 O
│
└── No
    └── ...

사람이 if-else를 작성한 것처럼 보이지만, 중요한 차이는 다음과 같다.

어떤 질문을 어떤 순서로 할지를 데이터가 결정

교재도 이를 "조건 → 판단 → 결론" 과정에서 조건과 판단을 데이터로 자동 생성한다고 설명한다.

Decision Tree의 장점은 아주 명확하다.

  • 해석하기 쉽다.
  • 설명하기 쉽다.
  • Feature Importance를 볼 수 있다.
  • 전처리 부담이 비교적 적다.

반면 깊어질수록 Overfitting이 쉽게 발생한다.

10. Gini와 Entropy

Decision Tree가 가장 중요하게 생각하는 것은

어디를 잘라야 가장 잘 나뉘는가?

11. Random Forest

Decision Tree의 문제는

Tree 하나
  → 데이터가 조금만 바뀌어도 구조가 크게 달라질 수 있음

트리 하나를 믿지 말고 여러 트리의 의견을 모으자.

Tree1 → A
Tree2 → A
Tree3 → B
Tree4 → A
Tree5 → B

Voting

→ A

교재에서는 Random Subset을 이용해 여러 Random Tree를 만들고, 결과를 Voting, Bagging 방식으로 결합한다고 설명한다.

Decision Tree
  ↓
불안정

Random Forest
  ↓
여러 Tree 평균
  ↓
Variance 감소
  ↓
안정성 증가

12. Boosting

Random Forest와 Boosting은 Tree 여러 개를 사용한다는 점에서는 비슷하지만 철학이 다르다.

Random Forest

Tree1
Tree2
Tree3
Tree4

동시에/독립적으로 학습

→ Voting

Boosting

Tree1
 ↓
틀린 문제 확인
 ↓
Tree2가 보완
 ↓
또 틀린 문제 확인
 ↓
Tree3가 보완

이전 모델의 실수를 다음 모델이 계속 고친다.

XGBoost
  → 강력한 범용 Boosting

LightGBM
  → 큰 데이터, 빠른 학습

CatBoost
  → 범주형 Feature 처리에 강점

교재는 CatBoost가 범주형 데이터를 전처리 없이 직접 처리할 수 있고, Ordered Boosting을 사용한다고 설명한다.

13. SVM은 Tree와 사고방식이 완전히 다르다

○ ○ ○     |        ● ● ●
 ○ ○      |       ● ●
          |
        boundary

두 집단에서 가능한 한 멀리 떨어진 경계

즉, Maximum Margin이다.

○ ○ ○ ○ ○
○ ● ● ● ○
○ ● ● ● ○
○ ○ ○ ○ ○

이러면 2차원에서는 나누는 게 불가능하다.

2D
  ↓ Kernel
고차원 Feature Space
  ↓
Linear separation

이것이 Kernel Trick의 핵심 아이디어다.

중요한 Hyperparameter는 다음과 같다.

  • C
  • gamma

교재에서는 gamma가 샘플 간 거리에 얼마나 민감한지를 조절하고, C는 오분류에 얼마나 큰 Penalty를 줄지를 조절한다고 설명한다.

14. Regularization

Regularization의 철학은

모델에게 너무 자유롭게 공부하지 못하도록 제약을 걸어주는 것

모델 자유도 ↑
  ↓
Train 데이터를 지나치게 잘 fitting
  ↓
Overfitting

그래서

[ \text{Loss}+\text{Penalty} ]

를 사용한다.

교재도 Regularization을 모델의 Parameter나 구조에 의도적으로 제한을 가해 복잡도와 Overfitting을 억제하는 방법이라고 설명한다.

L1: LASSO

[ \text{Penalty}=|w_1|+|w_2|+\cdots ]

가중치 일부를 아예 (w=0)으로 만들어서 Feature Selection 효과를 만든다.

L2: Ridge

[ \text{Penalty}=w_1^2+w_2^2+\cdots ]

가중치를 없애지는 않지만 전체적으로 작게 만든다.

10
  ↓
3
  ↓
1
  ↓
0.3
발표 슬라이드 30장 → 5장 제한

L1
  → 필요 없는 슬라이드 삭제

L2
  → 모든 슬라이드를 조금씩 줄여서 정리

그래서 다음과 같이 기억하면 쉽다.

LASSO
  → Feature를 없앨 수 있음

Ridge
  → Feature는 유지하면서 Weight를 줄임

15. 결국 알고리즘을 어떻게 골라야 하는가?

상황먼저 생각할 모델
설명 가능성이 매우 중요Decision Tree
안정적인 baselineRandom Forest
정형 데이터 최고 성능 경쟁XGBoost
매우 큰 정형 데이터LightGBM
범주형 변수가 많음CatBoost
고차원 + 적은 데이터SVM
중요한 변수만 남기고 싶음LASSO
모든 변수를 유지하면서 규제Ridge

ML에서 중요한 것

교재에서는 실제 머신러닝 프로젝트에서 모델링 전 단계에 상당한 노력이 필요하다고 강조한다. Target, Feature 정의, 데이터 추출, 정제, Missing, Outlier 처리, Feature Extraction, Selection 등이 포함된다.

좋은 Algorithm
≠
좋은 ML System

오히려

문제 정의
  → 좋은 데이터
  → Feature
  → 적절한 알고리즘
  → 평가
  → 현업 활용

----- 2장

TAGS#Deep Learning#Machine Learning#Classification#Regression#Tree#SVM
PREVIOUS코딩 테스트 핵심 알고리즘 정리NEXTAX 프로젝트, 문제 정의부터 확산까지
DISCUSSION

COMMENTS

GitHub 계정으로 로그인하여 댓글을 남길 수 있습니다. 댓글은 GitHub Discussions에 공개 저장되며, 작성 내용과 GitHub 프로필 정보가 다른 방문자에게 보일 수 있습니다.

GitHub 로그인 후 댓글 쓰기Discussion 열기
DOCUMENT STRUCTURE

이 문서에는 목차가 없습니다.

DOCUMENT INFO
TYPE
Markdown
DATE
2026.09.01
READ
1 min read
WORDS
0
CATEGORY
Deep Learning / Basic
RELATED DOCUMENTS
딥러닝 학습 기본 개념데이터 시각화기초 통계와 ML 파이프라인 연결분석 자동화와 파이프라인 설계도메인 적응 방법LLM 양자화와 QLoRA
main Deep Learning / Basic
1 min readUTF-8Markdown
본문 글씨 크기
RECENTLY OPENED1
머신러닝 입문recently opened