20분
Common Pitfalls: 자주 하는 실수
Day 3: 유사도 알고리즘
Common Pitfalls: 자주 하는 실수
그래프 알고리즘 > Day 3: 유사도 알고리즘
학습 목표
이분 그래프 프로젝션 오류 방지 대규모 데이터 처리 전략 희소 데이터 대응 결과 필터링 주의점
유사도 알고리즘 Common Pitfalls
Pitfall 1: 이분 그래프에서 한 종류 노드만 포함
증상
- 유사도 결과가 없거나 이상함
- "No results" 반환
원인
유사도는 "공유 이웃"을 측정하는데, 이웃 노드가 없음
잘못된 코드
에디터 로딩 중...
올바른 코드
에디터 로딩 중...
Pitfall 2: 임계값 없이 대규모 실행
증상
- 메모리 부족
- 너무 많은 관계 생성
- 쿼리 타임아웃
원인
N개 노드 → N(N-1)/2개 쌍 비교
계산 예시
에디터 로딩 중...
잘못된 코드
에디터 로딩 중...
올바른 코드
에디터 로딩 중...
Pitfall 3: 희소 데이터에서 Jaccard
증상
- 대부분의 유사도가 0
- 의미 있는 결과가 거의 없음
원인
Jaccard는 교집합이 없으면 0
예시
에디터 로딩 중...
해결책
에디터 로딩 중...
Pitfall 4: write와 stream 결과 혼동
증상
- write로 저장했는데 쿼리에서 관계 안 보임
- 예상과 다른 결과
원인
write는 노드 레이블 필터링을 하지 않음
잘못된 기대
에디터 로딩 중...
해결책
에디터 로딩 중...
Pitfall 5: 방향 그래프에서 UNDIRECTED 누락
증상
- 유사도가 예상보다 낮음
- 비대칭 결과
원인
기본 방향은 NATURAL (원본 유지)
잘못된 코드
에디터 로딩 중...
올바른 코드
에디터 로딩 중...
체크리스트
| 항목 | 확인 |
|---|---|
| 이분 그래프 두 종류 노드 포함? | [ ] |
| topK와 similarityCutoff 설정? | [ ] |
| 희소 데이터 대응 전략? | [ ] |
| write 결과 필터링 고려? | [ ] |
| UNDIRECTED 방향 설정? | [ ] |