마키나락스의 FDE본부 Frontier팀은 양산 제조와 물류 현장의 예측·이상탐지·FDC·예지보전·최적화 과제를 다루므로, 이 콘솔의 이상 판정은 설비별 정상 범위와 공정 특성이 있어야 의미가 생깁니다. 이 포트폴리오가 입증하는 것은 산업 시계열에서 이상을 규칙과 모델로 탐지하고 근거와 함께 구조화하는 ML 엔지니어링 역량이며, 특정 설비의 물리적 고장 메커니즘 자체에 대한 도메인 전문성은 주장하지 않습니다. 모르는 깊이는 면접에서 모른다고 말하는 편이 낫다고 봅니다.
제조 및 물류 도메인에서 예측, 이상탐지, 최적화 과제를 정의하고 수행하는 역할입니다.
양산 운영 환경에서 이상탐지, FDC, 예지보전 시스템을 설계하고 성능을 개선합니다.
머신러닝 모델을 운영 환경에 배포하고 성능과 안정성을 지속적으로 고도화합니다.
제조 라인의 설비 센서 시계열을 다루는 이상탐지 콘솔입니다. 온도·진동·압력 같은 센서 데이터를 넣으면 이상 구간을 임계값과 모델로 찾아내고, 어떤 센서가 어느 정상 범위를 벗어났는지 근거를 붙여 설비 경보 레코드로 남기며, 이상이 쌓이는 추세로 예지보전 시점을 함께 추정합니다.
제조 라인의 설비 데이터를 매일 들여다보며 어떤 값이 이상인지, 언제 정비를 잡아야 하는지 감으로 판단하던 운영 담당자가, 이상 구간과 그 근거, 정비 시점 추정을 한 화면에서 확인하고 싶은 상황입니다.
설비 센서의 이상을 규칙과 모델로 탐지하고 근거를 구조화하면, 사람이 모든 값을 눈으로 훑지 않아도 정말 볼 구간만 골라 정비 판단에 집중할 수 있다는 가설입니다.
정상과 이상이 섞인 더미 센서 시계열을 입력하면 이상 구간을 탐지하고, 어떤 센서가 어느 임계값을 벗어났는지 근거와 함께 설비 경보 레코드를 내놓는 대시보드입니다.
데이터에 일부러 심은 이상과 탐지 결과를 대조해 정밀도와 재현율을 재고, 이상 누적 추세로 고장 예상 시점을 추정하는 리포트입니다.
합성 데이터를 늘려 배치 파이프라인으로 돌리고, 입력 분포가 학습 때와 달라지는지 감시하는 모니터링을 붙인 운영형 구성입니다.
정상과 이상이 섞인 더미 센서 시계열을 넣으면 이상 구간과 근거 센서, 이탈량이 담긴 경보 레코드가 나오는 것을 시연합니다.
결측·극단·미등록 설비 30종을 넣어도 경보 레코드의 출력 형식이 깨지지 않는 것을 보여줍니다.
일부러 심은 정답 이상과 탐지 결과를 대조해 정밀도(맞다고 한 것 중 실제 이상 비율)와 재현율(실제 이상 중 잡아낸 비율)을 재는데, 단 정답 이상을 작성자가 주입한 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
── 진짜 성능 검증은 여기서 멈춥니다: 위 수치는 더미 센서 데이터 자가채점이며, 실제 탐지 정확도와 예지보전 적중은 마키나락스의 실제 설비 데이터와 현장 정비 이력이 있어야 측정 가능합니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 센서 데이터 자가채점이라 성능 증명이 아니므로, 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.
정답 이상을 작성자가 주입했으니 잘 맞는 것이 당연하므로, 정상과 구분이 애매한 미세 드리프트·간헐 결측·설비 교체 직후 값 같은 경계 케이스를 더미에 일부러 섞습니다.
실제 도입에서는 설비마다 정상 범위와 노이즈가 달라 임계값과 모델을 현장 데이터로 다시 맞춰야 하며, 예지보전 적중은 실제 고장 이력이 쌓여야 확인되는 도입 단계 과제입니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
콘솔이 소비하는 제조 라인의 구간별 센서 집계값입니다. 주입한 이상 여부의 정답 라벨을 함께 담아 자가채점의 입력이 됩니다.
| window_id | equipment_raw | equipment_id | temp | vibration | pressure | injected_anomaly |
|---|---|---|---|---|---|---|
| w-001 | 프레스-1호기 | EQ-P01 | 62.1 | 0.8 | 12.4 | — |
| w-002 | 프레스-1호기 | EQ-P01 | 98.7 | 0.9 | 12.1 | spike |
| w-003 | 컨베이어-2호기 | EQ-C02 | 40.2 | 3.9 | 8 | spike |
| w-004 | 컨베이어-2호기 | EQ-C02 | 41 | — | 8.1 | dropout |
| w-005 | 용접-3호기 | EQ-W03 | 55 | 1.2 | 15 | — |
다음 JSON Schema에 맞는 제조 라인 센서 구간 행을 더 생성하세요: {"type":"object","properties":{"window_id":{"type":"string"},"equipment_raw":{"type":"string"},"equipment_id":{"type":["string","null"]},"temp":{"type":["number","null"]},"vibration":{"type":["number","null"]},"pressure":{"type":["number","null"]},"injected_anomaly":{"type":["string","null"],"enum":["spike","drift","dropout",null]}},"required":["window_id","equipment_raw"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) 결측 센서값 null(계측 누락), (2) 경계값 0.0이나 극단 최대값, (3) 미등록 equipment_id=null(마스터에 없는 신규 설비), (4) 표기 불일치 equipment_raw에 '프레스-1호기'/'프레스1호'처럼 같은 설비의 다른 표기. 정상과 구분이 애매한 미세 드리프트 구간도 섞어 탐지가 과검·미검을 얼마나 가르는지 확인하세요.{"type":"object","properties":{"window_id":{"type":"string"},"equipment_raw":{"type":"string"},"equipment_id":{"type":["string","null"]},"temp":{"type":["number","null"]},"vibration":{"type":["number","null"]},"pressure":{"type":["number","null"]},"injected_anomaly":{"type":["string","null"],"enum":["spike","drift","dropout",null]}},"required":["window_id","equipment_raw"]}설비 정상 범위와 표준 표기를 담은 마스터입니다. 센서 표기 정규화와 미등록 설비 판별의 기준이 됩니다.
| equipment_id | name | temp_max | vibration_max | pressure_max |
|---|---|---|---|---|
| EQ-P01 | 프레스-1호기 | 85 | 2 | 14 |
| EQ-C02 | 컨베이어-2호기 | 60 | 3 | 10 |
| EQ-W03 | 용접-3호기 | 60 | 2.5 | 16 |
| EQ-M04 | 절삭-4호기 | 90 | 5 | 22 |
| EQ-A05 | 조립-5호기 | 50 | 1.5 | 9 |
다음 JSON Schema에 맞는 설비 마스터 행을 더 생성하세요: {"type":"object","properties":{"equipment_id":{"type":"string"},"name":{"type":"string"},"temp_max":{"type":"number"},"vibration_max":{"type":"number"},"pressure_max":{"type":"number"}},"required":["equipment_id","name"]} 쉬운 데이터만 만들지 말 것 — 같은 설비 종류라도 정상 범위가 다른 행, 표기가 비슷해 혼동되는 이름을 섞어 표기 정규화와 정상 범위 매칭이 정확한지 확인하세요.{"type":"object","properties":{"equipment_id":{"type":"string"},"name":{"type":"string"},"temp_max":{"type":"number"},"vibration_max":{"type":"number"},"pressure_max":{"type":"number"}},"required":["equipment_id","name"]}| Python | 센서 시계열 처리와 이상탐지, 경보 레코드 생성 로직을 구현합니다. |
| 이상탐지 모델 | 임계값 규칙과 IsolationForest로 이상 구간을 판정하고 근거 센서를 표시합니다. |
| 예지보전 | 이상 누적 추세로 고장 예상 시점을 추정해 정비 우선순위를 매깁니다. |
| 데이터 파이프라인 | 센서 원천을 모아 구간 단위로 집계하는 배치 파이프라인을 구성합니다. |
| MLOps 모니터링 | 입력 분포 변화와 탐지율을 감시해 모델 성능 저하를 조기에 잡습니다. |
| LLM API | 탐지 결과를 정비 담당자가 읽을 수 있는 경보 요약 문구로 정리합니다. |
✓ pass → 그대로 멈춰도 이상탐지 데모로 완결됩니다. 더 키우려면 주입한 정답과 대조해 탐지 정확도를 검증합니다.
✓ pass → 정확도를 확인했다면, 더 큰 데이터로 배치 파이프라인을 돌리고 분포 변화 모니터링으로 운영형에 가깝게 키웁니다.
탐지한 이상 구간 한 건을 구조화한 설비 경보 레코드입니다. 이상 유형과 근거 센서, 예지보전 추정을 담습니다.
{"type":"object","properties":{"window_id":{"type":"string"},"equipment_id":{"type":["string","null"]},"anomaly":{"type":"boolean"},"anomaly_type":{"type":"string","enum":["spike","drift","dropout","none"]},"predicted_failure_days":{"type":["number","null"]},"evidence":{"type":"array","items":{"type":"object","properties":{"sensor":{"type":"string"},"observed":{"type":"number"},"threshold":{"type":"number"}}}},"summary":{"type":"string"}},"required":["window_id","anomaly","anomaly_type","evidence"]}[
{
"window_id": "w-002",
"equipment_id": "EQ-P01",
"anomaly": true,
"anomaly_type": "spike",
"predicted_failure_days": null,
"evidence": [
{
"sensor": "temp",
"observed": 98.7,
"threshold": 85
}
],
"summary": "프레스-1호기 온도가 정상 상한 85도를 넘어 98.7도로 튀었습니다. 순간 과열로 보이며 점검이 필요합니다."
},
{
"window_id": "w-007",
"equipment_id": "EQ-W03",
"anomaly": true,
"anomaly_type": "drift",
"predicted_failure_days": 9,
"evidence": [
{
"sensor": "temp",
"observed": 62,
"threshold": 60
}
],
"summary": "용접-3호기 온도가 세 구간에 걸쳐 서서히 올라 정상 상한을 넘었습니다. 추세가 이어지면 약 9일 뒤 정비 임계에 이를 것으로 추정하나, 이 추정값은 합성 데이터 기준입니다."
},
{
"window_id": "w-008",
"equipment_id": null,
"anomaly": false,
"anomaly_type": "none",
"predicted_failure_days": null,
"evidence": [],
"summary": "포장-9호기는 마스터에 등록되지 않은 설비라 정상 범위를 대조하지 못했습니다. 미매핑으로 표시하고 마스터 등록을 안내합니다."
}
][자동 검증 — 규칙으로 채점] 1. anomaly_type enum(spike·drift·dropout·none) 형식 통과 여부를 확인해 잘못된 값을 걸러냅니다. 2. anomaly가 true이면 evidence의 observed가 threshold를 실제로 벗어났는지 대조해 근거 없는 경보를 걸러냅니다. 3. equipment_id가 null이면 미매핑으로 표시하고 정상 범위 대조를 생략했는지 확인합니다. 4. predicted_failure_days는 합성 데이터 기준 추정값이므로 검증된 수치로 다루지 않고 summary에 그 사실을 드러냈는지 확인합니다. [수동 검증 — 사람이 확인] 1. 미세 드리프트를 과검·미검하지 않았는지 표본으로 점검합니다. 2. 경보 요약이 근거 센서를 오해 없이 전달하는지 읽어 확인합니다.