구성설정
모든 구성설정에는 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 #자기개발