Skip to content

๋ฏผ์šฉ

MignonDeveloper edited this page May 30, 2021 · 22 revisions

5/30์ผ์ž ์‹คํ—˜

  1. LSTMATTN -> lr๋งŒ 1e-4์—์„œ 1e-5๋กœ ์ˆ˜์ •, clip_grad๋ฅผ 10->20์œผ๋กœ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ™˜๊ฒฝ์€ ๋‹ค ๋™์ผํ•˜๊ฒŒ ํ•œ ์ƒํƒœ์—์„œ LSTM+ATTN์œผ๋กœ ๋ชจ๋ธ๋งŒ ๋ณ€๊ฒฝํ•ด์„œ ์ง„ํ–‰
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-5
    • num_workers: 4
    • clip_grad: 20
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7836 / lb_auc: / ์ฐจ์ด
    • valid_acc: 0.7201 / lb_acc: / ์ฐจ์ด
    "0 Fold Best Valid ACC": 0.7208053691275168,
    "1 Fold Best Valid ACC": 0.7194630872483222,
    "2 Fold Best Valid ACC": 0.7217741935483871,
    "3 Fold Best Valid ACC": 0.7298387096774194,
    "4 Fold Best Valid ACC": 0.728494623655914,
    "5 Fold Best Valid ACC": 0.6975806451612904,
    "6 Fold Best Valid ACC": 0.7271505376344086,
    "7 Fold Best Valid ACC": 0.717741935483871,
    "8 Fold Best Valid ACC": 0.7190860215053764,
    "9 Fold Best Valid ACC": 0.7190860215053764,
    "Average ACC": 0.7201021144547882,
    "0 Fold Best Valid AUC": 0.7940149733854565,
    "1 Fold Best Valid AUC": 0.7981395822423925,
    "2 Fold Best Valid AUC": 0.7903639715184154,
    "3 Fold Best Valid AUC": 0.7757039071818412,
    "4 Fold Best Valid AUC": 0.7903733107741698,
    "5 Fold Best Valid AUC": 0.7640702809358264,
    "6 Fold Best Valid AUC": 0.7918058500595462,
    "7 Fold Best Valid AUC": 0.7672836204902869,
    "8 Fold Best Valid AUC": 0.7751429252885609,
    "9 Fold Best Valid AUC": 0.7899304424612222,
    "Average AUC": 0.7836828864337717
  1. GRUATTN -> ๋‹ค๋ฅธ ํ™˜๊ฒฝ์€ ๋‹ค ๋™์ผํ•˜๊ฒŒ ํ•œ ์ƒํƒœ์—์„œ GRU+ATTN์œผ๋กœ ๋ชจ๋ธ๋งŒ ๋ณ€๊ฒฝํ•ด์„œ ์ง„ํ–‰
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-5
    • num_workers: 4
    • clip_grad: 20
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7905 / lb_auc: / ์ฐจ์ด
    • valid_acc: 0.7262 / lb_acc: / ์ฐจ์ด
    "0 Fold Best Valid ACC": 0.7315436241610739,
    "1 Fold Best Valid ACC": 0.738255033557047,
    "2 Fold Best Valid ACC": 0.7311827956989247,
    "3 Fold Best Valid ACC": 0.7163978494623656,
    "4 Fold Best Valid ACC": 0.7352150537634409,
    "5 Fold Best Valid ACC": 0.6895161290322581,
    "6 Fold Best Valid ACC": 0.739247311827957,
    "7 Fold Best Valid ACC": 0.7258064516129032,
    "8 Fold Best Valid ACC": 0.7271505376344086,
    "9 Fold Best Valid ACC": 0.728494623655914,
    "Average ACC": 0.7262809410406293,
    "0 Fold Best Valid AUC": 0.7998571902543167,
    "1 Fold Best Valid AUC": 0.8169910397393378,
    "2 Fold Best Valid AUC": 0.7981349622293707,
    "3 Fold Best Valid AUC": 0.7708750496981964,
    "4 Fold Best Valid AUC": 0.8003224803511131,
    "5 Fold Best Valid AUC": 0.7663180566497301,
    "6 Fold Best Valid AUC": 0.79837772678421,
    "7 Fold Best Valid AUC": 0.7753093200740054,
    "8 Fold Best Valid AUC": 0.7898944051344691,
    "9 Fold Best Valid AUC": 0.789293495175848,
    "Average AUC": 0.7905373726090598
  1. GRUATTN -> layer=1, max_seq_len=200
    • batch size: 32
    • layer: 1
    • max_seq_len: 200
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-5
    • num_workers: 4
    • clip_grad: 20
    • scheduler: ReduceLROnPlateau(optimizer, patience=2, factor=0.85, mode="max", verbose=True)
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7963 / lb_auc: / ์ฐจ์ด
    • valid_acc: 0.7331 / lb_acc: / ์ฐจ์ด
    "0 Fold Best Valid ACC": 0.7395973154362416,
    "1 Fold Best Valid ACC": 0.7315436241610739,
    "2 Fold Best Valid ACC": 0.7365591397849462,
    "3 Fold Best Valid ACC": 0.728494623655914,
    "4 Fold Best Valid ACC": 0.7486559139784946,
    "5 Fold Best Valid ACC": 0.7029569892473119,
    "6 Fold Best Valid ACC": 0.75,
    "7 Fold Best Valid ACC": 0.7204301075268817,
    "8 Fold Best Valid ACC": 0.7405913978494624,
    "9 Fold Best Valid ACC": 0.7325268817204301,
    "Average ACC": 0.7331355993360755,
    "0 Fold Best Valid AUC": 0.8063341171039915,
    "1 Fold Best Valid AUC": 0.8101399313434572,
    "2 Fold Best Valid AUC": 0.8134673076227996,
    "3 Fold Best Valid AUC": 0.7824664763075144,
    "4 Fold Best Valid AUC": 0.8026000882121139,
    "5 Fold Best Valid AUC": 0.7773401079799651,
    "6 Fold Best Valid AUC": 0.8014349202660702,
    "7 Fold Best Valid AUC": 0.7790240518038853,
    "8 Fold Best Valid AUC": 0.7973026691433156,
    "9 Fold Best Valid AUC": 0.7938389826214723,
    "Average AUC": 0.7963948652404584
  1. GRUATTN -> scheduler: CosineAnnealingWarmupRestarts, patience: 7
    • batch size: 32
    • layer: 1
    • max_seq_len: 200
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-5
    • patience: 7
    • num_workers: 4
    • clip_grad: 20
    • scheduler: CosineAnnealingWarmupRestarts(optimizer, first_cycle=20, warmup_steps=5, cycle_mult=1.0, max_lr=args.lr, min_lr=args.lr/100, gamma=0.5)
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7983 / lb_auc: 0.7896 / ์ฐจ์ด: 0.009
    • valid_acc: 0.7325 / lb_acc: 0.7231 / ์ฐจ์ด: 0.009
    "0 Fold Best Valid ACC": 0.7355704697986577,
    "1 Fold Best Valid ACC": 0.7409395973154362,
    "2 Fold Best Valid ACC": 0.7432795698924731,
    "3 Fold Best Valid ACC": 0.728494623655914,
    "4 Fold Best Valid ACC": 0.7365591397849462,
    "5 Fold Best Valid ACC": 0.706989247311828,
    "6 Fold Best Valid ACC": 0.7432795698924731,
    "7 Fold Best Valid ACC": 0.7325268817204301,
    "8 Fold Best Valid ACC": 0.7298387096774194,
    "9 Fold Best Valid ACC": 0.728494623655914,
    "Average ACC": 0.7325972432705492,
    "0 Fold Best Valid AUC": 0.8052810755449129,
    "1 Fold Best Valid AUC": 0.808067143771455,
    "2 Fold Best Valid AUC": 0.8152239129649039,
    "3 Fold Best Valid AUC": 0.7842050095781978,
    "4 Fold Best Valid AUC": 0.806989002407757,
    "5 Fold Best Valid AUC": 0.774456305697497,
    "6 Fold Best Valid AUC": 0.8072225288291167,
    "7 Fold Best Valid AUC": 0.7838083950046254,
    "8 Fold Best Valid AUC": 0.8009815046364891,
    "9 Fold Best Valid AUC": 0.7974073350270341,
    "Average AUC": 0.798364221346199

