빅데이터 QAQC_3기/빅데이터 QAQC_3기 TIL

TIL_251126

usungusung 2025. 11. 26. 19:48

Today I learned

 

 

1. 시계열 4회차 문제풀이

Q1. 시계열 모델링을 마친 후 잔차분석

  • p-value가 0.05보다 크면 귀무가설을 채택(잔차는 상관관계가 없다)
  • 잔차가 백색소음을 보이므로, 모델이 데이터를 지지하고 있다 = 특정한 패턴 없이 데이터가 무작위성을 띈다
  • ACF
    • 잔차의 자기상관함수 막대가 모두 신뢰구간(파란 음영) 안쪽에 있다
    • 잔차들 사이에 유의미한 상관관계가 없다는 의미
  • Ljung-Box
    • 귀무가설: 잔차 간 상관관계가 없다
    • 대립가설: 잔차 간 상관관계가 있다 = 패턴(추세 or 게절성)이 남아잇으므로 모델 성능 개선 필요

Q2. AIC와 BIC

  • AIC, BIC 모두 낮은 값일수록 좋은 모델
  • AIC
    • 모델의 적합도(Likelihood)와 복잡성 사이의 균형을 고려
    • 에측력에 이점이 있어 복잡한 모델에 적절함
  • BIC
    • 샘플에 로그를 취해 패널티를 부여
    • AIC보다 복잡한 모델에 가혹한 패널티를 주는 만큼, 단순한 모델이 적합
    • 설명 및 해석력에 이점

 

Q3. pmdarima - auto_arima

seaosonality를 반영하기 위한  파라미터

  • 월별 데이터(Monthly Data) = 1년 주기의 계절성이 필요, m = 12
  • 계절성이 있다 : seasonal = True

 

Q4. Prophet 라이브러리

  • 데이터 결측치가 있더라고 전처리 없이 자동으로 처리
  • 명절, 휴일 같은 사용자 정의 이벤트를 add_country_holiday 등을 통해 모델에 반영
  • 비선형 추세를 반영하는데 한계가 있음
    • 통계적 세부 조정(fine-tuning)이 어려움
    • 비선형 추세 및 튜닝이 필요하면 ARIMA/SARIMA로 가라
  • add_seasonality, condition_name 을 활용하여 특정 시전에만 적용되는 조건부 계절성 모델링이 가능함

 

Q5. Prophet의 Cross Validation 코드

- df_cv= cross_validation() : 과거 데이터로 미래를 예측

- initial = '730 days' : 최초 학습에 사용할 훈련 데이터의 기간

- period = '180 days' : 교차 검증을 수행할 때 cutoff를 이동시키는 간격, 180일 마다 새로운 검증을 시작한다는 의미

- horizon = '365 days' : 각 cutoff 시점에서 미래를 예측할 기간

 

 

2. [라이브세션] API 구축

프로덕트 개발을 위한 절차를 이해하고 파이썬 스크립트간 모듈 import 개념을 이해하자.

 

(1) 최종 목표 선정

'작동하는 최소의 기능을 만족하는 프로덕트를 만들고 확대하는 방식으로 구현'

  • 기능 정의

  • 기능 번호 기능 주요 작업 필수/선택
    1 데이터 수집 데이터 전처리 필수
    2 모델 개발 예측 모델 학습, 저장, 평가 필수
    3 API 서버 개발 FastAPI 서버 구축 필수
    4 배포* 클라우드 혹은 회사 서버 내 배포 필수
    5 자동화 데이터 파이프라인, 재학습 스케쥴링 선택
    6 모니터링 로그 관리 선택
    7 프론트엔드 UX/UI 개발, 시각화 선택
  • 모델링: 데이터 수집, 생존 예측 모델 개발
  • API 서버 개발; 전달 인자를 받을 API 서버 구현
  • 컨테이너화 및 배포: 개발된 어플을 컨테이너화 후 배포
    • 배포: 개발자가 만든 소프트웨어를 실제 사용자가 인터넷을 통해 사용 가능한 환경으로 ㅇ롬김
    • 컨테이너화: 소프트웨어에서 필요한 요소(라이브러리, 코드) 등을 격리된 환경으로 포장하는 기술
  • 데이터 파이프라인 구축: 실시간 혹은 배치 데이터 수집 및 자동화

 

(2) 파이썬 모듈과 가상환경 세팅

1) 파이썬 설치 경로 찾기

C:\Users\<사용자명>\AppData\Local\Programs\Python

 

