본문 바로가기
Streamlit Wep App

제작 앱 소개: AI 기반 국가별 입국자 예측 및 맞춤 여행 서비스

by ssury94 2025. 3. 6.

 

📌 AI 기반 국가별 입국자 예측 및 맞춤 여행 서비스

 

 

사계절 축제와 함께하는 여행 패키지 가이드

StreamlitAPP

foreigner-entry-prediction-marurun66.streamlit.app

 

🌍 프로젝트 개요

AI 모델을 활용한 국가별 입국자 예측 및 맞춤 여행 기획 서비스입니다.
2018년~2024년(코로나 특수기 제외)의 데이터를 기반으로 2025~2026년 국가별 예상 입국자 수를 예측하고,
각국 여행객들에게 축제 및 사계절 테마 여행 패키지를 쉽고 편리하게 기획할 수 있는 플랫폼입니다.

🚀 주요 기능

🗺️ 국가별 입국자 예측 (Country 메뉴)

  • ProphetXGBRegressor 모델을 활용하여 15개국의 2025~2026년 예상 입국자 수를 제공합니다.
  • 특정 계절에 방문율이 높은 국가를 분석하여 계절별 입국 증가율(%)을 계산하고 제시합니다.
  • 입국 예정자 상위 1~5위 국가블루오션 국가인 6~10위 국가를 추천합니다.

🎉 축제 정보 (Festival 메뉴)

  • 한국관광공사 API에서 실시간 축제 정보를 받아옵니다.
  • 네이버 블로그 상위 검색 데이터를 기반으로 최신 축제 정보를 제공합니다.
  • 유저가 원하는 축제 테마를 선택하여 맞춤형 여행 패키지를 기획할 수 있습니다.

🍁 사계절 여행 정보 (Seasons 메뉴)

  • 한국관광공사 API를 활용해 사계절별 대표 여행지 정보를 실시간으로 제공합니다.
  • 네이버 블로그 API를 통해 추가 여행 정보를 제공하며, 유저 맞춤형 여행 패키지를 기획할 수 있습니다.

🏨 관광지 및 호텔 정보 (Tourist Spot 메뉴)

  • 유저가 선택한 축제 정보, 사계절 테마 위치를 바탕으로 맞춤형 호텔 및 관광지 추천을 제공합니다.
  • 호텔 및 관광지 지도 시각화 (카카오 맵 API 활용)
  • 네이버 블로그 데이터를 연동하여 관광지 정보 검색이 가능합니다.

🤖 AI 여행 플래너 (AI Planner 메뉴)

  • google/gemma-2-9b-it LLM 기반 API를 활용하여 유저의 맞춤형 여행 계획서를 생성합니다.
  • 유저가 선택한 국가, 날짜, 축제, 사계절 테마, 관광지, 호텔 정보를 바탕으로 AI가 여행 계획서를 작성합니다.
  • 사전 준비 요소 분석 & 마케팅 전략 가이드를 제공합니다.

📊 데이터 수집 & 모델 개발 과정

📌 데이터 선정 기준

  • 2022~2024년 데이터를 기반으로 예측을 진행했습니다. 2021년까지는 코로나 영향으로 입국 제한이 있었기 때문에 제외했습니다.
  • 2022년 7월 이후 입국 제한이 일부 국가에서 완화되었으나 일부 국가의 입국 제한이 계속되었으므로 2023~2024년 데이터로 예측을 진행했습니다.
  • 2018~2019년 데이터를 활용해 코로나 이전의 패턴을 반영하여 최종적으로 2018, 2019, 2023, 2024년 데이터를 활용했습니다.
  • 상위 15개국을 선정하여 입국자 수 예측을 했습니다.

📌 데이터 분석 예측 모델 선정 과정

🔹 Linear Regression (선형 회귀 분석)

  • r2_score = 0.88로 좋은 성능을 보였으나, 계절성을 반영하지 못해 음수 예측 값이 발생해 사용하지 않음.

🔹 XGBoost 모델

  • 초기 성능은 r2_score = 0.98였으나, 예측값이 예년 평균보다 낮게 나오는 문제 발생.
  • '월_sin', '월_cos' 변환을 통해 1월과 12월 간의 간극을 줄였고, 성능을 개선하여 r2_score = 0.987로 향상.

🔹 Prophet 모델

  • 계절성 반영에 강점을 가진 모델로, MAPE(%) 기준 4~15%로 좋은 성능을 보임.
  • 중국의 경우 예측 오차가 52%로 높은 문제 발생, XGBoost 모델로 보완.

🔹 Hierarchical clustering 분류 모델

  • 국가별 계절 선호도를 분석하려 했으나 유의미한 분석 결과를 얻지 못함.
  • 계절 선호도는 전체 입국자 수 대비 각 계절의 입국자 비율로 산출되었습니다.

📌 최종 모델 선정

  • Prophet 모델은 전체 계절 트렌드를 반영하여 예측에 유리하고, XGBoost 모델중국처럼 코로나 회복 영향이 큰 국가에 맞게 별도로 적용합니다.

📡 사용한 API 및 외부 데이터

유저가 선택한 정보를 바탕으로 LLM에게 명확한 지시를 내리는 프롬프트 작성

prompt = """
나는 한국 여행사의 직원입니다. 
{year}년 {month}월 {selected_country} 손님을 위한 한국{selected_location} 여행 코스를 준비해야 합니다. 
{language} 언어를 사용하는 {selected_country} 손님을 위해 사전에 준비하면 좋을 것이 무엇인지 알려주세요.
이동은 우리 여행사 제공 버스로 이동합니다.
이번 여행은 {selected_travel}를 중심으로 진행되며, 주요 방문지는 다음과 같습니다.

### 1. 숙박지 (호텔/펜션/리조트)
다음 장소에서 숙박이 이루어집니다.
- {", ".join([f"{hotel} ({category})" for hotel, category in selected_hotels.items()])}

### 2. 관광지
다음 관광지를 방문할 예정입니다. 각 장소의 매력과 해당 국가 고객에게 어필할 만한 포인트를 설명해주세요.

- {", ".join([f"{spot} ({category})" for spot, category in user_selection["selected_tourist_spots"].items()])}

고객이 한국에 입국해서 {selected_location}의 관광지를 둘러보고, 귀국하는 전체 여행 일정을 작성해주세요.
또한, {travel_preference} 성향의 {selected_country} 고객에게 이 여행에서 어떤 부분이 어필될지도 작성해주세요.

한글로 작성해주세요.
"""
messages = [{"role": "user", "content": prompt}, {"role":"system", "content":"당신은 여행 전문가입니다. 한글로, 꼼꼼하게 작성해주세요."}]

 

🚀 Streamlit 배포

  1. 로컬 컴퓨터 작업:
    • 코드 개발 및 테스트
    • session_state를 활용하여 유저가 입력한 정보를 유지하고, navigate_to 함수를 활용하여 페이지 이동 구현
    • 카카오맵 API에 접근 가능하도록 로컬 주소를 허용된 도메인으로 등록
  2. 스트림릿 배포:
    • requirements.txt으로 필요한 라이브러리 목록 관리
    • GitHub에 최종 푸시 후 Streamlit에 연동
    • 카카오맵 API에 접근 가능하도록 앱 주소를 허용된 도메인으로 변경
    • meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"로 Mixed Content 문제 해결