본문 바로가기
홈 AI 학습 AI 실무 안내서 119 합성 데이터로 안전하게 연습하기
L2 중급 · 12분 읽기

119 합성 데이터로 안전하게 연습하기

2026.10.26 갱신 실제 자료를 외부 AI에 넣지 않고 분석 코드를 받거나 연습 자료를 만들려는 실무자
#합성데이터#개인정보#재현성#연습
검토 상태: 전문 검토 전 위험도 미분류

업무에 AI를 쓸 때 확인하면 좋은 방법과 점검 항목을 정리한 참고 자료입니다. 실제 업무에 적용할 때는 소속 기관의 기준과 담당자 검토를 함께 확인합니다.

요즘은 AI에게 열 이름과 자료형만 알려 주면 합성 표와 그 표를 만드는 코드를 바로 받을 수 있습니다. 실제 출동·점검 자료를 외부 AI에 넣을 수 없을 때는 같은 열 구성의 합성 표로 정제·집계 코드를 받고, 그 코드를 기관 PC에서 실제 자료에 실행할 수 있습니다.

만드는 일이 쉬워진 만큼 쓰는 사람이 먼저 정할 것이 중요합니다. 무엇을 연습하려는지, 실제 자료와 무엇이 다른지, 실제 사람을 다시 알아볼 수 있는지, 결과물에 합성임을 어떻게 표시할지입니다. 이 안내서는 이 네 가지와 하지 말아야 할 일, 실제 자료가 걸리는 작업의 순서를 다룹니다. 다른 안내서에서 실제 자료 대신 합성 표로 코드를 받으라고 할 때도 이 순서를 따릅니다.

🎯 이 장의 목표
  • 합성 데이터를 만들기 전에 연습 목적, 실제와 다른 점, 재식별 가능성, 합성 표시를 정할 수 있습니다.
  • 실제 자료 대신 열 구성과 합성 표를 주고 AI에게 분석 코드를 받는 순서를 따를 수 있습니다.
  • 열 사이 관계를 생성 규칙과 별도의 검산 조건으로 적을 수 있습니다.
  • 합성 결과를 쓸 곳과 쓰면 안 되는 곳을 구분할 수 있습니다.

AI에게 맡기는 프롬프트

실제 자료의 열 구성만 적어 합성 표와 그 생성 코드를 받을 때 씁니다. 코드를 실행할 수 있는 AI(파일 분석 기능이나 코딩 에이전트)를 전제로 합니다. 실제 신고자·환자 정보가 없는 자료로만 요청하며, 실제 자료의 값은 한 행도 붙이지 않습니다.

TEXT
[목적] (무엇을 연습하거나 시험하는지. 예: 출동 자료의 결측·중복 정제와 월별 유형 집계 코드를 시험할 합성 출동 CSV)
결과는 교육과 코드 시험에만 쓰며 실제 통계로 쓰지 않습니다.
[자료] 실제 자료의 값은 드리지 않습니다. 열 구성은 다음과 같습니다.
- incident_id: 문자, SYN-연도-6자리
- reported_at: 날짜·시각, YYYY-MM-DD HH:MM
- incident_type: 화재, 구조, 구급 중 하나
- station, district: 가상 소방서·가상 동 이름(실제 기관·지명은 쓰지 않음)
- response_time_sec: 정수, 60~1800
[생성 조건] (행 수, seed, 일부러 넣을 오류와 개수. 예: 500행, seed 7, 빈 district 10행, 중복 incident_id 5건)
일부러 넣은 오류의 행 번호를 따로 목록으로 주세요.
[완성 기준] 생성 코드, CSV, 실행한 Python 판을 함께 주세요.
생성 코드와 따로 작성한 검산 결과를 보여 주세요: incident_id 중복 수, reported_at 변환 실패 수, 범위를 벗어난 response_time_sec 수, 유형별 합계와 전체 행 수.
검산 결과가 일부러 넣은 오류 수와 다르면 CSV를 저장하지 말고 이유를 알려 주세요.
CSV와 함께 "규칙으로 만든 합성 데이터"라는 문구와 생성 조건(seed·행 수·규칙)을 적은 설명 파일을 주세요.
[하지 말 것] 실제 사람 이름·전화번호·주소 형식의 값을 만들지 마세요. 실제 출동 분포를 추정해 넣지 말고, 정하지 않은 규칙은 [확인 필요]로 남겨 주세요.
확인 기준은 https://119-ai-studio.kr/synth-data.html 안내서를 따릅니다.
작업 전에 빠진 정보가 있으면 먼저 질문해 주세요.

