TIL(Today I Learned)
1️⃣시계열 라이브 세션
제조업 시계열 데이터와 이상 탐지 핵심 정리
LOT 데이터
LOT은 여러 제품을 하나의 묶음으로 관리하는 개념이다.
예를 들어 사출 공정에서 일정 시간 동안 생산된 제품들을 하나의 LOT으로 관리할 수 있다. LOT 내부에는:
- 제품별 정형 데이터
- 제품별 시계열 데이터(압력, 온도 waveform)
가 함께 존재할 수 있다.
LOT 데이터 특징
- 제품 중심 구조
- 제품 단위 품질 존재
- 상대적으로 짧은 시계열
- LOT 단위 집계 가능
LOT 데이터 처리 방식
대표적으로 다음과 같은 방식이 사용된다.
- 시계열 요약 통계 생성
- mean
- std
- max
- slope
- FFT peak
- 구간별 feature 생성
- 0~20%
- 20~50%
- 50~100%
- 제품별 feature를 LOT-level로 집계
- 평균 압력
- 평균 분산
- 불량 비율
이후 LightGBM, XGBoost 같은 ML 모델에 입력한다.
Batch 데이터
Batch는 제품 묶음이 아니라 공정 전체 수행 과정을 의미한다.
예를 들어 발효 공정에서는 수십 시간 동안의 센서 데이터 전체가 하나의 Batch가 된다.
Batch 데이터 특징
- 공정 중심 구조
- 긴 연속 시계열
- 최종 품질값은 보통 1개
- 시간 흐름 자체가 중요
Batch 데이터 처리 방식
- 전체 시계열 요약
- 평균
- 분산
- peak count
- integral
- 시간 정규화
- 0~10%
- 10~20%
- …
- 90~100%
- 변화량 기반 feature 생성
- diff
- rolling mean
- rolling std
특히 Batch 데이터는 변화 패턴 자체가 중요하기 때문에 rolling/diff 기반 feature가 많이 사용된다.
제조업 이상치(Anomaly) 유형
이상 탐지는 단순히 “튀는 값”을 찾는 것이 아니라 공정 이상, 설비 고장, 품질 문제를 조기에 탐지하기 위한 핵심 기술이다.
1. Point Anomaly
단일 값이 정상 범위를 크게 벗어난 경우.
예시:
- 온도가 갑자기 100도 기록
- 특정 부품 치수가 공차 초과
→ 가장 일반적인 이상치 유형
2. Contextual Anomaly
값 자체는 정상 범위지만 특정 상황에서는 비정상인 경우.
예시:
- 야간 공정에서 온도가 비정상적으로 높음
- 저부하 상황인데 진동이 강함
→ “문맥(Context)”이 중요
3. Collective Anomaly
개별 값은 정상이어도 특정 패턴이 연속적으로 나타나는 경우.
예시:
- 전류 변동이 지속적으로 발생
- 작은 불량이 특정 시간대에 연속 발생
→ 제조 시계열에서 중요하게 다뤄짐
다변수 시계열 데이터의 핵심 전략
제조 데이터는 대부분 다변수 시계열(Multivariate Time Series)이다.
여기서 가장 중요한 전략은:
“유사 변수 그룹화”
예:
- 엔진 그룹
- 온도 그룹
- 압력 그룹
- 궤도 그룹
처럼 관련 변수끼리 묶어 독립적인 이상 탐지 모델을 운영하는 방식이다.
장점
- 이상 원인 분석이 쉬움
- 모델 성능 향상
- 유지보수 용이
- 실시간 대응 가능
즉, 제조업 이상 탐지에서는:
“하나의 거대한 모델”보다 “그룹 기반 독립 모델” 전략이 훨씬 효과적이다.
대표적인 이상 탐지 모델
1. Isolation Forest
가장 많이 사용하는 비지도 이상 탐지 모델.
특징
- 트리 기반
- 이상치는 빠르게 고립됨
- 대용량 데이터에 강함
- 고차원 데이터 처리 가능
특히 Point Anomaly 탐지에 적합하다.
2. LOF (Local Outlier Factor)
밀도 기반 이상 탐지 모델.
특징
- 주변 데이터 밀도와 비교
- 지역적(Local) 이상 탐지 가능
- 비정규 분포에서도 강함
특정 영역에서만 발생하는 이상 패턴 탐지에 유리하다.
3. Elliptic Envelope
정규분포를 가정하고 타원형 경계 기반으로 이상 탐지.
특징
- 평균/공분산 기반
- 빠른 연산
- 정규분포 데이터에 적합
다만 실제 제조 데이터는 비정규성이 많아 제한적으로 사용된다.
시계열 이상 탐지 핵심 기법
Derivative 기반 탐지
값 자체보다 “변화량(diff)”을 감시하는 방식.
예:
- 5초 내 온도 급등
- 전류 급상승
제조업에서는 diff feature를 매우 자주 사용한다.
Moving Average + Change Point Detection
이동 평균과 변화 시점을 함께 탐지하는 방식.
대표 도구:
- ruptures
- ChangeFinder
- Bayesian Change Point
특히 공정 상태가 갑자기 변하는 시점을 탐지하는 데 효과적이다.
Variance-based Rule
분산(variance)이 급격히 증가하는 구간을 탐지하는 방식.
정상 상태는 보통 분산이 일정하지만,
이상 상황에서는 진동성이 커지며 분산이 증가한다.
Gaussian Tail Probability
정규분포 기준으로 평균에서 멀리 떨어진 값이 나올 확률을 계산하는 방식이다.
즉:
- 확률이 매우 낮다
→ 정상 분포에서는 거의 나오지 않는다
→ 이상치 가능성이 높다
통계 기반 이상 탐지와 p-value 계산에도 활용된다.
2️⃣Streamlit 대시보드 완전 정복 3회차
Streamlit 입력 위젯 문법 정리
1. 클릭형 위젯
| 문법 | 설명 |
| st.button() | 기본 버튼 생성 |
| st.download_button() | 파일 다운로드 버튼 |
| st.link_button() | 외부 링크 이동 버튼 |
| st.page_link() | 멀티페이지 이동 |
st.button("저장")
st.download_button("CSV 다운로드", data=csv)
st.link_button("공식문서", "https://docs.streamlit.io")
2. 불리언(Boolean) 입력
| 문법 | 설명 |
| st.checkbox() | 체크박스 |
| st.toggle() | ON/OFF 토글 |
check = st.checkbox("재검사 필요")
toggle = st.toggle("실시간 모드")
3. 선택형 위젯
| 문법 | 설명 |
| st.radio() | 단일 선택 |
| st.selectbox() | 드롭다운 선택 |
| st.multiselect() | 다중 선택 |
| st.pills() | 태그형 선택 |
| st.segmented_control() | 세그먼트 버튼 |
st.radio("판정 방식", ["자동", "수동"])
st.selectbox("라인", ["A", "B", "C"])
st.multiselect("결점", ["크기", "스크래치"])
4. 슬라이더 입력
| 문법 | 설명 |
| st.slider() | 숫자/범위 슬라이더 |
| st.select_slider() | 이산형 슬라이더 |
st.slider("샘플 수", 1, 100, 30)
st.select_slider("등급", ["A", "B", "C"])
5. 텍스트 · 숫자 입력
| 문법 | 설명 |
| st.text_input() | 한 줄 텍스트 입력 |
| st.text_area() | 여러 줄 입력 |
| st.number_input() | 숫자 입력 |
st.text_input("검사자")
st.text_area("비고")
st.number_input("측정값")
6. 날짜 · 시간 입력
| 문법 | 설명 |
| st.date_input() | 날짜 선택 |
| st.time_input() | 시간 선택 |
st.date_input("검사일자")
st.time_input("교대 시작")
7. 파일 · 미디어 입력
| 문법 | 설명 |
| st.file_uploader() | 파일 업로드 |
| st.camera_input() | 카메라 촬영 |
| st.audio_input() | 음성 입력 |
| st.data_editor() | 수정 가능한 테이블 |
st.file_uploader("CSV 업로드")
st.camera_input("사진 촬영")
st.data_editor(df)
8. 기타 위젯
| 문법 | 설명 |
| st.color_picker() | 색상 선택 |
| st.feedback() | 사용자 피드백 |
st.color_picker("라인 색상")
st.feedback(options="stars")
9. 상태 관리 & 콜백
| 문법 | 설명 |
| st.session_state | 상태 저장 |
| on_change | 값 변경 이벤트 |
| on_click | 버튼 클릭 이벤트 |
| key= | 위젯 상태 연결 |
st.text_input("검사자", key="operator")
def save():
st.session_state.count += 1
st.button("저장", on_click=save)
💡 느낀점
이번 실습을 통해 Streamlit은 Python만으로도 다양한 입력 기능과 인터랙티브한 화면을 쉽게 구현할 수 있다는 점이 인상적이었다. 특히 위젯과 상태 관리 기능을 활용하면서 웹앱의 동작 원리를 더 이해할 수 있었고, 데이터 분석 프로젝트에도 다양하게 활용할 수 있을 것 같다고 느꼈다.
'대시보드 활용 품질관리' 카테고리의 다른 글
| Chapter.6 대시보드 활용 품질관리(9) (0) | 2026.05.22 |
|---|---|
| Chapter.6 대시보드 활용 품질관리(8) (0) | 2026.05.21 |
| Chapter.6 대시보드 활용 품질관리(6) (0) | 2026.05.19 |
| Chapter.6 대시보드 활용 품질관리(5) (0) | 2026.05.18 |
| Chapter.6 대시보드 활용 품질관리(4) (0) | 2026.05.14 |