🍎 μ‹ν’ˆμ—μ„œ AI κ³΅λΆ€ν•˜κΈ°

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ λ³Έλ¬Έ

Food_Health_AI/μΆ”μ²œ μ‹œμŠ€ν…œ

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ

FoodAI 2025. 4. 3. 19:11

πŸ’‘λ“€μ–΄κ°€λ©°

μΆ”μ²œ μ‹œμŠ€ν…œμ€ ν˜„λŒ€ λ””μ§€ν„Έ μ„œλΉ„μŠ€μ—μ„œ ν•„μˆ˜μ μΈ μš”μ†Œλ‘œ 자리 μž‘μ•˜μŠ΅λ‹ˆλ‹€. λ„·ν”Œλ¦­μŠ€μ˜ μ˜ν™” μΆ”μ²œ, 유튜브의 λ™μ˜μƒ μΆ”μ²œ, 온라인 μ‡Όν•‘λͺ°μ˜ μƒν’ˆ μΆ”μ²œ λ“± 우리의 일상에 κΉŠμˆ™μ΄ νŒŒκ³ λ“  μΆ”μ²œ μ‹œμŠ€ν…œμ€ 점점 더 정ꡐ해지고 μžˆμŠ΅λ‹ˆλ‹€. μ˜€λŠ˜μ€ μΆ”μ²œ μ‹œμŠ€ν…œμ˜ μ΅œμ‹  νŠΈλ Œλ“œμΈ 'κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ'에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ μΆ”μ²œ μ‹œμŠ€ν…œμ˜ ν•œκ³„μ μ„ μ§šμ–΄λ³΄κ³ , κ·Έλž˜ν”„ 기반 접근법이 μ–΄λ–»κ²Œ μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


I. 기쑴의 μΆ”μ²œ μ‹œμŠ€ν…œ

기쑴의 μΆ”μ²œ μ‹œμŠ€ν…œμ€ λ§Žμ€ μ‚¬μš©μžλ“€λ‘œλΆ€ν„° μˆ˜μ§‘ν•œ μ„ ν˜Έ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ λ‹€λ₯Έ μ‚¬λžŒμ˜ μ„ ν˜Έλ₯Ό μ˜ˆμΈ‘ν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€. 크게 μ½˜ν…μΈ  기반 필터링(Content-based Filtering)κ³Ό ν˜‘μ—… 필터링(Collaborative Filtering) 두 κ°€μ§€ λ°©μ‹μœΌλ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ½˜ν…μΈ  기반 필터링 (Content-based Filtering)

μ½˜ν…μΈ  기반 필터링은 μ•„μ΄ν…œμ˜ νŠΉμ§•μ„ ν™œμš©ν•˜μ—¬ μ‚¬μš©μžκ°€ μ’‹μ•„ν•˜λŠ” μ•„μ΄ν…œκ³Ό νŠΉμ§•μ΄ λΉ„μŠ·ν•œ λ‹€λ₯Έ μ•„μ΄ν…œμ„ μΆ”μ²œν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ λ‘œλ§¨ν‹± μ½”λ―Έλ”” μ˜ν™”λ₯Ό 주둜 μ‹œμ²­ν•œλ‹€λ©΄, λΉ„μŠ·ν•œ μž₯λ₯΄μ˜ λ‹€λ₯Έ μ˜ν™”λ₯Ό μΆ”μ²œν•΄μ£ΌλŠ” λ°©μ‹μž…λ‹ˆλ‹€.

πŸ” μž‘λ™ 원리:

  • μ•„μ΄ν…œ(μ˜ν™”, μƒν’ˆ λ“±)의 νŠΉμ„± 정보λ₯Ό 뢄석
  • μ‚¬μš©μžμ˜ κ³Όκ±° μ„ ν˜Έ 이λ ₯을 λ°”νƒ•μœΌλ‘œ μ„ ν˜Έν•˜λŠ” νŠΉμ„± νŒŒμ•…
  • μœ μ‚¬ν•œ νŠΉμ„±μ„ κ°€μ§„ λ‹€λ₯Έ μ•„μ΄ν…œ μΆ”μ²œ

ν˜‘μ—… 필터링 (Collaborative Filtering)

