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