feedback

1. ํ˜„์žฌ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•(seed42, kfold=10)์˜ lb์™€ val ์‚ฌ์ด์˜ ์œ ์˜๋ฏธํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  validation ์ „๋žต ๊ณ ๋ฏผ
    - ํ™•์‹คํžˆ ์ง€๊ธˆ์˜ ๋ฐฉ๋ฒ•์—๋Š” ์ถฉ๋ถ„ํžˆ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ! ์•„์ง์€ ์ฐจ์ด๊ฐ€ 0.009์ •๋„ ๋‚˜ํƒ€๋‚˜๋‹ˆ ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค
    - ํ•˜์ง€๋งŒ ์ง€๊ธˆ์˜ validation ์ „๋žต์ƒ์—์„œ validation์˜ ์ ์ˆ˜๊ฐ€ ์˜ค๋ฅด๋ฉด lb์ƒ์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ๊ฐ™์ด ๋งŽ์ด ์˜ฌ๋ผ๊ฐ€๋‹ˆ ๊ดœ์ฐฎ๋‹ค! ํ•˜์ง€๋งŒ ๊ณ„์† ๊ณ ๋ฏผํ•  ๊ฒƒ!
2. discussion์— ์˜ฌ๋ผ์˜จ ๋‚ด๊ฐ€ ๋งก์€ ๋‹ค๋ฅธ feature ์ถ”๊ฐ€
3. ์ •๋‹ต๋ฅ ์— ๊ฐ€์ค‘์น˜๋ฅผ ๋‘ฌ์„œ user์˜ ์‹ค๋ ฅ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ์กฐ๊ธˆ ๋” ๊ณ ๋ฏผ์ด ํ•„์š”ํ•ด๋ณด์ธ๋‹ค@@ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜คํžˆ๋ ค valid score๊ฐ€ ํ•˜๋ฝํ•จ

