Feature store 에 대해서
2025. 5. 22. 12:39ㆍComputer
MLOps에서의 Feature와 Feature Store 이해하기
Feature란 무엇인가?
Feature는 머신러닝 모델의 입력값으로 사용되는 데이터의 속성(특징)이다. 단순히 컬럼 이름이 아니라, 의미 있는 통계적 또는 파생된 값이다.
예를 들어, 쇼핑몰 사용자에게 상품을 추천하는 모델에서는 다음과 같은 Feature가 사용될 수 있다:
Feature 이름 | 설명 |
---|---|
click_count_7d | 최근 7일간 클릭 수 |
avg_session_time | 30일 평균 세션 시간 |
last_category_viewed | 최근 본 카테고리 |
purchase_count_14d | 최근 14일간 구매 횟수 |
days_since_last_login | 마지막 로그인 이후 경과일 |
Feature Store란?
Feature Store는 이러한 Feature들을 중앙에서 정의하고 저장하고 제공하는 시스템이다.
저장 구조
구성 요소 | 예시 |
---|---|
Feature 정의 | click_count_7d: Int32, entity: user_id |
Feature 값 | user_id: u123, click_count_7d: 42 |
Feature Store에 저장하고 사용하는 흐름
1. 원시 로그 수집
user_id, action, timestamp
u123, click, 2024-05-01 10:00
2. Feature Engineering (ETL)
user_click_counts = {
"u123": 42,
"u456": 17,
}
3. Feature Store에 저장
from feast import FeatureStore
store = FeatureStore(repo_path=".")
store.push(
"user_click_features",
entity_id="u123",
values={"click_count_7d": 42}
)
4. 모델 학습용 데이터 로딩 (Offline)
training_df = store.get_historical_features(
entity_df=pd.DataFrame({
"user_id": ["u123"],
"event_timestamp": ["2024-05-01"]
}),
features=["user_click_features:click_count_7d"]
).to_df()
5. 실시간 추론 시 Feature 조회 (Online)
features = store.get_online_features(
features=["user_click_features:click_count_7d"],
entity_rows=[{"user_id": "u123"}]
).to_dict()
전체 흐름 요약
[Raw Data] → [ETL → Feature 생성] → [Feature Store 저장] → 모델 학습 시 Offline 조회 → 실시간 추론 시 Online 조회 → 모델 입력 → 예측값 출력
Feature는 단순한 컬럼 이름이 아니다
Feature는 단순한 row의 필드가 아니라, 의미 있는 통계적 또는 요약된 데이터이다. 이는 모델의 성능에 직접적인 영향을 준다.
단순 데이터 | Feature |
---|---|
클릭 로그 | 최근 7일간 클릭 수 |
세션 로그 | 평균 방문 시간 |
구매 기록 | 최근 구매 빈도 |
Feast를 통한 Feature 정의 예시
user_click_view = FeatureView(
name="user_click_features",
entities=["user_id"],
ttl=Duration(seconds=86400 * 30),
schema=[
Field(name="click_count_7d", dtype=Int32),
Field(name="avg_session_time", dtype=Float32),
],
online=True,
source=batch_source,
)
요약
항목 | 설명 |
---|---|
Feature | 모델 입력으로 사용되는 파생/요약 데이터 |
Feature Store | Feature 정의와 값을 저장하고 제공하는 시스템 |
Offline 사용 | 모델 학습용 데이터 제공 |
Online 사용 | 실시간 예측 시 Feature 조회 |
중요한 점 | Feature는 통계적 의미를 담은 데이터이며, 단순한 raw column이 아님 |
Feature Store의 Online과 Offline 저장소 차이
구분 | Offline Feature Store | Online Feature Store |
---|---|---|
목적 | 모델 학습용 데이터 저장 | 실시간 추론용 데이터 저장 |
저장 위치 | S3, BigQuery, Snowflake 등 | Redis, DynamoDB, Cassandra 등 |
응답 속도 | 느려도 무방 (초~분 단위) | 매우 빠름 (ms 단위) |
업데이트 빈도 | 주기적 배치 | 거의 실시간 또는 스트리밍 |
사용 시점 | 모델 학습 시 | 서비스 API 호출 시 |
데이터 용량 | 대용량 저장 적합 | 빠른 조회를 위한 최적화 |
Offline과 Online 저장소는 역할이 다르지만, 일관된 Feature 정의와 데이터를 공유함으로써 학습과 추론 간의 정합성을 유지하는 것이 중요하다.
반응형
'Computer' 카테고리의 다른 글
쉽게 풀어쓴 튜링 기계와 튜링 불완전성 (0) | 2024.02.22 |
---|---|
안전한 소프트웨어 개발을 위한 보안 코딩 관행 (0) | 2023.08.04 |
Effective Kotlin - Prefer Sequence for big collections with more than one processing step (0) | 2021.10.28 |
Kotlin - Respect the contract of hashCode (0) | 2021.10.15 |
Effective Kotlin - Minimize elements visibility (0) | 2021.10.14 |