머신러닝 시스템의 종류 정리 문서

calico·2025년 10월 1일

Artificial Intelligence

목록 보기
74/161

분류 기준 (큰 지도)


  • 감독 유무: 지도 / 비지도 / 준지도 / 강화

    • 데이터 조건을 눈여겨 봐봐

      학습 방식데이터 조건접근 방법대표 알고리즘/모델예상 결과
      지도 학습 (Supervised)라벨 있음 (스팸/정상 표시된 메일 다수)레이블로 분류기 훈련로지스틱 회귀, 랜덤 포레스트, CNN(Text CNN), Transformer(BERT)새 메일 → “스팸 확률 95%” 정확히 분류
      비지도 학습 (Unsupervised)라벨 없음 (메일 본문만 있음)텍스트 패턴 기반 군집/이상치 탐지k-평균, GMM, Autoencoder, PCA“광고 메일” 등 군집 자동 발견, 이상치 메일 스팸 후보
      준지도 학습 (Semi-supervised)소량 라벨 (1만 개) + 대량 비라벨 (100만 개)초기 모델 학습 후 비라벨 데이터에 pseudo-label 부여Pseudo-labeling, FixMatch, Semi-supervised GAN라벨링 비용 절약, 성능↑
      강화 학습 (Reinforcement)라벨 없음, 보상은 사용자의 행동 (“스팸 신고” 버튼 클릭)정책(policy) 학습 → 보상 최대화Q-learning, Policy Gradient, PPO점점 사용자 취향에 맞는 스팸 필터
  • 학습 시간축: 배치 / 온라인

  • 일반화 방식: 사례 기반 / 모델 기반

필요에 따라 조합 가능 (예: 온라인 + 지도 + 모델 기반 스팸 필터)


지도 학습 (Supervised Learning)


  • 입력–정답(레이블)으로 학습 (분류/회귀)

  • 알고리즘: k-NN, 선형·로지스틱 회귀, SVM, 결정트리·랜덤포레스트, 신경망

  • 예시: 스팸 분류, 중고차 가격 예측

  • 주의: 라벨 품질 중요, 데이터 분포 변동(드리프트)에 취약



비지도 학습 (Unsupervised Learning)


  • 레이블 없이 구조·패턴 탐색

  • 알고리즘: k-평균, HCA, EM, PCA/커널 PCA, LLE, t-SNE, UMAP, Apriori, Eclat

  • 예시: 방문자 군집화, 이상 거래 탐지, 시각화

  • 주의: 목적함수 모호, 파라미터 민감



준지도 학습 (Semi-supervised Learning)


  • 일부 라벨 + 대량 비라벨 데이터 활용

  • 알고리즘: Pseudo-Labeling, FixMatch, DBN, RBM

  • 예시: 사진 일부에 이름 붙여 전체 분류

  • 주의: 라벨 품질에 민감



강화 학습 (Reinforcement Learning)


  • 에이전트가 환경과 상호작용하며 보상 최대화 정책 학습

  • 알고리즘: Q-learning, Policy Gradient, DQN, PPO

  • 예시: 로봇 보행, AlphaGo, 추천 시스템

  • 주의: 보상 설계 중요, 안정적 학습 난이도 높음



배치 학습 (Batch Learning)


  • 특징: 모든 데이터를 모아 한 번에 학습, 배포 후 고정

  • 장점: 안정성, 재현성

  • 단점: 변화 적응 느림



온라인 학습 (Online Learning)


  • 특징: 데이터가 들어오는 대로 점진적 학습

  • 장점: 실시간 적응, 자원 효율적

  • 단점: 학습률 설정 민감, 악성 데이터 위험



사례 기반 학습 (Instance-based)


  • 정의: 학습 데이터를 기억하고 유사도 기반 예측(k-NN)

  • 장점: 학습 간단, 직관적

  • 단점: 추론 느림, 고차원에서 취약



모델 기반 학습 (Model-based)


  • 데이터를 함수 모델로 근사 후 파라미터 학습

  • 장점: 추론 빠름, 일반화 용이

  • 단점: 모델 가정·튜닝 필요



분류 참고표


