Recbole 입력 파라미터 알아보기 [추천시스템 라이브러리]

구성설정

모든 구성설정에는 5가지로 나뉜다.

  1. 환경 설정
  2. 데이터 설정
  3. 모델 설정
  4. 훈련 설정
  5. 평가 설정

이렇게 숫자로 표현해서 쓰니 뭔가 옛날에 데이터 분석 공부할때 데이터 분석방법론 같다는 생각이 갑자기 든다. 아무튼 구성설정을 설정 해야한다.

1. 환경설정(Environment Settings)

gpu_id (str) : GPU번호. Defaults to 0. -> 멀티 지피유 확인필요 할것 같다.

worker (int) : 워커 프로세스 . Defaults to 0. 0이면  쓰겠다로 알고있음

seed (int) : 랜덤시드. Defaults to 2020.

state (str) : 로깅레벨 -> 썹고 확인필요. Defaults to 'INFO'. Range in ['INFO', 'DEBUG', 'WARNING', 'ERROR', 'CRITICAL'].

encoding (str): 인코딩 언어. Defaults to 'utf-8'. 
 사용가능 확인 -> https://docs.python.org/3/library/codecs.html#standard-encodings

reproducibility (bool) : 모델 재현성과 관련있음 False로 하면 속도가 빨라질순 있지만 실험과 같은 결과를 다시 재현하지 못한다고 한다.  Defaults to True.

data_path (str) : 인풋데이터의 데이터 위치. Defaults to 'dataset/'.

checkpoint_dir (str) : 체크포인트 위치. Defaults to 'saved/'.

show_progress (bool) : 학습진행상황 보기 Defaults to True.

save_dataset (bool): 필터링된 데이터셋 저장하기, True면 저장한다.  Defaults to False.

dataset_save_path (str): 저장된 데이터셋의 경로입니다. 도구는  경로에서 데이터셋을 불러오려고 시도합니다.  값이 None과 같으면, 도구는 {checkpoint_dir}/{dataset}-{dataset_class_name}.pth에서 데이터셋을 불러오려고 시도합니다. 저장된 데이터셋의 설정이 현재 설정과 같지 않은 경우, 도구는 처음부터 데이터셋을 만듭니다. 기본값은 None입니다.(한번 테스트후 정리 필요)

save_dataloaders (bool): 분할된 데이터로더를 저장할지 여부입니다. True인 경우 분할된 데이터로더를 저장하고, 그렇지 않으면 저장되지 않습니다. 기본값은 False입니다.

dataloaders_save_path (str): 
저장된 데이터로더의 경로입니다. 도구는  경로에서 데이터로더를 불러오려고 시도합니다.  값이 None과 같으면, 도구는 {checkpoint_dir}/{dataset}-for-{model}-dataloader.pth에서 데이터로더를 불러오려고 시도합니다. 저장된 데이터로더의 설정이 현재 설정과 같지 않은 경우, 도구는 처음부터 데이터로더를 만듭니다. 기본값은 None입니다.

log_wandb (bool): 
Weights & Biases(W&B) 사용할지 여부입니다. True인 경우, W&B를 사용하여 다른 실험의 구성  지표를 시각화하며, 그렇지 않으면 사용되지 않습니다. 기본값은 False입니다.(W&B 솔루션  연결과 관련된 파라미터, 유료)

wandb_project (str): The project to conduct experiments in W&B. Defaults to 'recbole'.(W&B 솔루션  연결과 관련된 파라미터, 유료)

shuffle (bool): 학습데이터를  에포크마다 섞을지 여부. Defaults to True.

2. 데이터 설정

recbole에서는 데이터설정을 위해 recbole에 맞는 데이터셋을 만들어야한다.

데이터셋 만들기는 뒤에서 차근차근 또 살펴볼 예정이다.

원자파일 포멧(데이터셋 포멧)
field_separator (str) : 컬럼 구분자. Defaults to "\t".

seq_separator (str) : 시퀀스 구분자. Defaults to " ".

Basic Information
Common Features
USER_ID_FIELD (str) : 사용자 ID 기능의 필드 이름. Defaults to user_id.

ITEM_ID_FIELD (str) : 항목 ID 기능의 필드 이름. Defaults to item_id.

RATING_FIELD (str) : 평가 기능의 필드 이름. Defaults to rating.

TIME_FIELD (str) : 타임스탬프 기능의 필드 이름. Defaults to timestamp.

seq_len (dict) : 키는 시퀀스 기능의 필드 이름이고 값은  시퀀스의 최대 길이입니다(너무  시퀀스는 잘립니다). 설정하지 않으면 시퀀스가 ​​잘리지 않습니다. Defaults to None. -> 시퀀스 최대길이
---수정필요함---
Label for Point-wise DataLoader
LABEL_FIELD (str) : 생성된 레이블의 예상 필드 이름. Defaults to label.

