부산광역시 화재 사고 출동 데이터 기반의�소방인력 최적화를 통한 화재 사고 피해 감소 방안 제시
DSBA 3기 동의대 분반
[ 不老不死 ]
강준규 / 이성훈 / 하재민 / 황태언
팀원 소개
‣ 프로젝트 총괄
‣ 유전 알고리즘
PM
강준규
‣ 활용 데이터 관리
‣ 딥러닝 모델 구축
Deep
Learning
‣ 통계 분석
‣ 회귀 분석
Machine
Learning
‣ 데이터 전처리
‣ 문서 작성 총관리
Data
Preprocessing
이성훈
하재민
황태언
목차
01
개요
‣ 기획 배경
‣ 주제 소개
02
수행 과정
‣ 주요 단계
‣ 활용 데이터
‣ 사용 기술
‣ 결과
03
마무리
‣ 차별성
‣ 기대 효과
‣ 활용 방안
‣ 향후 연구 방향
01. 개요
목차 - 기획 배경
출처: 소방 빅데이터 플랫폼
화재사고로 인한 지속적인 피해 발생
→ 신속한 대응과 효과적인 피해 감소 방안의 필요성 증대
목차 - 기획 배경
소방력 은 [행정 안전부령 제361호] ‘소방력 기준에 관한 규칙’ 에 의하여
관할 면적이나 인구, 소방 수요 및 환경적 요소, 상황처리 소요시간 같은
다양한 기준에 의해 배치됨
*소방력: 소방기관이 업무를 수행하는데 있어 필요한 인력과 장비
*
출처: Kosis
목차 - 기획 배경
상관분석(Correlation Analysis) 수행
→ 두 변수가 서로 어떤 선형적 관계를 갖고 있는지 분석
→ 사고 처리 및 대응과 밀접한 관련이 있는 변수만을 선발하여 활용
→ 상관계수가 0.4 이상일때부터 변수간 밀접한 관계가 존재한다고 판단
Element1 | Element2 | Corr |
소방 인력 | 화재진압시간 | 0.55 |
소방 인력 | 재산피해금액 | 0.4 |
소방 인력 | 건물구조조_철골조 | 0.53 |
재산피해금액 | 화재진압시간 | 0.55 |
재산피해금액 | 건물구조조_샌드위치 | 0.73 |
재산피해금액 | 건물구조조_합성수지 | 0.69 |
재산피해금액 | 건물구조조_슬라브가 | 0.63 |
출동소요시간 | 안전센터거리 | 0.81 |
출처: 부산광역시 화재 사고 출동 데이터[소방 빅데이터 플랫폼]
소방인력
재산피해
진압시간
0.55
0.4
0.55
목차 - 기획 배경
상관분석(Correlation Analysis) 수행
→ 두 변수가 서로 어떤 선형적 관계를 갖고 있는지 분석
→ 사고 처리 및 대응과 밀접한 관련이 있는 변수만을 선발하여 활용
→ 상관계수가 0.4 이상일때부터 변수간 밀접한 관계가 존재한다고 판단
Element1 | Element2 | Corr |
소방 인력 | 화재진압시간 | 0.55 |
소방 인력 | 재산피해금액 | 0.4 |
소방 인력 | 건물구조조_철골조 | 0.53 |
재산피해금액 | 화재진압시간 | 0.55 |
재산피해금액 | 건물구조조_샌드위치 | 0.73 |
재산피해금액 | 건물구조조_합성수지 | 0.69 |
재산피해금액 | 건물구조조_슬라브가 | 0.63 |
출동소요시간 | 안전센터거리 | 0.81 |
출처: 부산광역시 화재 사고 출동 데이터[소방 빅데이터 플랫폼]
소방인력
재산피해
진압시간
0.55
0.4
0.55
소방인력 재배치를 통한
피해 감소 가능성 확인
목차 - 주제 소개
소방인력 배치를 최적화해서, 사고피해를 감소시키자!
02. 수행과정
수행과정 - 시스템 요약
초기해 생성
적합도 검정&선택
교차 연산
변이 연산
데이터 로드
회귀 모델
생성
데이터 분할
(필요시 군집)
회귀 모델
학습
사고 피해
예측
결과 비교
데이터 로드
컬럼 선별
소방력 추가
이상치 제거
더미화
레이블
인코딩
NaN 처리
스케일링
순서 의미
데이터 저장
데이터
전처리
Genetic
Regression
사고 피해
예측
데이터 변경
(재배치된 소방인력)
수행과정 - 주요 단계
데이터 선별
소방력 최적화
효과 검증
수행과정 - 주요 단계
데이터 선별
소방력 최적화
효과 검증
[ 전처리 기술 ]
[ 최적화 알고리즘 ]
[ 회귀 모델 ]
수행과정 - 활용 데이터
데이터 선별
[ 전처리 기술 ]
수행과정 - 활용 데이터
1. 부산광역시 화재 사고 출동 데이터 [소방 빅데이터 플랫폼]
→ 기간: 2021년
→ 변수 정보(1140row x 60col)
‣ 시간(발생, 신고, 출동, 진압) & 장소(건물 특성 대분류, 좌표) & 피해(부상, 사망, 재산) & 환경(기온, 습도, 강수량) 등
2. 부산광역시 소방인력 배치 데이터 [부산시 소방 재난 본부]
→ 기간: 2021년
→ 변수 정보
‣ 119 안전센터별 소방 공무원 수
수행과정 - 활용 데이터
데이터 전처리란?
→ 데이터를 분석 및 처리에 적합한 형태로 만드는 과정
→ 소방 출동 데이터에 소방인력 수 컬럼을 추가 후 전처리 수행
수행과정 - 활용 데이터
1
2
5
4
3
이상 컬럼 제거
(내용 중복 등)
이상치 제거
(IQR*1.5 활용)
인코딩
(더미변수화, 레이블 인코딩)
NaN값 처리
(삭제 또는 대체)
스케일링
(MinMax)
985row x 117col
수행과정 - 사용기술
소방력 최적화
[ 유전 알고리즘 ]
수행과정 - 사용기술
→ 특정 조건하에 여러 지역의 인원을 동시에 배치
→ 인력을 예측하는 것은 적합하지 않다고 판단, 최적화(Optimization) 문제로 접근
수행과정 - 사용기술
유전 알고리즘(Genetic Algorithm)
→ 생물의 진화와 유전자의 적자생존 원리에 기반한 휴리스틱 기법
→ 랜덤 해를 생성하고, 최적해를 찾을 때까지 교차와 변이를 반복 수행
초기 해 생성
랜덤한 값의 유전자들이
모인 세대 생성
선택
점수가 높은
상위 20개 유전자만
선택
적합도 평가
초기 해의
적합도 점수 계산
(센터별 담당사고수의 표준편차)
교차 연산
2개의 랜덤한 부모 유전자 지정 후,
교차 연산으로 자손 생성
변이 연산
랜덤하게 하나의 유전자
선택, 정보를 변경하여
돌연변이 생성(0.001)
수행과정 - 사용기술
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
부전 | 62 | 51 | 72 |
양정 | 49 | 31 | 62 |
광안 | 48 | 64 | 64 |
범일 | 45 | 42 | 61 |
연산 | 43 | 55 | 57 |
부곡 | 39 | 59 | 51 |
사직 | 33 | 28 | 46 |
온천 | 33 | 28 | 46 |
신평 | 33 | 63 | 43 |
수안 | 32 | 49 | 38 |
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
대연 | 31 | 42 | 40 |
가야 | 27 | 30 | 38 |
반여 | 23 | 34 | 38 |
좌동 | 23 | 31 | 40 |
서동 | 23 | 42 | 37 |
부민 | 22 | 39 | 35 |
신호 | 22 | 30 | 39 |
충무 | 22 | 30 | 35 |
삼락 | 21 | 64 | 34 |
- | - | - | - |
수행과정 - 사용기술
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
부전 | 62 | 51 | 72 |
양정 | 49 | 31 | 62 |
광안 | 48 | 64 | 64 |
범일 | 45 | 42 | 61 |
연산 | 43 | 55 | 57 |
부곡 | 39 | 59 | 51 |
사직 | 33 | 28 | 46 |
온천 | 33 | 28 | 46 |
신평 | 33 | 63 | 43 |
수안 | 32 | 49 | 38 |
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
대연 | 31 | 42 | 40 |
가야 | 27 | 30 | 38 |
반여 | 23 | 34 | 38 |
좌동 | 23 | 31 | 40 |
서동 | 23 | 42 | 37 |
부민 | 22 | 39 | 35 |
신호 | 22 | 30 | 39 |
충무 | 22 | 30 | 35 |
삼락 | 21 | 64 | 34 |
- | - | - | - |
수행과정 - 사용기술
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
부전 | 62 | 51 | 62 |
양정 | 49 | 31 | 62 |
광안 | 48 | 64 | 56 |
범일 | 45 | 42 | 56 |
연산 | 43 | 55 | 56 |
부곡 | 39 | 59 | 47 |
사직 | 33 | 28 | 45 |
온천 | 33 | 28 | 45 |
신평 | 33 | 63 | 45 |
수안 | 32 | 49 | 45 |
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
대연 | 31 | 42 | 45 |
가야 | 27 | 30 | 40 |
반여 | 23 | 34 | 40 |
좌동 | 23 | 31 | 40 |
서동 | 23 | 42 | 40 |
부민 | 22 | 39 | 36 |
신호 | 22 | 30 | 36 |
충무 | 22 | 30 | 36 |
삼락 | 21 | 64 | 34 |
- | - | - | - |
수행과정 - 사용기술
→ 사고 수에 따라 센터별 인원이 재배치된 것을 확인 가능
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
부전 | 62 | 51 | 72 |
양정 | 49 | 31 | 62 |
광안 | 48 | 64 | 64 |
범일 | 45 | 42 | 61 |
연산 | 43 | 55 | 57 |
부곡 | 39 | 59 | 51 |
사직 | 33 | 28 | 46 |
온천 | 33 | 28 | 46 |
신평 | 33 | 63 | 43 |
수안 | 32 | 49 | 38 |
센터명 | 센터별 사고수 | 재배치 전 근무인원 | 재배치 후 근무인원 |
대연 | 31 | 42 | 40 |
가야 | 27 | 30 | 38 |
반여 | 23 | 34 | 38 |
좌동 | 23 | 31 | 40 |
서동 | 23 | 42 | 37 |
부민 | 22 | 39 | 35 |
신호 | 22 | 30 | 39 |
충무 | 22 | 30 | 35 |
삼락 | 21 | 64 | 34 |
- | - | - | - |
수행과정 - 사용기술
재배치 전 근무인원 총계 (표준편차) | 재배치 후 근무인원 총계 (표준편차) |
2060 (1.58) | 2021 (1.54) |
→ 기존 인력보다 적은 수로 재배치하여 최적화의 본래 의도를 보장
→ 사고 수가 적은 센터도 최소 10명 이상 근무 보장
수행과정 - 사용기술
효과 검증
[ 회귀 모델 ]
수행과정 - 사용기술
‣ 유사한 데이터끼리 그룹화
‣ 조절 불가한 특성을 기준으로 사용
‣ Elbow 기법 기반으로 그룹 수 결정
‣ 각 군집별 데이터가 불균형하여 사용x
Cluster
‣ Principle Component Analysis(주성분 분석)
‣ 다차원을 축소
‣ 상관분석 기반으로 컴포넌트 결정
‣ 교차 검증 정확도가 유의하지 않아 사용x
PCA
‣ LR (R2: 0.403 & Mse: 0.018)
‣ Ridge (R2: 0.204 & Mse: 0.024)
‣ Lasso (R2: 0.000 & Mse: 0.031)
‣ Elastic (R2: -0.062 & Mse: 0.131)
Model
효과 검증
→ 소방인력 재배치를 통한 피해 감소 효과를 검증하는 과정
→ 다중 선형 회귀문제로 접근
‣ 화재로 인한 재산 피해금액 정보를 종속변수로 사용
‣ 소방인력 및 화재사고 정보를 독립변수로 사용
→ 소방인력 변수를 재배치된 수치로 변경하여 재산피해 재예측
→ 재배치 전/후의 피해 예측치를 비교하여 감소했다면 효과가 있다고 판단
수행과정 - 사용기술
‣ 유사한 데이터끼리 그룹화
‣ 조절 불가한 특성을 기준으로 사용
‣ Elbow 기법 기반으로 그룹 수 결정
‣ 각 군집별 데이터가 불균형하여 사용x
Cluster
‣ Principle Component Analysis(주성분 분석)
‣ 다차원을 축소
‣ 상관분석 기반으로 컴포넌트 결정
‣ 교차 검증 정확도가 유의하지 않아 사용x
PCA
‣ LR (R2: 0.403 & Mse: 0.018)
‣ Ridge (R2: 0.204 & Mse: 0.024)
‣ Lasso (R2: 0.000 & Mse: 0.031)
‣ Elastic (R2: -0.062 & Mse: 0.131)
Model
수행과정 - 사용기술
Dence Layer
Epochs: 1750, Loss(Mse): 0.08, R2: 0.93
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_0 | input: | (None, 64) |
Dense_0 | output: | (None, 32) |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 1) |
Dropout_1 | Input: | (None, 64) |
Dropout_1 | Output: | (None, 64) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 128) |
Dense_2 | Output: | (None, 64) |
Dense_3 | Input: | (None, 64) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 256) |
Dense_1 | Output: | (None, 128) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 256) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 16) |
Dense_3 | Input: | (None, 16) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 64) |
Dense_1 | Output: | (None, 32) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
수행과정 - 사용기술
Dence Layer
Epochs: 1750, Loss(Mse): 0.08, R2: 0.93
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_1 | input: | (None, 64) |
Dense_1 | output: | (None, 32) |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 1) |
Dropout_1 | Input: | (None, 64) |
Dropout_1 | Output: | (None, 64) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 128) |
Dense_2 | Output: | (None, 64) |
Dense_3 | Input: | (None, 64) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 256) |
Dense_1 | Output: | (None, 128) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 256) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 16) |
Dense_3 | Input: | (None, 16) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 64) |
Dense_1 | Output: | (None, 32) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
수행과정 - 사용기술
Dence Layer
Epochs: 1750, Loss(Mse): 0.08, R2: 0.93
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 128) |
Dense_2 | Output: | (None, 64) |
Dense_3 | Input: | (None, 64) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 256) |
Dense_1 | Output: | (None, 128) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 256) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 16) |
Dense_3 | Input: | (None, 16) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 64) |
Dense_1 | Output: | (None, 32) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_0 | input: | (None, 64) |
Dense_0 | output: | (None, 32) |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 1) |
Dropout_1 | Input: | (None, 64) |
Dropout_1 | Output: | (None, 64) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
수행과정 - 사용기술
Dence Layer
Epochs: 1750, Loss(Mse): 0.08, R2: 0.93
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 16) |
Dense_3 | Input: | (None, 16) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 64) |
Dense_1 | Output: | (None, 32) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_1 | input: | (None, 64) |
Dense_1 | output: | (None, 32) |
Dense_2 | Input: | (None, 32) |
Dense_2 | Output: | (None, 1) |
Dropout_1 | Input: | (None, 64) |
Dropout_1 | Output: | (None, 64) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 64) |
▿
▿
▿
▿
Dense_Input | Input: | [(None, 116)] |
Input_Layer | Output: | [(None, 116)] |
Dense_2 | Input: | (None, 128) |
Dense_2 | Output: | (None, 64) |
Dense_3 | Input: | (None, 64) |
Dense_3 | Output: | (None, 1) |
Dense_1 | Input: | (None, 256) |
Dense_1 | Output: | (None, 128) |
Dense_0 | Input: | (None, 116) |
Dense_0 | Output: | (None, 256) |
▿
▿
▿
수행과정 - 결과
인력 재배치에 따라 사고 피해값이 감소함을 확인
실제 재산피해 | 재배치 전 재산피해 예측값 | 재배치 후 재산피해 예측값 |
0.27347 | 0.26721 | 0.21436 |
0.23824 | 0.23019 | 0.17528 |
0.21932 | 0.20973 | 0.16219 |
0.18649 | 0.17821 | 0.14012 |
0.12184 | 0.11427 | 0.06894 |
0.10337 | 0.09772 | 0.09744 |
➞
*종속변수=재산피해, 독립변수=사고 특성 변수
03. 마무리
마무리 - 차별성
재배치의 효과 검증
→ 인력 재배치에는 많은 시간과 예산이 소요
기존 연구 사례
‣ 상관계수 비교만을 통한
수치적 효과 검증
제안방안
‣ 높은 정확도의 예측 모델로 직관적인 효과 검증
↔
마무리 - 기대효과
1. 소방관들의 육체적, 정신적 스트레스 감소
2. 노동 환경 개선
3. 효율적인 출동 & 골든 타임 확보 가능성 증가
4. 예산 분배 효율화
마무리 - 활용방안
1. 다양한 분야에서의 접목 가능성
→ 수난사고, 산악사고와 같은 재난 사고
→ 인력배치가 필요한 타분야
2. 다양한 지역에서의 적용 가능성
→ 화재 사고 데이터의 제한적인 범위로 인한 분석과정에서의 애로사항
→ 다양한 지역의 데이터를 활용한다면 전국적인 단위에서 인력 최적화 가능
마무리 - 향후 연구 방향
1. 현행 연구 사례
→ 사고 수만을 기반으로 인력 배치
2. 제안 연구 방향
→ 사고 발생 환경 또는 규모를 최적화 과정에 함께 반영하여 더욱 정확한 인력 배치
End.
https://drive.google.com/drive/folders/1JSE5TfcubipIJig8DdmejulgSNB1cMz2?usp=sharing