파이썬/NIPA 데이터분석 강의

NIPA 온라인선택 데이터 머신러닝 02 데이터 과학자 이해하기 for 비전공자

mcdn 2020. 10. 4. 17:10
반응형

이번 주차 목표는 데이터과학자의 업무 살펴보기

2012년 10월 HBR에 실린 이 "the sexiest job of the 21st century"라는 글은 데이터 과학자가 이런 사람이구나 알 수 있음 좋은 글이니 꼭 읽어보길 

데이터과학자를 소개할 때 사용되는 벤다이어그램. 드루 코네인이라는 사람이 데이터과학자에게 이런 스킬이 필요하다 하며 그린 그림. 

컴퓨터 능력, 데이터 분석, 해석 능력 그리고 현실의 문제를 해결할 때 필요한 도메인 전문성 

비즈니스 이해를 가진 실무자가 비즈니스 문제를 해결하기 위한 가설을 설정하고 해결하고 검증해내가는 전반의 능력 모두 포괄하고 있다. 

각 영역을 보면.. 머신러닝-- 기존 연구되어 왔던 분야. 프로그래밍 스킬과 통계학 지식이 있는 사람들. 그리고 이런 사람이 하는 작업을 머신러닝이라고 함. 깃헙이나 링크드인 같은 이력을 보면 이 분야가 많다. 기계적 작업만 하게 되고 현실의 문제를 해결하지 못하게 됨. 

예를 들어 병원에서 intensive 케어가 필요한 환자를 선별해겠다는 모델을 만들고 싶다.. 만약 어떤 모델을 만들었다고 해도 그게 현장에서 전혀 의미가 없다면 즉 도메인과 연결이 되지 않는다면 공허한 작업이 될지도 모른다. 

다음 여역으로 전통적 통계분석-- 궁금한 점이 있고 해석하고 싶을 때 통계 모델을 사용할 수 있다. 

위험 지역 -- 단순히 아이디어가 있고 그걸 프로그래밍 IT기술을 통해 머신러닝 모델을 만들고 작업을 했다... 근데 통계 백그라운드가 없다보니 블랙박스로 두고 작업하는 사람. 실제 현장에서 마주하게 되는 데이터는 노이즈가 많다. 근데 그런 통께 전처리 작업을 하지 않으면 실패.. 원인 분석에도 어렵게 된다. 

데이터 과학은 모두 요구하는 작업으로 세 스킬을 가진 사람이 데이터과학자라는 게 이 벤다이어그램의 핵심 

 

약 29개의 스킬셋.

결국 데이터 과학자 정의. 

데이터 과학자는 유니콘 (봉황 급 전설)

그러니까 팀이 중요하다. 

기획자 데이터 분석가 엔지니어 시스템 개발자.. 

또한 프로젝트는 대부분 양과 기한이 정해져있기 마련. 따라서 팀으로 움직여야 효율적. 

팀으로 움직이다보니 협업 능력이 중요하게 된다. 보통 일을 하게 되면 비즈니스 실무자와 엔지니어 사이에서 일을 하게 되는 경우가 많다.

의사소통을 잘하기 위해서 다양한 영역에서 이해가 필요하게 됨. 

먼저 너가 할 수 있는 거에서 시작하라 - DJ Patil 

1. 심장질환을 앓는 사람은 누구일까

이번 실습에서는 비전문가인 우리가 심장 질환 환자 데이터를 통해서

1) 어떤 사람이 심장질환을 앓는지
2) 심장 질환의 주요 요인이 무엇인지

찾아보면서 도메인 전문성의 중요성을 알아볼 것입니다.

도메인 지식이나 비즈니스에 대한 높은 이해도가 데이터를 파악하고 준비하고,

나아가 머신러닝 모델의 성능을 향상시키는데 중요한 역할을 한다는 것을 느끼기 위해서

심장 질환을 앓는 사람이 누구인지 찾아나갈 것입니다,



2. 심장 질환 (Heart Disease) 개요

심장 질환은 수십년 동안 전 세계인의 주요 사망 원인이었습니다.

미국에서는 매 분마다 한 명의 사람이 심장 질환으로 인해 사망하고 있다고 합니다.

그동안 많은 의사와 연구자들이 심장질환의 진단 방식을 연구해왔습니다.

그리고 그 원인을 밝히기 위해서 많은 전문가들이 노력해 왔습니다.

