[Model] 구현된 모델 실행하는 방법 #79
bohyunshin
started this conversation in
Show and tell
Replies: 1 comment 6 replies
Rank 모델 실행 방법
name: lightgbm
model_path: res/models/
results: lgb_ranker
params:
objective: lambdarank
boosting_type: gbdt
metric: map
ndcg_at:
- 10
- 15
- 20
bagging_freq: 5
bagging_fraction: 0.8
feature_fraction: 0.8
learning_rate: 0.05
max_depth: -1
num_leaves: 16
verbose: -1
n_jobs: -1
early_stopping_rounds: 100
num_boost_round: 10000
verbose_eval: 100
seed: 42
$ python src/train_ranker.py models=lightgbm \
models.results=본인이 만들고 싶은 파일명 |
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
이 discussion에서는 레포에 구현된 모델을 실행하는 방법을 기록합니다. 현위치는 레포의 최상단 (root)에 있다고 가정합니다.
$ pwd /Users/personal/yamyam-labembedding 모델 실행하기
사용되는 파라미터는 이 코드에 정의되어 있습니다.
임베딩 기반 모델은 현재 node2vec, metapath2vec, graphsage이 구현되어 있습니다. 두 모델은
src/train_embedding.py에서main함수를 실행함으로써 학습할 수 있습니다. 각 모델이 사용하는 파라미터는 위 표의Belongs to칼럼에서 확인하실 수 있습니다. 대부분의 파라미터를 공유하고 모델별로 특수하게 사용하는 파라미터는 구분해뒀습니다.모델별로 변화할 수 있는 파라미터는 argparse로, 비교적 고정되어 사용될 것 같은 파라미터는
config/embedding에 yaml 파일로 관리하고 있어요.config/embedding/node2vec.yamlconfig/embedding/metapath2vec.yamlconfig/embedding/graphsage.yaml전처리, 피쳐엔지니어링, 저장할 파일 이름 등 값이 잘 변하지 않은 파라미터를 모아뒀습니다. 파일 보시면 이해가 빠르실 거에요~
공통 주의 사항
--test파라미터를 넣는 것을 추천드립니다.--test파라미터를 추가했으니 참고 부탁드려요.result/{test}/{model}/{dt}디렉토리에 결과가 저장됩니다.--test값이 true라면result/test/{model}/{dt}디렉토리에, false라면result/untest/{model}/{dt}디렉토리에 결과가 저장됩니다.dt는 실험을 진행할 당시의 datetime 입니다. 실험을 많이 진행하게될 것 같아서 versioning을 datetime으로 하면 좋다고 생각했어요.batch_size는 하나의 배치에 들어가는 노드의 수인데 실제로는 이것보다 더 많은 수의 노드가 하나의 batch gradient descent에서 사용됩니다.batch_size을 너무 많이 늘리면 하나의 batch에서 처리해야하는 노드가 매우 많아질 수 있습니다.num_neighbor_samples파라미터까지 고려해야하기 때문에 관련된 파라미터를 작게 설정할 필요가 있을 것 같습니다.batch_size x walks_per_node x batch_size x walk_length개batch_size x walks_per_node x batch_size x num_negative_samples개batch_size x walks_per_node x batch_size x metapath의 길이개batch_size x walks_per_node x batch_size x num_negative_samples개batch_size x walks_per_node x batch_size x walk_length x num_neighbor_samples개batch_size x walks_per_node x batch_size x num_negative_samples x num_neighbor_samples개파이프라인을 돌리면 output으로 얻게 되는 결과물
logger을 통해서 기록한 로그입니다.node2vec 실행하기
node2vec 예시 실행 command는 다음과 같습니다.
참고하면 좋을 몇가지 팁이에요.
weighted_edge파라미터가 on 된다면, 좀 더 많은 정보를 활용해서 결과가 좋아질줄 알았는데 꼭 그런것은 아니었습니다. 물론 정성평가나 다른 metric을 보면 다를수도 있을 것 같습니다.metapath2vec 실행하기
metapath2vec 예시 실행 command는 다음과 같습니다.
$ poetry run python3 src/yamyam_lab/train.py \ --model metapath2vec \ --device cpu \ --batch_size 128 \ --embedding_dim 32 \ --epochs 5 \ --walks_per_node 10 \ --use_metadata \ --category_column_for_meta diner_category_large \ --meta_path "user,diner,user,diner,user,diner;user,diner,category,diner,user" \ --num_negative_samples 6 \ --weighted_edge \ --test참고하면 좋을 몇가지 팁이에요.
category_column_for_meta칼럼과 h3_index을 결합하여 메타를 생성합니다.category_column_for_meta가diner_category_large일 때, 또는diner_category_middle일 때, 그래프 의미가 살짝 다르게 정의될 것 같아요.diner_category_middle이 가장 적절하지 않을까 싶습니다.meta_path는 사용자가 직접 정의한 path이고 이 path에 따라서 sequence가 생성됩니다.user,diner,user,diner,user,diner로 정의한 path는 유저와 동일한 식당을 방문한 다른 유저의 방문 식당을 유저의 취향에 반영하겠다는 의도입니다.user,diner,category,diner,user로 정의한 path는 유저가 방문한 식당의 카테고리를 가지는 인근 다른 식당을 유저의 취향에 반영하겠다는 의도입니다.grpahsage 학습하기
graphsage 예시 실행 command는 다음과 같습니다.
참고하면 좋을 몇가지 팁이에요.
walks_per_node,walk_length,num_negavie_samples을 node2vec에서 하던 것과 비슷하게 설정하면 훈련하는데 매우 오래 걸릴 수 있습니다. 위의공통 주의 사항을 참고해주세요.svd_bias 실행하기
bias을 포함한 singular value decomposition은 netflix에서 주최한 대회(paper)에서 사용된 매우 유명한 알고리즘 입니다. baseline으로 많이 사용되는 것으로 알고 있습니다. 유저$u$ 가 아이템 $i$ 에 준 평점이 $r_{ui}$ 으로 주어질 때, $\hat{r}_{ui}$ 을 아래와 같이 정의합니다.
svd_bias 모델을 학습하기 위해서 아래의 명령어를 실행해주세요.
All reactions