Garbage In, Garbage Out

데이터 μ „μ²˜λ¦¬μ˜ μ€‘μš”μ„±

잘λͺ»λœ 데이터가 λ“€μ–΄κ°€κ²Œ 되면, 아무리 ν›Œλ₯­ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ λŒλ €λ„ μ œλŒ€λ‘œ 된 κ²°κ³Όλ₯Ό 뽑아내지 λͺ»ν•  κ²ƒμž…λ‹ˆλ‹€.
ν”νžˆ 데이터 μ‚¬μ΄μ–Έν‹°μŠ€νŠΈλ“€μ€ 데이터 λͺ¨λΈλ§μ— 온 μ‹œκ°„μ„ 보내리라 μƒκ°μ§€λ§Œ,
μ‹€μ œλ‘œ 데이터 μ€€λΉ„μ—λ§Œ μž‘μ—… μ‹œκ°„μ˜ 60%λ₯Ό 보낸닀고 ν•©λ‹ˆλ‹€. (CrowdFlower, The NewYork Times)
그만큼 μ›μ‹œ λ°μ΄ν„°λŠ” 값이 λˆ„λ½λ˜κ±°λ‚˜ 잘λͺ»λœ κ²½μš°κ°€ 많고, 이λ₯Ό μ •μ œν•˜μ—¬ ‘μ“Έλ§Œν•˜κ²Œ’ λ§Œλ“œλŠ” 일이 μ€‘μš”ν•œ 것이죠.

탐색적 데이터 뢄석 (EDA)

λ‹€ν–‰νžˆ 데이터 μ „μ²˜λ¦¬μ™€ μ€€λΉ„ 단계λ₯Ό λ„μ™€μ£ΌλŠ” λ‹€μ–‘ν•œ 방법듀이 개발되고 μžˆμŠ΅λ‹ˆλ‹€.
κ·Έ 쀑 ν•˜λ‚˜κ°€ ‘탐색적 데이터 뢄석’, 즉 EDA(Exploratory Data Analysis)μž…λ‹ˆλ‹€.
EDAλŠ”Β λ³Έκ²©μ μΈ 데이터 λͺ¨λΈλ§μ— μ•žμ„œ, λ°μ΄ν„°μ˜ λΆ„ν¬λ‚˜ λ³€μˆ˜κ°„μ˜ 관계 등을 미리 νŒŒμ•…ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.
νžˆμŠ€ν† κ·Έλž¨, 산점도, μƒκ΄€κ΄€κ³„ν‘œ λ“± λ‹€μ–‘ν•œ μ‹œκ°μ  방법을 λ™μ›ν•©λ‹ˆλ‹€.
이λ₯Ό 톡해 μ›μ‹œ 데이터(Raw data)의 κ²°μΈ‘κ°’(Na, NaN), μ΄μƒμΉ˜(Outlier), 잘λͺ» μž…λ ₯된 κ°’ λ“± λ‹€μ–‘ν•œ λ…Έμ΄μ¦ˆ(Noise)λ₯Ό κ°€λ €λ‚΄μ–΄, μ œκ±°λ‚˜ λ³€ν™˜ν•˜λŠ” μž‘μ—…μ΄ μ§„ν–‰λ©λ‹ˆλ‹€.
μ΅œμ’…μ μœΌλ‘œλŠ” μ‹€μ œ λͺ¨λΈλ§μ— νˆ¬μž…λ  수 μžˆλŠ” λ°μ΄ν„°μ„ΈνŠΈλ₯Ό λ§Œλ“€μ–΄λ‚΄λŠ” 것이 μ£Ό λͺ©μ μ΄ λ˜κ² μ§€μš”.

Let’s get it!

이제 μ‹€μ œλ‘œ EDAκ°€ μ–΄λ–»κ²Œ μ§„ν–‰λ˜λŠ” 지, μ‹€μŠ΅μ„ 톡해 ν™•μΈν•΄λ΄…μ‹œλ‹€.
IBM의 Watson Studioμ—μ„œ R νŒ¨ν‚€μ§€μΈ ‘R4ML’을 ν™œμš©ν•΄μ„œ,
μƒ˜ν”Œ 데이터λ₯Ό μ „μ²˜λ¦¬ν•˜λŠ” 과정을 진행할 κ²ƒμž…λ‹ˆλ‹€.


<진행과정>

1. Watson Studio 등둝
2. μƒˆλ‘œμš΄ Watson Studio ν”„λ‘œμ νŠΈ 생성
3. μƒˆλ‘œμš΄ Spark μ„œλΉ„μŠ€ 생성
4. μƒˆλ‘œμš΄ λ…ΈνŠΈλΆ 생성
5. λ…ΈνŠΈλΆ μ‹€ν–‰
6. 뢄석 κ²°κ³Ό 확인

 