※ import 실행 시 탐색하는 순서

  • import pandas를 실행하면 스크립트 파일 찾는 순서는 다음의 우선순위를 가짐
    • 현재 작업 디렉토리  - 같은 폴더 안에 있는가? 가 최우선
    • python PATH 환경변수(시스템 설정)
    • 표준 라이브러리 - 파이썬이 설치된 기본 기능 등의 폴더
    • 서드파티 패키지 - pip 명령어로 설치한 기본 라이브러리들이 모이는 곳
import sys
from pprint import pprint

# 파이썬이 모듈을 찾는 경로 리스트 출력
pprint(sys.path)
['c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip',
'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\Lib',
'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\DLLs', '', 'C:\\Users\\정우성\\AppData\\Roaming\\Python\\Python311\\site-packages',
'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311',
'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages']

 

(2)-1. 파이썬 모듈 실습

  • 스크립트 파일: 코드를 담고 실행하는 가장 기본적인 파일
  • import: 스크립트 파일이 서로를 불러서 사용하는 방법
def add(a, b):
    return a + b
calculator.py 파일 생성
import calculator # 다른 스크립트 파일 불러오기
result = calculator.add(5, 3)
print(result) # 8 출력
불러온 calculator 파일로 계산 진행

 

(2)-2. 가상환경 세팅

  • 버전 이슈에 따른 버그나 충돌을 방지하여 독립된 환경을 구축하는 것을 말함
  • 가상환경
    • Python 프로젝트를 위한 독립적인 실행 환경을 제공하는 도구
    • 각 프로젝트마다 필요한 패키지와 의존성을 분리하여 관리
    • 장점
      • 의존성 충돌 방지: 서로 다른 버전의 라이브러가 필요한 프로젝트들을 독립적으로 관리함
      • 프로젝트 이식성 향상: 필요한 패키지 목록을 공유(requirements.txt 파일)
      • 시스템 환경 보호: 전역 python 환경을 오염시키지 않고 실험적인 패키지를 설치하고 테스트
    • 주요 가상환경 도구
      • venv: Python 3.3부터 기본으로 제공되는 가상환경 생성 도구
      • virtualenv: Python 2와 3 모두 지원하는 더 많은 기능을 제공하는 도구
      • conda: 데이터 과학 분야에서 많이 사용되는 패키지 관리 시스템
      • uv: 최근에 부흥한 패키지 관리 도구이자, 가상환경 관리 시스템. 속도가 매우 빠름
    • 가상환경 기본 명령어
python -m venv myenv 가상환경 생성
myenv\Scripts\activate 가상환경 활성화
pip list Package    Version
---------- -------
pip        25.3
setuptools 65.5.0

이렇게 나와야 정상
deactivate 가상환경 해제

 

(3) API 개발과 배포

  • API(Application Programming Interface)
  • 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
  • 위를 이용해서 데이터를 수집해올 수 있음.

(3)-1. 웹 개발 모듈 FastAPI

from fastapi import FastAPI

# FastAPI 앱 생성
app = FastAPI()

# 루트 URL 접속 시 실행되는 함수 (GET 메서드)
@app.get("/")
def read_root():
    return {"Hello": "FastAPI World!"}
uvicorn main:app --reload --host 0.0.0.0 --port 8080

실행은 이걸로

 

 

(3)-2. FastAPI 구동하기

순서
터미널/파이썬 입력 코드
결과
1
python -m venv helloworld
 
2
helloworld\Scripts\activate


왼쪽을 실행하면 이렇게 앞에 붙음
3
from fastapi import FastAPI

# FastAPI 앱 생성
app = FastAPI()

# 루트 URL 접속 시 실행되는 함수 (GET 메서드)
@app.get("/")
def read_root():
    return {"Hello": "FastAPI World!"}
main.py 파일에 다음 내용 붙여넣기
4
pip install fastapi
fastapi 설치
5
pip install uvicorn unicorn 설치
6
uvicorn main:app --reload --host 0.0.0.0 --port 8080
INFO:     Will watch for changes in these directories: ['C:\\Users\\<사용자명>\\Desktop\\QAQC_3rd\\시계열']
INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO:     Started reloader process [24496] using WatchFiles
INFO:     Started server process [27868]
INFO:     Waiting for application startup.
INFO:     Application startup complete.


이렇게 까지 떠야 성공!
7
http://localhost:8080/
접속해서 확인하기

(4) 타이타닉 모델 만들기

 

 

 

'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글

TIL_251128  (0) 2025.11.28
TIL_251127  (0) 2025.11.27
TIL_251125  (0) 2025.11.25
TIL_251124  (0) 2025.11.24
TIL_251121  (1) 2025.11.21