모두의포트폴리오
PE · FDE 직군을 위한 포트폴리오 밀키트
예전 판입니다 (1판)이 문서는 2026-08-02 에 새 판으로 개정됐습니다. 산출물을 웹 콘솔에서 CLI 시뮬레이터로 바꾸고, 형제 편과 겹치던 설비 이상탐지 대신 이 직군 공고의 시나리오 기반 시뮬레이션으로 주제를 옮겼습니다.최신 판 보기 →
경력마키나락스 · Forward Deployed Engineer - ML/DS (전문연구요원)

제조·물류 센서 시계열을 받아 이상 구간을 탐지하고 근거와 예지보전 예측을 담은 설비 경보 레코드를 만드는 콘솔

마키나락스 공고에서 뽑은 세 가지 시그널.

마키나락스의 FDE본부 Frontier팀은 양산 제조와 물류 현장의 예측·이상탐지·FDC·예지보전·최적화 과제를 다루므로, 이 콘솔의 이상 판정은 설비별 정상 범위와 공정 특성이 있어야 의미가 생깁니다. 이 포트폴리오가 입증하는 것은 산업 시계열에서 이상을 규칙과 모델로 탐지하고 근거와 함께 구조화하는 ML 엔지니어링 역량이며, 특정 설비의 물리적 고장 메커니즘 자체에 대한 도메인 전문성은 주장하지 않습니다. 모르는 깊이는 면접에서 모른다고 말하는 편이 낫다고 봅니다.

01

산업 데이터로 이상탐지

제조 및 물류 도메인에서 예측, 이상탐지, 최적화 과제를 정의하고 수행하는 역할입니다.

제조이상탐지최적화
02

예지보전과 FDC

양산 운영 환경에서 이상탐지, FDC, 예지보전 시스템을 설계하고 성능을 개선합니다.

FDC예지보전양산
03

운영 환경까지 책임

머신러닝 모델을 운영 환경에 배포하고 성능과 안정성을 지속적으로 고도화합니다.

운영 환경배포고도화

포트폴리오 요약

제조 라인의 설비 센서 시계열을 다루는 이상탐지 콘솔입니다. 온도·진동·압력 같은 센서 데이터를 넣으면 이상 구간을 임계값과 모델로 찾아내고, 어떤 센서가 어느 정상 범위를 벗어났는지 근거를 붙여 설비 경보 레코드로 남기며, 이상이 쌓이는 추세로 예지보전 시점을 함께 추정합니다.

고객 정의

제조 라인의 설비 데이터를 매일 들여다보며 어떤 값이 이상인지, 언제 정비를 잡아야 하는지 감으로 판단하던 운영 담당자가, 이상 구간과 그 근거, 정비 시점 추정을 한 화면에서 확인하고 싶은 상황입니다.

고민 지점

설비 센서의 이상을 규칙과 모델로 탐지하고 근거를 구조화하면, 사람이 모든 값을 눈으로 훑지 않아도 정말 볼 구간만 골라 정비 판단에 집중할 수 있다는 가설입니다.

주차별 일정

1주차여기까지로 완성

센서 시계열을 넣으면 이상 구간과 근거가 담긴 경보 레코드가 나옵니다

정상과 이상이 섞인 더미 센서 시계열을 입력하면 이상 구간을 탐지하고, 어떤 센서가 어느 임계값을 벗어났는지 근거와 함께 설비 경보 레코드를 내놓는 대시보드입니다.

  1. 1일 · 제조 라인 센서 스키마와 이상 주입 규칙(스파이크·드리프트·센서 결측)을 정의합니다.
  2. 2-3일 · 정상과 이상이 섞인 더미 센서 시계열과 설비 마스터를 만듭니다.
  3. 4-5일 · 임계값과 IsolationForest로 이상 구간을 탐지하고 근거와 함께 경보 레코드를 만들어 대시보드로 띄웁니다.
2주차선택 성장

주입한 정답 이상과 대조해 탐지 정확도를 검증하고 예지보전을 붙입니다

데이터에 일부러 심은 이상과 탐지 결과를 대조해 정밀도와 재현율을 재고, 이상 누적 추세로 고장 예상 시점을 추정하는 리포트입니다.

  1. 6-7일 · 주입한 정답 이상과 대조해 정밀도와 재현율을 재고 임계값을 조정합니다.
  2. 8-9일 · 이상 누적 추세로 예지보전 예측(고장 예상 시점)을 붙입니다.
3주차선택 성장

더 큰 데이터로 배치 파이프라인을 돌리고 입력 분포 변화를 감시합니다

합성 데이터를 늘려 배치 파이프라인으로 돌리고, 입력 분포가 학습 때와 달라지는지 감시하는 모니터링을 붙인 운영형 구성입니다.

  1. 10-12일 · 더 큰 합성 데이터로 배치 파이프라인을 돌리고 입력 분포 변화를 감시하는 모니터링을 붙입니다.

데모 · 측정 지표

01

정상과 이상이 섞인 더미 센서 시계열을 넣으면 이상 구간과 근거 센서, 이탈량이 담긴 경보 레코드가 나오는 것을 시연합니다.

02

결측·극단·미등록 설비 30종을 넣어도 경보 레코드의 출력 형식이 깨지지 않는 것을 보여줍니다.

03

일부러 심은 정답 이상과 탐지 결과를 대조해 정밀도(맞다고 한 것 중 실제 이상 비율)와 재현율(실제 이상 중 잡아낸 비율)을 재는데, 단 정답 이상을 작성자가 주입한 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.