<μ΄μš©ν•  데이터>

RITA둜 λΆ€ν„° 받은 ‘airline’ 데이터 μ„ΈνŠΈλ₯Ό ν™œμš©ν•  κ²ƒμž…λ‹ˆλ‹€.
ν•΄λ‹Ή λ°μ΄ν„°λŠ” ν•­κ³΅κΈ°μ˜ μ •μ‹œμœ¨μ— κ΄€ν•œ λ‹€μ–‘ν•œ 톡계 자료λ₯Ό μ œκ³΅ν•˜λ©°, 도착 지연(Arrival Delay) 예츑의 λͺ©μ μœΌλ‘œ ν™œμš©λ©λ‹ˆλ‹€.
λ°μ΄ν„°λŠ” 이 κ³³μ—μ„œ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ : R4ML
R4ML은 IBM에 λ§Œλ“  λ‹€μ–‘ν•œ λ¨Έμ‹ λŸ¬λ‹ 및 톡계적 뢄석 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ R νŒ¨ν‚€μ§€μž…λ‹ˆλ‹€. Apache System MLκ³Ό Spark R의 ν•˜μ΄λΈŒλ¦¬λ“œ ν˜•νƒœλ‘œ, R언어와 ν•¨μˆ˜λ₯Ό μ§€μ›ν•˜λ©΄μ„œλ„ λΉ…λ°μ΄ν„°μ˜ μ •μ œμ™€ 뢄석 과정을 λ”μš± νŽΈλ¦¬ν•˜κ²Œ μˆ˜ν–‰ν•˜λ„λ‘ λ•μŠ΅λ‹ˆλ‹€. λ”μš± λ§Žμ€ 정보λ₯Ό μ›ν•˜μ‹œλ©΄, 이 곳을 λ°©λ¬Έν•˜μ„Έμš”.


1. Watson Studio 등둝

Watson Studio을 ν™œμš©ν•˜λ©΄ λ³΅μž‘ν•œ κ°œλ°œν™˜κ²½ ꡬ좕없이, λ‹€μ–‘ν•œ μ„œλΉ„μŠ€λ₯Ό ν΄λΌμš°λ“œλ‘œ μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
Watson Studioμ—μ„œ 계정 등둝과 둜그인 과정을 μ§„ν–‰ν•©λ‹ˆλ‹€.

(1) 둜그인/νšŒμ›κ°€μž… 선택

(2) (νšŒμ›κ°€μž… 선택 μ‹œ) 계정 생성

 

2. μƒˆλ‘œμš΄ Watson Studio ν”„λ‘œμ νŠΈ 생성

νšŒμ›κ°€μž…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄, Watson Studio 첫 화면에 μ§„μž…ν•©λ‹ˆλ‹€. 이제 μƒˆ ν”„λ‘œμ νŠΈ 생성을 μ§„ν–‰ν•©λ‹ˆλ‹€.

(1) Create a project 선택

(2) Data Science 선택 ν›„ Create a project 클릭

(3) New Project의 name 자유둭게 지정, Cloud Object Storageκ°€ μ •μƒμ μœΌλ‘œ μ„ νƒλ˜μ–΄μžˆλŠ” 지 확인 ν›„, Create λ²„νŠΌ 클릭

 

3. μƒˆλ‘œμš΄ Spark μ„œλΉ„μŠ€ 생성

μƒμ„±ν•œ ν”„λ‘œμ νŠΈμ—μ„œ μƒˆλ‘œμš΄ 슀파크 μ„œλΉ„μŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

(1) ν”„λ‘œμ νŠΈ νŽ˜μ΄μ§€ μ§„μž… ν›„, Settings νƒ­ 클릭

(2) Settings νƒ­μ—μ„œ μ­‰ λ‚΄λ €κ°€ Associated services의 우츑의 ‘Add service’μ—μ„œ ‘Spark’ 선택

(3) Existing νƒ­μœΌλ‘œ 기쑴의 Spark μ„œλΉ„μŠ€λ₯Ό μ„ νƒν•˜κ±°λ‚˜, New νƒ­μœΌλ‘œ μƒˆλ‘œμš΄ μ„œλΉ„μŠ€λ₯Ό 생성 (μ—¬κΈ°μ„œλŠ” Lite λ²„μ „μœΌλ‘œ νŠœν† λ¦¬μ–Ό 진행)

(4) Confirm 진행

(5) μ„œλΉ„μŠ€ 생성이 μ™„λ£Œλœ λͺ¨μŠ΅ 확인

 

4. μƒˆλ‘œμš΄ λ…ΈνŠΈλΆ 생성

