[TIL] 내일배움캠프 121일차_[ML] 온라인 학습(Online Learning)과 암묵적 피드백(Implicit Feedback)
👀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개월이 호로록 지나가버렸다
댓글남기기