Skip to content

Latest commit

 

History

History
259 lines (184 loc) · 12.2 KB

File metadata and controls

259 lines (184 loc) · 12.2 KB

CSV 업로드 실험: 내 파일로 AI 돌려 보기

오늘은 준비된 샘플이 아니라 파일을 직접 올려서 실험하는 날입니다.


오늘의 목표

  • 예측 실험실의 업로드 흐름을 익힙니다.
  • date, company, close, volume 열이 왜 필요한지 이해합니다.
  • 회사별 결과를 카드와 표로 비교하는 연습을 합니다.

CSV를 아주 쉽게 말하면

CSV는 줄과 칸으로 된 아주 기본 표 파일입니다.

쉽게 말해:

  • 세로 제목이
  • 가로 한 줄이

입니다.


오늘 필요한 열 4개

열 이름 쉬운 뜻
date 날짜
company 회사 이름
close 종가
volume 거래량

이 4개가 있으면 웹앱이 "언제", "어느 회사", "가격", "거래량"을 읽을 수 있습니다.


오늘의 낱말 5개

낱말 한자·영어 쉬운 뜻
CSV Comma-Separated Values 쉼표로 칸을 나눈 아주 기본 표 파일. 엑셀 없이도 열 수 있는 가장 단순한 데이터 형식
종가 終價 / closing price 하루 거래가 끝날 때 마지막으로 거래된 가격. 終(끝 종)+價(가격 가). AI 예측의 핵심 입력값
거래량 去來量 / volume 하루에 얼마나 많이 사고팔렸는지. 去(갈 거)+來(올 래)+量(양 량). 관심과 거래 활발도의 척도
상승 확률 上昇確率 / probability of rise 내일 주가가 오를 가능성을 0~1 사이 숫자로 나타낸 값. 上(위 상)+昇(오를 승)+確(확실할 확)+率(비율 률). 카드에 표시되는 AI의 핵심 예측 결과
특성 特性 / feature 모델이 입력으로 받는 각각의 힌트. 特(특별할 특)+性(성질 성). 수익률·거래량·이동평균처럼 웹앱이 자동으로 만들어 주는 10개 파생 값

오늘 열 페이지


오늘의 25분 코스

시간 할 일
5분 샘플 CSV를 내려받거나 준비한 CSV를 확인합니다.
10분 예측 실험실에 파일을 업로드합니다.
10분 회사별 카드, 특성 중요도, 모델 성능 탭을 읽습니다.

웹앱 따라 하기

  1. 샘플 CSV 다운로드로 파일을 받거나 준비한 CSV를 엽니다.
  2. 예측 실험실로 이동합니다.
  3. 파일 업로드 버튼으로 CSV를 올립니다.
  4. 모델 하나를 선택하고 예측 실행을 누릅니다.
  5. 회사별 카드에서 상승 확률, 정확도, AUC를 봅니다.
  6. 10개 특성, 특성 중요도, 모델 성능 탭을 차례대로 확인합니다.

오늘의 읽기 순서

순서 어디를 볼까 왜 볼까
1 회사 카드 회사마다 결과가 어떻게 다른지 보기
2 10개 특성 모델이 먹는 재료 보기
3 특성 중요도 어떤 힌트를 중요하게 봤는지 보기
4 모델 성능 숫자로 비교하기

관찰 미션

  • 같은 모델이어도 회사마다 중요한 특성이 달랐나요?
  • 가장 예측이 쉬워 보인 회사는 어디였나요?
  • 가격 관련 힌트와 거래량 관련 힌트 중 어느 쪽이 더 자주 보였나요?

한 줄 숙제

CSV 업로드 실험은 ________를(을) 올리고, 회사별 ________를(을) 비교하는 활동이다.


초급자도 읽을 수 있는 CSV 예시

date,company,close,volume
2026-01-02,삼성전자,74200,12500000
2026-01-03,삼성전자,74800,13200000
2026-01-02,NAVER,211000,320000
2026-01-03,NAVER,214500,410000

이 표를 올리면 웹앱은 이렇게 생각합니다.

  • 언제 데이터인지: date
  • 누구 데이터인지: company
  • 가격이 얼마인지: close
  • 얼마나 많이 거래됐는지: volume

여기에 붙여 생각하면 좋은 추가 힌트

  • 종목 예시: 삼성전자, NAVER, 현대차
  • 기술 지표 예시: MA5, RSI, 거래량 비율
  • 거시경제 예시: 금리, 환율, CPI