이제 μ‹€μ œλ‘œ μ„œλΉ„μŠ€λ₯Ό ꡬ동할 λ…ΈνŠΈλΆμ„ μƒμ„±ν•©λ‹ˆλ‹€. λ…ΈνŠΈλΆ 생성은 총 2번 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
첫번째 λ…ΈνŠΈλΆμ€ 데이터 탐색적 뢄석 (EDA)λ₯Ό μœ„ν•΄, λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ€ 이후 ν•„μš”ν•œ 데이터 μ€€λΉ„/μ „μ²˜λ¦¬λ₯Ό μœ„ν•΄μ„œμž…λ‹ˆλ‹€.

(1) ν”„λ‘œμ νŠΈ λŒ€μ‹œλ³΄λ“œ ν™”λ©΄μ—μ„œ Assets 탭에 μ§„μž…ν•œ λ’€, μƒλ‹¨μ˜ ‘Add to project’ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ„Έμš”.

(2) 생성할 asset으둜 NOTEBOOK을 μ„ νƒν•˜μ„Έμš”.

(3) λ…ΈνŠΈλΆμ— λ…ΈνŠΈλΆλͺ…을 λΆ€μ—¬ν•˜κ³ , runtime은 방금 μƒμ„±ν•œ Spark μΈμŠ€ν„΄μŠ€λ‘œ, languageλ₯Ό R둜 μ„ νƒν•˜μ„Έμš”.

(4) 이제 From URL νƒ­μœΌλ‘œ λ„˜μ–΄κ°€, μ €μž₯μ†Œμ˜ λ…ΈνŠΈλΆμœΌλ‘œ μ—°κ²°λ˜λŠ” λ‹€μŒμ˜ URL을 μ„€μ •ν•΄μ€λ‹ˆλ‹€. 이후, ν•˜λ‹¨μ˜ Create Notebook을 ν΄λ¦­ν•˜μ„Έμš”.

첫번째 λ…ΈνŠΈλΆμ„ μœ„ν•œ URL:
https://github.com/IBM/r4ml-on-watson-studio/blob/master/notebooks/R4ML_Introduction_Exploratory_DataAnalysis.ipynb

(5) 첫번째 λ…ΈνŠΈλΆμ΄ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이제, λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ„ μƒμ„±ν•˜λŸ¬ κ°‘λ‹ˆλ‹€.

(6) New Notebook λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬, λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ„ μƒμ„±ν•©λ‹ˆλ‹€.

(7) (3)의 과정을 λ°˜λ³΅ν•˜κ³ , λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ˜ λ§ν¬λŠ” λ‹€μŒμ„ μž…λ ₯ν•©λ‹ˆλ‹€.

λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ„ μœ„ν•œ URL:
https://github.com/IBM/r4ml-on-watson-studio/blob/master/notebooks/R4ML_Data_Preprocessing_and_Dimension_Reduction.ipynb

(8) λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆ 생성이 λλ‚˜λ©΄, λ‹€μŒκ³Ό 같은 두 개의 λ…ΈνŠΈλΆμ΄ μƒμ„±λ˜μ—ˆμŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

5. λ…ΈνŠΈλΆ μ‹€ν–‰

(1) λ¨Όμ €, 탐색적 뢄석을 μœ„ν•œ 첫번째 λ…ΈνŠΈλΆμ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

첫번째 λ…ΈνŠΈλΆ 싀행이 μ™„λ£Œλœ ν›„μ—λŠ”, 데이터 처리λ₯Ό μœ„ν•œ λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆμ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

(2) λ…ΈνŠΈλΆμ΄ 싀행될 λ•Œ, 각각의 μ½”λ“œ 셀이 μ‹€ν–‰λ˜κ²Œ λ©λ‹ˆλ‹€. μ½”λ“œ μ…€μ˜ μ‹€ν–‰μƒνƒœλŠ” μ…€ 쒌츑의 ‘in [ ]’μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 각 μƒνƒœκ°€ κ°–λŠ” μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

6. 뢄석 κ²°κ³Ό 확인

λ„νλ©˜ν…Œμ΄μ…˜μ˜ μˆœμ„œμ— 따라 μœ„μ—μ„œ μ•„λž˜λ‘œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄, λ‹€μŒκ³Ό 같은 뢄석 κ²°κ³Όλ₯Ό λ§Œλ‚  수 μžˆμŠ΅λ‹ˆλ‹€.

