1. EDA

1.1 EDA는 무엇의 줄임말인가?

  • EDA는 Exploratory Data Analysis의 줄임말로 탐색적 데이터 분석이라고 한다.

1.2 EDA는 왜 하는가?

  • Data를 이해하고 관리 및 활용하기 쉽게 파악하게 해준다.
    통계적 기법, 시각화(그래픽) 등을 활용해 수집한 데이터 변수들 사이의 분포, 상관관계를 파악함으로써 데이터를 통찰하는 과정이다.

  • (예) 애인과 함께 부산 해운대를 여행을 가기로 했다. 근데 아무런 계획도 없이 '부산역 도착 - 해운대 이동'을 하면 맛집은 무엇이 있고, 웨이팅이 얼마나 있고, 근처 관광지 어디를 가야 할 지 모른다. 그저 어버버.... '글쎄... 나도 처음이라 잘 몰라서 ㅜㅜ 우리 함께 찾아볼까? ㅎㅎ'라고 하면.. 애인에게 잔소리만 듣기 딱 좋다. 미리 주변 맛집, 볼거리, 놀거리 등등을 견적을 내야한다. 그래야 해운대를 '더욱 잘' 즐길 수가 있다.

  • 위의 (예)에서 근처 맛집, 관광지 등등을 확인해 보는 것을 EDA로도 이해하면 좋지 않을까? 싶었다.
    해운대 관광지
    해운대 맛집

1.3 EDA의 특징

  • 데이터 분석에 있어서 (아주아주) 중요한 초기 분석을 의미한다.
  • Garbage in, Garbage out(GIGO): '쓰레기🗑가 들어가면 쓰레기🗑가 나온다'는 뜻으로. 컴퓨터는 우리를 너무너무 잘 믿기 때문에 우리가 입력해주는 값을 의심없이 받아들인다. 그렇기에 우리가 원하는 값을 기대하기 위해서는 '좋은' 결과를 낼 수 있는 값을 넣어주어야 한다. 콩 심은데 콩나고 팥 심은 데 팥 난다

1.4 EDA의 방법

  • 크게 두 가지로 나뉜다.
  • Graphic: bar, histogram, scatter plots 등등의 시각적으로 쉽게 볼 수 있게 표현한다.
  • Non-Graphic: 위에서 언급한 방식을 사용하지 않고 통계치를 보고 확인하는 방법(평균, 최빈값, 중앙값, 극대,극소값 등등)

1.5 Python에서의 EDA

  • Pandas를 활용해 Dataframe(이하 'df')으로 확인할 수 있다.
  • df의 컬럼명, shape, 결측치 등등을 쉽게 확인할 수 있다. (Non-Graphic)
  • bar, box, his, scatter 등을 활용하여 시각화를 통해 확인할 수 있다. (Graphic)

2. Feature Engineering.

2.1 Feature Engineering은 무엇인가?

  • Feature Engineering은 도메인(산업군)에서 필요로 하는 지식과 개개인의 창의성을 토대로 df에 존재하는 Feature들을 재가공하여 새로운 Feature를 만드는 것. (여기서 말하는 Feature는 df 상의 column과 의미가 같다!)
  • 즉, Feature engineering은 수학, 통계 및 도메인 지식을 활용해서 원초적인 상태의 data(=raw data)에서 유용한 특징을 추출하는 과정이다.

2.2 왜 하는가?

  • 데이터 사이언티스트가 가장 많은 시간을 할애하는 일! 60%는 Cleaning & Organizing data(데이터의 정제) 20%는 Collecting data sets(데이터의 수집)에 사용한다고 한다.
  • 현실의 data는 매우 복잡하고, 다양하게 있다. 이를 정제하지 않고 바로 model에 넣게 되면.... 앞서 언급하였던 Garbage in, Garbage out.. 이 일어나게 된다. 그렇기에 잘 정제하고 재구성해서 내가 원하는 결과를 도출할 수 있어야 한다. Feature Engineering이 데이터를 정제하고 재구성을 도와준다.

2.3 그럼 어떻게 하는가?

2.3.1 자료형 통일

  • python에는 다양한 자료형이 있다. object(쉽게 생각하면 문자열), integer(정수형), float(실수형), list(리스트형) 등등 이러한 자료형 중에 내가 필요로 하는 것들의 형태를 통일해준다.
  • 무슨 말이냐면 object와 integer은 df에서 합치거나 곱할 수 없다. 특히 우리 눈으로 보기에는 1,234로 되어 있어도 컴퓨터는 문자열, object로 인식을 한다. 그렇기에 숫자 형태로 바꿔주어야 Feature끼리 더하거나 빼거나 곱하거나 등등을 할 수 있게 된다.

2.3.2 결측치 제거 혹은 대체

  • 친구가 나에게 돈 1,000원을 주고 '매점가서 빵, 우유, 껌을 사오고 남은 돈은 너 가져'라고 한다. 그럼 나는 할 수 있나? 못한다. 왜? 1,000원으로 빵 하나 사기도 간당간당하기 때문이다. 인플레이션으로 인한 화폐가치 하락
  • 결측치(NaN, None 등)이 있는 Feature는 정상적으로 계산할 수 없다. 왜냐하면 위와 비슷한 상황인데 계산 할 게 없는데 계산하라고 하니... 얼마나 복장이 터지겠는가. (0은 NaN, None 과는 다르다. 0은 0이고, NaN, None은 아예 없는 값. 즉, 0도 아닌 값이다.)
    + Python에서는 Na, Null, NaN 모두 같은 의미(이것도 추후 정리!)
  • 그래서 (1) 결측치를 0으로 바꿔주거나. (2) 결측치가 있는 컬럼 혹은 행을 삭제해준다. (함수는 추후 pandas 정리할 때 정리!)
  • 꼭 0이 아니라 다른 것(예, 1, 없음, 특정한 값 등)으로도 대체를 해줄 수 있다. 하지만 0 말고 다른 것으로 대체를 해줄 때에는 특정한 목표를 가지고 대체를 해준다. 값을 바꿔주어야 하는 이유가 있다든지..

2.3.3 그렇게 하고 나면?

  • 그렇게 자료형을 통일해주고, 결측치를 제거 혹은 대체를 하고 나면 이제 요리사 마음대로다. 지지고, 볶고, 튀기든, 삶든 내가 원하는 대로 column을 요리(더하기, 빼기, 곱하기 등)해주면 된다.
profile
안녕하세요.

0개의 댓글