Skip to content

jiho-kang/NLP_RecSys_Project

Repository files navigation

๋น„๊ณ : ๊ธฐ์—… ํ˜‘์—… ํ”„๋กœ์ ํŠธ

๋ชฉ์ฐจ

1. ํ”„๋กœ์ ํŠธ ์ œ๋ชฉ
2. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
3-1. ํ”„๋กœ์ ํŠธ ๋ฐฉ๋ฒ•๋ก  - ํƒœ๊น…๋ชจ๋ธ
3-2. ํ”„๋กœ์ ํŠธ ๋ฐฉ๋ฒ•๋ก  - ์ถ”์ฒœ๋ชจ๋ธ
4-1. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ ๋ฐ ๋ณด์  - ํƒœ๊น…๋ชจ๋ธ
4-2. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ ๋ฐ ๋ณด์™„์  - ์ถ”์ฒœ๋ชจ๋ธ
5. ํšŒ๊ณ 
6. Next step after lesson learned

1. ํ”„๋กœ์ ํŠธ ์ œ๋ชฉ

KoBERT๋ฅผ ์ด์šฉํ•œ context ํƒœ๊น… ์ถ”์ถœ & ๊ฐœ์ธ-์ •์ฑ… ๋งค์นญ์„ ์œ„ํ•œ ์ถ”์ฒœ์‹œ์Šคํ…œ ๊ตฌ์ถ•


2. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

<๊ตฌ์„ฑ์›>

  • ๊ฐ•์ง€ํ˜ธ
  • ์ด๋‚จ์ค€

<๊ธฐ๊ฐ„>

  • 2021.12.27 - 2022.01.19 (4์ฃผ)

<๋ฐฐ๊ฒฝ>

  • ๋Œ€ํ•œ๋ฏผ๊ตญ์—๋Š” ์ˆ˜๋งŽ์€ ์ •์ฑ…์ด ์žˆ์Œ์—๋„, ์ •์ฑ… ๋Œ€์ƒ์ž๋“ค์€ ํ•ด๋‹น ์ •์ฑ…์˜ ์กด์žฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ณ , ๊ธฐ๊ด€์ž…์žฅ์—์„œ๋Š” ์ •์ฑ… ๋Œ€์ƒ์ž๋ฅผ ์„ ๋ณ„ํ•˜์—ฌ ํ™๋ณดํ•˜๋Š” ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.
  • ๋Œ€ํ•œ๋ฏผ๊ตญ ์ •์ฑ…/์‚ฌ์—… ๊ณต๊ณ ๋ฌธ context์—์„œ ์ •์ฑ…์˜ ํŠน์„ฑ์„ ์ž๋™์œผ๋กœ ์ถ”์ถœํ•˜๊ณ , ๊ฐœ์ธ์˜ ํ”„๋กœํ•„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์ฑ…์„ ์ถ”์ฒœํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ ๋‹ค.

<๋ฐ์ดํ„ฐ>

  • ์›ฐ๋กœ๋กœ๋ถ€ํ„ฐ ์ œ๊ณต๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•จ.

  • USER (2๋งŒ๊ฐœ)

    ์„ฑ๋ณ„, ๋‚˜์ด, ๊ฑฐ์ฃผ์ง€์—ญ(์‹œ๋„, ์‹œ๊ตฐ๊ตฌ), ๊ด€์‹ฌ์ง€์—ญ(์‹œ๋„, ์‹œ๊ตฐ๊ตฌ), ํ•™๋ ฅ, ์ง์žฅ, ๊ฐ€๊ตฌ์› ์œ ํ˜•, ๊ฒฐํ˜ผ, ์ž๋…€, ์ž๋…€ ์ˆ˜, ์ž๋…€ ์ •๋ณด, ํŠน์ˆ˜์ƒํ™ฉ, ๊ด€์‹ฌ์ƒํ™ฉํŠน์„ฑ, ์žฅ์•  ์ƒํ™ฉ, ๋ณดํ›ˆ๋Œ€์ƒ ์ƒํ™ฉ, ์˜ˆ์ • ์ƒํ™ฉ, ์†Œ๋“ ์ •๋ณด, ๊ด€์‹ฌ ์ •์ฑ…

  • POLICY (8.8๋งŒ๊ฐœ)

    ์ •์ฑ…ID, ์ •์ฑ…์„œ๋น„์ŠคID, ์„œ๋น„์Šค๋ช…, ์†Œ๊ด€๊ธฐ๊ด€, ์†Œ๊ด€๊ธฐ๊ด€์œ ํ˜•, ์ƒ์• ์ฃผ๊ธฐ, ์‹ ์ฒญ์ ˆ์ฐจ, ์„ ์ •๊ธฐ์ค€, ์ง€์›์œ ํ˜•, ์„œ๋น„์Šค๋ชฉ์ , ์ง€์›๋‚ด์šฉ, ์ง€์›๋Œ€์ƒ


3-1. ํ”„๋กœ์ ํŠธ ๋ฐฉ๋ฒ•๋ก  - ํƒœ๊น…๋ชจ๋ธ

  • user์—์„œ ์ถ”์ถœํ•  ํƒœ๊ทธ feature (13๊ฐœ)
    : ์„ฑ๋ณ„, ๋‚˜์ด, ์‹œ๋„, ์‹œ๊ตฐ๊ตฌ, ํ•™๋ ฅ, ์ง์žฅ, ๊ฐ€๊ตฌ์› ์œ ํ˜•, ๊ฒฐํ˜ผ, ์ž๋…€, ์ž๋…€์ƒ์„ธ, ๋Œ€์ƒํŠน์„ฑ, ๊ด€์‹ฌ์ƒํ™ฉํŠน์„ฑ, ์ค‘์œ„์†Œ๋“, ๊ด€์‹ฌ์ •์ฑ…

  • policy์—์„œ ์ถ”์ถœํ•  ํƒœ๊ทธ feature (20๊ฐœ)
    : ์ •์ฑ…ID, ์ •์ฑ…์„œ๋น„์ŠคID, ์„œ๋น„์Šค๋ช…, ์†Œ๊ด€๊ธฐ๊ด€, ์†Œ๊ด€๊ธฐ๊ด€์œ ํ˜•, ์ƒ์• ์ฃผ๊ธฐ, ์‹ ์ฒญ์ ˆ์ฐจ, ์„ ์ •๊ธฐ์ค€, ์ง€์›์œ ํ˜•, ์„œ๋น„์Šค๋ชฉ์ , ์ง€์›๋‚ด์šฉ, ์ง€์›๋Œ€์ƒ

A. ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ label ์ƒ์„ฑ (filtering_smilarity_code.ipynb)

  • ๋ฐฉ๋ฒ•

    1. feature๋ณ„๋กœ ์นดํ…Œ๊ณ ๋ฆฌ์˜ class๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์„ค์ •
    2. context์— ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ n๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ class ์ถ”์ถœ
    # example
    if sum(text.count(x) for x in ['์ž„์‹ ', '์ž„์‚ฐ๋ถ€', '์ถœ์‚ฐ']) >= 3:
      text_tag.append('์—ฌ์„ฑ')
  • ๋ฐฉ๋ฒ•๋ก  ์„ ์ • ์ด์œ 

    1. ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ ํ•™์Šต์— ํ•„์š”ํ•œ label๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๋ผ๋ฒจ์„ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•จ.
    2. ์ •์ฑ… ๋„๋ฉ”์ธ์— ๋งž๋Š” ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ฐœ์ฒด๋ช… ์ธ์‹๊ธฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ์กด์žฌํ•˜๋Š” ๊ฐœ์ฒด๋ช… ์ธ์‹๊ธฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์–ด๋ ค์šด ์ผ.
      ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ์€ context ์† ํƒœ๊น… ์ถ”์ถœ๊ณผ ์ถ”์ฒœ ๋ชจ๋ธ ๊ตฌ์ถ•์ด๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ๊ณผ if๋ฌธ์œผ๋กœ ํƒœ๊ทธ ์ถ”์ถœํ•˜์—ฌ label์„ ์ƒ์„ฑํ•จ.
    3. ๋ฒ ์ด์Šค๋ผ์ธ ๋ชจ๋ธ๋กœ์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.

B. ์ถ”์ถœ๋œ label ๊ธฐ๋ฐ˜ KoBERT ํ•™์Šต (Pytorch) (KoBERT_tagging_model.ipynb)

  • ๋ฐฉ๋ฒ•

    1. ์ถ”์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ํƒœ๊น…๊ฐ’๊ณผ ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๋ฅผ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟˆ.

      # example
      word = ['์ž„์‹ ', '์ž„์‚ฐ๋ถ€', '์ถœ์‚ฐ']
      tag = '์—ฌ์„ฑ'
      df['์„ฑ๋ณ„'].apply(lambda x: re.sub(word, tag, x))
      
      # ๊ฒฐ๊ณผ
      # ์„ฑ๋ณ„ feature์˜context๊ฐ€ '์ž„์‚ฐ๋ถ€๋ฅผ ์œ„ํ•œ ์น˜๋ฃŒ๋น„ ์ง€์› ์ •์ฑ…'์ผ ๊ฒฝ์šฐ,
      #                         => '์—ฌ์„ฑ๋ฅผ ์œ„ํ•œ ์น˜๋ฃŒ๋น„ ์ง€์› ์ •์ฑ…'๋กœ ๋ณ€๊ฒฝ๋จ
    2. A์—์„œ ์ถ”์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ชจ๋ธ์˜ label๋กœ ์ฃผ๊ณ , KoBERT ์‚ฌ์šฉํ•˜์—ฌ feature๋ณ„๋กœ ํ•™์Šต.
      Bert Tokenizer๋กœ ํ† ํฐํ™” ํ›„ CrossEntropyLoss๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ํ•™์Šต

  • ๋ฐฉ๋ฒ•๋ก  ์„ ์ • ์ด์œ 

    1. ์ •์ฑ… ํ…์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ๊ณ , ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–‘๋ฐฉํ–ฅ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ KoBERT ๋ชจ๋ธ์„ ์„ ํƒ.
    2. KoBERT๋Š” ํ•œ๊ตญ์–ด ํ•™์Šต์ด ์ง„ํ–‰๋œ ๋ชจ๋ธ์ด๋ฏ€๋กœ ๊ธฐ์กด BERT์˜ ์‚ฌ์ „ํ•™์Šต๋œ bert-base-multilingual-cased ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ.
    3. context์—์„œ ํ‚ค์›Œ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•จ์œผ๋กœ์จ ์ •ํ™•๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•จ

3-2. ํ”„๋กœ์ ํŠธ ๋ฐฉ๋ฒ•๋ก  - ์ถ”์ฒœ๋ชจ๋ธ

A. ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ {filteirng_similarity_code.ipynb)

  • ๋ฐฉ๋ฒ•

    1. USER ๋ฐ์ดํ„ฐ์…‹๊ณผ POLICY ๋ฐ์ดํ„ฐ์…‹์˜ ๊ณตํ†ต๋œ feature ์ถ”์ถœ.
    2. ๋ชจ๋“  feature๋ฅผ One-Hot์œผ๋กœ ๋งŒ๋“ค์–ด์„œ np.array(USER * feature) X np.array(feature * POLICY) ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ๊ณ  ์ ์ˆ˜์˜ ์ •์ฑ…์„ ์ถ”์ฒœ.
  • ๋ฐฉ๋ฒ•๋ก  ์„ ์ • ์ด์œ 

    1. ์ •์ฑ…์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋งค์šฐ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— 1์ฐจ์ ์œผ๋กœ basicํ•œ ์œ ์‚ฌ๋„ ๋ชจ๋ธ์„ ํ†ตํ•ด ๊ณ ๊ฐ์ด ๊ด€์‹ฌ์„ ๊ฐ€์งˆ๋งŒํ•œ ์ •์ฑ…์„ ์„ ๋ณ„ํ•˜๊ธฐ ์œ„ํ•จ.
    2. CF๋‚˜ CB๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์œ ์ €๊ฐ€ ๊ฒฝํ—˜ํ•œ ์ •์ฑ…์˜ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ.
    3. ํ”ผ์ฒ˜๋ณ„๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ค„ ์ˆ˜ ์žˆ์Œ.