(1) νžˆμŠ€ν† κ·Έλž¨Β – 첫번째 λ…ΈνŠΈλΆ
νžˆμŠ€ν† κ·Έλž¨μ„ 톡해 각 λ³€μˆ˜λ§ˆλ‹€ κ°’μ˜ 뢄포λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. μ•žμœΌλ‘œμ˜ 뢄석에 쓰일 수 μžˆλŠ” κ°€μš°μ‹œμ•ˆ 뢄포λ₯Ό λ³΄μ΄λŠ” λ³€μˆ˜λ₯Ό κ°€λ €λƒ…λ‹ˆλ‹€.

  • 첫 ν–‰μ˜ Year, Month, DayofMonth, DayofWeekκ³Ό 같은 λ³€μˆ˜λŠ” 거의 κ· λ“±ν•œ 뢄포λ₯Ό λ‚˜νƒ€λ‚΄κ³  있기 λ•Œλ¬Έμ— λ³€μˆ˜μ—μ„œ 제거될 κ²ƒμž…λ‹ˆλ‹€.
  • 4, 5, 6ν–‰μ˜ WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay μ—­μ‹œ ‘Arrival Delay’λΌλŠ” λͺ©ν‘œ λ³€μˆ˜μ™€ 연관관계가 λ†’κΈ° λ•Œλ¬Έμ— λ³€μˆ˜μ—μ„œ μ œκ±°λ©λ‹ˆλ‹€.

(2) λ³€μˆ˜ κ°„μ˜ 상관관계 – 첫번째 λ…ΈνŠΈλΆ
μ„œλ‘œ 상관관계가 높은 λ³€μˆ˜κ°€ μ—¬λŸ¬κ°œ μžˆλ‹€λ©΄, 이 쀑 ν•˜λ‚˜λ§Œμ΄ ν™œμš©λ  수 μžˆλ„λ‘ ν•΄μ•Ό λ”μš± μ •ν™•ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¬ κ²ƒμž…λ‹ˆλ‹€.

  • Performance Analytics 라이브러리λ₯Ό ν™œμš©ν•˜μ—¬, λ°μ΄ν„°μ˜ 상관관계λ₯Ό νŒŒμ•…ν•΄λ΄…λ‹ˆλ‹€.

  • 10ν–‰ 7열에, Airtimeκ³Ό Distanceκ°€ 비둀함을 λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ³€μˆ˜ 쀑 ν•˜λ‚˜λŠ” 예츑 λΆ„μ„μ—μ„œ 제거될 κ²ƒμž…λ‹ˆλ‹€.

(3) PCA 뢄석 (Principle Component Analysis) – λ‘λ²ˆμ§Έ λ…ΈνŠΈλΆ
PCA의 뢄석은 μ°¨μ›κ°μ†Œ(dimensionality reduction), 즉 κ³ μ°¨μ›μ˜ 데이터λ₯Ό μ €μ°¨μ›μ˜ λ°μ΄ν„°λ‘œ ν™˜μ›μ‹œν‚€λŠ” κΈ°λ²•μž…λ‹ˆλ‹€.
μ •λ³΄μ˜ 손싀을 μ΅œμ†Œν™”ν•˜λ©΄μ„œ μ„œλ‘œ 상관관계가 μžˆλŠ” λ³€μˆ˜λ“€ μ‚¬μ΄μ˜ λ³΅μž‘ν•œ ꡬ쑰λ₯Ό 더 μž‘κ³  상관이 μ—†λŠ” ꡬ쑰둜 μΆ•μ†Œν•˜μ—¬ 뢄석을 μš©μ΄ν•˜κ²Œ ν•˜λŠ” κ²ƒμ΄μ§€μš”.

  • 뢄석 κ²°κ³Ό, 6개의 λ³€μˆ˜κ°€ μ •λ³΄μ˜ 90%λ₯Ό μ„€λͺ…ν•  수 μžˆμŒμ„ μ•Œκ²Œ λ©λ‹ˆλ‹€.

Conclusion

λ‹€μŒκ³Ό 같이, R4MLλ₯Ό ν™œμš©ν•˜λ©΄ 데이터 μ „μ²˜λ¦¬μ— ν•„μš”ν•œ μ£Όμš” μž‘μ—…λ“€μ„ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
특히, 데이터λ₯Ό κ·Έλž˜ν”„λ₯Ό 톡해 μ‹œκ°μ μœΌλ‘œ ν‘œν˜„ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μ‰½κ²Œ λ³€μˆ˜ κ°„μ˜ 관계λ₯Ό ν™•μΈν•˜μ—¬ λ…Έμ΄μ¦ˆλ₯Ό μ œκ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
R4ML을 ν™œμš©ν•΄μ„œ 데이터 μ „μ²˜λ¦¬μ— νˆ¬μžλ˜λŠ” μ‹œκ°„κ³Ό λ…Έλ ₯을 μ•„λ‚„ 수 있길 λ°”λžλ‹ˆλ‹€!

 

ν† λ‘  μ°Έκ°€

이메일은 κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ μž…λ ₯창은 * 둜 ν‘œμ‹œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.