Today I learned
1. [라이브세션] 공정 데이터를 활용한 이상탐지 및 품질 이상 조기 예측 1회차
1. 이상치 탐지 유형
Point Anomalis(포인트 이상치)
- 단일 센서 또는 측정값이 정상 데이터와 비교했을 때 급격하게 벗어난 경우.

문맥적 이상치
- 값 자체는 정상 범위, but 특정 조건이나 문맥에서 비정상적임

집단적 이상치
- 개별 값들은 정상 범위, but 여러 값들이 특정한 패턴을 이루어 비정상적인 경우


이상치 탐지 주의점
- 데이터의 시간적 특성과 시계열 이상 탐지
- 이상 감지 분야에서 머신러닝을 적용할 시 - '데이터의 시간적 특성을 어떻게 반영할 것인가?'
- 특정 시계열 데이터의 경우 단순 개별 포인트의 이상 여부만을 판단하는 것이 아닌 시간에 따른 흐름과 패턴을 고려해야만 정확한 이상감지가 가능하다.
어떻게 해야 하나??
- 대부분의 데이터는 다변수 시계열 데이터(X값이 여러개란 얘기)
- 이런 경우, 각 변수들을 유사한 변수끼리 묶어 그룹을 만드는게 중요
1. 다변수 시계열을 그룹화해야 하는 이유
- ex) 사례1. 모든 변수를 하나의 그룹으로 처리하는 이유
- 우주선 이상 감지 시스템
- 100개 센서의 변수가 존재함
- 전체 데이터를 하나의 모델에서 감지하여 우주선 전체에 대한 이상 감지만 인지 가능
- 어느 부분에서 발생했는지 알 수 없어 어려움
- ex) 사례2. 변수들을 유사한 그룹으로 나누어 독립적인 이상 감지 모델운영
- 우주선 이상 감지 시스템
- 100개의 변수 중 유사한 변수끼리 10개의 그룹으로 나누어 각각 독립적인 모델을 운영
- 1단 로켓 그룹 - 온도, 압력, 연로 샹태
- 엔진 그룹 - 엔진 관련 변수
- 궤도 그룹 - 궤도 조정 관련 변수만 포함
- 각 그룹별로 독립적인 이상 감지 모델을 구축하여 운영.
- 만약 엔진 그룹에서 이상 감지가 발생하면 엔진 관련 문제임을 인지하고 대응 가능
클러스터링?
다변수 시계열의 장점
- 이상 감지의 정확도 향상: 서로 다른 패턴을 가진 변수들을 하나의 모델에서 학습하는 것이 아닌 유사한 변수끼리 학습하므로 모델이 더 잘 학습할 수 있음.
- 문제 발생 시 즉각적인 원인 분석 가능: 특정 그룹에서 이상 발생 시 해당 시스템의 문제임을 빠르게 판단가능
- 운영 및 유지보수 용이: 한 그룹의 모델을 수정해도 다른 그룹에는 영향이 없음
2. 실제 운영에서 그룹을 나누는게 중요한 이유
- 다변수 시계열에서는 일부 변수들 간 서로 연관이 깊고, 유사한 움직임을 보이느 변수들이 존재함.
- 한 그룹의 변수가 A~E까지 있다고 할 때, A 변수에서 이상이 발생하면 B,D 변수도 영향 받는 경우가 많음
- 이러한 도메인 지식을 반영하여 서로 밀접한 관계가 있는 변수들을 같은 그룹으로 묶고, 독립적으로 학습하는 것이 바람직함.
3. 다변수 시계열 이상 감지 시스템 구축 방법
- 1) 변수 그룹화(도메인 지식 반영)
- 전문가의 도메인 지식을 활용하여 유사한 변수들을 그룹으로 묶음
- ex) 엔진 관련 변수, 궤도 관련 변수, 온도 관련 변수
- 2) 각 그룹별 독립적인 이상 감지 모델 구축
- 각 그룹에 맞는 이상 감지 모델을 개별적으로 학습
- 그룹별 데이터의 특성을 반영하여 최적화
- 3) 이상 감지 후 세부적인 원인 분석이 가능하도록 설계
- 하나의 모델에서 '이상 감지 발생'만 판단하는 것이 아닌
- 어느 그룹에서 이상이 발생했는지 까지 즉각적으로 확인 가능하도록 설계
- 4) 운영 및 유지보수의 용이성 확보
- 특정 그룹의 데이터 특성이 변경되더라도 다른 그룹의 모델에는 영향을 주지 않음
- 유지 보수 및 개선이 더 쉬워짐
- 결론: 그룹 기반 감지 시스템이 필수적이다.
- 모든 변수를 하나의 모델에서처리가헤 되면 이상 감지 후 원인 분석이 어렵고 대응이 늦어질 수 있음.
- 유사한 변수들 끼리 그룹을 묶어 각각의 독립적인 모델을 운영하면 정확한 감지 및 빠른 대응이 가능함.
- 각 그룹의 변수 특성을 반영한 모델 학습이 가능하며, 이상 탐지의 성능이 향상됨.
- 운영 및 유지보수가 용이하며, 실시간 대응이 훨씬 수월해짐
- 따라서 다변수 시계열 데이터의 이상 감지에선 '변수 그룹화 및 독립 모델 운영'이 핵심 전략
- 클러스터링, PCA 등 기법 활용
4. 이상치 모델 예시들
A. Elliptic Envelope(타원형 경계 기반 이상치 탐지

- 데이터가 정규 분포를 따른다고 가정하고, 타원형 경계를 생성하여 이상치를 탐지
- 특징
- 통계적 접근법: 데이터의 평균과 공분산을 기반으로 이상 탐지
- 정규 분포를 가정: 데이터가 정규 분포를 땨를 때 효과적
- 고속 연산 가능: 다른 이상치 탐지 알고리즘보다 빠르게 동작
- 선형적인 경계: 이상치를 결정하는 기준이 타원형 경계로 단순함.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.covariance import EllipticEnvelope
# 1. 샘플 데이터 생성 (정상 + 이상치)
rng = np.random.RandomState(42)
# 정상 데이터 100개 (2차원 정규분포)
X_normal = 0.3 * rng.randn(100, 2) + [2, 2]
# 이상치 10개 (멀리 떨어진 위치에 배치)
X_outliers = rng.uniform(low=-4, high=8, size=(10, 2))
# 전체 데이터 합치기
X = np.vstack([X_normal, X_outliers])
# 시각화 (데이터 분포만 먼저 확인)
plt.scatter(X[:, 0], X[:, 1], c='gray', label="All Data")
plt.title("Generated Sample Data (with outliers)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend()
plt.show()
# 2. Elliptic Envelope 모델 생성 및 학습
model = EllipticEnvelope(contamination=0.05) # 이상치 비율 5%
model.fit(X)
pred = model.predict(X) # 정상: 1, 이상치: -1
# 3. 예측 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=pred, cmap='coolwarm', label='Prediction')
plt.title("Elliptic Envelope Anomaly Detection")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
![]() |
![]() |
2. Isolation Forest(격리 기반 이상치 탐지)

- 이상치 탐지 기법의 대표격
- 트리 구조를 사용하여 데이터를 무작위 분할
- 이상치는 정상 데이터보다 더 빠르게 격리되는 특성을 이용
- 이상치가 다른 데이터보다 고립되기 쉬(더 적은 단계에서 분리됨)

- 특징
- 비지도학습임
- 빠른 연산 속도 - 트리 구조 기반으로 대용량 데이터에서도 빠르게 동작
- 정규 분포가 아닌 데이터에도 적합
- 고차원 데이터에도 효과적
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
# 1. 샘플 데이터 생성 (정상 + 이상치)
rng = np.random.RandomState(42)
# 정상 데이터 100개 (2D Gaussian)
X_normal = 0.3 * rng.randn(100, 2) + [2, 2]
# 이상치 10개 (멀리 떨어진 위치)
X_outliers = rng.uniform(low=-4, high=8, size=(10, 2))
# 전체 데이터 결합
X = np.vstack([X_normal, X_outliers])
# 데이터 확인 (전체 분포 시각화)
plt.scatter(X[:, 0], X[:, 1], c='gray')
plt.title("Generated Data (with outliers)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
# 2. Isolation Forest 모델 생성 및 학습
iso_forest = IsolationForest(contamination=0.05, random_state=42)
y_pred = iso_forest.fit_predict(X) # 정상: 1, 이상치: -1
# 3. 이상치 탐지 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='coolwarm')
plt.title("Isolation Forest Anomaly Detection")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
![]() |
![]() |
3. Local Outlier Factor(지역적 밀도 기반 이상치 탐지
- 데이터의 밀도를 계산하여 이웃 데이터들과의 상댖거인 차이를 분석(KNN과 비슷)하여 이상치 탐지
- 이상치 특징: 주변 밀도가 낮고, 정상 데이터와의 밀도 차이가 클 경우 이상치로 판별

- 특징
- 밀도 기반 이상ㅊ치 탐지 - 데이터 분포가 균일하지 않아도 탐지 가능
- 지역적 패턴을 반영 - 특정 영역에서의 이상치 탐지 가능
- 비정규 분포 데이터에서도 효과적
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
# 1. 샘플 데이터 생성 (정상 + 이상치)
rng = np.random.RandomState(42)
# 정상 데이터 100개 (2D Gaussian)
X_normal = 0.3 * rng.randn(100, 2) + [2, 2]
# 이상치 10개 (멀리 떨어진 위치)
X_outliers = rng.uniform(low=-4, high=8, size=(10, 2))
# 전체 데이터 결합
X = np.vstack([X_normal, X_outliers])
# 전체 데이터 확인
plt.scatter(X[:, 0], X[:, 1], c='gray')
plt.title("Generated Data (with outliers)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
# 2. LOF 모델 생성 및 이상치 탐지
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.05)
y_pred = lof.fit_predict(X) # 정상: 1, 이상치: -1
# 3. 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='coolwarm')
plt.title("Local Outlier Factor (LOF) Anomaly Detection")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
![]() |
![]() |
각 모델마다 이상치 결과가 다르다!
그래서 이상탐지를 왜 하냐?
- 이상 탐지는 단순히 이상한 데이터를 찾는 게 아닌 실제 문제 예방, 자동화 가능
- 제조업(Smart Factory): 센서 데이터를 기반으로 기계 고장 예측, 미리 고장 징후를 감지하여 생산성 향상
각 이상치 탐지 모델에 대한 특성 정도만 알고만 있어라!
이 모델들은 사실 시계열 패턴을 고려하지 못해요....
2. [라이브세션] 생성형 AI를 활용한 실전 리포팅 및 AI 서비스 개발 1회차
머신러닝: 정형화된 데이터를 보고 집계하는 예측에 중점
최신 트렌드가 생성형 AI 기술이 얹어져 채용 공고에 대양하게 등장하고 있음.
1. 목표
- AI를 도구로 활용하여 실질적인 업무 결과물을 만들어 내는 능력을 배양
- AI 기술의 내재화: 프롬프트 엔지니어링, RAG(검색 증강 생성)까지 단순 사용자가 아닌 AI 엔지니어 관점에서 AI 기술 스택(Gemini, n8n, LangChain)을 배움
- 결과물 중심의 구현 능력: 텍스트 생성을 넘어 markdown 보고서, 반응형 웹페이지, 데이터 대시보드 등 시각화된 리포팅 포맷을 구현
- 바이브 코딩 실현: 코딩 지식이 깊지 않아도 자연어로 AI와 협업하여 소프트웨어를 개발하는 AI 네이티브 개발 방식을 체득함
2. 강의 특징
- 최신 AI 기술 스택의 단계적 습득
- Google AI Studio, n8n, LangChain 등 현업에서 주목받는 도구를 활용

멀티모달(이미지/문서 처리) 에이전트 기술을 통해 AI가 스스로 업무를 수행하는 최신 트렌드 반영
구현 범위
- 문서:Markdown 문법
- 웹앱: Python 기반의 Streamlit을 활용한 데이터 대시보드
- 웹서비스: HTML/JS 기반의 동적 웹페이지 및 이메일 리포팅 자동화
3. 목차
- LLM과 대화하는 기술: Gemini
- 개발자의 도구: Google AI Studio
- 바이브 코딩(Vibe Coding)
- 노코드 AI 에이전트 구축: n8n
- LLM 앱 개발 기추: LangChain
- LangChain 심화: Rag 시스템 구축
4. LLM이 뭔데 그래서
- LM(Language Model)
- 기계가 언어를 학습하는 방식, 주어진 단어나 문장에서 다음에 올 단어를 예측하는 모델
- 예시
- 나는 친구와 함께 밥을 ____ 먹었다(60%), 지었다(15%), 삼켰다(5%)
- 이전 단어를 기반으로 다음 단어의 확률을 예측하는 방식(ex. GPT)
LLM(Large Language Model)
- 기존의 LM은 특정 Task를 위한 데이터를 수집하고 학습
- LLM은 Task에 상관없이 인터넷, 책, 논문 등 다양한 데이터를 대규모로 학습
- 기존 LM이 수백~수천만개의 파라미터 학습, LLM은 수억~수조 개의 파라미터 학습
- 따라서 고성능 GPU 및 대규모 분산 컴퓨팅 환경이 필수적이게 됨(NVIDIA 살걸...)
그래서 왜 대단함?
- 기존 AI 모델: 하나의 Task를 위한 데이터를 사용해 최적화
- LLM: 대규모 학습을 통해 범용적인 언어 이해와 생성 능력을 갖춤, 사전 훈련된 지식을 활용하여 추가 학습 없이도 새로운 작업을 수행할 수 있음.
- 문맥을 이해하고 긴 대화의 맥락도 유지하여 답변을 생성할 수 있음.
- 단순 정보 제공을 넘어, 소설, 음악 등 창작 영역에서도 사용할 수 있음.
창발 현상(Emergence)
- LLM이 특정 규모를 초과했을 때 명시되지 않은 훈련 능력이 갑자기 나타나는 현상
- 모델의 크기가 커질수록 예상할지 못했던 복잡한 기능이 자발적으로 등장하는 현상
- GPT-3 모델 이후 관찰됨.
LLM의 한계: 현재 LLM 모델이 피할 수 없는 근본적인 문제
- 환각(Hallucination): 사실이 아닌 정보를 사실처럼 생성하는 경향
- 실시간 정보 반영 불가
- ex) GPT-5는 2024년 10월까지의 데이터를 학습한 모델
- 긴 문맥 유지가 어려움: 한 번에 처리할 수 있는 토큰 길이가 존재하기 때문
- 편향 문제, 창작물의 저작권 문제
- 높은 운영비
- 보안 및 악용
LLM 학습 방식
- LLM은 텍스트 데이터를 분석, 패턴(확률)을 학습하여 문장을 예측하는 방식으로 학습됨
- 문맥을 이해하고 자연스러운 문장을 생성
- 주어진 질문에 대해 논리적인 답변 제공
- 새로운 개념을 학습하고 응용하는 능력 습득

사전 훈련 단계 - 비용이 많이 드는 단계
- 방대한 양의 데이터를 활용하여 기본적인 언어 능력을 학습
- 자기지도학습(Self-Supervised Learning)
미세 조정(Fine-Tuning)
사전 훈련된 LLM을 특정 Task에 맞춰 추가 학습 - 특정 도메인에서 더 정확하게 작동할 수 있도록 조정
| 구분 | Pre-Training | Fine-Training |
| 목적 | 기본적인 언어 패턴, 문법, 문맥 학습 | 특정 Task에 맞게 모델 조정 |
| 학습 데이터 | 인터넷 전체 | 특정 도메인 데이터 |
| 학습 방식 | 자기 지도 학습 | 지도학습 |
| 필요한 자원 | 대규모 GPU/TPU 클러스터 | 상대적으로 적은 연산 자원 |
| 학습 시간 | 수주-수개월 소요 | 수 시간~수일 내 완료 |
다만 Pre-Training 없이 Fine-Tuning만 하면 문제가 있음
강화학습(Reinforcement learning From Human Feedback)
- 사람의 피드백을 통해 LLM 모델을 강화학습하는 방법
- LLM이 같ㅇ은 질문에 대해 여러 답변을 생성함
- 사람들이 이 답변을 평가하여 좋은 답변, 나쁜 답변을 구분
- 보상 모델을 만ㄷ르어 좋은 답변에는 보상을, 나쁜 답변에는 패널티를 줌
LLM 추론 과정

모델 처리 과정이 Fine-tuning+강화학습
Prompt Engineering: 질문을 똑똑하게 하기
LLM이 더 좋은 답변을 할 수 있도록 질문하는 기술

프롬프트 엔지니어링 종류
지시형
AI가 특정한 작업을 수행하도록 명령
역할 지정
AI가 특정한 역할을 수행하도록 지시함
예제 제공(강추)
AI에게 예제를 주며 원하는 답변 형식을 출력되게 하는 방법
단계별 안내
AI가 논리적으로 생각하는 과정을 거치도록 유도
금지어 설정 및 응답 스타일 지정
특정한 형식으로 답변을 출력하도록 제한
토큰화
텍스트를 AI가 이해할 수 있는 작은 단위(토큰)으로 변환
토큰화 모델이 다르면 같은 문장도 다르게 표현됨, 성능에 큰 영향!
임베딩
토큰을 숫자로 변환하여 모델이 이해할 수 있는 벡터(숫자)로 표현하는 과정
임베딩 벡터 특징
같은 의미를 가진 단어는 비슷한 벡터 값을 가짐
문맥에 따라 벡터 값이 달라질 수 있음.
토큰화를 통해 얻은 토큰 ID를 사전 학습된 임베딩 벡터로 변환
LLM 마다 사용하는 임베딩 방식과 모델이 다르기 때문에 동일한 단어라도 모델별로 임베딩 벡터 값이 달라질 수 있음.
| 정적 임베딩 | 동적 임베딩 |
| 단어별로 항상 동일한 임베딩 벡터를 가짐 | 문맥에 따라 임베딩 ㅏㄱㅄㅇ ㅣ달라짐 |
| 문맥을 반영하지 못함 | 같은 단어라도 다른 문장에서 다르게 표현 가능 |
| Word2Vec, GloVe, FastText | BERT, GPT 계열 모델 |
토큰화 -> 임베딩 예시
예시)) 고양이는 귀엽다
Tokenization: ['고양이는', ##는','귀엽다','.']
Token -> 숫자 변환 [10567,9012,4823,102] 토큰화 모델이 가지고 있는 미리 정의된 고유 ID
Embedding
고양이 → [0.21, 0.67, -0.45, ...]
##는 → [0.11, -0.23, 0.87, ...]
귀엽다 → [-0.12, 0.54, 0.92, ...]
. → [0.03, -0.45, 0.61, ...]
LLM의 최근 현황
대세는 멀티 모달
Multi-Modal: 서로 다른 형태의 데이터를 의미

멀티모달Ai
서로 다른 종류의 데이터를 통합적으로 처리, 그 관계를 파악하여 판단과 생성까지 수애하는 AI 기술
텍스트를 넘어 선 다양한 LLM 등장
전반적인 질문: GPT, Gemini
출처가 중요한 검색: Perplexity
개발: Claude Code, Gemini CLI
작문: Claude
그림: Napkin AI
'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글
| TIL_251223 (1) | 2025.12.23 |
|---|---|
| TIL_251222 (1) | 2025.12.22 |
| TIL_251218 (1) | 2025.12.18 |
| TIL_251217 (0) | 2025.12.17 |
| TIL_251216 (0) | 2025.12.16 |