이번 실습에서는 UIC repository에서 제공하는 오픈소스 데이터로

실제 심장 질환을 연구하기 위해 만들어진 데이터를 사용할 것입니다

어떤 요인(feature)이 심장질환과 연관성이 높을까? - 직관과 노하우편

이번 실습에서는 현재 도메인에 대해 갖고있는 여러분의 직관과 도메인 지식만을 이용해서

어떤 요인이 심장질환과 관련이 높을지

관련성이 가장 높다고 생각되는 요인 3가지를 찾으세요. (예시: age, blood_pressure, slope)


Heart Disease Data Set 소개

실습에 사용할 심장 질환 데이터는 머신러닝 연구를 위해 제공된 오픈소스 데이터로

Cleveland Clinic의 심장질환 연구를 위한 데이터입니다.

V.A. Medical Center, Long Beach and Cleveland Clinic Foundation: Robert Detrano, M.D., Ph.D.



데이터 특징

  • 이 데이터는 본래 76개의 변수/요인(feature)으로 구성되었으나, 그 중 14개만이 실제 실험에 사용되었습니다.
  • 303명의 환자와 비환자를 대상으로 합니다.
  • 머신러닝 연구자들이 즐겨 사용하는 데이터입니다.
  • 본래 0, 1, 2, 3, 4로 심장질환의 발생과 심각한 정도를 표현했으나

    실습을 위해서 발생여부 0과 1로 예측 목표(target)를 변경하였습니다.
  • 실습을 위해 14개의 변수에 대해서 사전에 처리된 데이터를 사용합니다.
  • Processed Data Download
  • Data Description Page Link

 

age	sex	chest_pain	blood_pressure	serum_cholestoral	fasting_blood_sugar	electro	max_heart_rate	angina	st_depression	slope	vessels	thal	diagnosis
63.0	1.0	1.0	145.0	233.0	1.0	2.0	150.0	0.0	2.3	3.0	0.0	6.0	0
67.0	1.0	4.0	160.0	286.0	0.0	2.0	108.0	1.0	1.5	2.0	3.0	3.0	1
67.0	1.0	4.0	120.0	229.0	0.0	2.0	129.0	1.0	2.6	2.0	2.0	7.0	1
37.0	1.0	3.0	130.0	250.0	0.0	0.0	187.0	0.0	3.5	3.0	0.0	3.0	0
41.0	0.0	2.0	130.0	204.0	0.0	2.0	172.0	0.0	1.4	1.0	0.0	3.0	0
63.0	1.0	1.0	145.0	233.0	1.0	2.0	150.0	0.0	2.3	3.0	0.0	6.0	0
67.0	1.0	4.0	160.0	286.0	0.0	2.0	108.0	1.0	1.5	2.0	3.0	3.0	1
67.0	1.0	4.0	120.0	229.0	0.0	2.0	129.0	1.0	2.6
변수	설명
age	나이
Age in years
sex	성별
1: male, 0: female
chest_pain	가슴 통증의 유형
1: typical angina, 2: atypical angina, 3: non-anginal pain. Vlaue4: asymptomatic
blood_pressure	안정혈압
In mm hg on admission to the hospital
serum_cholesterol	혈청 콜레스테롤
In mg/dI
fasting_blood_sugar	공복혈당이 > 120 mg/dI인가?
1: true, 0: false
electro	안정 심전도 결과
0: normal, ,1: having ST-T wave abnormality, 2: showing probable or definite left ventricular hypertrophy by Estes’s criteria
max_heart_rate	최대 심박동수
angina	운동으로 유발된 협심증 있다
1: yes, 0: no
st_depression	휴식 대비 운동 시의 심전도상 ST 분절
In mm Hg on admission to the hospital
vessels	주요 vessels의 수
0, 1, 2, 3: colored by fluoroscopy
slope	The slope of the peak exercise ST segment
1: up sloping, 2: flat, 3: down sloping
thal	Thallium heart scan
3: normal, 6: fixed defect, 7: reversible defect
diagnosis	심장질환 진단 결과(Target)
0: no disease, 1: heart disease

앞에서 선택한 3개의 요인 평가하기

앞선 페이지에서 실제 Cleveland Clinic의 심장질환 데이터를 소개했고, 직관 도메인에 대한 지식을 이용해서 어떤 요인이 심장질환과 연관성이 높을지 분석했습니다.