threshold (dict): 형식은 입니다 .  값에 따라 0/1 라벨이 생성됩니다 .  있는 행은 양수로 레이블이 지정되고, 그렇지 않으면 레이블이 음수로 표시됩니다. 에는   최대  쌍만 존재할  있습니다 . 기본값은 .{k (str): v (float)}inter_feat[k]vinter_feat[k] >= vkvthresholdNone

Negative Sampling Prefix for Pair-wise DataLoader
NEG_PREFIX (str): 부정 사례로 생성되는 필드 이름의 접두사입니다. 예를 들어 이라는 긍정적인 항목 ID가 있는 경우 item_id부정적인 샘플의 해당 항목 ID가 호출됩니다 . 기본값은 .NEG_PREFIX + item_idneg_

Sequential Model Needed
ITEM_LIST_LENGTH_FIELD (str): 항목 시퀀스의 길이를 나타내는 기능의 필드 이름입니다. 기본값은 item_length.

LIST_SUFFIX (str): 시퀀스로 생성되는 필드 이름의 접미사입니다. 예를 들어 항목 ID 이름이 이면 item_id해당 항목 ID 시퀀스가 ​​호출됩니다 . 기본값은 .item_id + LIST_SUFFIX_list

MAX_ITEM_LIST_LENGTH (int): 생성된  시퀀스의 최대 길이입니다. 기본값은 50.

POSITION_FIELD (str): 생성된 위치 시퀀스의 필드 이름입니다. 길이 순서의 경우 k위치 순서는 입니다 range(k).  필드는  인수가 아닌 경우에만 생성됩니다 None. 기본값은 position_id.

Knowledge-based Model Needed
HEAD_ENTITY_ID_FIELD (str): 헤드 엔터티 ID 기능의 필드 이름입니다. 기본값은 head_id.

TAIL_ENTITY_ID_FIELD (str): 꼬리 엔터티 ID 기능의 필드 이름입니다. 기본값은 tail_id.

RELATION_ID_FIELD (str): 관계 ID 기능의 필드 이름입니다. 기본값은 relation_id.

ENTITY_ID_FIELD (str): 엔터티 ID의 필드 이름입니다. 이는 엔터티의 상징일 뿐이며 xxx_feat. 기본값은 entity_id.

kg_reverse_r (bool): 양방향 에지에 대한 트리플 관계를 반전할지 여부입니다. 기본값은 False.

entity_kg_num_interval (str)[A,B]: / [A,B)/ (A,B)/  같은 간격 형식이 있습니다. (A,B]여기서 A및  B간격   끝점입니다 . 해당 간격에 트리플 개수가 포함된 엔터티(머리 엔터티  꼬리 엔터티 포함) 유지됩니다. 기본값은 .A <= B[0,inf)

relation_kg_num_interval (str)[A,B]: / [A,B)/ (A,B)/  같은 간격 형식이 있습니다. (A,B]여기서 A및  B간격   끝점입니다 . 해당 간격에 트리플 수가 포함된 관계는 유지됩니다. 기본값은 .A <= B[0,inf)

Selectively Loading
load_col (dict): 키는 로드된 원자 파일의 접미사이고 값은 로드할 필드 이름 목록입니다.  접미사가 없으면 load_col해당 원자 파일이 로드되지 않습니다. 이면 존재하는 모든 원자 파일이 로드됩니다 load_col. None기본값은 .{inter: [user_id, item_id]}

unload_col (dict): 키는 로드된 원자 파일의 접미사이고 값은 로드되지 않는 필드 이름 목록입니다. load_col와  동시에 unload_col설정할 수는 없습니다. 기본값은 None.

unused_col (dict): 키는 로드된 원자 파일의 접미사이고, 값은 데이터 처리를 위해 로드되지만 모델에서는 사용되지 않는 필드 이름 목록입니다. 예를 들어 time_field시간 순서 지정에 사용될  있지만 모델은  필드를 사용하지 않습니다. 기본값은 None.

additional_feat_suffix (list): 추가 원자 파일 로드를 제어합니다. 예를 들어 에서 기능을 로드하려면 ml-100k.hello이 인수를  설정하면 됩니다 . 추가 기능의 기능은  저장됩니다 . 기본값은 .additional_feat_suffix: [hello]Dataset.feat_listNone

numerical_features (list): 상황 인식 방법에 포함할 숫자 기능입니다. 기본값은 None.

Filtering
Remove duplicated user-item interactions
rm_dup_inter (str): 중복된 사용자 항목 상호작용을 제거할지 여부입니다. time_field존재하는 경우 오름차순 inter_feat으로 정렬됩니다 . time_field그렇지 않으면 변경되지 않은 상태로 유지됩니다.  후에는 rm_dup_inter=first첫 번째 사용자 항목 상호 작용을 중복하여 유지합니다. 그렇다면 rm_dup_inter=last마지막 사용자 항목 상호 작용을 중복하여 유지합니다. 기본값은 None.

