# [[특징 공학 (Feature Engineering)]]

## 📌 Brief 시사
특징 공학(Feature Engineering)은 기계 학습 모델이 데이터를 효과적으로 학습할 수 있도록 우수한 특징(Feature)을 선택하고 설계하는 중요한 머신러닝 영역이다 [1]. 특히 검색 엔진의 학습 기반 랭킹(Learning to Rank, LTR)에서 검색 결과의 관련성을 높이기 위해 쿼리와 문서의 쌍을 수치화된 벡터나 특징으로 변환하는 과정을 일컫는다 [2, 3]. 특정 사용자 속성이나 문서의 특성을 어떻게 랭킹 특징으로 인코딩할지 결정함으로써, 검색 알고리즘이 사용자의 의도를 보다 정확하게 파악하도록 돕는 핵심 역할을 수행한다 [3, 4]. 

## 📖 Core Content
* **특징(Feature)의 주요 범주**
  학습 기반 랭킹(LTR) 모델을 위한 특징은 크게 세 가지 그룹으로 나눌 수 있다 [4].
  * **문서 특징(Document/Static features):** 질의와 무관하게 문서 자체의 속성에만 의존하는 특징으로, 제품의 가격, 문서의 길이, 페이지랭크(PageRank) 등이 이에 해당한다 [1, 4, 5].
  * **쿼리 특징(Query-level features):** 사용자가 제출한 질의 자체에서 직접 계산되는 특징으로, 질의에 포함된 단어의 수 등이 포함된다 [4, 5].
  * **쿼리-문서 특징(Query-document/Dynamic features):** 특정 질의의 맥락에서 문서가 가지는 특징으로, 제목 필드에 대한 BM25 점수나 TF-IDF 점수 등이 대표적이다 [1, 4, 5].

* **특징 추출과 모델 훈련 데이터 구성**
  단순한 쿼리와 문서의 쌍만으로는 LTR 기계 학습 모델을 훈련하기에 정보가 충분하지 않다 [4]. 따라서 관련성 평가를 위한 판단 리스트(Judgment list)의 점수를 결정하는 여러 속성인 특징들을 반드시 추출(Feature extraction)해야 한다 [4]. 이렇게 추출된 특징들은 판단 리스트와 결합하여 LTR 모델을 위한 최종 훈련 데이터셋을 구성하게 된다 [4, 6].

* **수치화 및 인코딩 방식**
  기계 학습 모델에서 모든 특징은 숫자(Numeric) 형태로 입력되어야 한다 [3, 7]. 특징 공학 과정에서는 범주형 특징(Categorical features)을 정수로 표현되는 레이블로 나타낼 것인지, 혹은 여러 개의 이진 레이블로 이루어진 원핫 인코딩(One-hot encoding) 방식으로 변환할 것인지 등의 구체적인 데이터 인코딩 방식을 결정하게 된다 [7, 8]. 

* **개인화를 위한 사용자 특성 활용**
  검색을 개인화하기 위해 사용자의 위치 정보, 업로드 위치, 혹은 음악 장르에 대한 재생 빈도 등 과거의 행동 데이터를 특징으로 추출하여 사용한다 [3, 9]. 이를 위해 특정 특징이 검색 결과를 향상시킬 수 있는지 오프라인 훈련 및 온라인 A/B 테스트를 통해 효과를 검증하는 과정이 수반된다 [3].

## ⚖️ Trade-offs & Caveats
* **연산 리소스 및 시간의 증가 (차원의 저주 관련 문제):**
  모델에 더 많은 특징을 추가할수록 이를 활용하기 위해 결정 트리(Decision tree) 모델 등에서 더 많은 노드가 필요해진다 [10]. 결과적으로 모델 훈련 과정에서 수렴(Convergence)에 도달하기까지 더 많은 시간과 컴퓨팅 리소스가 소모되는 반대 급부가 발생한다 [10]. 
* **콜드 스타트 및 데이터 편향의 위험:**
  특징을 설계할 때 사용자의 과거 활동 데이터가 부족한 경우(콜드 스타트), 올바른 관련성을 도출할 수 없다 [11]. 예를 들어 사용자가 단 한 곡의 노래만 들었을 경우, 해당 장르로 선호도 특징이 지나치게 왜곡(Skewed)되어 후속 개인화 검색이 특정 방향으로만 치우치는 부작용이 생길 수 있다 [12]. 이를 방지하기 위해 상호작용 횟수를 추가 특징으로 넣거나 평활화(Smoothing)하는 최적화 작업이 요구된다 [12].
* **오류 데이터에 대한 취약성:**
  부정확한 추적 이벤트나 오류가 있는 데이터 파이프라인에서 추출된 특징은 실제 사용자 행동을 잘못 대변하게 되며, 이에 기반한 특징 공학 및 개인화 프로젝트는 실패할 위험이 크다 [11].
* **단계적 확장의 필요성:**
  한 번에 다수의 특징을 무리하게 도입하기보다는, 작게 시작하여 개선 사항을 측정한 뒤 단계적으로 확장해야 하며, 이론적으로 어떻게 작동할지 상상하기 어려운 특징은 추가할 가치가 없을 수도 있다는 점을 유의해야 한다 [3, 10].

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