공부 기록/회고

세번째 프로젝트 [낙농업 관리 최적화 프로젝트]

cysk 2026. 1. 27. 08:12

 

진행 기간 : 2025.10.30 ~ 2025.11.12 (2주) | 4인

기여 내역 : 전처리, 문제 정의, 분석, 클러스터링 군집별 라벨링 및 관리법 제언

 

1. 데이터 소개

스마트팜 코리아의 2021 「낙농_로봇착유기_데이터_2021」 및 「낙농_유성분검사성적서_데이터_2021」

2. 전처리

중복 제거 및 결측치 제거

주요 컬럼 [305일 유성분, 유단백 등]이 모두 결측치인 행이 약 40%가까이 되어 결측치 데이터를 어떻게 처리할 것인지가 1차적인 고민이였다. 생각했던 처리방법은 두가지로 

1) 각 개체번호 별 중앙값, 혹은 평균으로 채우기

2) 제거

였다. 첫번째 방법은 각 개체의 특성(유지방, 유량, 유단백, 체세포수)을 살리면서 데이터를 살릴 수 있다는 장점이 있으나 데이터가 중앙으로 군집한다는 단점이 있다.

이렇게 데이터의 군집이 생성된것은 실제 우유 생산 패턴의 분산을 과도하게 축소시켜 통계적 유의성을 왜곡 시킬 수 있는 위험이 있다는 생각과 함께 "분석가의 의도에 따라 데이터가 오염된것이 아닌가?" 하는 의문이 들었고, 실제 데이터가 아닌 생성된 데이터이기에 신뢰도도 낮다고 판단하였다. 따라서 데이터의 양적 확보보다 데이터의 품질을 우선시하여 해당 행을 삭제하는 방향으로 확정하였다. 

 

3. 문제 정의

데이터를 확인하며 가장 눈여겨본 문제는 개체의 체세포수가 매우 높음에도 지속적인 착유가 이루어진다는 것이였다.

 

체세포수는 원유의 위생 등급을 결정하는 지표로 20만 cells/mL 초과시 1등급에서 탈락하여 수취 가격이 즉각적으로 하락한다. 또한 이는 유방염의 지표로 활용되며 이를 방치할 경우 개체의 영구적인 생산성 저하 및 로봇 착유기를 통한 군집 내 연쇄 감염으로 이어질 수 있다.

 

따라서 이 프로젝트는 유성분 및 로봇 착유 데이터를 활용하여 개체별 건강 관리, 유품질 유지, 설비 효율 진단을 분석하고, 데이터 기반의 관리 프로세스를 구축하는 것을 목표로 진행하였다.

이를 위한 질문 설정은 다음과 같다. 

1. 어떻게 하면 건강과 품질을 해치지 않으면서 생산량을 최대화할 수 있을까?

2. 어떻게 하면 개체 관리를 쉽게 할 수 있을까?

3. 어떻게 하면 설비 효율을 확인 할 수 있을까?

 

4. 분석

 4-1 :  어떻게 하면 건강과 품질을 해치지 않으면서 생산량을 최대화할 수 있을까?

우선 낙농 데이터의 핵심 변수인 [일일 총 착유 횟수]는 1회, 2회 등과 같이 끊어지는 정수 형태로 나타나는 이산형 데이터이다. 그렇기에 포아송 회귀를 통해 산포와 분포 특성을 먼저 진행하였다. 

 

포아송 회귀 분석 결과 0.1939의 과소산포를 확인하였고 이는 착유 횟수가 완전히 무작위적이지 않고, 로봇 착유 시스템 내에서 통제되고 있음을 의미한다. 통제되고 있다는 것은 해당 데이터가 농장주나 로봇 착유기 시스템의 의도에 의하여 데이터가 편향되어 있음을 의미하며 이러한 선택 편향이 존재하는 상황에서 일반적인 평균 비교를 수행할 경우, 착유 횟수가 유량을 늘린 것인지, 원래 유량이 많은 소를 많이 짠 것인지 구분할 수 없게 된다. 즉 개체별 특성을 유지하고, 개체마다 분리하여 진행 할 수 있는 방법론이 필요하였다.

 

문제는 내가 그 방법을 모른다는 것이였다. 당시 가장 먼저 든 생각은 부동산 프로젝트 당시 사용했던 헤도닉 인덱스였다.