결과를 받은 뒤 확인할 것은 다음과 같습니다.

  • 검산 결과의 중복·결측 수가 요청한 개수, 오류 행 목록과 같은지 봅니다.
  • station·district 값 목록을 뽑아 실제 소방서·행정동 이름이 섞이지 않았는지 봅니다.
  • 같은 seed와 같은 Python 판으로 다시 실행해 같은 CSV가 나오는지 봅니다.

만들기 전에 정할 것

합성 표를 만드는 일은 AI에게 맡길 수 있지만, 아래 네 가지는 쓰는 사람이 정합니다.

정할 것정하지 않으면 생기는 일적어 둘 내용
무엇을 연습하거나 시험하는지연습에 필요한 열이나 일부러 넣을 오류가 빠집니다.연습할 작업(정제·집계·대조), 일부러 넣을 오류와 개수, 기대 검산값
실제 자료와 다른 점합성 표의 분포를 실제 경향으로 읽습니다.넣지 않은 특성(계절성, 지역 특성, 드문 대형 사고 등), 사람이 정한 값 범위
재식별 가능성실제 자료에서 출발한 표를 규칙으로 만든 표로 여깁니다.입력 출처(규칙만, 공개 합성 데이터셋, 실제 자료 가공), 실제 값이 섞이지 않았는지 확인한 결과
합성 표시파일에서 떨어져 나온 표·차트가 실제 통계로 쓰입니다.결과물 가까이에 붙일 문구, 생성 조건(명령·seed·Python 판)

표·차트를 공개하거나 교육 자료에 넣을 때는 결과물 가까이에 다음과 같은 문구를 붙입니다.

TEXT
이 표는 규칙으로 만든 합성 데이터(생성 조건: seed 7, 500행)로 만든 교육용 예시입니다. 실제 사건, 실제 주소, 실제 기관 통계를 나타내지 않습니다.

하지 말 것

  • 실제 자료를 조금 바꾸거나 이름만 바꾼 파일을 합성이라고 부르지 않습니다. 실제 행의 관계와 드문 조합이 남아 원자료의 개인정보 위험이 그대로 있습니다.
  • 실제 자료의 행을 "이것과 비슷하게 만들어 달라"며 AI에게 예시로 붙이지 않습니다. 열 이름·자료형·값 범위만 줍니다.
  • 합성 데이터로 실제 기관 성과 설명, 특정 지역 위험도 판단, 출동 기준시간 평가, 민원 답변의 사실 근거를 만들지 않습니다. 분포는 사람이 정한 값이라 현실을 대표하지 않습니다.
  • 생성 코드와 검산 기준을 한 번에 함께 바꾸지 않습니다. 같은 실수가 양쪽에 들어가면 검산이 통과합니다.

동작 원리

규칙으로 만드는 합성 데이터는 열 구성, 각 열의 값 범위, 열 사이 관계를 먼저 규칙으로 적고, 난수로 값을 골라 새 행을 만듭니다. 난수는 seed라는 시작값에서 정해진 순서로 나옵니다. 같은 Python 판에서 같은 코드와 같은 인자(seed·행 수)로 실행하면 같은 CSV가 나옵니다. Python이나 라이브러리 판이 바뀌면 같은 seed라도 값이 달라질 수 있으므로 판 번호를 함께 기록합니다.

한 열의 범위보다 열 사이 관계가 더 중요합니다. items_failed가 items_checked보다 클 수 없고, 점검 결과가 특정 상태일 때만 재점검일이 생기는 식의 관계가 있어야 분석 연습이 됩니다. 이 관계는 생성 코드와 검산 코드에 따로 적습니다. 생성 쪽에 실수가 있어도 독립된 검산 조건이 모순 행을 찾게 하기 위해서입니다.

합성이라는 이름은 생성 방식만 설명합니다. 현실 분포를 닮았다는 보증도, 개인정보 검토가 끝났다는 승인도 아닙니다. 공개된 합성 데이터 가운데에는 실제 자료의 통계적 특성을 유지하도록 만든 것도 있습니다. 학습 데이터셋의 한국소방산업기술원 위험물질시험 합성데이터가 그런 예입니다. 이런 자료는 원자료에서 출발했으므로 이용 조건과 개인정보 처리 설명을 데이터 안내에서 확인하고, 쓸 때는 실제 시험값이 아니라는 점을 함께 밝힙니다.

실제 자료 대신 합성 표로 코드를 받는 순서

