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

TIL_251224

usungusung 2025. 12. 24. 20:53

Today I learned

 

 

1. 오전 문제풀이(이상치 탐지)


Q1. 이상치 유형 구분

  • 단일 포인트 이상치
    • 단일 시점에서 온도 센서 값이 120 ℃로 튀는 경우
    • 측정 오류로 입력 값이 한 번만 음수로 기록됨
  • 맥락적 이상치
    • 맥락을 고려해야 판단할 수 있음 
    • 야간 공정에서 정상 범위 온도지만, 주간보다 높은 온도가 지속됨
  • 집단적 이상치
    • 개별 값은 정상이나, 연속적인 패턴 변화 
    • 개별 값은 정상, 30분간 진동 패턴이 연속적으로 변

Q2. Point Anomaly 탐지(Isolation Forest)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest

np.random.seed(42) #난수 시드를 고정하여 재현 가능한 결과 확보

# 정상 데이터
X_normal = np.random.randn(200, 2) #평균 0, 분산 1의 표준 정규분포에 200개 데이터, 2차원

# 이상치 데이터
X_outlier = np.random.uniform(low=6, high=8, size=(10, 2))
#np.random.uniform 이건 low < x < high 이런 꼴임.
#size = (10,2) : 2차원의 특징을 가진 데이터 10개

# 데이터 결합
X = np.vstack([X_normal, X_outlier])

# 모델 학습
model = IsolationForest(contamination=0.05, random_state=42)
pred = model.fit_predict(X)

# 시각화
plt.figure(figsize=(6,6))
plt.scatter(X[:, 0], X[:, 1], c=pred, cmap='coolwarm')
# X좌표: X[:(모든 행),0(첫번째 줄)]
# y좌표: X[:(모든 행),1(두번째 줄)]

