Feature engineering
출처: 문서
본문
특성 엔지니어링
학습 기반 순위 매기기(LTR) 솔루션을 개발하면서 마주칠 수 있는 일반적인 특성 엔지니어링 작업은 다음 섹션에서 설명해요.
원시 용어 통계 얻기
많은 LTR 솔루션은 훈련에 다음과 같은 원시 용어 통계를 사용해요:
- 전체 용어 빈도(
raw_ttf): 용어가 전체 인덱스에 나타난 총 횟수예요. - 문서 빈도(
raw_df): 용어가 나타난 문서의 수예요. - 용어 빈도(
raw_tf): 용어가 특정 문서에 나타난 횟수예요. - 클래식 IDF(
classic_idf): 역문서 빈도(IDF) 계산log((NUM_DOCS+1)/(raw_df+1)) + 1이에요.
Learning to Rank 플러그인은 다음 예제와 같이 이러한 통계를 추출할 수 있는 match_explorer 쿼리 프리미티브를 제공해요:
POST tmdb/_search
{
"query": {
"match_explorer": {
"type": "max_raw_df",
"query": {
"match": {
"title": "rambo rocky"
}
}
}
}
}
{% include copy-curl.html %}
쿼리는 rambo 와 rocky 용어 사이에서 가장 높은 문서 빈도를 반환해요.
필요한 정보를 얻기 위해 통계와 함께 max, min, sum, stddev 같은 연산을 사용할 수 있어요.
용어 위치 통계
원하는 연산(min, max, avg)을 type 앞에 붙여서 용어 위치에 대한 해당 통계를 계산할 수 있어요. 용어가 문서에 없으면 결과는 0이에요.
사용 가능한 통계는 다음과 같아요:
min_raw_tp(최소 원시 용어 위치): 이 통계는 문서에서 검색 용어의 가장 이른 위치를 찾아요. 예를 들어, 쿼리dance monkey에서dance가 위치 [2, 5, 9]에 있고monkey가 [1, 4]에 있으면 최소값은 1이에요.max_raw_tp(최대 원시 용어 위치): 이 통계는 문서에서 검색 용어의 가장 늦은 위치를 찾아요. 앞의 예를 사용하면 최대값은 9예요.avg_raw_tp(평균 원시 용어 위치): 이 통계는 쿼리 용어의 평균 용어 위치를 계산해요. 앞의 예를 사용하면dance의 평균은 5.33[(2+5+9)/3]이고monkey의 평균은 2.5[(1+4)/2]이며 전체 평균은 3.91이에요.unique_terms_count: 쿼리의 고유 검색 용어 수를 제공해요.
문서별 특성
LTR 솔루션을 작업할 때 쿼리와 문서 간의 관계보다는 문서 자체에 특화된 특성을 통합해야 할 수도 있어요. 이러한 문서별 특성에는 인기도나 최신성과 관련된 지표가 포함될 수 있어요.
function_score 쿼리는 이러한 문서별 특성을 추출하는 기능을 제공해요. 다음 예제 쿼리는 vote_average 필드를 특성으로 통합하기 위해 이를 사용하는 방법을 보여줘요:
{
"query": {
"function_score": {
"functions": [{
"field_value_factor": {
"field": "vote_average",
"missing": 0
}
}],
"query": {
"match_all": {}
}
}
}
}
{% include copy-curl.html %}
예제에서 쿼리의 점수는 문서 인기도나 품질의 척도가 될 수 있는 vote_average 필드의 값에 의해 결정돼요.
인덱스 드리프트
정기적으로 업데이트되는 인덱스를 작업할 때는 관찰하는 추세와 패턴이 시간이 지나도 일정하게 유지되지 않을 수 있다는 점을 고려하는 것이 중요해요. 사용자 행동, 콘텐츠 및 기타 요인이 변경됨에 따라 인덱스가 드리프트할 수 있어요. 예를 들어, 전자상거래 스토어에서 샌들은 여름철에 인기가 있지만 겨울에는 거의 찾을 수 없게 될 수 있어요. 마찬가지로, 한 기간 동안 구매나 참여를 유도하는 특성이 다른 기간에는 그만큼 중요하지 않을 수 있어요.
다음 단계
로깅 특성 점수에 대해 알아보세요.