[SWM] 사료 추천 알고리즘

당초 목표

"반려동물의 혈당 데이터, 종, 나이, 질병 이력을 학습시켜 맞춤형 사료를 추천하고, 향후 질병까지 예측하는 ML 모델 개발"

소프트웨어 마에스트로 프로젝트 초기, 다음과 같은 계획을 수립했다.

  • 혈당 패턴 분석 → 당뇨 위험도 예측

  • 반려동물 프로필(종, 나이, 체중) → 최적 사료 추천

  • 협업 필터링 → "비슷한 강아지들이 선택한 사료"

하지만 결론부터 말하면, 완성하지 못했다.

이 글은 실패 사례를 공유하는 것이 아니라, 왜 실패했는지, 무엇을 배웠는지, 다음에는 어떻게 할 것인지를 정리한 회고다.


🚧 계획했던 ML 파이프라인

Phase 1: 데이터 수집 (4주)

반려동물 프로필 데이터
├─ 종(개/고양이), 품종
├─ 나이, 체중
├─ 질병 이력(당뇨, 신부전, 비만 등)
└─ 현재 사료 정보

혈당 데이터
├─ 평균 혈당
├─ 혈당 변동성 (표준편차)
├─ 스파이크 빈도
└─ 저혈당/고혈당 발생 횟수

사료 선택 데이터
├─ 사용자가 구매한 사료
├─ 사료 만족도 평가
└─ 재구매 여부

Phase 2: 모델 학습 (6주)

python


❌ 실패 원인 분석

1. 결정적 문제: 데이터 부족

📊 필요 데이터 vs 실제 확보 데이터

데이터가 부족했던 이유

  1. 센서 구매 비용 문제

    • FreeStyle Libre 센서: 1개당 7만원

    • 14일 교체 주기 → 월 14만원 소요

    • 대부분의 보호자가 비용 부담으로 참여를 포기했다

  2. 타겟층의 한계

    • 당뇨를 앓고 있는 반려동물: 전체의 0.5-2% (추정)

    • 그 중 혈당 센서 사용자: 극소수

    • 우리 서비스를 알고 참여한 사용자: 23명

  3. 높은 이탈율

    • 초기 가입: 47명

    • 1주 후 잔존: 31명

    • 4주 후 잔존: 23명 (51% 이탈)

    • 주요 이탈 사유: "센서 부착이 번거롭다", "비용 부담"


2. 시간 부족과 우선순위 조정

⏰ 타임라인 재구성

ML 모델 개발 시간이 사라진 배경

  1. 데이터 파이프라인 구축 지연

    • Kafka, Spark, Airflow 학습 시간 필요

    • 실시간 데이터 처리 안정화에 4주 소요

  2. 기획 변경에 따른 일정 손실

    • 초기: 산책 경로 + 건강 관리 통합 서비스

    • 변경: 건강 관리에 집중

    • 재설계에 2주 추가 소요

  3. 팀 내부 우선순위 조정

    • 멘토 피드백: ML보다 실시간 대시보드 완성도에 집중 권고

    • 최종 발표에서 시연 가능한 기능 우선 개발 결정


3. 팀 내부 역량 및 리소스 문제

👥 팀 구성과 역할

문제점

  • ML 전문가 부재 → 모델 설계/학습 담당자 없음

  • Backend + 데이터 엔지니어링 + ML 모두 혼자 담당 → 역량 분산

  • 팀원 간 ML 이해도 차이 → 협업 어려움

시도했던 접근

python

→ 과적합(Overfitting) 문제 심각, 일반화 불가능

python

→ 데이터 부족으로 학습 자체가 불가능했다


4. 도메인 지식 부족

ML 모델을 개발하려면 "무엇을 예측할 것인가"를 명확히 정의해야 한다.

