1. 서비스 개요
로또 6/45는 본질적으로 균등 확률 게임이지만, 과거 추첨 기록과 판매량 정보를 바탕으로 가중치 기반 추천을 생성합니다. 목표는 예측이 아니라 “추천 전략의 일관성”과 “사용자에게 투명한 의사결정 근거”를 제공하는 것입니다.
- 출력: 매주 5개의 조합
- 입력: 회차별 당첨 번호, 보너스 번호, 판매량/당첨금 (동행복권 API)
- 자동화: 매주 토요일 21시 신규 회차 수집, 추천 생성
2. 데이터 파이프라인
2.1 수집
LottoAPIClient
가 동행복권 공개 JSON API에서 회차별 정보를 수집합니다.- 데이터는 DB에 저장되며, 기존 회차는 UPSERT로 갱신됩니다.
2.2 평가
- 실제 당첨 번호가 확정되면, 과거에 생성된 예측을 조회하여 일치 개수·보너스 일치 여부를 계산합니다.
- 평가 결과는 과거 예측 결과 화면에서 노출됩니다.
2.3 프런트엔드 데이터
- 최신 회차 정보, 추천 조합 5개
- 1194회차 부터 예측과 실제 결과 요약
3. 특징 엔지니어링
로또와 같이 피처가 빈약한 도메인에서는 간단한 통계가 대부분입니다.
- 회차별 번호 등장 빈도: 최근 30/60/전체 창을 가중치로 반영
- 번호 간 간격 분포: 1~6번째 숫자 차이를 벡터로 기록
- 보너스 번호 히트율: 상위 10% 빈도 번호를 분리하여 탐색
- 판매량·당첨자 수: 모델 학습에는 직접 사용하지 않지만, 결과 해석과 대시보드에 활용
현재 추천 엔진은 빈도 기반의 가중치 샘플링을 사용합니다.
4. 추천 전략
- 최근 180개 회차를 가져와 번호별 가중치를 계산합니다 (최근 회차일수록 높은 가중치).
- 조합 하나를 만들 때마다 무작위 가중치 샘플링으로 6개 숫자를 뽑습니다.
- 이미 선택된 번호의 가중치는 0.7배로 감소시켜, 다섯 개 조합이 서로 겹치지 않도록 합니다.
- 각 조합에 대해 평균 가중치를 점수로 기록하여 비교 근거를 남깁니다.
결과적으로 첫 두 세 조합은 상대적으로 “Hot”한 번호 비중이 높고, 마지막 조합은 무작위성이 조금 더 커지도록 설계되어 있습니다.
5. 한계와 주의사항
- 로또 당첨은 본질적으로 Random Process이므로, 어떤 모델도 확률적 우위를 보장하지 않습니다.
- 데이터 품질(당첨 번호 등록 지연, API 장애)에 따라 일시적으로 추천이 생성되지 않을 수 있습니다.
- 추천은 투자 조언이 아니며, 일관된 전략과 재미 요소 제공이 목적입니다.