[SWM] 사료 추천 알고리즘
당초 목표
"반려동물의 혈당 데이터, 종, 나이, 질병 이력을 학습시켜 맞춤형 사료를 추천하고, 향후 질병까지 예측하는 ML 모델 개발"
소프트웨어 마에스트로 프로젝트 초기, 다음과 같은 계획을 수립했다.
혈당 패턴 분석 → 당뇨 위험도 예측
반려동물 프로필(종, 나이, 체중) → 최적 사료 추천
협업 필터링 → "비슷한 강아지들이 선택한 사료"
하지만 결론부터 말하면, 완성하지 못했다.
이 글은 실패 사례를 공유하는 것이 아니라, 왜 실패했는지, 무엇을 배웠는지, 다음에는 어떻게 할 것인지를 정리한 회고다.
🚧 계획했던 ML 파이프라인
Phase 1: 데이터 수집 (4주)
반려동물 프로필 데이터
├─ 종(개/고양이), 품종
├─ 나이, 체중
├─ 질병 이력(당뇨, 신부전, 비만 등)
└─ 현재 사료 정보
혈당 데이터
├─ 평균 혈당
├─ 혈당 변동성 (표준편차)
├─ 스파이크 빈도
└─ 저혈당/고혈당 발생 횟수
사료 선택 데이터
├─ 사용자가 구매한 사료
├─ 사료 만족도 평가
└─ 재구매 여부Phase 2: 모델 학습 (6주)
python
❌ 실패 원인 분석
1. 결정적 문제: 데이터 부족
📊 필요 데이터 vs 실제 확보 데이터
데이터가 부족했던 이유
센서 구매 비용 문제
FreeStyle Libre 센서: 1개당 7만원
14일 교체 주기 → 월 14만원 소요
대부분의 보호자가 비용 부담으로 참여를 포기했다
타겟층의 한계
당뇨를 앓고 있는 반려동물: 전체의 0.5-2% (추정)
그 중 혈당 센서 사용자: 극소수
우리 서비스를 알고 참여한 사용자: 23명
높은 이탈율
초기 가입: 47명
1주 후 잔존: 31명
4주 후 잔존: 23명 (51% 이탈)
주요 이탈 사유: "센서 부착이 번거롭다", "비용 부담"
2. 시간 부족과 우선순위 조정
⏰ 타임라인 재구성
ML 모델 개발 시간이 사라진 배경
데이터 파이프라인 구축 지연
Kafka, Spark, Airflow 학습 시간 필요
실시간 데이터 처리 안정화에 4주 소요
기획 변경에 따른 일정 손실
초기: 산책 경로 + 건강 관리 통합 서비스
변경: 건강 관리에 집중
재설계에 2주 추가 소요
팀 내부 우선순위 조정
멘토 피드백: ML보다 실시간 대시보드 완성도에 집중 권고
최종 발표에서 시연 가능한 기능 우선 개발 결정
3. 팀 내부 역량 및 리소스 문제
👥 팀 구성과 역할
문제점
ML 전문가 부재 → 모델 설계/학습 담당자 없음
Backend + 데이터 엔지니어링 + ML 모두 혼자 담당 → 역량 분산
팀원 간 ML 이해도 차이 → 협업 어려움
시도했던 접근
python
→ 과적합(Overfitting) 문제 심각, 일반화 불가능
python
→ 데이터 부족으로 학습 자체가 불가능했다
4. 도메인 지식 부족
ML 모델을 개발하려면 "무엇을 예측할 것인가"를 명확히 정의해야 한다.
막혔던 지점
"당뇨 위험도"의 정의
평균 혈당 180 이상? → 너무 단순
혈당 변동성 + 스파이크 빈도? → 가중치는?
수의사 진단 기준? → 데이터 없음
"사료 추천"의 평가 기준
사용자 만족도? → 설문 데이터 없음
혈당 개선 여부? → 인과관계 증명 불가 (다른 변수 많음)
재구매율? → 구매 데이터 없음
협업 필터링의 한계
User-Item Matrix가 거의 비어있음 (Cold Start 문제)
23명의 사용자로는 유사 프로필 찾기 불가능
수의사 인터뷰 피드백
"혈당만으로 사료를 추천하는 건 위험하다. 신장 기능, 간 수치, 알레르기 등 고려할 요소가 너무 많다."
→ ML보다 규칙 기반(Rule-Based) 추천이 더 현실적이라는 결론
🔄 대안: 규칙 기반 추천 시스템
ML을 포기하는 대신, 수의사 가이드라인 기반 추천 로직을 구현했다.
✅ 구현한 로직
java
규칙 기반 시스템의 장점
해석 가능성
ML 블랙박스와 달리 추천 이유를 명확히 설명 가능
수의사가 검증 가능한 로직
적은 데이터로도 작동
학습 데이터 불필요
수의학 가이드라인만 있으면 구현 가능
유지보수 용이
새로운 규칙 추가/수정 간단
ML 재학습 불필요
규칙 기반 시스템의 단점
개인화 부족
모든 비슷한 프로필에 동일한 추천
개체별 특성 반영 어려움
확장성 한계
규칙이 복잡해질수록 관리 어려움
예외 케이스 처리 한계
데이터 기반 개선 불가
사용자 피드백 반영 어려움
A/B 테스트 불가능
📊 결과 비교
실제 사용자 피드백:
"왜 이 사료를 추천하는지 알 수 있어서 좋다" (긍정 67%)
"우리 강아지만의 특별한 추천이 아니라 아쉽다" (개선 요구 33%)
🎓 배운 점
1. 데이터가 없으면 ML은 불가능하다
많은 ML 강의와 튜토리얼은 이미 정제된 데이터셋을 제공한다. 하지만 실제 프로젝트에서는 데이터 수집 자체가 가장 큰 난관이었다.
특히 헬스케어 도메인은:
개인정보 민감도 높음
데이터 수집 비용 높음 (센서, 검사)
참여자 모집 어려움
앞으로는 **"데이터를 어떻게 모을 것인가"**를 먼저 고민해야겠다.
2. MVP는 가장 단순한 방법부터
처음부터 ML을 목표로 하지 말고:
규칙 기반 시스템으로 MVP 출시
사용자 확보 및 데이터 축적
충분한 데이터 확보 후 ML 도입
이 순서가 더 현실적이었다.
3. 완벽한 모델보다 설명 가능한 시스템
헬스케어 도메인에서는 **"왜 이 추천을 하는가"**를 설명할 수 있어야 한다.
ML 블랙박스보다 규칙 기반이 오히려:
사용자 신뢰 확보에 유리
수의사 검증 가능
법적 책임 명확
4. 팀 역량을 정확히 파악하라
ML 전문가 없이 ML 프로젝트를 계획한 것이 무리였다.
앞으로는:
팀 역량 내에서 가능한 목표 설정
외부 전문가 협업 또는 아웃소싱 고려
학습 시간을 일정에 충분히 반영
🚀 향후 개선 계획
1. 데이터 확보 전략
2. 단계적 ML 도입
3. 하이브리드 접근
java
이 방식이면:
규칙 기반으로 기본 품질 보장
ML로 개인화 추가
ML 실패 시에도 서비스 작동
Last updated