B. Wide & Depp ๊ธฐ๋ฐ˜ ์ถ”์ฒœ {filteirng_similarity_code.ipynb)

  • ๋ฐฉ๋ฒ•

    1. label: ์œ ์ €๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์ •์ฑ…(์ค‘๋ณต๊ฐ€๋Šฅ 11๊ฐœ)๊ณผ ์œ ์ € ํƒœ๊ทธ๊ฐ€ ์ •์ฑ…๋ฐ์ดํ„ฐ ํŠน์„ฑ๊ณผ์˜ ์ผ์น˜์—ฌ๋ถ€์— ๋”ฐ๋ผ 1,0์œผ๋กœ ๋ถ€์—ฌ.

      • ์œ ์ €์™€ ์ •์ฑ… ๋ฐ์ดํ„ฐ์…‹์˜ '์„ ํ˜ธ์ •์ฑ…'์„ One Hot Encoding ํ•˜์—ฌ ์ •์ฑ… ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ € ์„ ํ˜ธ์ •์ฑ…(์ค‘๋ณต ์„ ํƒ ์ค‘) ํ•œ๊ฐœ๋ผ๋„ ํฌํ•จ๋  ๊ฒฝ์šฐ.
      • ์œ ์ €์™€ ์ •์ฑ… ๋ฐ์ดํ„ฐ์…‹์˜ ์ค‘์š”ํƒœ๊ทธ(๋Œ€์ƒํŠน์„ฑ, ์ง์žฅ, ๊ฐ€๊ตฌ์› ๋“ฑ)๊ฐ€ ๋ชจ๋‘ ๋ถ€ํ•ฉํ•  ๊ฒฝ์šฐ.
      • ์œ„ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด(๊ด€์‹ฌ์ •์ฑ… & ์ค‘์š”ํƒœ๊ทธ) ์ผ์น˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ผ๋ฒจ 1 ๋˜๋Š” 0์œผ๋กœ ๋ถ€์—ฌ.
    2. train

      • wide part(w/ cross product transformation) & deep part input ์ง„ํ–‰ ๋ฐ ํ•™์Šต.
    3. recommendation

      • ํŠน์ • ์œ ์ €์˜ ํŠน์„ฑ๊ณผ ์ „์ฒด ์ •์ฑ…์˜ ํŠน์„ฑ ์กฐํ•ฉ์— ๋Œ€ํ•œ label์„ ์˜ˆ์ธก.
      • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜์˜ ์ •์ฑ… 5๊ฐœ ~10๊ฐœ ์ถ”์ฒœ ์ง„ํ–‰.
    4. ์ ์€ ์ƒ˜ํ”Œ๋กœ ํ…Œ์ŠคํŠธ ํ›„ True์— ๋Œ€ํ•œ f1-score๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ฒŒ ๋‚˜์™€์„œ ํ•„์š” ํŠน์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ›„ ๊ตฐ์ง‘ ๋ณ„ ํ‘œ๋ณธ์ถ”์ถœ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

      • before

        """
        _x: ์œ ์ € ๋ฐ์ดํ„ฐ ํŠน์„ฑ
        _y: ์ •์ฑ… ๋ฐ์ดํ„ฐ ํŠน์„ฑ
        ๋‘ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ 1์ด ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•œ crossed_cols ์„ค์ •
        """
        # wide part ํŠน์„ฑ
        wide_cols = ['์„ฑ๋ณ„_x', '์ž๋…€_x', 'mb_10+๋Œ€์ƒํŠน์„ฑ', 'mb_11+๊ด€์‹ฌ์ƒํ™ฉํŠน์„ฑ','๋Œ€์ƒํŠน์„ฑ', '๋Œ€์ƒํŠน์„ฑ์ƒ์„ธ',
               '์†Œ๊ด€๊ธฐ๊ด€์œ ํ˜•', '์ง€์›์œ ํ˜•', '์ง€์›์œ ํ˜•์ƒ์„ธ', '์‹ ์ฒญ์ ˆ์ฐจ', '์„ฑ๋ณ„_y','์ž๋…€_y']
        
        # wide part์˜ cross layer ์„ค์ •
        crossed_cols = (['์„ฑ๋ณ„_x', '์„ฑ๋ณ„_y'], ['์ž๋…€_x', '์ž๋…€_y'], ['mb_10+๋Œ€์ƒํŠน์„ฑ','๋Œ€์ƒํŠน์„ฑ'])
        
        # deep part ํŠน์„ฑ
        embedding_cols = ['์„ฑ๋ณ„_x', '์ž๋…€_x', 'mb_10+๋Œ€์ƒํŠน์„ฑ', 'mb_11+๊ด€์‹ฌ์ƒํ™ฉํŠน์„ฑ','๋Œ€์ƒํŠน์„ฑ', '๋Œ€์ƒํŠน์„ฑ์ƒ์„ธ',
                          '์†Œ๊ด€๊ธฐ๊ด€์œ ํ˜•', '์ง€์›์œ ํ˜•', '์ง€์›์œ ํ˜•์ƒ์„ธ', '์‹ ์ฒญ์ ˆ์ฐจ', '์„ฑ๋ณ„_y','์ž๋…€_y']
        cont_cols = ['๋‚˜์ด','๋Œ€์ƒ์—ฐ๋ น์‹œ์ž‘','๋Œ€์ƒ์—ฐ๋ น๋']
        # ์˜ˆ์ธก ๊ฒฐ๊ณผ
                      precision    recall  f1-score   support
        
               False       0.93      0.76      0.84     17132
                True       0.32      0.67      0.43      2868
        
            accuracy                           0.75     20000
           macro avg       0.63      0.72      0.64     20000
        weighted avg       0.84      0.75      0.78     20000
        
        
      • after

        # wide part ํŠน์„ฑ
        wide_cols = [ '์„ฑ๋ณ„_x', 'ํ•™๋ ฅ_x', '์ง์žฅ_x', '๊ฒฐํ˜ผ_x',
                      ' ๋†์ถ•์ˆ˜์‚ฐ์ธ', 'ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ_x', '์‹œ๋„_x', 'ํ•œ๋ถ€๋ชจ๊ฐ€์ •/์กฐ์†๊ฐ€์ •_x', '๊ตญ๊ฐ€์œ ๊ณต์ž_x', '๋ถํ•œ์ดํƒˆ์ฃผ๋ฏผ_x',
                      '์งˆ๋ณ‘/๋ถ€์ƒ/์งˆํ™˜์ž_x', '์žฅ์• ์ธ_x', '๋‹ค๋ฌธํ™”๊ฐ€์กฑ_x', '๋‹ค์ž๋…€๊ฐ€์ •_x', '๋ฌธํ™”์ƒํ™œ ์ง€์›_x', '์ฃผํƒ-๋ถ€๋™์‚ฐ ์ง€์›_x', '๊ด€์‹ฌ์ •์ฑ…์—†์Œ', '๊ทผ๋กœ์ž ์ง€์›_x',
                      '์˜๋ฃŒ ์ง€์›_x', '๋ณด์œก์ง€์›(๋งŒ0~7์„ธ)', '๊ฐœ์ธ๊ธˆ์œต์ง€์›_x', '๊ต์œก์ง€์›(๋งŒ8~19์„ธ)', '์„ฑ์ธ๊ต์œก์ง€์›_x',
                      '๊ธฐ์—…๊ธˆ์œต์ง€์›_x', '์ทจ์—… ์ง€์›_x', '์ฐฝ์—… ์ง€์›_x', '์‹œ๋„_y',
                      '์ง€์›์œ ํ˜•', 'ํ•™๋ ฅ_y', '์„ฑ๋ณ„_y', '๊ฒฐํ˜ผ_y', '์ง์žฅ_y','์งˆ๋ณ‘/๋ถ€์ƒ/์งˆํ™˜์ž_y', '๊ตญ๊ฐ€์œ ๊ณต์ž_y',
                      'ํ•œ๋ถ€๋ชจ๊ฐ€์ •/์กฐ์†๊ฐ€์ •_y', '๋‹ค์ž๋…€๊ฐ€์ •_y', 'ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ_y', '๋‹ค๋ฌธํ™”๊ฐ€์กฑ_y', '๋ถํ•œ์ดํƒˆ์ฃผ๋ฏผ_y', '๋†์ถ•์ˆ˜์‚ฐ์ธ',
                      '์žฅ์• ์ธ_y', '๊ฐœ์ธ๊ธˆ์œต์ง€์›_y', '๋ฌธํ™”์ƒํ™œ ์ง€์›_y', '์ทจ์—… ์ง€์›_y', '์ฐฝ์—… ์ง€์›_y', '๊ต์œก์ง€์›(8~19์„ธ)',
                      '์˜๋ฃŒ ์ง€์›_y', '๋ณด์œก์ง€์›(0~7์„ธ)', '์ฃผํƒ-๋ถ€๋™์‚ฐ ์ง€์›_y', '์„ฑ์ธ๊ต์œก์ง€์›_y', '๊ธฐ์—…๊ธˆ์œต์ง€์›_y',
                      '๊ทผ๋กœ์ž ์ง€์›_y']
        
        # deep part ํŠน์„ฑ
        crossed_cols = (['์„ฑ๋ณ„_x', '์„ฑ๋ณ„_y'], ['๊ฒฐํ˜ผ_x', '๊ฒฐํ˜ผ_y'])
        
        embedding_cols = ['์‹œ๋„_x', 'ํ•™๋ ฅ_x', '์ง์žฅ_x', '๊ฒฐํ˜ผ_x',
                      ' ๋†์ถ•์ˆ˜์‚ฐ์ธ', 'ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ_x', 'ํ•œ๋ถ€๋ชจ๊ฐ€์ •/์กฐ์†๊ฐ€์ •_x', '๊ตญ๊ฐ€์œ ๊ณต์ž_x', '๋ถํ•œ์ดํƒˆ์ฃผ๋ฏผ_x','์งˆ๋ณ‘/๋ถ€์ƒ/์งˆํ™˜์ž_x', '์žฅ์• ์ธ_x', '๋‹ค๋ฌธํ™”๊ฐ€์กฑ_x', '๋‹ค์ž๋…€๊ฐ€์ •_x',
                      '๋ฌธํ™”์ƒํ™œ ์ง€์›_x', '์ฃผํƒ-๋ถ€๋™์‚ฐ ์ง€์›_x', '๊ด€์‹ฌ์ •์ฑ…์—†์Œ', '๊ทผ๋กœ์ž ์ง€์›_x','์˜๋ฃŒ ์ง€์›_x', '๋ณด์œก์ง€์›(๋งŒ0~7์„ธ)', '๊ฐœ์ธ๊ธˆ์œต์ง€์›_x', '๊ต์œก์ง€์›(๋งŒ8~19์„ธ)', '์„ฑ์ธ๊ต์œก์ง€์›_x','๊ธฐ์—…๊ธˆ์œต์ง€์›_x', '์ทจ์—… ์ง€์›_x', '์ฐฝ์—… ์ง€์›_x',
                      '์‹œ๋„_y', '์†Œ๊ด€๊ธฐ๊ด€์œ ํ˜•', '์ง€์›์œ ํ˜•', 'ํ•™๋ ฅ_y', '์„ฑ๋ณ„_y', '๊ฒฐํ˜ผ_y', '์ž๋…€', '์ง์žฅ_y',
                      '๋†์ถ•์ˆ˜์‚ฐ์ธ', 'ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ_y','ํ•œ๋ถ€๋ชจ๊ฐ€์ •/์กฐ์†๊ฐ€์ •_y', '๊ตญ๊ฐ€์œ ๊ณต์ž_y', '๋ถํ•œ์ดํƒˆ์ฃผ๋ฏผ_y', '์งˆ๋ณ‘/๋ถ€์ƒ/์งˆํ™˜์ž_y', '์žฅ์• ์ธ_y', '๋‹ค๋ฌธํ™”๊ฐ€์กฑ_y', '๋‹ค์ž๋…€๊ฐ€์ •_y', 
                      '๊ฐœ์ธ๊ธˆ์œต์ง€์›_y', '๋ฌธํ™”์ƒํ™œ ์ง€์›_y', '์ทจ์—… ์ง€์›_y', '์ฐฝ์—… ์ง€์›_y', '๊ต์œก์ง€์›(8~19์„ธ)','์˜๋ฃŒ ์ง€์›_y', '๋ณด์œก์ง€์›(0~7์„ธ)', '์ฃผํƒ-๋ถ€๋™์‚ฐ ์ง€์›_y', '์„ฑ์ธ๊ต์œก์ง€์›_y', '๊ธฐ์—…๊ธˆ์œต์ง€์›_y','๊ทผ๋กœ์ž ์ง€์›_y']
        cont_cols = ['๋‚˜์ด','max_income_x','min_income_x','๋Œ€์ƒ์—ฐ๋ น์‹œ์ž‘','๋Œ€์ƒ์—ฐ๋ น๋','max_income_y', 'min_income_y'] 
        # accuracy ์ธก์ • ๊ฒฐ๊ณผ
        
        accuracy: 0.8740
        wide and deep model accuracy: 0.873960018157959
                      precision    recall  f1-score   support
        
                   0       0.89      0.88      0.89    342435
                   1       0.85      0.86      0.85    257565
        
            accuracy                           0.87    600000
           macro avg       0.87      0.87      0.87    600000
        weighted avg       0.87      0.87      0.87    600000
        
  • ๋ฐฉ๋ฒ•๋ก  ์„ ์ • ์ด์œ 

    1. ์ •์ฑ… ๋„๋ฉ”์ธ ํŠน์„ฑ์ƒ ์ถ”์ฒœ๋  ์ •์ฑ…๊ณผ ์œ ์ €์˜ ์กฐ๊ฑด์ด ๋ถ€ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉด์„œ๋„, ์ƒˆ๋กœ์šด ์ •์ฑ…์„ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.
    2. Wide Part๋Š” Linearํ•œ ๋ถ€๋ถ„์œผ๋กœ, ์œ ์ €์™€ ์ •์ฑ…์˜ ํŠน์„ฑ์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด memorization. ์ƒ์„ธํ™”๋œ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Œ. ๊ณผ์ ํ•ฉ ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    3. Deep Part๋Š” Non-Linearํ•œ ๋ถ€๋ถ„์œผ๋กœ, ์œ ์ €์™€ ์ •์ฑ…์˜ ํŠน์„ฑ์„ generalizationํ•˜์—ฌ freshness๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Œ. ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€.