5/29์ผ์ž ์‹คํ—˜

  1. LSTM

    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-4
    • categorical feature: "testId", "knowledgeTag", "assessmentItemID", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature: ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7967 / lb_auc: 0.7559 / 0.04 ์ฐจ์ด -> ๋” ์ •ํ™•ํ•œ validation์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค ใ…œ
    • valid_acc: 0.7209 / lb_acc: 0.6801 / 0.04 ์ฐจ์ด
  2. LSTM Ensemble

    • ์œ„์™€ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹คํ—˜์„ ํ•˜์˜€์œผ๋ฉฐ, sklearn์˜ kfold๋กœ 10๋“ฑ๋ถ„์„ ํ–ˆ์œผ๋ฉฐ soft voting์„ ํ†ตํ•œ ์•™์ƒ๋ธ”์„ ์ง„ํ–‰
    • cv_auc(ํ‰๊ท ): 0.7652 / lb_auc: 0.7557 / 0.01 ์ฐจ์ด
    • cv_acc(ํ‰๊ท ): 0.7117 / lb_acc: 0.6774 / 0.04 ์ฐจ์ด
  3. LSTM Ensemble

    • kfold: 10
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-4
    • scheduler: Plateau, patience=2, factor=0.85
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(2): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7671 / lb_auc: 0.7609 / 0.0062 ์ฐจ์ด -> ์—ฅ ์ค„์–ด๋“ค์—ˆ๋„ค ใ…‹ใ…‹
    • valid_acc: 0.7093 / lb_acc: 0.6989 / 0.01 ์ฐจ์ด
  4. LSTM Ensemble with train & test dataset (3๋ฒˆ๊ณผ ๋™์ผํ•œ๋ฐ dataset์„ ์ „์ฒด๋กœ ๋Š˜๋ ค๋ดค๋Š”๋Ž… ์˜คํžˆ๋ ค ์กฐ๊ธˆ ๋–จ์–ด์ง€๋„ค) ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž˜๋ชป ํ–ˆ๋‹น,, inferenceํ•˜๊ธฐ ์ „์— ํ•™์Šต์„ ํ†ตํ•ด ์ƒ์„ฑํ•œ feature๋ฅผ ๊ฐ€์ ธ์™”์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์‹ค์ˆ˜๋กœ test dataset์—์„œ ๋ฝ‘์•„๋‚ด๋ฒ„๋ ธ๋‹ค,, ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ด์•ผํ• ๋“ฏ ใ…œใ…œ)

    • kfold: 10
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-4
    • scheduler: Plateau, patience=2, factor=0.85
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(2): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7618 / lb_auc: 0.7577 / 0.0041 ์ฐจ์ด -> ์ค„๊ธด ํ–ˆ๋Š”๋ฐ ์ ์ˆ˜๊ฐ€ ์ค„์—ˆ๋„น
    • valid_acc: 0.7069 / lb_acc: 0.6694 / 0.027 ์ฐจ์ด
  5. LSTM Ensemble

    • kfold: 10
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-4
    • scheduler: Plateau, patience=2, factor=0.85
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7691 / lb_auc: 0.7611 / ์ฐจ์ด: 0.008
    • valid_acc: 0.7114 / lb_acc: 0.6774 / ์ฐจ์ด: 0.034
  6. LSTM Ensemble with train & test dataset (5๋ฒˆ๊ณผ ๋™์ผํ•œ๋ฐ dataset์„ ์ „์ฒด๋กœ ๋Š˜๋ฆฐ ๊ฒƒ!)

    • kfold: 10
    • batch size: 32
    • layer: 2
    • max_seq_len: 100
    • hidden_dim: 512
    • seed: 42
    • lr: 1e-4
    • scheduler: Plateau, patience=2, factor=0.85
    • categorical feature(4): "testId", "knowledgeTag", "assessmentItemID_post3", ๊ฐ™์€ ์‹œํ—˜์ง€๋ฅผ ๋ช‡๋ฒˆ์งธ ๋งŒ๋‚˜๋Š”์ง€
    • continuous feature(3): ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” ์‹œํ—˜์ง€์˜ ์ „์ฒด ์ •๋‹ต๋ฅ , ํ’€๊ณ ์žˆ๋Š” knowledgeTag์˜ ์ „์ฒด ์ •๋‹ต๋ฅ 
    • valid_auc: 0.7619 / lb_auc: 0.7612 / ์ฐจ์ด: 0.0007
    • valid_acc: 0.7047 / lb_acc: 0.6828 / ์ฐจ์ด: 0.0219
    • fold๋ณ„ ์ ์ˆ˜ -> ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํžˆ ๋น„์Šทํ•˜๊ฒŒ ๋‚˜์˜ค๋„ค์š”!
    "0 Fold Best Valid ACC": 0.7181208053691275,
    "1 Fold Best Valid ACC": 0.7087248322147651,
    "2 Fold Best Valid ACC": 0.7056451612903226,
    "3 Fold Best Valid ACC": 0.6989247311827957,
    "4 Fold Best Valid ACC": 0.7056451612903226,
    "5 Fold Best Valid ACC": 0.6895161290322581,
    "6 Fold Best Valid ACC": 0.7150537634408602,
    "7 Fold Best Valid ACC": 0.6908602150537635,
    "8 Fold Best Valid ACC": 0.7083333333333334,
    "9 Fold Best Valid ACC": 0.706989247311828,
    "Average ACC": 0.7047813379519376,
    "0 Fold Best Valid AUC": 0.7751395640696451,
    "1 Fold Best Valid AUC": 0.777768080525979,
    "2 Fold Best Valid AUC": 0.7647522319008204,
    "3 Fold Best Valid AUC": 0.7428344236816424,
    "4 Fold Best Valid AUC": 0.7715884687967723,
    "5 Fold Best Valid AUC": 0.7452858144392487,
    "6 Fold Best Valid AUC": 0.773194004705609,
    "7 Fold Best Valid AUC": 0.7403771103145236,
    "8 Fold Best Valid AUC": 0.765053231087244,
    "9 Fold Best Valid AUC": 0.763251036848848,
    "Average AUC": 0.7619243966370333