Filter by value
val_interval (dict): / / /  설정할  있는 형식  있습니다 . 해당 간격에 있는 행은 유지됩니다.  이상의 간격을 지정하려면 세미콜론으로 구분하십시오. 예를 들어, 채택될  있으며 지정된 간격에 있는 행은 유지됩니다. 기본값은 입니다 . 이는 모든 행이 유지된다는 의미입니다.{k (str): interval (str), ...}interval[A,B][A,B)(A,B)(A,B]feat[k]interval{k: "[A,B);(C,D]"}feat[k]None

Remove interation by user or item
filter_inter_by_user_or_item (bool):  경우 사용자 또는 항목이 또는  없는 True상호작용을 제거합니다 . 기본값은 .inter_featuser_featitem_featTrue

Filter by number of interactions
user_inter_num_interval (str)[A,B]: / [A,B)/ (A,B)/  같은 간격 형식이 있습니다. (A,B]여기서 A및  B간격   끝점입니다 . 해당 간격 내에 상호 작용 횟수가 있는 사용자는 유지됩니다. 기본값은 .A <= B[0,inf)

item_inter_num_interval (str)[A,B]: / [A,B)/ (A,B)/  같은 간격 형식이 있습니다. (A,B]여기서 A및  B간격   끝점입니다 . 상호 작용 횟수가 해당 간격 내에 있는 항목은 유지됩니다. 기본값은 .A <= B[0,inf)

Preprocessing
alias_of_user_id (list):  사용하여 동일한 색인 시스템으로 다시 매핑될 필드 이름 목록입니다 USER_ID_FIELD. 기본값은 None.

alias_of_item_id (list):  사용하여 동일한 색인 시스템으로 다시 매핑될 필드 이름 목록입니다 ITEM_ID_FIELD. 기본값은 None.

alias_of_entity_id (list):   사용하여 동일한 색인 시스템으로 다시 매핑될 필드 이름 목록 입니다 ENTITY_ID_FIELD. 기본값은 .HEAD_ENTITY_ID_FIELDTAIL_ENTITY_ID_FIELDNone

alias_of_relation_id (list):  사용하여 동일한 색인 시스템으로 다시 매핑될 필드 이름 목록입니다 RELATION_ID_FIELD. 기본값은 None.

preload_weight (dict): 형식을 갖습니다 . 미리 로드된 가중치 행렬의   ID를 나타내는 토큰 필드입니다. 플로트형 필드입니다.    쌍은 동일한 원자 파일에 있어야 합니다.  인수는 사전 훈련된 벡터를 로드하는  사용될  있습니다. 기본값은 .{k (str): v (float)}, ...kvkvNone

normalize_field (list): 정규화할 파일 이름 목록입니다. 부동 소수점 필드만 정규화할  있습니다. 기본값은 None.

normalize_all (bool): 다음과 같은 경우 필드와 같은 모든 부동 소수점을 정규화합니다 True. 기본값은 None.

discretization (dict): 형식을 갖습니다 . 구분할 필드를 나타내는 부동 필드입니다.  이산화 전략을 각각 제어하는 ​​ 2개의 키가 있는 구성 사전입니다 .{k (str): v (dict)}, ...kvmethodbucket

method (str): float 데이터를 어떻게 구분할지 결정합니다. 이제 우리는  가지 종류의 이산화 전략을 지원합니다 . 값이 이면 데이터  동일한 거리로 이산화됩니다. 값이 이면 데이터가 로그로 분리됩니다. 기본값은 입니다 .['ED', 'LD']methodEDLDED

bucket (int): 이산화 방법이 'ED'  동일한 수의 특성을 포함하는 버킷 수입니다.

벤치마크 파일
benchmark_filename (list): 사전 분할된 사용자 항목 상호 작용 접미사 목록입니다. inter_feat의 상호 작용을 삭제하지 않는 정규화, remap-id만 적용합니다. 그런 다음 inter_feat를 benchmark_filename. 예를 들어 데이터 세트가 이고 click와 benchmark_filename같다고 가정해 보겠습니다 . , , ,  로드 하고 학습, 유효한 테스트 데이터 세트로 처리합니다. 기본값은 .['part1', 'part2', 'part3']click.part1.interclick.part2.interclick.part3.interNone

환경설정, 데이터만 했는데 많은 글이 나와서. 이 뒤의 설정부분은 한번 끊고 다시 페이지를 다시 만들어야 할것같다.원래는 그냥 혼자 개발문서를 보고 사용하고 프로젝트를 끝 내려고 했는데, 주어진 데이터에 맞게 알고리즘을 학습시키려고 했고, 그러다보니 해당 알고리즘을 실행시키기 위해서 파라미터를 좀 더 자세히 봐야할것 같아서 이렇게 하나하나 적어가면서 살펴보기로 했다.

#추천시스템 #Recbole #자기개발

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다