분류 기준유형특징대표 알고리즘/모델예시
감독 유무지도 학습레이블 있음k-NN, 회귀, SVM, 신경망스팸 분류, 가격 예측
비지도 학습레이블 없음k-평균, PCA, Apriori군집, 시각화, 이상치 탐지
준지도 학습라벨 일부만 있음Pseudo-Labeling, FixMatch사진 자동 라벨링
강화 학습보상 기반Q-learning, DQN, PPO로봇 제어, 게임
시간축배치데이터 한꺼번에 학습모든 모델 가능정기적 재학습
온라인데이터 유입 시점마다 학습SGD, Online SVM주식 예측, 실시간 추천
일반화사례 기반유사도 비교k-NN유사 문서 검색
모델 기반함수 근사회귀, 트리, NNGDP→삶의 만족도 예측



[참고] 고차원 데이터(High-dimensional data)


  • 데이터 = 행(row, 샘플) × 열(column, 특성)

  • 특성이 많을수록 차원이 커짐

  • “고차원”이라고 하면 보통 수백, 수천, 수만 개의 특성을 가진 데이터를 말합니다.

고차원 데이터 = 특성(feature) 수가 매우 많은 데이터.
이미지, 텍스트, 유전자 데이터 등이 대표적이며, “차원의 저주” 때문에 차원 축소/특성 선택 같은 전처리가 자주 필요합니다.



예시


  • 이미지 데이터

    • 흑백 28×28 픽셀 = 784차원

    • 컬러 256×256 RGB = 256 × 256 × 3 = 196,608차원

      → 픽셀 하나하나가 특성이므로 고차원 벡터

  • 텍스트 데이터 (Bag-of-Words, TF-IDF)

    • 단어 사전 크기가 50,000개 → 문서 하나는 50,000차원 벡터
  • 유전체/생물학 데이터

    • 마이크로어레이 실험 → 샘플 하나당 20,000~50,000 유전자 발현 값
  • 추천 시스템

    • 사용자 수 100만 명, 아이템 수 10만 개 → 희소 행렬(차원은 엄청 크지만 대부분 0)



고차원 데이터의 문제점 (차원의 저주, Curse of Dimensionality)


  • 거리 기반 학습 어려움

    • k-NN, k-means 같은 알고리즘은 “거리”를 쓰는데, 차원이 커지면 모든 점들이 비슷하게 멀어져서 구분이 힘듦
  • 과적합 위험 증가

    • 특성이 많을수록 모델이 데이터를 “외워버리기” 쉬움
  • 연산량 폭발

    • 차원↑ → 파라미터↑ → 학습·추론 속도↓



해결 방법


  • 차원 축소 (Dimensionality Reduction)

    • PCA: 주요 성분으로 압축

    • t-SNE, UMAP: 고차원 데이터를 2D/3D로 시각화

  • 특성 선택 (Feature Selection)

    • 불필요한 변수 제거 → 예: 상관관계 높은 특성 하나만 남김
  • 희소 표현 (Sparse Representation)

    • 실제로 중요한 특성만 살리고 나머지는 0 처리



머신러닝 학습 방식 대표 알고리즘 (실행 함수)


지도 학습 (Supervised Learning)


👉 라벨이 있는 데이터로 학습

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()

예시: 스팸 메일 분류, 집값 예측



비지도 학습 (Unsupervised Learning)


👉 라벨이 없는 데이터에서 구조 탐색

from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)

예시: 고객 군집화, 이상치 탐지



준지도 학습 (Semi-supervised Learning)


👉 소량 라벨 + 대량 비라벨 데이터 활용

from sklearn.semi_supervised import SelfTrainingClassifier
model = SelfTrainingClassifier(LogisticRegression())

예시: 사진 일부에 이름 붙이고 나머지 자동 분류



강화 학습 (Reinforcement Learning)


👉 정답 대신 보상(Reward)으로 학습

from stable_baselines3 import DQN
model = DQN("MlpPolicy", env)

예시: 게임 에이전트, 로봇 제어


정리: “대표 알고리즘”이라고 해도 사실 코드에서는 함수 한 줄입니다.
중요한 건 왜 그 함수를 쓰는지데이터가 어떤 성격인지입니다.



profile
https://velog.io/@corone_hi/posts

0개의 댓글