헤도닉 인덱스는 상품의 가격을 각 속성 가치의 합으로 분해한다. 이를 활용하면 상품의 가격[착유량]을 산차, 품질 관련 지표등의 각 속성 가치를 뺀 잔차를 구할 수 있을것이고, 각 개체마다 인덱스를 만들어 해당 잔차를 시계열상에 놓고 그 차이를 역산한다면 착유량의 순수 이동을 구할 수 있을것이란 생각이였다. 그러나 이는 모델이 지나치게 비대해지고 자유도가 소실되는 한계가 있어 통계적 유의성이 낮아진다는 한계가 있다. 

 

그렇기에 다양한 회귀 방법론을 찾던 중 Panel OLS를 찾게 되었다. 

 

Panel OLS는 개체별 인덱스를 직접 변수로 추가하지 않고도 수학적인 내부 편차 변환을 통해 개체 고유의 특성을 모델 내에서 상쇄시켜 제거한다. 이를 통해 자유도를 보존하면서도 "원래 유량이 많은 소를 많이 착유했는지" 같은 편향에 관한 문제를 해결할 수 있다고 판단하였다.

 

결과적으로, 다음과 같은 착유 횟수별 순수효과를 도출할 수 있었다. 

 

또한 어떤 편향이 존재하는지 알아내기 위해 비교분석을 위한 ANOVA도 진행하였다.

ANOVA는 집단 간 평균 차이가 통계적으로 유의한지 검증하는 방법으로 t 검정의 확장판이다. 집단 간 분산을 집단 내 분산으로 나눈 F값을 통해 모든 그룹의 평균이 동일한지, 아니면 최소 하나가 다른지 판별한다. 

그러나 평균을 통해 구한다는 단점이 있어 위에서 말한 집단 내 개체의 고유 특성을 반영하지 못한다. 이러한 한계점을 이용하여 ANOVA와 Panel OLS를 비교하면 착유 2회라는 집단이 있을 때의 평균(ANOVA)과 1>2회로 이동하였을때 개체별 증가량 평균(Panel OLS)를 비교하여 어떤 편향이 있는지 밝혀낼 수 있다. 

 

쉽게 말해서 착유당 고정적으로 6, 7을 착유하는 소 A, B가 있다고 가정해보겠다.(A=6, B=7)

이때 ANOVA 결과를 통해 2회 착유 집단의 평균이 6.4라면 우리는 A, B가 동일한 횟수로 착유했을때의 평균(6.5)보다 낮기에 음의 편향이 일어났다고 확인 할 수 있다. 

ANOVA와 Panel OLS의 결과를 비교한 표이다,

빨간 박스를 보면 ANOVA는 8.8658,  Panel OLS는 10.082로 Panel OLS가 더 높게 나타난다. 이는 개체별로 3회 착유했을 경우의 평균은 10.082kg인 반면 3회착유라는 이벤트에서는 8.8658kg이 늘어났다는 것으로 착유량이 더 적은 소를 더 많이 착유한다는 의미이다. 즉 농장주의 편향은 생산량이 적은 소를 더 많이 착유한다. 

 

 

 

결론 및 인사이트

발표하기 위해 만든 PPT 중 일부 발췌

착유 횟수가 늘어날수록 유성분 품질은 지속적으로 하락하는 트레이드오프 관계가 확인되었고 특히 1일 4회 이상 착유시 유지방 함량이 감소하여 유품질 저하에 따른 품질 비용이 커지는 비효율 구간에 진입한다.  따라서 생산성과 유품질의 균형이 우수한 1일 3회 착유가 농가 수익 극대화를 위한 최적 착유 횟수이며 농장주는 생산량이 적은 소를 더 많이 착유해 생산량을 보완하는 등 음의 편향이 존재한다.

 

4-2 어떻게 하면 개체 관리를 쉽게 할 수 있을까?

모든 소의 상태를 매일 개별적으로 확인하는 것은 불가능에 가깝다. 이를 해결하기 위해 영양 및 건강 지표를 기준으로 유사한 특성을 가진 개체들을 그룹화하는 K-means를 실행하였다. 

 

1)전처리

  • 다중공선성 확인 : VIF지수를 확인 한 후 유지방율을 변수에서 제거하였다. 
  • 데이터 스케일링 : 각 변수의 단위 차이가 군집 결과에 왜곡을 주지 않도록 StandardScaler를 적용하여 표준화 하였다.
  • 로그 변환 : 체세포수의 왜도를 해결하기 위해 로그 변환된 값을 사용하여 군집의 응집도를 높였다. 