4-1. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ ๋ฐ ๋ณด์™„์  - ํƒœ๊น…๋ชจ๋ธ

A. ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ label ์ƒ์„ฑ

  • ๊ฒฐ๊ณผ

    ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  label๋“ค์˜ ์ •ํ™•๋„๊ฐ€ ์ตœ๋Œ€ 99% ~ ์ตœ์†Œ 40% ์ •๋„์ž„.
    image

  • ํ•œ๊ณ„ ๋ฐ ๋ณด์™„์ 

    1. ํƒœ๊น…์ด ์‰ฌ์šด feature๋Š” ์ •ํ™•๋„๊ฐ€ ๋†’๊ฒŒ ๋‚˜์™”์œผ๋‚˜, ๋ณต์žกํ•œ context๋ฅผ ๊ฐ€์ง„ feature๋Š” ์ •ํ™•๋„๊ฐ€ ๋‚ฎ๊ฒŒ ๋‚˜์˜ด. => ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด์™„ํ•ด์•ผ ํ•จ.
    2. ๊ธฐ์—…์—์„œ ์ œ๊ณตํ•ด์ค€ ํƒœ๊น… ๋‹ต์ง€๋กœ ์ •ํ™•๋„๋ฅผ ์ธก์ •ํ–ˆ์œผ๋‚˜, ๋‹ต์ง€ ์ž์ฒด๊ฐ€ 100%์˜ ์ •ํ™•๋„๋ฅผ ๊ฐ–์ง€ ์•Š์Œ. ์‹ ๋ขฐ๋„๊ฐ€ ์–ด๋Š์ •๋„์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Œ.

