# [[특징 추출 (Feature Extraction)]]

## 📌 Brief Summary
**특징 추출(Feature Extraction)**은 기계 학습 기반의 랭킹(LTR, Learning to Rank) 모델을 훈련시키기 위해 질의(Query)와 문서(Document)의 다양한 속성들을 수치화된 **특징 벡터(Feature Vectors)**로 변환하는 과정입니다 [1, 2]. 이는 단순한 키워드 텍스트 매칭을 넘어서 사용자, 질의, 문서 간의 복합적인 관계와 맥락을 검색 알고리즘이 학습할 수 있도록 지원하는 핵심 단계입니다 [1, 3]. 추출된 특징 데이터는 관련성 점수와 결합되어 검색 결과를 정교하게 나열하기 위한 훈련 데이터셋으로 활용됩니다 [1].

## 📖 Core Content
**특징의 정의와 필요성**
기계 학습 알고리즘(MLR)이 처리하기 쉽도록, 질의-문서 쌍은 숫자 배열인 '특징 벡터(Feature vectors)'로 표현되며, 이를 '특징의 가방(bag of features)' 접근법이라고도 부릅니다 [2]. 랭킹 모델의 기반이 되는 판단 리스트(Judgment list)의 관련성 점수는 이러한 다양한 속성과 특징들에 의해 결정되므로, 검색 모델 훈련을 위해서는 반드시 이 특징들을 추출하여 각 요소가 문서의 관련성에 어떻게 기여하는지 파악해야 합니다 [1]. 이처럼 좋은 특징을 선택하고 설계하는 과정을 **특징 공학(Feature engineering)**이라고 합니다 [3, 4].

**특징의 3가지 주요 범주**
추출되는 특징(혹은 랭킹 신호)은 크게 세 가지 그룹으로 나뉩니다 [1, 2].
*   **문서 특징 (Query-independent / Static features)**: 질의와 무관하게 문서 자체가 가진 고유 속성에서 파생되는 특징입니다 [1, 5]. 예를 들어 전자상거래 스토어의 제품 가격, 문서의 길이, 페이지랭크(PageRank) 점수 등이 포함되며, 오프라인 색인 단계에서 미리 계산하여 정적 품질 점수로 활용할 수 있습니다 [1, 5].
*   **질의 특징 (Query-level features)**: 사용자가 제출한 질의 자체에서 계산되는 특징으로, 질의에 포함된 단어의 수 등이 이에 해당합니다 [1, 5].
*   **질의-문서 특징 (Query-dependent / Dynamic features)**: 특정 질의의 문맥 내에서 해당 문서가 갖는 정보를 나타냅니다 [1, 5]. 제목 필드에 대한 BM25 점수나 TF-IDF 점수 등이 가장 대표적인 예시입니다 [1, 5].

**개인화 및 사용자 문맥을 위한 특징 추출**
검색의 정교함을 극대화하여 **개인화된 검색(Personalized search)**을 구현하기 위해서는 과거 사용자 행동이나 위치 정보와 같은 사용자/컨텍스트 속성을 특징으로 추출해야 합니다 [3, 6]. 예를 들어, 음악 검색 엔진의 경우 사용자의 이전 음악 장르 청취 기록을 빈도 기반의 장르 선호도 특징으로 계산할 수 있습니다 [6]. Elasticsearch와 같은 시스템에서는 템플릿 쿼리를 사용하여 훈련 데이터셋 구축 시점 및 검색 쿼리 시점에 이러한 특징을 추출하고 주입합니다 [7]. 