ν˜‘μ—… 필터링은 λΉ„μŠ·ν•œ μ·¨ν–₯을 κ°€μ§„ λ‹€λ₯Έ μ‚¬μš©μžλ“€μ˜ μ„ ν˜Έλ₯Ό 기반으둜 μΆ”μ²œν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. λ§Žμ€ μ‚¬μš©μžλ‘œλΆ€ν„° μˆ˜μ§‘ν•œ 평가 데이터λ₯Ό λΆ„μ„ν•˜μ—¬ μœ μ‚¬ν•œ μ·¨ν–₯을 κ°€μ§„ μ‚¬μš©μž 그룹을 μ°Ύκ³ , κ·Έ 그룹이 μ’‹μ•„ν•˜λŠ” μ•„μ΄ν…œμ„ μΆ”μ²œν•©λ‹ˆλ‹€.

πŸ” μž‘λ™ 원리:

  • μ‚¬μš©μž-μ•„μ΄ν…œ κ°„μ˜ μƒν˜Έμž‘μš© 데이터 μˆ˜μ§‘ (평점, 클릭, ꡬ맀 이λ ₯ λ“±)
  • Matrix Factorization λ“±μ˜ 기법을 톡해 μ‚¬μš©μžμ™€ μ•„μ΄ν…œμ˜ 잠재 μš”μΈ(latent factor) μΆ”μΆœ
  • μœ μ‚¬ν•œ μ„ ν˜Έλ„λ₯Ό κ°€μ§„ μ‚¬μš©μž κ·Έλ£Ή νŒŒμ•…
  • ν•΄λ‹Ή 그룹의 μ„ ν˜Έ μ•„μ΄ν…œ μΆ”μ²œ

Matrix Factorization(MF)에 λŒ€ν•œ 이해

ν˜‘μ—… ν•„ν„°λ§μ—μ„œ 널리 μ‚¬μš©λ˜λŠ” Matrix Factorization은 μ‚¬μš©μžμ™€ μ•„μ΄ν…œ κ°„μ˜ 평가 정보λ₯Ό 담은 Rating Matrixλ₯Ό User Latent Matrix와 Item Latent Matrix둜 λΆ„ν•΄ν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€. Rating MatrixλŠ” (μ‚¬μš©μž 수) × (μ•„μ΄ν…œ 수)둜 κ΅¬μ„±λ˜λ©°, 각 μ…€μ—λŠ” μ‚¬μš©μžμ˜ μ•„μ΄ν…œ 평가 μ μˆ˜κ°€ κΈ°λ‘λ©λ‹ˆλ‹€.

λŒ€λΆ€λΆ„μ˜ 경우 λͺ¨λ“  μ‚¬μš©μžκ°€ λͺ¨λ“  μ•„μ΄ν…œμ„ ν‰κ°€ν•˜μ§€λŠ” μ•ŠκΈ° λ•Œλ¬Έμ— Rating MatrixλŠ” λ§Žμ€ 빈칸(sparse matrix)을 ν¬ν•¨ν•©λ‹ˆλ‹€. MFλŠ” μ΄λŸ¬ν•œ ν–‰λ ¬ λΆ„ν•΄ κ³Όμ •μ—μ„œ λΉˆμΉΈμ— ν•΄λ‹Ήν•˜λŠ” 평점을 μ˜ˆμΈ‘ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