막혔던 지점

  1. "당뇨 위험도"의 정의

    • 평균 혈당 180 이상? → 너무 단순

    • 혈당 변동성 + 스파이크 빈도? → 가중치는?

    • 수의사 진단 기준? → 데이터 없음

  2. "사료 추천"의 평가 기준

    • 사용자 만족도? → 설문 데이터 없음

    • 혈당 개선 여부? → 인과관계 증명 불가 (다른 변수 많음)

    • 재구매율? → 구매 데이터 없음

  3. 협업 필터링의 한계

    • User-Item Matrix가 거의 비어있음 (Cold Start 문제)

    • 23명의 사용자로는 유사 프로필 찾기 불가능

수의사 인터뷰 피드백

"혈당만으로 사료를 추천하는 건 위험하다. 신장 기능, 간 수치, 알레르기 등 고려할 요소가 너무 많다."

→ ML보다 규칙 기반(Rule-Based) 추천이 더 현실적이라는 결론


🔄 대안: 규칙 기반 추천 시스템

ML을 포기하는 대신, 수의사 가이드라인 기반 추천 로직을 구현했다.

구현한 로직

java

규칙 기반 시스템의 장점

  1. 해석 가능성

    • ML 블랙박스와 달리 추천 이유를 명확히 설명 가능

    • 수의사가 검증 가능한 로직

  2. 적은 데이터로도 작동

    • 학습 데이터 불필요

    • 수의학 가이드라인만 있으면 구현 가능

  3. 유지보수 용이

    • 새로운 규칙 추가/수정 간단

    • ML 재학습 불필요

규칙 기반 시스템의 단점

  1. 개인화 부족

    • 모든 비슷한 프로필에 동일한 추천

    • 개체별 특성 반영 어려움

  2. 확장성 한계

    • 규칙이 복잡해질수록 관리 어려움

    • 예외 케이스 처리 한계

  3. 데이터 기반 개선 불가

    • 사용자 피드백 반영 어려움

    • A/B 테스트 불가능


📊 결과 비교

실제 사용자 피드백:

  • "왜 이 사료를 추천하는지 알 수 있어서 좋다" (긍정 67%)

  • "우리 강아지만의 특별한 추천이 아니라 아쉽다" (개선 요구 33%)


🎓 배운 점

1. 데이터가 없으면 ML은 불가능하다

많은 ML 강의와 튜토리얼은 이미 정제된 데이터셋을 제공한다. 하지만 실제 프로젝트에서는 데이터 수집 자체가 가장 큰 난관이었다.

특히 헬스케어 도메인은:

  • 개인정보 민감도 높음

  • 데이터 수집 비용 높음 (센서, 검사)

  • 참여자 모집 어려움

앞으로는 **"데이터를 어떻게 모을 것인가"**를 먼저 고민해야겠다.

2. MVP는 가장 단순한 방법부터

처음부터 ML을 목표로 하지 말고:

  1. 규칙 기반 시스템으로 MVP 출시

  2. 사용자 확보 및 데이터 축적

  3. 충분한 데이터 확보 후 ML 도입

이 순서가 더 현실적이었다.

3. 완벽한 모델보다 설명 가능한 시스템

헬스케어 도메인에서는 **"왜 이 추천을 하는가"**를 설명할 수 있어야 한다.

ML 블랙박스보다 규칙 기반이 오히려:

  • 사용자 신뢰 확보에 유리

  • 수의사 검증 가능

  • 법적 책임 명확

4. 팀 역량을 정확히 파악하라

ML 전문가 없이 ML 프로젝트를 계획한 것이 무리였다.

앞으로는:

  • 팀 역량 내에서 가능한 목표 설정

  • 외부 전문가 협업 또는 아웃소싱 고려

  • 학습 시간을 일정에 충분히 반영


🚀 향후 개선 계획

1. 데이터 확보 전략

2. 단계적 ML 도입

3. 하이브리드 접근

java

이 방식이면:

  • 규칙 기반으로 기본 품질 보장

  • ML로 개인화 추가

  • ML 실패 시에도 서비스 작동

Last updated