## ⚖️ Trade-offs & Caveats
*   **수치화 변환의 복잡성**: 기계 학습 모델에 활용되는 **모든 특징은 반드시 숫자(numeric) 형태여야 한다는 제약**이 있습니다 [8]. 위치나 장르와 같은 범주형(Categorical) 특징을 사용할 때는 이를 정수형 레이블로 나타낼지, 아니면 다중 이진 레이블을 활용한 원-핫 인코딩(One-hot encoding) 방식으로 나타낼지 결정해야 하는 데이터 전처리 부담이 존재합니다 [8].
*   **컴퓨팅 리소스 및 훈련 시간의 증가**: 모델에 더 많은 특징이 추가될수록, 의사결정 트리(Decision Tree) 기반 모델에서 이를 활용하기 위해 더 많은 노드(Nodes)가 필요하게 됩니다 [9]. 결과적으로 훈련 과정에서 모델이 수렴(Convergence)하는 데 **더 많은 시간과 리소스가 소모되는 반대 급부(Trade-off)**가 발생합니다 [9]. 따라서 특징을 추가할 때는 작게 시작하여 개선도를 측정한 후 단계적으로 확장해야 합니다 [9].
*   **설계의 실효성 검증 의무**: 새로운 특징을 추가할 때는 그것이 특정 검색 환경에서 이론적으로 어떻게 관련성을 향상시킬 수 있는지 명확히 이해해야 합니다 [3]. 이론적 근거가 희박하다면 특징으로 추가하지 않는 편이 나으며, 도입 후에는 반드시 오프라인 테스트 및 온라인 A/B 테스트를 통해 실제 효과를 검증해야 하는 관리적 비용이 따릅니다 [3].

## 🔗 Knowledge Connections

### Related Concepts

#### [검색 랭킹 최적화 아키텍처]
- [[기계 학습 랭킹 (Learning to Rank, LTR)]]
  - 연결 이유: 특징 추출은 LTR 모델의 훈련 데이터셋(판단 리스트)을 완성하기 위해 수치형 데이터를 공급하는 가장 필수적인 전제 과정입니다 [1, 10].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 추출된 다차원의 특징들이 어떻게 가중치가 매겨져서 최적의 문서 정렬(Ranking)을 만들어내는지 이해할 수 있습니다.
- [[판단 리스트 (Judgment List)]]
  - 연결 이유: LTR 모델 훈련을 위한 입력 데이터로, 추출된 특징들은 이 판단 리스트(관련성 정답지)와 결합하여 최종 데이터셋을 구성합니다 [1, 10].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 특징 벡터가 어떤 목표 값(관련성 점수)을 향해 훈련되고 매핑되는지 그 관계를 파악할 수 있습니다.

#### [텍스트 및 의미 분석 도구/지표]
- [[TF-IDF]] 및 [[BM25]]
  - 연결 이유: 질의와 문서 간의 관계를 수치화할 때 가장 기본적으로 추출되는 질의-문서 특징(Query-dependent features)의 대표적 알고리즘입니다 [1, 5].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 전통적인 키워드 매칭 점수가 어떻게 수치적 특징으로 변환되어 기계 학습 모델에 전달되는지 파악할 수 있습니다.

#### [사용자 맞춤형 검색 기반 기술]
- [[개인화 검색 (Personalized Search)]]
  - 연결 이유: 사용자의 선호도, 위치, 행동 이력 등을 특징으로 추출하고 인코딩하여 랭킹의 입력값으로 활용함으로써 달성되는 결과적 검색 형태입니다 [3, 6].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 사용자 문맥 데이터를 추출하여 검색 결과를 어떻게 사용자 맞춤형으로 튜닝하는지 그 실증적 원리를 이해할 수 있습니다.

