분석 절차
분석 업무을 어디서 부터 어떻게 시작해야할지 몰라 막막할 때가 있다. 느꼈던 것들을 나름대로 정리해 보려 한다.
1. 구체적인 분석주제 및 목적 설정
분석 주제를 명확하게 선정해야 한다. 중요한 일인데 간과하는 경우가 많다. 데이터를 던져 주고 "뭔가 분석해주세요."라고 하는 경우가
있는데 이렇게 분석 목적이 명확하지 않으면 막상 분석했을 때, Client가 원하지 않았던 방향으로 분석이 진행되는 경우가 생긴다.
분석이 끝났는데, 다시 처음부터 시작해야하는 경우가 생긴다. 그래서 요청자가 무엇을 분석하고 싶은지 명확하게 커뮤니케이션하고
문서로 남겨야 한다. 시작이 반이다라는 말처럼, 처음에 공을 많이 들여야한다. 그래야 뒤로 갈수록 편해지는 것 같다.
2. EDA
분석 목적과 주제도 정했다. 그러면 분석을 시작해야하는데 무작정 이것 뽑아보고 저것 뽑아보고 하면 시간이 너무 많이 소요된다.
효율적으로 진행하기 위해서 EDA를 해야한다. EDA의 목적은 데이터의 구조를 파악하고 변수간의 특징을
파악하는 것인데, Plot을 그려 보는 직관적이고 효율적인 것 같다.
첫째, 데이터 구조를 파악한다.
Python 유저라면 tbl.describe(), R유저라면 summary(tbl), str(tbl)등을 통해 각 열이 어떤 데이터로 구성되어있는지 파악한다.
missing value가 있는지도 이때 확인한다. 뒤에 가서 알고리즘을 돌릴때 missing value가 있으면 안돌아가는 경우가 있다.
그때 되서 Data handling 하려고하면 피곤해진다. 처음에 공을 많이 들여야 편해지는 것 같다.
둘째, Plot을 그려본다.
예를 들어 쿠폰 성과 분석이 주제라면, 쿠폰 사용자와 비사용자를 나눠 Profiling을 해본다. 이렇게 Plot을 돌려보다 보면
사용자와 비사용자의 차이점을 발견하게 되고 어떤 변수가 쿠폰 사용에영향을 미치는지 파악할 수 있게된다.
<타이타닉, 상관계수 plot,s package : seaborn (python)>
위는 타이타닉 탑승자 데이터를 상관계수표로 나타낸 것이다. 위 표를 보면 Survived와 연관성이 있는 변수들을 파악해볼 수 있다.
Fare, pclass등이 연관성이 높아 보인다. 추가로 Fare, plass의 상관도가 높게 나타나는데, 이 경우 생존을 결정짓는 변수로 Fare와 pclass가
비슷한 영향을 미쳤다고 볼 수 있다. 그래서 Fare와 pclass 중 하나를 선택하거나 파생변수를 만들어서 분석하는 것이 적절해 보인다.
예로 든 쿠폰 분석도 위와 같은 Plot을 그려 볼 수 있다. 연령, 성별, 가입채널등의 변수와 쿠폰사용여부를 넣고 돌리면 쿠폰사용과
연관이 있는 변수를 파악할 수 있다.
3. Feature Selection
사실 이부분이 가장 어려운 것 같다. Data의 Column이 많은 경우 어떤 column을 선택할지 고민이 많이된다.
데이터 분석에서 도메인 지식이 필요하다고들 하는데. Feature selection 때문이라는 생각이 든다. Feature selection을 구글링 해보면
이런 말이 나온다. "Feature selection은 Engineering과 Art의 조합이다" 즉 도메인에 대한 지식이 있으면 어떤 변수가 영향을 미쳤을지
대략적인 감이 온다. 하지만 이 감만 믿기에는 확실하지가 않다. 그래서 Algorithm도 필요하다. Feature selection에는 여러가지 방법이
있지만 내가 주로 사용하는 알고리즘은 Randomforest다.
Randomforest에는 Feature importance라는 변수 중요성(?)을 수치로 제공해준다. 측정 방법에는 purity, Gini를 구하는 방법등
여러가지가 있지만 자세한 내용은 다음에 다뤄야겠다.
위에서 EDA한 내용 + Alogirthm을 통해 얻은 중요 변수를 구하고, 감+직관(?)으로 변수를 선택, 조정하는 것이 좋을 것 같다.
Nueral network를 사용하면 예측은 쉽게 할 수 있겠지만, 어떤 변수가 영향을 미쳤는지는 설명할 수가 없다. 그래서 앞서 말한
방법으로 진행하는 것이 분석관점에서는 좋은 것 같다.
<생존 Vs 변수들,타이타닉 데이터>
R에서는 ggplot의 facet, python에서는 seaborn을 사용한다
4. Algorithm
드디어 Algorithm을 돌릴 수 있다. 이 부분이 가장 간단하다. 앞에서 선택한 변수를 대상으로 데이터 형식을 맞춰서 패키지에 넣고 돌리면 오차율,
정확도까지 패키지가 다 계산 해준다. 이때, 한가지 패키지만 돌릴 것이 아니라 여러가지 패키지를 돌려보고 성능이 좋은 알고리즘을 선택하는
것이 좋다.
나름대로 느끼고 배운 것들을 정리해봤다!
*참고
https://www.linkedin.com/pulse/why-you-should-fire-your-data-scientist-benjamin-taylor
'Data Science' 카테고리의 다른 글
r markdown (0) | 2017.07.04 |
---|---|
plotly chart (embedded to web) (0) | 2017.06.12 |
데이터 유형 (0) | 2017.04.26 |
Tree (0) | 2017.04.09 |
Neural networks (0) | 2017.03.13 |