feedback

1. <s>์œ ๋ผ๊ฐ€ ๋งŒ๋“ค์–ด์ค€ train + test dataset ํ™œ์šฉํ•ด์„œ ๋” ์ •ํ™•ํ•œ feature ๋งŒ๋“ค๊ธฐ</s>
2. ๋” ์ •ํ™•ํ•œ validation์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž. (๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ๋งž์ถ˜ ์‚ฌ๋žŒ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ๋‚˜๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ด๋Š”๋ฐ!)
3. testid, knowledgeTag, assessmentItem์„ ์กฐ๊ธˆ ๋” ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ / ๋˜๋Š” categorical ์ „์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ
     - assessmentItem์˜ ๊ตฌ์กฐ๊ฐ€ ์‹œํ—˜์ง€ id + ๋ฌธํ•ญ๋ฒˆํ˜ธ ์ด๋ฏ€๋กœ ๊ตณ์ด ์•ž์— ๊ฒƒ์„ ์‚ด๋ฆดํ•„์š” ์—†๋‹ค -> ์ฆ‰, ๋’ค์˜ 3์ž๋ฆฌ ๋ฌธํ•ญ๋ฒˆํ˜ธ๋งŒ ์ œ๊ณตํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ž.
4. discussion์— ์˜ฌ๋ผ์˜จ ๋‚ด๊ฐ€ ๋งก์€ ๋‹ค๋ฅธ feature ์ถ”๊ฐ€