2) 최적 군집 수 결정

  • Elbow Method를 통해 K = 6~8구간에서 기울기가 완만해지는 지점을 확인하였다. 실루엣 점수 분석 결과, K= 6(0.163), K=8(0.153)으로 둘 다 절대적 수치는 낮으나 K=6일 경우 미세하게 높음을 확인하였다
  • 비즈니스 및 UX/UI적 판단 : 국내 낙농가 농장주의 평균 연령대(50대 이상 76.8%)를 고려했을 때, 군집이 너무 세분화되면 오히려 관리에 혼선을 줄 수 있다고 판단하였다.
  • 군집별 개체 해석 결과 K=6일경우 케토시스, 유방염 등의 병증 개체군과 클러스터링 군집이 1:1로 매칭됨을 확인하였다. K=8일경우 고생산, 저생산과 같은 생산량 관련 지표에 의해 추가 분화가 일어남을 확인하였다. 
  • 결론 : 군집 해석 결과와 사용자 편의등을 종합하여 최종적으로 K=6를 선택하였다.

5. 결론

최종적으로 분석 결과를 시각화한 의사결정 지원 대시보드를 구축하였다. 이를 통해 농장주는 격리가 필요한 개체와 설비 점검이 필요한 부분을 즉각적으로 파악할 수 있다. 아래의 접은글은 해당 대시보드의 시연 영상이다.

6. 한계점

  • 착유 횟수 데이터의 불균형(2~3회에 90% 집중)으로 인한 극단 국간 분석 신뢰도 제한
  • 인건비, 전력료 등 실제 운영 비용 변수 누락으로 ROI산출 미비
  • 개체별 생산성과 건강 상태에 결정적인 영향을 미치는 산차와 반추 시간 등 핵심 생체 데이터가 부재하여 심층적인 분석이 불가능

향후 발전 방향

  • ROI 분석 기반 마련 : 정확한 경제성 분석을 위해 누락된 비용 데이터를 확보
    • 운영 비용 : 인건비, 사료비, 전력 사용량, 설비 감가상각
    • 건강 비용 : 수의사 비용, 약품비, 개체 도태율
    • 최종 목표 : 착유량 증가와 품질, 운영, 건강 비용을 종합적으로 비교하는 ROI기반 의사결정 모델을 구축
  • A/B 테스트를 통한 가설 검증
    • 데이터 불균형 문제 해결 : 4-5회 착유 구간의 검증을 위해 통제된 환경에서의 A/B 테스트를 설계하여 데이터를 확보해야 함.
  • 개체별 최적화 모델로의 발전
    • 농장 전체의 평균 최적화이며, 개별 효율을 고려하지 못한 한계가 존재함.
  • 최종 목표 : 개체 고유 특성을 입력받아 해당 개체에게 가장 적합한 착유 횟수를 추천하는 개체별 최적화 모델을 개발

 

7. 회고

가장 치열하게 고민하고, 분석했던 프로젝트였으며 나의 문제를 알게 한 프로젝트다. 

우선 기반 지식이 빈약하다. 다양한 방법론을 공부하였지만 지식의 편향이 있었지 않았나 싶다. 

또한 체력 배분에 문제가 있었던 것 같다.

09~21시까지 진행되는데 보통 17시, 18시가 되면 머리가 안돌아가는 현상이 지속적으로 발생했다. 간단하게 말하면 낮의 지능과 밤의 지능 간의 차이가 극심했다. 이유를 찾아보기위해 현직 상담사로 일하는 친구에게 문의하였을 때 번아웃과 주요 증상이 일치한다고 진단 받았고, 센터로와서 검사를 한번 돌려보라는 권유를 받았다.

세상에, 멘탈 리소스 관리를 못했다니... 자만이 이렇게 무섭다. 

 

진단 이후 체력적 배분이나 쉴땐 쉬는 행위를 하며 체력이나 멘탈의 리소스 관리를 배웠고, 점심시간에도 밥먹으면서 분석하고, 쉬는 시간에 분석하는 행위를 그만두니 약 3주만에 회복이 되었다.

 

결론적으로는 1. 지식의 편향 인식 2. 자원 관리 방법 학습 3. 자만에 대한 인식을 학습할 수 있었던 프로젝트였고, 내적인 성장을 이룬 프로젝트같다.