TIL

👀Today I Learn

Online Learning이란?

  • 기존의 머신러닝 모델들은 보통 전체 데이터를 한 번에 학습하며, 이를 Batch Learning이라고 함
  • 하지만 현실에서는 데이터가 계속해서 생성되기 때문에 스트리밍 데이터에 대응하기 위한 방식이 필요하며, 이것을 Online Learning이라고 함

특징 요약

  • 데이터를 순차적으로 학습하며 모델을 계속 업데이트
  • 전체 데이터를 다시 학습할 필요 없음
  • 메모리 효율적이고 실시간 대응이 가능
  • 스트리밍, 실시간 추천, 이상 탐지 등에서 유용


간단한 Online Learning 코드 예시

  • Scikit-learn에서 제공하는 SGDClassifier는 온라인 학습을 지원
  • partial_fit() 함수를 통해 모델을 점진적으로 업데이트 가능
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import numpy as np

# 예시 데이터 생성
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2)
X_train, X_stream, y_train, y_stream = train_test_split(X, y, test_size=0.8)

# 온라인 학습용 모델
model = SGDClassifier(loss="log_loss")

# 최초 학습 (클래스를 알려줘야 함)
model.partial_fit(X_train, y_train, classes=np.unique(y))

# 스트리밍 데이터를 한 줄씩 학습
for i in range(len(X_stream)):
    x_i = X_stream[i].reshape(1, -1)
    y_i = np.array([y_stream[i]])
    model.partial_fit(x_i, y_i)
실제 스트리밍 환경에서는 Kafka, Redis, RabbitMQ 등을 통해 실시간 데이터가 들어올  있습니다.


Implicit Feedback이란?

  • 사용자들이 상품을 클릭하거나 조회, 좋아요를 누르는 등의 행동 데이터를 기반으로 선호도를 추정하는 방식
  • 사용자가 “이 영화 좋아요!”처럼 명시적으로 평가하는 것(explicit feedback)과는 다름

예시 비교

Feedback 종류 예시 특징
Explicit 별점 5점, 좋아요 버튼 직접적이고 명확한 평가
Implicit 클릭, 조회, 구매 기록 행동을 통한 추정, 데이터 많음

왜 중요한가?

  • Explicit 데이터는 모으기 어렵고 양이 적음
  • Implicit 데이터는 자동 수집 가능하고 양이 많음
  • 하지만 명확한 선호가 아니기 때문에 해석과 전처리가 중요


Implicit Feedback 기반 추천 시스템 구현 예시

  • 다음은 implicit 라이브러리를 사용해 암묵적 피드백 기반 협업 필터링 모델을 만드는 예시
pip install implicit
import implicit
import numpy as np
from scipy.sparse import csr_matrix

# 유저-아이템 상호작용 행렬 (예: 클릭 수, 조회 수)
# row: 사용자, col: 아이템, value: 행동 강도
data = np.array([
    [3, 0, 1],
    [0, 2, 0],
    [1, 0, 4],
])
sparse_matrix = csr_matrix(data)

# 모델 생성 및 학습
model = implicit.als.AlternatingLeastSquares(factors=10, regularization=0.1, iterations=20)
model.fit(sparse_matrix)

# 사용자 0번에게 추천
user_id = 0
recommendations = model.recommend(user_id, sparse_matrix[user_id], N=3)

print("추천 결과:", recommendations)


Online Learning + Implicit Feedback = 실시간 추천 시스템

  • 이 두 개념을 결합하면 유저 행동을 실시간으로 반영하는 추천 시스템을 구축 가능

예시 시나리오

  • 유저가 특정 상품을 클릭
  • 서버에서 즉시 이 행동을 기록
  • Online Learning 모델이 그 데이터를 반영하여 업데이트
  • 유저에게 더 정교한 추천 결과 제공

➡️ 이러한 시스템은 넷플릭스, 유튜브, 쿠팡, 네이버 쇼핑 등 실제 서비스에서도 활용되고 있음


정리

| 개념 | 설명 | | — | — | | Online Learning | 데이터를 한 번에 학습하지 않고 순차적으로 실시간 업데이트하는 방식 | | Implicit Feedback | 클릭, 조회 등 사용자 행동을 바탕으로 선호도를 추정하는 방식 |

  • 두 개념 모두 현대의 실시간 맞춤형 시스템에서 핵심적인 기술
  • 특히 추천 시스템, 광고 시스템, 스트리밍 분석 서비스 등에서 매우 널리 사용됨



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 1문제
  • SQL 코드카타 1문제
  • ML 시스템 성능 개선 : -ing
  • README 작성
  • 프로젝트 커버/팀 로고 제출
  • TIL 작성

회고

 오늘 하루도 마무리!! 이제 진짜 프로젝트가 얼마 안남았다. 이제 발표자료도 준비하고 README도 언능 작성해서 프로젝트 잘 마무리해야지. 길 것 같았던 4.5개월이 호로록 지나가버렸다

댓글남기기