### Deeper Research Questions
- LTR 모델을 위해 추출할 수 있는 구체적인 '사용자 컨텍스트 특징(User properties)'의 종류에는 어떤 것들이 있으며, 범주형 데이터를 원-핫 인코딩 외에 효율적으로 수치화하는 최신 기법은 무엇인가?
- 문서 특징(Static features) 중 페이지랭크(PageRank)와 같은 점수를 특징 벡터로 통합할 때 발생할 수 있는 스케일(Scale) 불균형이나 편향 문제는 어떻게 정규화하여 해결하는가?
- 지나치게 많은 특징을 추출할 때 발생하는 차원(Dimension) 증가 및 훈련 리소스 소모 문제를 완화하기 위해 적용할 수 있는 특징 선택(Feature Selection) 방법론은 무엇인가?
- 기존의 BM25 기반 특징 외에, 대규모 언어 모델(LLM) 기반의 벡터 임베딩 유사도 점수를 질의-문서 특징으로 추가할 때 발생하는 성능 향상과 인퍼런스 지연(Latency) 간의 트레이드오프는 어떠한가?
- 오프라인 훈련 환경에서 추출한 특징 데이터와 실시간 라이브 쿼리 환경에서 동적으로 추출해야 하는 특징 간의 불일치를 최소화하기 위한 데이터 아키텍처 설계 방식은 무엇인가?

### Practical Application Contexts
- **Implementation:** 검색 엔진 환경에서 BM25 점수, 문서의 길이, 상품 가격 등의 다양한 정보를 Elasticsearch의 템플릿 쿼리를 사용하여 배열 형태의 수치형 특징 벡터(Feature Vectors)로 추출하여 모델에 전달합니다 [2, 7]. 범주형 데이터는 원-핫 인코딩 등으로 변환하여 구현합니다 [8].
- **System Design:** 사용자의 과거 조회 이력이나 선호 장르 같은 개인화 특징들을 훈련 시점과 검색 시점 모두에서 빠르게 조회할 수 있도록, 특징 값을 저장하고 제공하는 전용 인덱스(Feature Store)를 설계하고 구축해야 합니다 [11, 12].
- **Operation / Maintenance:** 특징 데이터(예: 사용자의 구매 선호도 비율이나 문서의 클릭률 등)는 시간이 지남에 따라 변동하므로, 스케줄링된 배치 작업을 통해 이러한 특징값들을 주기적으로 최신화하고 리프레시(Refresh)하는 유지보수 작업이 필요합니다 [11].
- **Learning Path:** 전통적인 키워드 분석 지표(TF-IDF, BM25) 이해 ➔ 범주형 데이터의 수치화 변환 기법(원-핫 인코딩 등) 학습 ➔ LTR을 위한 특징 공학(Feature Engineering) 실습 ➔ 랭킹 모델 훈련 및 A/B 테스트 성과 측정 순으로 학습을 진행합니다.
- **My Project Relevance:** 엔터프라이즈 사내 검색 혹은 이커머스 상품 검색 시스템을 고도화할 때, 단순 키워드 일치 점수 외에 '문서 최신성', '사용자 부서 정보', '과거 클릭 빈도' 등을 새로운 특징으로 추출하고 이를 랭킹 신호로 통합하여 검색 만족도와 정교함을 획기적으로 개선할 수 있습니다.

### Adjacent Topics
- [[특징 공학 (Feature Engineering)]]
  - 확장 방향: 단순히 데이터를 추출하는 것을 넘어, 도메인 지식을 활용하여 모델의 성능을 향상시킬 수 있는 '좋은 특징'을 식별, 선택, 가공하는 기계 학습 전반의 방법론과 원리로 이해를 확장합니다 [3, 4].
- [[원-핫 인코딩 (One-hot Encoding)]]
  - 확장 방향: 기계 학습 모델이 이해할 수 없는 텍스트나 범주형 데이터를 이진수 벡터 형태로 변환하는 구체적인 데이터 전처리 및 표현 기법에 대해 심화 학습합니다 [8].
- [[XGBoost 및 의사결정 트리 (Decision Tree)]]
  - 확장 방향: 추출된 특징(Feature)들을 입력받아 어떻게 가중치를 분배하고 트리 노드를 형성하여 실질적인 문서 랭킹 순위를 연산해 내는지, 그래디언트 부스팅 모델의 내부 동작 원리로 확장이 가능합니다 [13, 14].

---
*Last updated: 2026-05-04*