B. ์ถ”์ถœ๋œ label ๊ธฐ๋ฐ˜ KoBERT ํ•™์Šต (Pytorch)

  • ๊ฒฐ๊ณผ

    1. ํ•™์Šต์€ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋ณด์ด๋‚˜, ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•จ.
      image
  • ํ•œ๊ณ„ ๋ฐ ๋ณด์™„์ 

    1. ์‹ ์ฒญ์ ˆ์ฐจ, ์„ฑ๋ณ„, ์ž๋…€, ์ •์ฑ…์ง€์›์œ ํ˜• ๋“ฑ์€ ๋ผ๋ฒจ์— ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†์Œ. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์™ธ์˜ ํŠน์„ฑ๋“ค์€ ๋ผ๋ฒจ์— ์ค‘๋ณต๋˜๋Š” ๊ฐ’๋“ค์ด ์žˆ๋Š”๋ฐ, ๋ผ๋ฒจ๊ฐ’์ด ํ•˜๋‚˜์ผ์ˆ˜๋„, ์—ด ๊ฐœ์ผ์ˆ˜๋„ ์žˆ์Œ.

      policy_label['์‹ ์ฒญ์ ˆ์ฐจ'] = ['๋ฌด๊ด€', '๋ฌด๊ด€', '์—ฌ์„ฑ', '๋‚จ์„ฑ'...] 
      policy_label['๋Œ€์ƒํŠน์„ฑ'] = ['ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ', '์žฅ์• ์ธ, ๋‹ค๋ฌธํ™”๊ฐ€์กฑ', '์ž„์‹ ๋ถ€', '๋…๊ฑฐ๋…ธ์ธ, ๊ธฐ๊ด€/์‹œ์„ค, ์žฅ์• ์ธ', 'ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ'...]
      

      ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ํ•™์Šต ์‹œ, loss๋ฅผ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜์— ๋งž๊ฒŒ ๊ทธ๋•Œ๊ทธ๋•Œ ๊ตฌํ•ด์ฃผ๋ ค๊ณ  ํ•ด๋ณด์•˜์œผ๋‚˜, ๊ฒฐ๊ตญ ์ตœ์ข…์ ์œผ๋กœ test์—์„œ n๊ฐœ์˜ ์•„์›ƒํ’‹ ๊ฒฐ๊ณผ๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผํ•จ.
      out = model(token_ids, valid_length, segment_ids)
      label = label[0]
      
      if ',' in label:          
          labels = list(map(int, label.split(',')))
          loss = 0
          for i in range(len(labels)):
            label = labels[i]
            # label = tuple(label, )
            label = torch.from_numpy(np.array([np.int32(label)])).long().to(device)
            loss += loss_fn(out, label)
            loss /= len(labels)
      else:
        label = torch.from_numpy(np.array([np.int32(label)])).long().to(device)
        loss = loss_fn(out, label)
      loss.backward()
      
    2. ํ•™์Šต์— ์‚ฌ์šฉ๋œ ๋ผ๋ฒจ๊ฐ’์€ ๊ธฐ์กด์— for๋ฌธ, if๋ฌธ์„ ์ด์šฉํ•ด์„œ ํ‚ค์›Œ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํƒœ๊น…์„ ์ง„ํ–‰ํ•œ ๊ฐ’.
      ์ฆ‰, 100%์˜ ์ •ํ™•๋„๋ฅผ ๊ฐ€์ง€๋Š” ๋ผ๋ฒจ๊ฐ’์ด ์•„๋‹ˆ๋ผ, ํ”ผ์ฒ˜๋งˆ๋‹ค ์ตœ์†Œ 40% ์ตœ๋Œ€ 98% ์‚ฌ์ด์˜ ์ •ํ™•๋„๋ฅผ ๊ฐ€์ง€๋Š” ๋ผ๋ฒจ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์• ์ดˆ์— ๋†’์€ ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์–ด๋ ค์›€.

    3. Input์˜ label์„ One-Hot ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์•˜์Œ.

    4. label๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ feature์˜ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ํƒœ๊น…๋ชจ๋ธ A์„ ์ด์šฉํ•จ.
      ํ”„๋กœ์ ํŠธ๋ฅผ ํšŒ๊ณ ํ•˜๋ฉฐ ์•Œ๊ฒŒ๋œ multi label classification ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž„. ์ฐธ๊ณ ์ž๋ฃŒ