평가 λ°μ΄ν„°λŠ” λͺ…μ‹œμ  ν”Όλ“œλ°±(explicit feedback)인 ν‰μ μ΄λ‚˜ 별점 외에도, 클릭, μ‹œμ²­ μ‹œκ°„ λ“±μ˜ μ•”μ‹œμ  ν”Όλ“œλ°±(implicit feedback)을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κΈ°μ‘΄ μΆ”μ²œ μ‹œμŠ€ν…œμ˜ ν•œκ³„

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 기쑴의 μΆ”μ²œ μ‹œμŠ€ν…œμ€ μ‹€μ œ μ„œλΉ„μŠ€μ— μ μš©ν–ˆμ„ λ•Œ μ—¬λŸ¬ λ¬Έμ œμ μ„ λ“œλŸ¬λƒˆμŠ΅λ‹ˆλ‹€.

  • ν™•μž₯μ„± 문제: 전체 μ‚¬μš©μžλ₯Ό λŒ€μƒμœΌλ‘œ μΆ”μ²œ κ²°κ³Όλ₯Ό κ³„μ‚°ν•˜λŠ” 데 λ„ˆλ¬΄ λ§Žμ€ μ‹œκ°„μ΄ μ†Œμš”λ©λ‹ˆλ‹€.
  • 데이터 ν™œμš©μ˜ μ œν•œ: ν”Œλž«νΌμ΄ λ³΄μœ ν•œ λ‹€μ–‘ν•œ 데이터λ₯Ό νŠΉμ„± μ •λ³΄λ‘œ μΆ©λΆ„νžˆ ν™œμš©ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  • λͺ¨λΈ μ—…λ°μ΄νŠΈ 문제: μƒˆλ‘œμš΄ μ‚¬μš©μžλ‚˜ μ•„μ΄ν…œμ΄ 좔가될 λ•Œλ§ˆλ‹€ 전체 λͺ¨λΈμ„ μž¬ν•™μŠ΅μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.
  • μ½œλ“œ μŠ€νƒ€νŠΈ 문제: μ‹ κ·œ μ‚¬μš©μžλ‚˜ μ•„μ΄ν…œμ˜ 경우 데이터 λΆ€μ‘±μœΌλ‘œ μ •ν™•ν•œ μΆ”μ²œμ΄ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  • λ‹€μ–‘μ„± λΆ€μ‘±: 인기 μžˆλŠ” μ•„μ΄ν…œλ§Œ 반볡적으둜 μΆ”μ²œλ˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

II. κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ

μ΄λŸ¬ν•œ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ 넀이버, μš”κΈ°μš”, 리멀버 λ“± λ§Žμ€ 기업듀이 졜근 κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμœΌλ‘œ μ „ν™˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜ν”„ 기반 접근법은 데이터λ₯Ό λ…Έλ“œ(μ‚¬μš©μž, μ•„μ΄ν…œ λ“±)와 μ—£μ§€(μƒν˜Έμž‘μš©)둜 κ΅¬μ„±λœ λ„€νŠΈμ›Œν¬λ‘œ λͺ¨λΈλ§ν•˜μ—¬ 더 λ³΅μž‘ν•œ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ˜ μž₯점

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ€ λ‹€μŒκ³Ό 같은 μž₯점을 μ œκ³΅ν•©λ‹ˆλ‹€:

  • λ©”λͺ¨λ¦¬ νš¨μœ¨μ„±: μ •ν•΄μ§„ 수의 인접 λ…Έλ“œλ§Œ νƒμƒ‰ν•¨μœΌλ‘œμ¨ λŒ€κ·œλͺ¨ λ°μ΄ν„°μ—μ„œμ˜ λ©”λͺ¨λ¦¬ 문제λ₯Ό 효과적으둜 ν•΄κ²°ν•©λ‹ˆλ‹€.
  • λ‹€μ–‘ν•œ 정보 톡합: μ½˜ν…μΈ  기반 필터링은 μ•„μ΄ν…œ νŠΉμ„±λ§Œ, ν˜‘μ—… 필터링은 μ‚¬μš©μž-μ•„μ΄ν…œ κ΄€κ³„λ§Œ μ‚¬μš©ν–ˆμ§€λ§Œ, κ·Έλž˜ν”„ 기반 접근법은 ν”Œλž«νΌμ΄ κ°€μ§„ λ‹€μ–‘ν•œ 정보λ₯Ό ν•¨κ»˜ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μœ μ—°ν•œ μ—…λ°μ΄νŠΈ: 전체 λͺ¨λΈμ„ μž¬κ΅¬μΆ•ν•  ν•„μš” 없이 κ·Έλž˜ν”„μ— λ…Έλ“œλ‚˜ μ—£μ§€λ₯Ό μΆ”κ°€/μ‚­μ œν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ μ—…λ°μ΄νŠΈκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μ½œλ“œ μŠ€νƒ€νŠΈ ν•΄κ²°: μ‹ κ·œ μ‚¬μš©μžλ‚˜ μ•„μ΄ν…œμ˜ 고유 데이터(메타데이터)λ₯Ό ν™œμš©ν•˜μ—¬ 더 λ‚˜μ€ 초기 μΆ”μ²œμ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ‹€μ œ 사둀