지금 화면은 기본 4개 열만 받아도 되지만,
머릿속으로는 "나중에는 이런 큰 시장 힌트도 함께 볼 수 있겠구나" 하고 연결해 두면 좋습니다.


알고리즘 처리 흐름 (Day 9)

CSV 업로드 예측 파이프라인 흐름

flowchart TD
    A["CSV 파일 업로드\n(date, company, close, volume)"] --> B["데이터 검증\n열 이름·날짜 형식 확인"]
    B --> C["회사별 데이터 분리\n(삼성전자 / NAVER / ...)"]
    C --> D["10개 특성 자동 생성\n(수익률·이동평균·RSI·변동성 등)"]
    D --> E["정답 레이블 생성\n내일 종가 > 오늘 종가 → 1, 아니면 0"]
    E --> F["학습/테스트 분할\n앞 80% 학습, 뒤 20% 테스트"]
    F --> G["모델 학습\n(로지스틱·RF·GBM·MLP 중 선택)"]
    G --> H["회사별 결과 카드 출력\naccuracy / AUC / 상승 확률 / 특성 중요도"]
Loading

모델별 예측 처리 흐름 비교

flowchart LR
    A["특성 10개\n입력"] --> B["로지스틱 회귀\n(선형 결합 + 시그모이드)"]
    A --> C["랜덤 포레스트\n(다수 트리 다수결)"]
    A --> D["그래디언트 부스팅\n(잔차 순차 보정)"]
    A --> E["신경망 MLP\n(은닉층 비선형 변환)"]
    B --> F["상승 확률 p₁"]
    C --> G["상승 확률 p₂"]
    D --> H["상승 확률 p₃"]
    E --> I["상승 확률 p₄"]
Loading

알고리즘 계보도 (Day 9)

flowchart TD
    LR["선형 회귀\n(1800s)"]
    LogR["로지스틱 회귀\n(1958, Cox)"]
    DT["의사결정나무\n(1986, Quinlan)"]
    RF["랜덤 포레스트\n(2001, Breiman)"]
    GB["그래디언트 부스팅\n(1999, Friedman)"]
    MLP["신경망 MLP\n(1986, Rumelhart)"]

    LR -->|"이진 분류 확장"| LogR
    DT -->|"배깅·앙상블"| RF
    DT -->|"순차 오차 보정"| GB
    LogR -->|"단일 뉴런화\n다층 구조"| MLP

    style LR fill:#f5f5f5
    style LogR fill:#fff9c4
    style DT fill:#fff9c4
    style RF fill:#c8e6c9
    style GB fill:#c8e6c9
    style MLP fill:#d4e6ff
Loading

모델 상세 참고 (Day 9)

업로드 실험에서는 같은 CSV라도 모델 선택에 따라 해석이 달라집니다.

모델 수학적 의미 탄생 배경 주식투자 활용 만든 사람/대표 GitHub
로지스틱 회귀 선형 점수를 확률로 바꿔 분류합니다. 간단하고 해석 가능한 확률 분류가 필요해 널리 쓰였습니다. 회사별 상승확률 비교의 기본 기준선으로 사용하기 좋습니다. David Cox(현대 통계 정립) · https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/linear_model/_logistic.py
랜덤 포레스트 여러 트리의 다수결 앙상블입니다. 단일 트리 불안정성 보완 목적에서 개발되었습니다. 업로드된 회사별 데이터에서 중요 특성 비교에 강점이 있습니다. Leo Breiman · https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/ensemble/_forest.py
그래디언트 부스팅 잔차를 순차 보정해 오차를 줄이는 부스팅 방식입니다. 성능 중심 탭형 예측 문제에서 강력한 비선형 모델로 발전했습니다. 회사별 경계 사례(애매한 상승/하락) 구분력 향상에 유리합니다. Jerome Friedman · https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/ensemble/_gb.py
신경망(MLP) 다층 비선형 함수 근사기로 복합 패턴을 학습합니다. 대규모 계산 환경 확대로 실용성이 크게 높아졌습니다. 서로 다른 기업의 비선형 반응 패턴을 함께 학습할 때 유용합니다. Rumelhart, Hinton, Williams · https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/neural_network/_multilayer_perceptron.py

분야별 모델 쓰임새 및 적합도 (Day 9)

