Module sktmls.models.contrib.catboost_device_model

Classes

class CatboostDeviceModel (model, model_name: str, model_version: str, model_features: List[str], default_model_feature_values: List[Any], target_prod_id: List[str], products_meta: Dict[str, Any], products: Dict[str, Any], context_meta: pandas.core.frame.DataFrame, device_meta: MetaTable, conversion_formulas: Dict[str, Dict[str, Any]] = {}, emb_features: List[str] = [], default_emb_feature_values: List[List[Any]] = [], emb_feature_indices: List[List] = [], default_context_value: str = 'context_default', num_pick: int = 3)

MLS 모델 레지스트리에 등록되는 CatBoost 기반 클래스입니다.

주어진 features리스트를 이용해 prediction 후 스코어 상위 3개 단말그룹으로 필터링 합니다. 이후 id, name, score, props, type을 반환하는 모델입니다.

Args

  • model: Catboost로 학습한 모델 객체
  • model_name: (str) 모델 이름
  • model_version: (str) 모델 버전
  • model_features: (list(str)) non-embedding 피쳐 리스트(필수 피쳐: eqp_mdl_cd, age)
  • default_model_feature_values: (list) 피쳐 기본값 리스트
  • target_prod_id: (list) 타겟 상품 ID 리스트
  • products: (dict) 상품 컨텍스트 값
  • products_meta: (dict) 상품 메타 정보
  • context_meta: (DataFrame) 컨텍스트 메타 정보
  • device_meta: (MetaTable) 단말코드그룹 값
  • conversion_formulas: (optional) (dict(dict)) Feature conversion에 사용할 조건 dict. 형식은 아래 Example 참조 (기본값: {})
  • emb_features: (optional) (list(str)) 임베딩 피쳐 이름 리스트 (기본값: [])
  • default_emb_feature_values: (optional) (list(list)) 임베딩 피쳐들의 기본값 리스트 (리스트의 리스트 형식) (기본값: [])
  • emb_feature_indices: (optional) (list(list)) 각 임베딩 피쳐의 세부 사용 피쳐 인덱스 리스트 (기본값: [])
  • default_context_value: (optional) (str) 기본 컨텍스트 값 (기본값: "context_default")

Example

```python model_features = ["feature1", "feature2", "feature3"] default_model_feature_values = [ dimension_client.get_dimension(dimension_type="user", name=feature).default for feature in model_features ]

device_meta = metatable_client.get_meta_table(name="test_meta_table") context_meta = metatable_client.get_meta_table_dataframe(name="test_context_table")

products_meta={ "test_prod_id": {"product_grp_nm": "test_product_grp_nm", "mfact_nm": "test_mfact_nm", "eqp_mdl_ntwk": "4G"}, }

products = { "test_prod_id": { "name": "test_prod_name", "type": "device", "context_features": ["context_default"], "random_context": False, } }

my_model_v1 = CatboostDeviceModel( model=catboost_model, model_name="my_model", model_version="v1", model_features=["eqp_mdl_cd", "age"] + model_features, default_model_feature_values=default_model_feature_values, products_meta=products_meta, products = products, target_prod_id = ["prod_1", "prod_2"], context_meta=context_meta, device_meta=device_meta, emb_features=["embedding_vector"], default_emb_feature_values=[[0.0] * 64], emb_feature_indices=[[0, 1]], )

result = my_model_v1.predict(["eqp_mdl_cd", "value_1", "value_2", "value_3"])

Ancestors

Methods

def predict(self, x: List[Any], **kwargs) ‑> Dict[str, Any]

Inherited members