1. λ„€μ΄λ²„μ˜ μΆ”μ²œ μ‹œμŠ€ν…œ

λ„€μ΄λ²„λŠ” Deview 2020μ—μ„œ 'μΆ”μ²œμ‹œμŠ€ν…œ 3.0'을 λ°œν‘œν•˜λ©° κ·Έλž˜ν”„ 기반 μ ‘κ·Όλ²•μœΌλ‘œμ˜ μ „ν™˜μ„ κ³΅μœ ν–ˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ μΆ”μ²œ λͺ¨λΈμ— λΉ„ν•΄ CTR(클릭λ₯ )이 μ΅œλŒ€ 16% ν–₯μƒλ˜λŠ” μ„±κ³Όλ₯Ό κ±°λ‘μ—ˆμŠ΅λ‹ˆλ‹€.

2. μš”κΈ°μš”μ˜ YoSEMITE

μš”κΈ°μš”λŠ” GNN(Graph Neural Network)을 ν™œμš©ν•œ YoSEMITE μΆ”μ²œ λͺ¨λΈμ„ κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ λͺ¨λΈκ³Ό λΉ„κ΅ν•˜μ—¬ 클릭 CVR이 4.51%, μ£Όλ¬Έ CVR이 14.84%, 결제 κΈˆμ•‘μ΄ 12.80% μ¦κ°€ν•˜λŠ” 효과λ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

3. λ¦¬λ©€λ²„μ˜ 인재 μΆ”μ²œ μ‹œμŠ€ν…œ

λ¦¬λ©€λ²„λŠ” 지식 κ·Έλž˜ν”„λ₯Ό ν™œμš©ν•˜μ—¬ 인재 μΆ”μ²œ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 더 μ •ν™•ν•˜κ³  κ΄€λ ¨μ„± 높은 인재 맀칭이 κ°€λŠ₯ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.

κ·Έλž˜ν”„ 데이터 ꡬ좕 방법

ν…Œμ΄λΈ” ν˜•νƒœμ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ·Έλž˜ν”„λ‘œ λ³€ν™˜ν•˜λŠ” 과정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

1. κ·Έλž˜ν”„ ꡬ성 μš”μ†Œ μ •μ˜

  • λ…Έλ“œ(Nodes): μ‚¬μš©μž, μ•„μ΄ν…œ λ“± κ·Έλž˜ν”„μ˜ 개체
  • μ—£μ§€(Edges): λ…Έλ“œ κ°„μ˜ 관계(예: μ‚¬μš©μžκ°€ μ•„μ΄ν…œμ— 평점을 남김)
  • λ…Έλ“œ νŠΉμ„±(Features): 각 λ…Έλ“œμ˜ 속성 정보
  • 라벨(Labels): μ˜ˆμΈ‘ν•˜κ³ μž ν•˜λŠ” λŒ€μƒ(예: 평점)

2. λ…Έλ“œ νŠΉμ„± μΆ”μΆœ

각 λ…Έλ“œμ— IDλ₯Ό λΆ€μ—¬ν•˜κ³  κ΄€λ ¨ νŠΉμ„±μ„ μΆ”μΆœν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

  • μ˜ν™” λ…Έλ“œ: μž₯λ₯΄, μœ ν˜•(TV/μ˜ν™”), μ—ν”Όμ†Œλ“œ 수 λ“±
  • μ‚¬μš©μž λ…Έλ“œ: 평균 평점, 평가 횟수 λ“±

3. νŠΉμ„± 인코딩

λ²”μ£Όν˜• νŠΉμ„±μ€ 원-ν•« 인코딩(One-hot encoding)κ³Ό 같은 λ°©λ²•μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.

4. μ—£μ§€ 정보 μΆ”μΆœ

λ…Έλ“œ κ°„μ˜ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ—£μ§€ 정보λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€(예: μ‚¬μš©μžκ°€ μ˜ν™”μ— 남긴 평점).