plt.title("Point Anomaly Detection (Isolation Forest)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()

 

 

Q3. 문맥적 이상치 vs 집단적 이상치vs 포인트 이상치 비교

  • 단일 포인트 이상치
    • 데이터 값이 평균에서 크게 벗어나는 경우
    • 값 자체만 보고도 이상 판단이 가능 = 포인트 이상치
    • 정상 온도 범위 20~50 ℃인데, 특정 시점에서 120 ℃
      • 딱 봐도 수상해 보이지 않나!
  • 문맥적 이상치
    • 값은 정상이지만, 시간, 상황을 고려하면 비정상
      • 주간 공정 온도 40℃ = 정상
      • 야간 공정 온도 40℃ = 비정상 인 경우
  • 다변수 포인트 이상치
    • 여러 데이터가 동시에 동일한 이상치를 가짐
    • 동시성만 있고 연속성은 없음
  • 집단적 이상치
    • 연속성을 보임
    • 연속성은 집단적 이상치만의 특징, 이상치 전체의 공통 조건은 아

 

 

Q4. 다변수 시계열 변수 그룹화 이상 탐지 모델(Isolation Forest)

import numpy as np
from sklearn.ensemble import IsolationForest

np.random.seed(0)

# 가상 다변수 데이터
data = np.random.randn(300, 6)
#샘플 수 300개, 전체 feature 6개

# 변수 그룹화
group_temp = data[:, :3]
#data[:(전체), :3(0번부터 2번열 까지)
group_press = data[:, 3:]
#data[:(전체), :3(3번부터 끝까지)
#온도별, 압력별 변수 그룹화

# 그룹별 모델
model_temp = IsolationForest(contamination=0.05, random_state=0)
model_press = IsolationForest(contamination=0.05, random_state=0)

pred_temp = model_temp.fit_predict(group_temp)
pred_press = model_press.fit_predict(group_press)

print("Temperature Group Anomalies:", sum(pred_temp == -1)) 
print("Pressure Group Anomalies:", sum(pred_press == -1))
# 보통은 1이 정상, -1이 이상, 즉 전체에서 이상치만 더해줘

Temperature Group Anomalies: 15 Pressure Group Anomalies: 15

 

Q5. 모든 변수를 하나의 모델로 처리했을 때 단점

  • 서로 다른 물리적 특성과 패턴을 가진 변수들이 하나의 모델에 섞이면서 감지 정확도가 낮아짐
  • 이상이 발생했을 때 어느 시스템에서 문제가 발생했는지, 원인 분석이 어려

 

Q6. 이동 평균, 이동 표준편차 기반 집단적 이상치 탐지

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(42)

signal = np.random.normal(0, 1, 300) #길이 300의 시계열 생성, 평균0, 표준편차1
signal[150:180] += 3  # 집단적 이상 구간, 150~179 구간(30포인트)에서 신호 전체가 위로 shift


df = pd.DataFrame({"signal": signal})

df["rolling_mean"] = df["signal"].rolling(window=10).mean() # 최근 10개 포인트 평균
df["rolling_std"] = df["signal"].rolling(window=10).std() #최근 10개 포인트의 표준편차

plt.figure(figsize=(12,4))
plt.plot(df["signal"], label="Signal")
plt.plot(df["rolling_mean"], label="Rolling Mean")

plt.fill_between(
    df.index,
    df["rolling_mean"] + 2 * df["rolling_std"],
    df["rolling_mean"] - 2 * df["rolling_std"],
    alpha=0.2
)

plt.title("Collective Anomaly Detection (Time Series)")
plt.legend()
plt.show()

 

 

2. [라이브세션] 생성형 AI를 활용한 실전 리포팅 및 AI 서비스 개발 3회차

 

  • 강의 개요 및 목표
    • Vibe coding
    • Zero Python
    • 바이브코딩 워크플로우

 

  • 학습목표
    • 웹 프론트엔드의 기본 구조 (HTML/CSS/JS) 이해
    • 개별 문서를 AI 에게 작성시키는 법을 익힘
    • Gemini CLI 도구를 활용해 텍스트 명령어로 실제 작동하는 웹사이트 배포

 

1. 개념

  • 웹프론트엔드
    • 우리가 보는 웹페이지는 서버에서 제공된 HTML 형식의 자료를 웹브라우저를 통해 보는 것.
    • 우베페이지를 요청 -> 웹 페이지가 HTML 문서를 통해 응답
    • HTML 뼈대에 CSS 디자인을 입혀 보여지는 것.
    • 웹페이지는 보통 HTML, CSS, Javascript

 

HTML

 

 

웹 브라우저에서 F12를 누르면 볼 수 있음

 

CSS

웹페이지 스타일 정의

 

 

2. 개발의 설계도 : PRD

  • Product Requirements Documents
  • 개발 전 '무엇을, 왜, 어떻게' 만드는지 정의하는 제품 요구 사항 정의서
  • AI 코딩 실패의 주요 원인: 모호한 프롬프트
  • 내 머릿속의 추상적인 아이디어를 AI가 이해하기 쉬운 구체적인 개발 문서로 변환하는 과정

 

PRD 항목

  • 프로젝트 배경 및 목적
  • 타겟 유저
  • 데이터 시각화 및 기능 요구사항
  • 데이터 로직 및 알림
  • 기술적 요구사항
    • 유지보수 문제: LLM 자체가 과거의 데이터를 가지고 학습한 것이므로, 최신 프로그램 등을 사용한 경우 트러블슈팅, 이해하기에 난이도가 어려울 수 있음 따라서 기술적 요구사항을 낮게 잡아야 함.
    • 제조업: 제조업은 IT가 보수적으로 이뤄지기 때문에, 도메인 특성 때문에 내가 이해할 수 있고 최대한 간단한 걸로 들어가야 함.

바이브 코딩 도구 비교

  • Cursor: Vscode + 여러 LLM 모델을 같이 쓸 수 있는 에디터
  • Claude Code
  • Gemini CLI: 무료의 장점+구글 워크스페이스 연동

Gemini CLI 실습

 

 

3. [라이브세션] 생성형 AI를 활용한 실전 리포팅 및 AI 서비스 개발 3회차

목표

제조업 품질 문제 해결을 위한 3단계 접근법 이해

논리적 원인 분석

통계적 샘플링 검사

신뢰성 지표 산출

 

1) FTA(Fault Tree Analysis)

 

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

TIL_251229  (0) 2025.12.29
TIL_251226  (1) 2025.12.26
TIL_251223  (1) 2025.12.23
TIL_251222  (1) 2025.12.22
TIL_251219  (1) 2025.12.19