실제 출동·점검·교육 명단처럼 개인정보나 내부 자료가 걸리는 작업은 다음 순서를 따릅니다.

  1. 생성형 AI 입력 확인으로 AI에 넣을 내용을 먼저 확인합니다. 합성 표라도 열 이름이나 설명에 내부 시스템 이름·경로가 들어갈 수 있습니다.
  2. AI에게는 열 이름·자료형·값 범위와 그 규칙으로 만든 합성 몇 줄만 주고, 정제·집계·대조 코드를 받습니다.
  3. 받은 코드를 합성 표에서 먼저 실행해 기대 검산값이 나오는지 봅니다.
  4. 그 코드는 기관 PC에서 실제 자료로 실행합니다. 코딩 에이전트를 쓴다면 실제 자료가 있는 폴더를 작업 범위 밖에 둡니다. 근거는 AI 도구의 Claude Code 카드와 권한과 승인 모델에 있습니다.
  5. AI에게 다시 보여 줄 것은 집계표처럼 개별 값이 없는 결과만입니다. 한 동네 1건처럼 작은 칸은 사람을 특정할 수 있는 경우가 있어 가립니다. 실제 자료에서만 오류가 나면 막혔을 때 다시 요청하는 법처럼 오류 메시지와 행 수만 줍니다.

생성 규칙과 검산 조건

점검 기록을 예로 들면 생성 규칙과 검산 조건을 다음처럼 짝지어 적습니다. 아래 판정 규칙과 30일은 연습용 가상 규칙입니다. 실제 조치 기한은 법령과 기관 기준을 확인합니다.

열 또는 관계생성 규칙검산 조건
ID 열SYN-2025-000001처럼 합성임이 드러나는 ID중복 0, 또는 일부러 넣은 수와 같음
items_failed, items_checked불량 항목 수는 점검 항목 수 이하items_failed > items_checked인 행 0
result불량 0이면 적합, 1~2면 현지시정, 3 이상이면 시정명령적합인데 불량이 0이 아닌 행 0
reinspection_due시정명령일 때만 점검일 + 30일시정명령인데 빈 행 0, 다른 결과인데 값이 있는 행 0
표 전체결과별 행 수결과별 합계 = 전체 행 수

검산 조건은 생성 코드를 다시 읽지 않고 결과 CSV만 보고 따로 셉니다. 재점검일 조건을 반대로 건 생성 코드는 오류 없이 실행되지만, 이 검산에서 위반 행이 나옵니다.

선택지와 트레이드오프

선택지맞는 상황장점주의할 점
고정 seed 한 벌교육 화면·문서 예시·회귀 테스트모두가 같은 입력과 기대 결과를 공유한 벌의 우연한 값에만 맞춘 코드가 될 수 있음
여러 seed 묶음코드가 다양한 입력에서도 맞게 동작하는지 볼 때값 조합을 넓게 시험실행마다 seed와 결과를 기록해야 다시 만들 수 있음
작은 경계 사례 파일결측·중복·날짜 오류 처리를 확인할 때기대 답을 사람이 미리 확인하기 쉬움현실 비율을 대표하지 않음
공개된 합성 데이터셋실제 분포에 가까운 연습 재료가 필요할 때원자료의 통계적 특성을 유지했다고 밝힌 자료가 있음원자료에서 출발했으므로 이용 조건과 처리 설명을 데이터 안내로 확인

가상 상황: 신규 직원에게 집계를 가르칠 때

다음은 학습용 가상 상황입니다. 교육 담당자가 이번 주에 배치된 신규 직원에게 월간 출동 집계를 가르쳐야 합니다. 실제 출동 CSV에는 신고자 정보가 들어 있어 교육용으로 건네지 않습니다.

담당자는 위 프롬프트로 실제 자료와 같은 열 구성의 합성 출동 CSV를 받고, 일부러 넣은 결측·중복·표기 흔들림의 개수를 기대값으로 적어 둡니다. 교육생 모두가 같은 seed로 만든 같은 파일을 쓰므로, 결과가 사람마다 다르면 코드 차이부터 봅니다. 교육 자료의 표에는 합성 표시 문구를 붙입니다. 교육생이 합성 표의 유형별 비율을 실제 관할의 경향으로 기억하면 실패합니다. 그래서 첫 시간에 이 표의 값은 사람이 정했다는 점을 먼저 설명합니다.

가상 사례: 개발 담당자의 집계 회귀 테스트

다음은 교육 사례와 다른 가상 사례입니다. 개발 담당자가 월별 집계 코드를 고친 뒤 이전 결과가 의도 없이 달라지지 않았는지 확인하려 합니다. 실제 출동 자료는 개발 환경에 복사하지 않습니다.

