본 게시글은 kaggle 홈페이지 내에서
Megan Risdal 님께서 작성하신 "Exploring Survival on the Titanic"을 보고 공부한 내용을 작성한 것임을 밝힙니다.
================================================================================
[ 목차 ]
1. Introduction
- 데이터 불러오기 및 데이터 확인
2. Feature Engineering (처음 들어본 용어였음)
3. Missingness
3.1 합리적인 값 대체
- 요금에 따른 passenger class 분류
3.2 예측적인 값 대체 - mice() 함수 사용
3.3 위에서 대체한 값을 통한 새로운 파생변수 창출 (가능하다면)
4. Prediction
5. Conclusion
==================================================================
* Feature Engineering이란?
- 기존에 있는 데이터를 기반으로 feature를 변경하거나
- 새롭게 추가하여 모델링을 하는 등
- 예측을 할 때 데이터를 더 유용하게 만드는 방법
1) Variable Identification
2) Univariate
3) Bivariate Analysis
4) Missing Value Imputation
5) Outliers Treatment
데이터 탐색에 해당하는 위의 5단계를 수행한 후, 2가지 스템으로 구분해서 진행한다.
step1) Variable transformation
- square / cube root / logarithm
- 변수의 분포에는 영향을 미치지 않으므로,
- 변수의 스케일을 변경할 때 사용한다.
or
- nonlinear의 관계를 linear한 관계로 변경할 떄 사용 >> 산점도를 통한 직관적인 이해가 가능해진다.
- normal distribution으로 만들어 주는 등 skewed distribution에 대한 skewness를 줄일 수 있다.
- Categorizing or Binning
step2) Variable/Feature creation
- 기존의 변수를 활용해 새로운 Features or Variables를 만들어내는 과정
(1) Creating derived variables : 기존 변수에서 새로운 변수 생성
(2) Creating dummy variables : 카테고리 데이터를 numerical 변수로 변경하는 것
( 참고 : http://ourcstory.tistory.com/144 )
======================================================
* Missing Value Imputation
1) 결측값 확인
apply( ___ , 2, function(x) sum(is.na(x))
2) 누락된 자료의 패턴 분석
- VIM 패키지의 aggr() 함수로 시각화할 수 있다.
install.packages("VIM")
require(VIM)
aggr( dataset, prob=FALSE, numbers=TRUE )
marginplot( ) # 두 변수 간의 missing data의 관계를 보여준다.
3) 상관관계를 이용
- is.na() 함수를 통해 binary matrix를 형성하고,
- apply( ,2, function(x) sum(x)>0 ) 함수를 통해 결측이 있는 열 여부를 만든다.
- 결측이 있는 열만을 가지고 상관행렬을 형성한다.
* Missing Data의 종류
1) MCAR (Missing completely at random) : 완전 무작위적 > 분석에 영향 X
2) MAR (Missing at random) : 특정 변수와 관련되어 있지만, 변수의 값과는 관련이 없다.
ex) 피조사자들이 반대 쪽에도 설문이 있는지 몰랐던 경우
3) MNAR (Missing at not randomly) : 누락된 변수의 값이 누락된 이유와 관련 있는 경우
ex) 우울증과 관련 있는 사람이 해당 문항에 대한 대답을 회피한 경우
* Multiple Imputation (다중 대입법)
- 시뮬레이션을 반복하여 누락된 데이터를 채워넣는다.(몬테카를로 방법을 사용)
- 누락된 자료를 채운 complete datasets를 3~10개 만든다.
- 이 과정에 대한 통계적인 결과와 신뢰구간을 제공한다.
- Amelica, mice 등의 패키지를 활용할 수 있다.
- MICE (Multiple Imputation by chained equations)
1) mice() : 예측하고 채워넣기
2) with() : 통계모형을 순서대로 적용
3) pool() : 분석결과를 하나로 통합
4) >> Final Result
* 단순 대입법
- 평균값, 중앙값 등으로 채워넣는다.
- 무작위 오차가 발생하지 않는다.
- sample size의 값소 없이 누락된 자료의 문제를 해결할 수 있다.
- 비교적 쉽지만, MCAR이 아닌 경우 편향된 결과를 만들 수 있다.
- 또한, 누락된 데이터의 양이 많을 때, 표준오차를 과소평가하게 하고 변수들간의 상관관계를 뒤틀며 통계 검정에서 부정확한 p값을 얻게 한다. >> 비추
( 참고 : https://rstudio-pubs-static.s3.amazonaws.com/192402_012091b9adac42dbbd22c4d07cb00d36.html)
=====================================================================
* 시각화 방법
1. ggplot2 라이브러리의 다양한 함수를 사용할 수 있다.
- ggplot : 사용하기에 따라 다양한 그림 표현 가능
여기서는 2 class의 히스토그램을 그렸다.
- mosaicplot : 면적을 통해 class별 비율을 표현
>> 위의 두 그림으로 특정 계층은 생존비율이 높음을 한 눈에 알 수 있음.
'Kaggle > Titanic' 카테고리의 다른 글
Extracting title from full name using regular expression (0) | 2018.10.16 |
---|---|
[Titanic] 2번째 참고 공부 (0) | 2018.02.04 |
[공부] Titanic: Machine Learning from Disaster(2) (0) | 2018.02.01 |