4-2. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ ๋ฐ ๋ณด์™„์  - ์ถ”์ฒœ๋ชจ๋ธ

A. ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ

  • ๊ฒฐ๊ณผ

    ๋”ฐ๋กœ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ํ‘œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— USER์˜ ์ •๋ณด๋ฅผ ์ž„์˜๋กœ ๋„ฃ์—ˆ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ POLICY๊ฐ€ ์ถ”์ฒœ๋จ.
    image

  • ํ•œ๊ณ„ ๋ฐ ๋ณด์™„์ 

    1. USER๋‚˜ POLICY context ์ •๋ณด์˜ ์งˆ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Œ.
      USER๊ฐ€ ํ”„๋กœํ•„์„ ๊ฐ€๋“ ์ฑ„์šด ๊ฒฝ์šฐ ๋” specificํ•œ ๋ชจ๋ธ๋กœ, POLICY์˜ context์˜ ์งˆ์ด ์ข‹์ง€ ์•Š์„ ๊ฒฝ์šฐ generalํ•œ ๋ชจ๋ธ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•.

B. Wide & Depp ๊ธฐ๋ฐ˜ ์ถ”์ฒœ

  • ๊ฒฐ๊ณผ

    # model predict ๋ฐ ์ž„์˜์˜ ์œ ์ € ์ถ”์ฒœ ์ง„ํ–‰ ๊ฒฐ๊ณผ
    
    
    ์œ ์ € ํ…Œ์ด๋ธ” 100๋ฒˆ ์œ ์ € ์ •๋ณด
    user1.iloc[100]
    
    num                       4969
    ์„ฑ๋ณ„                          ์—ฌ์„ฑ
    ๋‚˜์ด                          54
    ์‹œ๋„                       ์„œ์šธํŠน๋ณ„์‹œ
    ์‹œ๊ตฐ๊ตฌ                        ๊ฐ•์„œ๊ตฌ
    ํ•™๋ ฅ                      ๊ณ ๋“ฑํ•™๊ต์กธ์—…
    ์ง์žฅ                   ์†Œ์ƒ๊ณต์ธ,์ค‘์†Œ๊ธฐ์—…
    ๊ฐ€๊ตฌ์›             ๋ฌด์ฃผํƒ ์„ธ๋Œ€์ฃผ,์ฃผํƒ ์„ธ๋Œ€์ฃผ
    ๊ฒฐํ˜ผ                          ๊ธฐํ˜ผ
    ์ž๋…€                          ์—†์Œ
    ์ž๋…€์ƒ์„ธ                    ํ•ด๋‹น์‚ฌํ•ญ์—†์Œ
    ์ž๋…€์ˆ˜                         no
    mb_10                     ์ €์†Œ๋“์ธต
    mb_10+๋Œ€์ƒํŠน์„ฑ                ์ €์†Œ๋“์ธต
    mb_11                     ํ•ด๋‹น์—†์Œ
    mb_11+๊ด€์‹ฌ์ƒํ™ฉํŠน์„ฑ              None
    mb_12           ์ค‘์œ„์†Œ๋“ 60~80% ์‚ฌ์ด
    mb_13                       no
    mb_14                       no
    mb_15                ์ฃผํƒ-๋ถ€๋™์‚ฐ ์ง€์›
    Name: 100, dtype: object
    --------------------------------------------
    100๋ฒˆ ์œ ์ € ๊ด€๋ จ ์ถ”์ฒœ ์ •์ฑ…
    run.Recommendation(user1.iloc[100])
    
    
    ์ •์ฑ…ID	์„œ๋น„์Šค๋ช…	prob
    0	51650	๊ธด๊ธ‰๋ณต์ง€ ์ง€์›	0.979127
    1	22676	๊ธด๊ธ‰๋ณต์ง€ ์ง€์›	0.942127
    2	70552	๊ธด๊ธ‰๋ณต์ง€ ์ง€์›	0.942127
    3	45770	๊ธด๊ธ‰๋ณต์ง€ ์ง€์›	0.942127
    4	44396	๊ธด๊ธ‰๋ณต์ง€ ์ง€์›	0.942127
    5	47027	๊ธด๊ธ‰ ๋ณต์ง€์ง€์› ์ œ๋„	0.939212
    6	46117	์ €์†Œ๋“ ๊ฐ€์ • ์ฒญ์†Œ๋…„ ๋ณดํ˜ธ (์œ„๋ฌธ ๊ฒฉ๋ ค๊ธˆ)	0.929142
    7	24786	๊ฐ€์ •์œ„ํƒ๋ณดํ˜ธ ์ง€์›	0.924070
    8	53930	์†Œ๋…„์†Œ๋…€๊ฐ€์ • ๋ฐ ๊ฐ€์ •์œ„ํƒ๊ฐ€์ • ์•„๋™ ์ˆ˜๋ จํšŒ๋น„ ๋˜๋Š” ์ˆ˜ํ•™์—ฌํ–‰๋น„ ์ง€์›	0.909780
    9	46253	์†Œ๋…„์†Œ๋…€๊ฐ€์ • ๋ฐ ๊ฐ€์ •์œ„ํƒ๋ณดํ˜ธ์•„๋™์ง€์›	0.909780
    
  • ํ•œ๊ณ„ ๋ฐ ๋ณด์™„์ 

    1. ํ•™์Šต์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ ๋ฐœ์ƒ.

      • ์›์ธ: ๋„ˆ๋ฌด ๋งŽ์€ ์ƒ˜ํ”Œ ๋ฐ ํŠน์„ฑ์˜ ์ˆ˜. (USER * POLICY) = (20,000 * 88,000) = 1,760,000,000 ๊ฐœ
        • ๋ณด์™„๋ฐฉ๋ฒ•1) : High cardinality์˜ ํŠน์„ฑ ์ค‘ ์ค‘์š”๋„๊ฐ€ ๋œํ•œ ํŠน์„ฑ์„ ์ œ์™ธ(ex: ์‹œ๋„, ์‹œ๊ตฐ๊ตฌ) ๋ฐ ์ƒ˜ํ”Œ ์ˆ˜ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•.
        • ๋ณด์™„๋ฐฉ๋ฒ•2) : Batch Size๋งŒํผ๋งŒ ๋ถˆ๋Ÿฌ์™€์„œ ํ•™์Šต ์ˆ˜ํ–‰ ํ›„, ๋‹ค์Œ Batch๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•.
    2. ํ•™์Šต์„ ํ†ตํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด 90% ์ด์ƒ ์ง„ํ–‰๋˜์ง€ ์•Š์Œ.

      • ์›์ธ: ํŠน์„ฑ ๊ฐ„ ๊ต์ฐจ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” cross product๋ฅผ '๊ฒฐํ˜ผ','์„ฑ๋ณ„'๊ณผ ๊ฐ™์ด ์‰ฝ๊ณ  ๋ณต์žกํ•˜์ง€ ์•Š์€ ํŠน์„ฑ๋“ค๋กœ๋งŒ ์‚ฌ์šฉ.
        • ๋ณด์™„๋ฐฉ๋ฒ•: ์ง์žฅ, ๋Œ€์ƒํŠน์„ฑ๊ณผ ๊ฐ™์€ ๋‹ค์†Œ ์ค‘์š”ํ•œ ์ •์ฑ… ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŠน์„ฑ์„ cross product ์ง„ํ–‰.
    3. model.predict์˜ ์ถ”์ฒœ ์‹œ๊ฐ„์ด ํ‰๊ท  23์ดˆ๋กœ ๋งค์šฐ ์˜ค๋ž˜๊ฑธ๋ฆผ.

      • ์›์ธ: ์œ ์ €๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ถ”์ฒœ์„ ์œ„ํ•œ model predict ์ธํ’‹๊ฐ’์œผ๋กœ์˜ ์ „์ฒ˜๋ฆฌ ์ž‘์—…์—์„œ ๊ธฐ์กด ์ •์ฑ… 8๋งŒ8์ฒœ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋“ค๊ณผ์˜ ํ•ฉ์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ์‹œ๊ฐ„์ด ๋‹ค์†Œ ์†Œ์š”๋จ.
        • ๋ณด์™„๋ฐฉ๋ฒ•: ์œ ์ €์™€ ์ •์ฑ…์˜ ๋ฐ์ดํ„ฐ ์งˆ์— ๋”ฐ๋ฅธ ๊ตฌ๋ถ„. ํƒœ๊ทธ๊ฐ€ ์ ์ ˆํžˆ ๋ฝ‘ํžŒ ๋ฐ์ดํ„ฐ๊ทธ๋ฃน๊ณผ / '๋ฌด๊ด€'์ด๋‚˜ '์—†์Œ'์ด ๋งŽ์€ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.
    4. ์ถ”์ฒœ ์ง„ํ–‰ ๊ฒฐ๊ณผ, ๊ฑฐ์˜ ์ถ”์ฒœ ๋Œ€์ƒ๊ณผ ์ •์ฑ…์ด ์ž˜ ๋งž์ง€ ์•Š์Œ.

      • ์›์ธ1: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด์—์„œ ์ œ๊ฐ€ ์‹ค์ˆ˜ํ•ด์„œ ์„œ๋น„์Šค๋ช…์ด๋‚˜ ์ •์ฑ…ID๊ฐ€ ์ž˜๋ชป๊ธฐ์žฌ ๋˜๋Š” ๋“ฑ์˜ ํœด๋จผ ์—๋Ÿฌ ๊ฐ€๋Šฅ์„ฑ.
      • ์›์ธ2: ๋ฌด์˜๋ฏธํ•œ ์ •์ฑ… ๋ฐ์ดํ„ฐ์…‹(88000๊ฐœ ์ƒ˜ํ”Œ)์˜ ์–‘์ด ๋„ˆ๋ฌด ๋งŽ์Œ.
        • ํ•ด๊ฒฐ๋ฐฉ์•ˆ: 1๋ฒˆ๊ณผ ๊ฐ™์ด Query๋ฅผ ํ†ตํ•ด ๋จผ์ € ์ƒ˜ํ”Œ ์ˆ˜๋ฅผ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ๋ฐฉ๋ฒ•, ๋˜๋Š” Matrix ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ 1์ฐจ์ ์œผ๋กœ ์ •์ฑ…์„ ๊ฑธ๋Ÿฌ๋‚ธ ๋’ค, ์™€์ด๋“œ์•ค๋”ฅ ๋ชจ๋ธ๋กœ ์ตœ์ข… ๋†’์€ score์˜ ์ •์ฑ…์„ ์ถ”์ฒœํ•˜๋Š” ๋ฐฉ๋ฒ•.
    5. ๊ธฐ์กด ํ›ˆ๋ จ ์ง„ํ–‰์‹œ ๋ชจ๋“  ์ค‘๋ณตํƒœ๊ทธ๋ฅผ one-hot ์ธ์ฝ”๋”ฉ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, training์€ ์ง„ํ–‰๋˜์ง€๋งŒ, ์ถ”์ฒœ์„ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์ •ํ™•ํ•˜๊ฒŒ feature ์ƒ์„ฑ์ด ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์›€.
      ๋ชจ๋“  ์ƒ˜ํ”Œ๋กœ๋ถ€ํ„ฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํŒŒ์•…ํ•ด์„œ feature๋กœ ์ƒ์„ฑํ•˜์—ฌ ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹๊ณผ ์˜ˆ์ธก ๋ฐ์ดํ„ฐ์…‹์˜ feature๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์‹œ๊ฐ„ํšจ์œจ์ด ๋–จ์–ด์ง.

      • ํ•ด๊ฒฐ๋ฐฉ์•ˆ: ํ•„์š”์‹œ ํ•ด๋‹น ์ค‘์š”ํ•œ ํŠน์„ฑ๋“ค์— ํ•œํ•ด์„œ๋Š” one-hot encoding์„ ํ†ตํ•ด get_dummies๋ฅผ ํ”ผํ•ด์ค€๋‹ค. -> ๋‹จ, ๊ณต์ˆ˜๊ฐ€ ๋”์šฑ ๋งŽ์ด ๋“ค์–ด๊ฐ€๋ฉฐ, ์‹œ๊ฐ„ ํšจ์œจ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.