04

── 진짜 성능 검증은 여기서 멈춥니다: 위 수치는 더미 센서 데이터 자가채점이며, 실제 탐지 정확도와 예지보전 적중은 마키나락스의 실제 설비 데이터와 현장 정비 이력이 있어야 측정 가능합니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.

미리 알아둬야 할 것들

수치는 합성 센서 데이터 자가채점이라 성능 증명이 아니므로, 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.

정답 이상을 작성자가 주입했으니 잘 맞는 것이 당연하므로, 정상과 구분이 애매한 미세 드리프트·간헐 결측·설비 교체 직후 값 같은 경계 케이스를 더미에 일부러 섞습니다.

실제 도입에서는 설비마다 정상 범위와 노이즈가 달라 임계값과 모델을 현장 데이터로 다시 맞춰야 하며, 예지보전 적중은 실제 고장 이력이 쌓여야 확인되는 도입 단계 과제입니다.

더미 데이터

① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.

line_sensor_readingsTABLE· 12 rows

콘솔이 소비하는 제조 라인의 구간별 센서 집계값입니다. 주입한 이상 여부의 정답 라벨을 함께 담아 자가채점의 입력이 됩니다.

② line_sensor_readings.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 12)
window_idequipment_rawequipment_idtempvibrationpressureinjected_anomaly
w-001프레스-1호기EQ-P0162.10.812.4—
w-002프레스-1호기EQ-P0198.70.912.1spike
w-003컨베이어-2호기EQ-C0240.23.98spike
w-004컨베이어-2호기EQ-C0241—8.1dropout
w-005용접-3호기EQ-W03551.215—
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
다음 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호'처럼 같은 설비의 다른 표기. 정상과 구분이 애매한 미세 드리프트 구간도 섞어 탐지가 과검·미검을 얼마나 가르는지 확인하세요.
schema (3 층의 단일 출처)
{"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_masterTABLE· 10 rows

설비 정상 범위와 표준 표기를 담은 마스터입니다. 센서 표기 정규화와 미등록 설비 판별의 기준이 됩니다.

② equipment_master.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 10)
equipment_idnametemp_maxvibration_maxpressure_max
EQ-P01프레스-1호기85214
EQ-C02컨베이어-2호기60310
EQ-W03용접-3호기602.516
EQ-M04절삭-4호기90522
EQ-A05조립-5호기501.59
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
다음 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"]} 쉬운 데이터만 만들지 말 것 — 같은 설비 종류라도 정상 범위가 다른 행, 표기가 비슷해 혼동되는 이름을 섞어 표기 정규화와 정상 범위 매칭이 정확한지 확인하세요.
schema (3 층의 단일 출처)
{"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탐지 결과를 정비 담당자가 읽을 수 있는 경보 요약 문구로 정리합니다.
LLM 선택
model
이상탐지는 규칙·IsolationForest, 경보 요약은 Claude Sonnet + GPT-4o-mini (요약 검수 judge)
prompt
탐지 결과(근거 센서·임계값·이탈량)를 구조화해 넘기고, LLM은 그 근거만 사용해 경보 요약을 쓰도록 스키마로 강제합니다.
rationale
이상 판정은 정답을 규칙과 모델로 결정론적으로 채점할 수 있어야 하므로 탐지 자체는 LLM에 맡기지 않고, LLM은 근거를 사람이 읽을 문구로 옮기는 요약만 맡아 환각이 판정을 바꾸지 못하게 합니다.
결정 게이트
1주차 끝더미 센서 시계열을 넣었을 때 이상 구간과 근거 센서가 담긴 경보 레코드가 나오는가

✓ pass → 그대로 멈춰도 이상탐지 데모로 완결됩니다. 더 키우려면 주입한 정답과 대조해 탐지 정확도를 검증합니다.

2주차 끝탐지 결과가 주입한 정답 이상과 충분히 맞고 예지보전 추정이 붙었는가

✓ pass → 정확도를 확인했다면, 더 큰 데이터로 배치 파이프라인을 돌리고 분포 변화 모니터링으로 운영형에 가깝게 키웁니다.

재사용 레이어 · 코어 70% / 도메인 30%
core (재사용 가능)
  • 센서 시계열을 구간으로 자르고 결측을 표시하는 전처리기
  • 임계값과 모델을 결합한 이상탐지 엔진
  • 근거 센서와 이탈량을 담는 경보 레코드 스키마 검증기
  • 주입한 정답과 대조해 정밀도·재현율을 재는 평가 도구
  • 입력 분포 변화를 감시하는 모니터링 대시보드
  • 결측·극단·미등록 설비를 섞는 표본 생성기
domain (교체 대상)
  • 설비별 정상 범위와 센서 구성
  • 이상 유형 enum(스파이크·드리프트·센서 결측 등)은 도메인별로 갈아끼웁니다
  • 예지보전 임계 규칙
출력 스키마 · anomaly_alert

탐지한 이상 구간 한 건을 구조화한 설비 경보 레코드입니다. 이상 유형과 근거 센서, 예지보전 추정을 담습니다.

schema (JSON Schema)
{"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"]}
모범 출력 (3)
[
  {
    "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호기는 마스터에 등록되지 않은 설비라 정상 범위를 대조하지 못했습니다. 미매핑으로 표시하고 마스터 등록을 안내합니다."
  }
]
검증 노트 (자동 vs 수동)

[자동 검증 — 규칙으로 채점] 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. 경보 요약이 근거 센서를 오해 없이 전달하는지 읽어 확인합니다.