모델 데이터셋 형태 헬스케어 자율주행 주식투자 로봇 AI Ops
로지스틱 회귀 정형 수치·범주 데이터, 이진 레이블 재입원 위험·질환 유무 분류, 해석 가능 기준선 단순 이진 환경 판단, 설명 중시 상황 회사별 상승확률 비교의 기본 기준선 이상 유무 이진 판단, 안전 기준선 장애 발생 여부 분류, 설명 가능 알림
랜덤 포레스트 정형 수치·범주 데이터, 중간 크기 진단 보조, 특성 중요도 기반 임상 지표 해석 도로 조건 분류, 다변량 센서 이상 감지 업로드된 회사별 데이터 중요 특성 비교 다변량 상태 분류, 고장 예측 장애 원인 분류, 이슈 우선순위 판단
그래디언트 부스팅 정형 수치·범주 데이터, 대용량 테이블 리스크 스코어링, 약물 부작용 예측 고정밀 도로 상황 분류, XGBoost 계열 회사별 경계 사례(애매한 상승/하락) 구분력 정밀 동작 신호 분류, 이상 예측 SLA 위반 예측, 장애 리스크 스코어링
신경망(MLP) 정형 수치 데이터, 중간~대용량 복잡한 진단 패턴, 의료 영상 특성 분류 비선형 센서 융합, 주행 결정 신호 서로 다른 기업의 비선형 반응 패턴 학습 복잡한 동작 제어, 다감각 데이터 처리 복합 메트릭 이상 탐지, 장애 패턴 인식

모델 혼합 & 검증 아이디어 (Day 9)

CSV 업로드로 여러 회사를 한 번에 분석하면, 회사마다 가장 잘 맞는 모델이 다를 수 있습니다.
회사별로 최적 모델을 다르게 선택하는 "맞춤 앙상블" 전략을 써볼 수 있습니다.

혼합 아이디어

혼합 방법 어떻게 섞나요? 왜 좋을까요?
회사별 최적 모델 선택 삼성전자는 랜덤 포레스트, NAVER는 GBM, 현대차는 로지스틱 회귀처럼 각 회사 데이터에서 가장 높은 AUC를 보인 모델을 회사별로 골라 사용 모든 회사에 같은 모델을 쓰는 것보다 각자에게 맞는 모델을 쓰면 전체 예측 품질이 높아짐
4모델 평균 후 회사별 비교 4개 모델의 상승 확률을 평균 내어 회사별 "앙상블 상승 확률"을 만들고, 이 확률이 높은 회사에 집중 특정 모델 편향 없이 여러 회사를 공정하게 비교
특성 중요도 기반 교차 학습 한 회사에서 중요하게 나온 특성이 다른 회사에도 유효한지 교차 테스트 공통으로 중요한 특성을 찾으면 더 범용적인 투자 힌트가 됨

검증 방법

  • 회사별 AUC 비교 표: 4개 모델 × N개 회사 표를 만들어 어느 회사에 어느 모델이 잘 맞는지 한눈에 봅니다.
  • 데이터 크기 영향 확인: 데이터가 많은 회사(예: 삼성전자 3년치)와 적은 회사(예: 신규 상장 6개월치)에서 각 모델의 성능 차이를 비교합니다. 데이터가 적을 때는 단순한 모델이 유리한 경우가 많습니다.
  • 특성 중요도 공통성 분석: 여러 회사에서 공통으로 상위에 등장하는 특성이 "범용 힌트"입니다.
  • 미래 기간 hold-out 검증: 업로드한 CSV의 마지막 20%는 완전히 따로 두고, 80% 기간만으로 학습한 뒤 20% 구간에서 검증합니다.

아주 쉽게 말하면: 삼성전자와 작은 바이오 회사는 움직임이 많이 다릅니다.
똑같은 모델을 쓰기보다 각 회사 성격에 맞는 모델을 고르는 것이 더 현실적인 투자 전략입니다.


웹앱 안쪽 들여다보기

예측 실험실에서 쓰는 두 가지 핵심 주소

  • GET /api/stock/sample-csv : 샘플 CSV 다운로드
  • POST /api/stock/predict-target : 업로드한 CSV 분석

업로드할 때 꼭 필요한 열

  • date
  • company
  • close
  • volume

서버가 회사별로 만드는 10개 특성

f1_daily_return, f2_return_5d, f3_ma5_ratio, f4_ma20_ratio, f5_vol_ratio, f6_rsi, f7_volatility, f8_golden_cross, f9_momentum_20d, f10_vol_change

응답은 어떻게 묶일까요?

응답은 회사 이름별로 묶여서 내려옵니다.

  • accuracy
  • auc
  • pred_prob
  • pred_label
  • feature_importance

그래서 예측 실험실은 “파일 1개 업로드 → 회사별 카드 여러 개 비교” 흐름으로 설계되어 있습니다.