5. ํšŒ๊ณ 

  • ์ฝ”๋“œ๋ฆฌํŒฉํ† ๋ง: ํŒ€์›๊ณผ ํ•จ๊ป˜ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋‹ˆ ์ƒ๋Œ€๋ฐฉ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋ฉฐ, ์ด์™•์ด๋ฉด ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋ถ€ํ„ฐ ์œค๊ณฝ์„ ์„ธ์›Œ๋‘๊ณ  ๊ตฌํ˜„ํ•ด์•ผ ํ•จ์„ ๊นจ๋‹ฌ์Œ.
  • ๋‹จ์ˆœํžˆ ๋ชจ๋ธ์„ ๊ฐœ๋…์ ์ด๊ณ  ์ด๋ก ์ ์œผ๋กœ ์•„๋Š” ๊ฒƒ๊ณผ ์‹ค์ œ ๋ฐ์ดํ„ฐ์— ์ ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์€ ๋งŽ์ด ๋‹ฌ๋ž์Œ. pretrained๋œ ๋ชจ๋ธ์„ customizeํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•จ.
  • ์ถ”์ฒœ์‹œ์Šคํ…œ์—๋Š” ๋‹ค์–‘ํ•œ ํŠน์„ฑ์ด ๊ณ ๋ ค๋˜๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” NLP๋ฅผ ํ™œ์šฉํ–ˆ์Œ. ์ถ”์ฒœ๋„๋ฉ”์ธ์—์„œ CV์™€ NLP๋Š” ์•ž๋‹จ์—์„œ ํ™œ์šฉ๋  ์ˆ˜ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— CV์™€ NLP ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Œ.

6. Next step after lesson learned

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published