이제 선택한 요인이 실제 머신러닝 알고리즘을 통해 생성된 모델에 들어갔을 때 성능이 어떻게 나오는지 확인합니다.

선택한 요인이 실제로 연관이 높다면 머신러닝 모델의 성능이 높게 나올 것입니다.

아래 13개의 변수 중에서 3개를 선택해서 입력하세요

from heart_disease import *


def result_of_heart_disease_prediction():
	# 선택한 3개의 요인이 실제 심장질환에 얼마나 관련성이 있는지 확인합니다.
	# Example: features = ['age', 'sex', 'blood_pressure']
	features = ['serum_cholesterol' ,'fasting_blood_sugar' ,'electro' ]
	check_3_features(features)



if __name__ == "__main__":
    result_of_heart_disease_prediction()
선택한 요인은 ['serum_cholesterol', 'fasting_blood_sugar', 'electro'] 입니다.
선택한 요인으로 생성한 머신러닝 모델의 심장질환에 대한 분류 예측 정확도는 다음과 같습니다.
Accuracy : 53.80%

최대 정확도 찾았다 

계속 집어넣음 ㅋㅋㅋㅋㅋㅋ

원래의 심장 질환 데이터는 76개의 요인을 가지고 있었습니다.

연구자들이 먼저 어떤 요인/변수가 중요한지 분석 과정을 거쳤고,

최종적으로 사용한 요인은 앞서 소개한 13개의 요인입니다.

앞선 실습에서 여러분이 선택한 3가지 요인의 정확도는 얼마나 되었나요?

최대 정확도에 도달했다면 그 기준과 근거는 무엇이었나요?

직관적으로 문제를 이해하고 핵심 요인을 찾을 때는

비즈니스 도메인에 대한 이해와 지식이 중요한 역할을 합니다.

데이터가 중심인 데이터 과학에서도 도메인에 대한 지식과 이해는 중요합니다.

데이터과학과 예술은 많은 공통점을 가지고 있다. 우선 작업을 위해 반복적인 훈련이 많이 필요하다는 점, 

삽질의 과정이 필요. 보이지 않는 무언가에서 보이는 결과물을 만들어낸다는 점에서 공통점을 가지고 있다. 

피아노를 배웠던 기억이 난다.

 

 

가장 보편적인 프로세스.

1. 문제파악 2. 데이터 준비 3. 모델 구축 4. 결과 공유 5. 모니터링 

현실은 계속 돌아가게 됨 

ㅋㅋㅋㅋㅋ

 

1. 문제파악 및 문제 정의 

1) 비즈니스 문제 파악 

2) 머신러닝 문제로 전환 

3) 머신러닝 도입 필요성/가능성 체크 

4) 도입에 따른 효과 검증 설계 

2. 데이터 준비 

1) 가능한 다양하고 많은 데이터 확보 

2) 머신러닝을 도입할 시스템 설계 

3) 데이터 분석 및 이해 - Understanding 

4) 데이터 분석 및 이해 Preprocessing 

5) 데이터 분석 및 이해 - Exploring 

6) Feature Engineering 

7) 학습, 검증, 테스트 데이터 셋 생성 

 

3. 머신러닝 모델 구축 

1) 사용할 모델/알고맂므 선택 

2) 실무적 제약사항 고려 

3) 하이퍼파라미터 설정 

4) 모델 학습 

5) 모델 평가링 

4. 결과 공유 

1) 코드 배포 

2) 보고서 작성, 결과 정리 및 발표 

3) 서비스 도입 

5. 모니터링 

1) 모델의 성능을 지속적으로 tracking 

2) 효과검증 결과 tracking 

3) 지속적인 유지 보수 계획/실행 

예전에 엑셀이 도구였다. 지금도 할 수 있다. 

지금은 파이썬, R등 프로그래밍 언어를 배워서 사용 

왜 배워야 하는가? 수십만개의 데이터를 다루게 되니까. 최적화. 처리하고 가공할 떄 유효하다는 장점이 있다. 

시스템에 사용하기 좋다. 

만약 처음 배우고 싶다하면 파이썬을 추천. 그 이유 범용적이라. 앱 / 데이터 분석 등 다양한 용도로 사용가능  통계 R만 쓰는 경우도있다.  속도도 빠르고 라이브러리 등장. 딥러닝 위한 프레임워크도 등장. 

작업환경이라고도 한다. 다른 언어처럼 보임 그래도 툴을 익혀야. 

 

반응형