담당자는 고정 seed 한 벌과 미리 검토한 기대 집계를 기본 입력으로 두고, 결측·중복만 모은 작은 경계 사례 파일을 따로 둡니다. 코드를 고친 뒤에는 합성 파일의 검산을 먼저 통과시키고, 월별 합·유형별 합·오류 목록을 기대값과 비교합니다. 차이가 나면 코드가 나아졌다고 가정하지 않고 생성 조건이 달라졌는지부터 확인합니다. 합성 입력, 프롬프트, 기대 기준을 한 묶음으로 두는 예는 로컬 AI의 따라 하기에 있습니다.

코딩 에이전트에게 집계 코드와 기대값을 한 번에 고치게 하면 실패합니다. 같은 오류가 양쪽에 들어가면 검사가 통과합니다. 사람은 규칙을 바꾼 이유와 새 기대값을 따로 검토하고, 확인한 변경만 기대값에 반영합니다.

▸ 소방 활용 포인트
실제 출동 자료나 교육 명단을 외부 AI에 넣을 수 없을 때, 같은 열 구성의 합성 표로 정제·집계·대조 코드를 먼저 받아 검산한 뒤 기관 PC에서 실제 자료에 실행합니다. 업무별로 열 구성과 기대 검산값을 한 번 정리해 두면 다음 요청에서 그대로 씁니다.

문제 해결

증상가능한 원인처방확인
같은 seed인데 결과가 달라짐실행 인자·행 수·코드·Python 판이 달라짐명령, seed, 코드 파일, Python 판을 함께 기록기록한 조건으로 다시 실행해 파일과 검산 결과 대조
모순된 상태 조합이 생김열을 각각 뽑고 관계 규칙을 적용하지 않음상태를 먼저 정한 뒤 종속 열을 조건에 따라 생성모순 조건별 위반 행 수가 0인지 확인
합성 표에서 통과한 코드가 실제 자료에서 틀림실제 자료의 날짜 형식·ID 앞자리 0·빈값 표기가 열 규칙에 없음실제 자료의 형식을 열 규칙에 더해 합성 표를 다시 만듦기관 PC에서 실제 자료의 행 수와 변환 실패 수를 확인
합성 표에 실제 기관명·지명이 섞임이름 규칙을 주지 않았거나 실제 행을 예시로 붙임가상 이름 목록을 직접 주고 실제 값은 붙이지 않음이름 열의 값 목록을 뽑아 실제 기관·지명과 대조

자주 묻는 질문

Q. 실제 데이터에서 이름만 바꾸면 합성 데이터인가요?

아닙니다. 이름만 바꾼 파일은 실제 자료를 가공한 것이라 실제 행의 관계와 드문 조합이 그대로 남습니다. 다른 정보와 맞추면 사람을 다시 알아볼 수 있습니다(재식별). 이름이나 식별 정보를 바꾼 자료와 익명 자료의 차이는 가명처리 용어 설명에 있습니다.

Q. seed만 기록하면 같은 데이터를 다시 만들 수 있나요?

seed와 함께 실행 명령, 행 수, 생성 코드, Python 판을 기록합니다. AI에게 생성 코드를 받았다면 그 코드 파일을 결과와 함께 보관합니다. 같은 프롬프트를 다시 넣어도 AI가 같은 코드를 만든다는 보장은 없습니다.

Q. 합성 데이터가 검산을 통과하면 현실 분석에도 쓸 수 있나요?

검산은 생성 규칙이 지켜졌는지 보여 줍니다. 실제 분포와 업무 사실을 대표한다는 뜻은 아니므로 현실 판단이나 성과 근거로 쓰지 않습니다.

Q. 규칙으로 만든 합성 표는 외부 AI에 바로 넣어도 되나요?

넣기 전에 생성형 AI 입력 확인을 거칩니다. 규칙에서 새로 만든 행에는 실제 사람이 없지만, 만드는 과정에서 실제 값이 섞였을 수 있고 열 이름이나 설명에 내부 시스템 이름·경로가 들어갈 수 있습니다. 쓸 수 있는 도구와 환경은 기관 기준을 따릅니다.

핵심 정리

  • 합성 데이터를 만들기 전에 무엇을 연습하는지, 실제와 다른 점, 재식별 가능성, 합성 표시 방법을 정합니다.
  • 실제 자료는 열 이름·자료형·값 범위만 AI에게 주고, 받은 코드는 합성 표에서 검산한 뒤 기관 PC에서 실제 자료에 실행합니다.
  • 열 사이 관계는 생성 규칙과 별도의 검산 조건으로 적고, seed·코드·Python 판을 함께 기록합니다.
  • 합성 결과는 연습과 코드 시험용이며 실제 성과·위험·기준시간 판단의 근거로 쓰지 않습니다.

다음 단계