5. κ·Έλž˜ν”„ 데이터셋 ꡬ좕

PyTorch Geometricκ³Ό 같은 라이브러리λ₯Ό ν™œμš©ν•˜μ—¬ 이쒅 κ·Έλž˜ν”„(Heterogeneous Graph)λ₯Ό κ΅¬μΆ•ν•©λ‹ˆλ‹€.


III. κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ κ΅¬ν˜„ μ˜ˆμ‹œ

Anime Recommender Databaseλ₯Ό μ‚¬μš©ν•œ κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ κ΅¬ν˜„ 과정을 κ°„λž΅νžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

1. 데이터셋 ꡬ성

ν•΄λ‹Ή 데이터셋은 두 개의 μ£Όμš” ν…Œμ΄λΈ”λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

  • anime ν…Œμ΄λΈ”: μ• λ‹ˆλ©”μ΄μ…˜ ID, 제λͺ©, μž₯λ₯΄, μœ ν˜•, μ—ν”Όμ†Œλ“œ 수, 평점 λ“±
  • rating ν…Œμ΄λΈ”: μ‚¬μš©μž ID, μ• λ‹ˆλ©”μ΄μ…˜ ID, 평점

2. κ·Έλž˜ν”„ ꡬ성 μš”μ†Œ μ •μ˜

이쒅 κ·Έλž˜ν”„(Heterogeneous graph) ν˜•νƒœλ‘œ 데이터λ₯Ό λͺ¨λΈλ§ν•©λ‹ˆλ‹€:

  • λ…Έλ“œ μœ ν˜•: μ‚¬μš©μž(User), μ• λ‹ˆλ©”μ΄μ…˜(Anime)
  • μ—£μ§€: μ‚¬μš©μžκ°€ μ• λ‹ˆλ©”μ΄μ…˜μ— 평점을 뢀여함
  • λ…Έλ“œ νŠΉμ„±: μ• λ‹ˆλ©”μ΄μ…˜(μž₯λ₯΄, μœ ν˜•, μ—ν”Όμ†Œλ“œ 수), μ‚¬μš©μž(평균 평점, 평가 횟수)
  • 라벨: μ˜ˆμΈ‘ν•  평점 κ°’

3. κ΅¬ν˜„ κ³Όμ •

μ• λ‹ˆλ©”μ΄μ…˜ λ…Έλ“œ νŠΉμ„± μΆ”μΆœ:

# λ…Έλ“œμ— ID λΆ€μ—¬
sorted_df = anime.sort_values(by="anime_id").set_index("anime_id")
sorted_df = sorted_df.reset_index(drop=False)
movie_id_mapping = sorted_df["anime_id"]

# λ…Έλ“œ νŠΉμ„± 선택
node_features = sorted_df[["type", "genre", "episodes"]]

# μž₯λ₯΄ 처리 (첫 번째 μž₯λ₯΄λ§Œ 선택)
genres = node_features["genre"].str.split(",", expand=True)
node_features["main_genre"] = genres[0]

# 원-ν•« 인코딩
anime_node_features = pd.concat([node_features, pd.get_dummies(node_features["main_genre"])], axis=1, join='inner')
anime_node_features = pd.concat([anime_node_features, pd.get_dummies(anime_node_features["type"])], axis=1, join='inner')
anime_node_features.drop(["genre", "main_genre"], axis=1, inplace=True)

 

μ‚¬μš©μž λ…Έλ“œ νŠΉμ„± μΆ”μΆœ:

# μ‚¬μš©μžλ³„ 평균 평점과 평가 횟수 계산
mean_rating = rating.groupby("user_id")["rating"].mean().rename("mean")
num_rating = rating.groupby("user_id")["rating"].count().rename("count")
user_node_features = pd.concat([mean_rating, num_rating], axis=1)

# μ‚¬μš©μž ID μž¬λ§€ν•‘ (0λΆ€ν„° μ‹œμž‘)
user_node_features = user_node_features.reset_index(drop=False)
user_id_mapping = user_node_features["user_id"]

μ—£μ§€ 정보 μΆ”μΆœ:

# ID λ§€ν•‘ 적용
movie_map = movie_id_mapping.reset_index().set_index("anime_id").to_dict()
rating["anime_id"] = rating["anime_id"].map(movie_map["index"]).astype(int)

user_map = user_id_mapping.reset_index().set_index("user_id").to_dict()
rating["user_id"] = rating["user_id"].map(user_map["index"]).astype(int)

# μ—£μ§€ 인덱슀 μΆ”μΆœ
edge_index = rating[["user_id", "anime_id"]].values.transpose()

κ·Έλž˜ν”„ 데이터셋 ꡬ좕:

from torch_geometric.data import HeteroData

data = HeteroData()

# λ…Έλ“œ νŠΉμ„± μ €μž₯
data['user'].x = user_node_features
data['movie'].x = anime_node_features

# μ—£μ§€ 인덱슀 μ €μž₯
data['user', 'rating', 'movie'].edge_index = edge_index

# 라벨 정보 μ €μž₯
data['user', 'movie'].y = y

IV. κ²°λ‘  🎯

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ€ κΈ°μ‘΄ μΆ”μ²œ μ ‘κ·Όλ²•μ˜ ν•œκ³„λ₯Ό 효과적으둜 κ·Ήλ³΅ν•˜λ©°, 더 μ •ν™•ν•˜κ³  λ§₯락에 λ§žλŠ” μΆ”μ²œμ„ μ œκ³΅ν•©λ‹ˆλ‹€. 넀이버, μš”κΈ°μš”, 리멀버 λ“± μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œμ˜ 성곡 μ‚¬λ‘€λŠ” κ·Έλž˜ν”„ 기반 μ ‘κ·Όλ²•μ˜ 효과λ₯Ό μž…μ¦ν•©λ‹ˆλ‹€.

μ£Όμš” μž₯μ μœΌλ‘œλŠ” ν™•μž₯μ„± ν–₯상, λ‹€μ–‘ν•œ 데이터 톡합 λŠ₯λ ₯, μœ μ—°ν•œ λͺ¨λΈ μ—…λ°μ΄νŠΈ, μ½œλ“œ μŠ€νƒ€νŠΈ 문제 ν•΄κ²° 등이 μžˆμŠ΅λ‹ˆλ‹€. 특히 μ‹ κ·œ μ‚¬μš©μžλ‚˜ μ•„μ΄ν…œμ— λŒ€ν•œ μΆ”μ²œ μ„±λŠ₯이 크게 ν–₯μƒλ˜μ–΄, μΆ”μ²œ μ‹œμŠ€ν…œμ˜ μ „λ°˜μ μΈ ν’ˆμ§ˆμ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•žμœΌλ‘œ κ·Έλž˜ν”„ 신경망(GNN)κ³Ό 같은 κ³ κΈ‰ κΈ°μˆ μ„ ν™œμš©ν•œ κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ€ λ”μš± λ°œμ „ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ©λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ˜ μ„œλΉ„μŠ€μ—λ„ κ·Έλž˜ν”„ 기반 접근법을 κ³ λ €ν•΄λ³΄λŠ” 것이 μ’‹κ² μŠ΅λ‹ˆλ‹€.


μ°Έκ³  λ¬Έν—Œ:

  • 넀이버 Deview 2020, "μΆ”μ²œμ‹œμŠ€ν…œ 3.0: λ”₯λŸ¬λ‹ ν›„κΈ°μ‹œλŒ€μ—μ„œ λ°”μ΄μ–΄μŠ€, κ·Έλž˜ν”„, 그리고 μΈκ³Όκ΄€κ³„μ˜ μ€‘μš”μ„±"
  • μš”κΈ°μš” 기술 λΈ”λ‘œκ·Έ, "GNN을 ν™œμš©ν•œ μš”κΈ°μš”μ˜ μΆ”μ²œ λͺ¨λΈ YoSEMITE"
  • 리멀버 빅데이터센터 AI Lab, "지식 κ·Έλž˜ν”„λ₯Ό μ΄μš©ν•œ 인재 μΆ”μ²œ μ‹œμŠ€ν…œ"
  • "Converting a Tabular Dataset to a Graph Dataset for GNNs", https://youtu.be/AQU3akndun4