현재 4학년.
정보통계학과와 컴퓨터공학과 복수전공을 하고 있는 학생에게 4학년이란...
논문과 프로젝트의 해이다.
오지 않기를 그렇게 바랬건만 결국 와버린 논문 준비,,,
(사실 데이터 찾기는 5월부터 했고,
1학기 중간중간 분석을 진행을 하고
7월 첫주차에 모든 작성을 완료했다.
이에 대한 기록이 나름 필요할 것이라 생각해서
방학이 다 끝나기 1주일 전에 퇴고하고자 한다.)
졸업 요건인 논문 작성을 할 수 있는 과목은 우리학교에 다변량분석과 시계열분석이 있다. 이 중에서 나는 다변량분석 과목을 선택해서 다변량 기법을 사용할 수 있는 데이터를 찾아 헤메었다.
다변량 기법에 맞는 데이터란, 일단 시간 및 날짜가 나와있는 데이터는 해당 사항이 없고, 적절한 수를 가지고, 분류 또한 굉장히 잘 되어있는 데이터여야 한다. 아 물론, 데이터의 숫자도 많아야 하고 데이터 속성의 수 또한 적으면 분류하기가 굉장히 힘들어지기 때문에 많은 속성을 가진 데이터를 찾았다.
많은 통계학과 교수님들이 사랑하고 데이터 분석하는 학생들과 사람들이 좋아하는 사이트인 캐글 사이트를 뒤지기 시작했다. 나는 재미있어야하고, 데이터를 한 눈에 봤을 때 알아볼수 있을 만한 데이터를 선택하고자 했다.
그 중에서 후보에 든 데이터는
1. GOOGLE PLAY STORE DATA
https://www.kaggle.com/gauthamp10/google-playstore-apps
2. WORLD HAPPINESS REPORT
https://www.kaggle.com/unsdsn/world-happiness
컴퓨터학과인 나의 특성을 반영해서 구글 플레이스토어 어플 데이터를 이용해서 다변량 분석을 하고자 했다.
분석을 할 떄 사용한 언어는 R로, R에 대한 기본 없이 구교수님(구글)의 도움을 적극 활용했다.
사용한 데이터는 구글 스토어 앱 데이터이며, 마지막 업데이트는 2019년이다.
이 데이터를 사용해서 내가 얻고자 한 것은, 구글 스토어에 올라온 수 많은 앱들 중에서 어떤 성격을 가진 데이터가 소비자들의 선택을 받았을지 궁금했다.
소비자들의 선택, 소비자들이 좋은 평가를 남긴 특성은 별점이라고 생각했다.
그래서 궁극적으로는 어떤 머신러닝 기법을 이용해서 예상 별점을 구하고자 했다.
다변량 분석에 사용한 변수는 다음과 같다.
- Category: 어플이 속한 카테고리를 나타낸다. 문자형 변수이다.
- Rating: 별점수로, 5점 만점으로 소수 첫째자리까지 표현되어 있다.
- Reviews: 어플의 리뷰수
- Size: 어플의 크기로, 해당 단위 M, KB가 숫자와 함께 표현되어있다.
- Installs: 어플의 설치횟수로, +라는 문자를 사용해서 나타낸다. 50000, 100000과 같은 범주로 표현이 되어있는 범주형 변수이다.
- Price: 어플의 가격으로, $ 표시가 함께 되어있다.
- Content.Rating: 어플을 사용할 수 있는 연령대가 표시되어 있는 변수이다. 범주형변수이다.
위에 나온 변수들에 대해 그래프를 많이 그렸지만, 그 중에서 카테고리 변수가 중요한 속성을 가지고 있다고 생각을 해서 다양한 그래프를 통해서 그 변수의 특성을 알아봤다.
전처리 과정에 대해 이야기를 안할수가 없다. R을 활용해서 실제로 분석을 해본적은 처음이기 때문에 해당 문법의 특성을 이해하는데 많은 삽질을 경험했다.
1. Size변수
size는 어플리케이션의 크기를 나타내는 변수로, M이 모든 데이터에 붙어있었다. (예: 10M) 그래서 모든 데이터에서 M변수를 없애는 작업을 한 후 Size 변수를 수치형 변수로 변환하였다. 또, 어떤 것들은 Varies with device로, 어플리케이션의 용량이 기계마다 다르다는 표시가 나타나기도 했다. 다변량 분석을 목적으로 하는 데이터 이기 때문에, Varies with device로 나타난 모든 컬럼을 다 삭제한 후에 분석을 진행하였다.
2. Rating변수
5점 만점의 별점수를 나타내는 변수인 Rating은 데이터가 없는, 즉 NaN으로 표기된 데이터가 많았다. 이 NaN을 0으로 치환해서 모든 변수에서 결측값이 없도록 처리하였다.
3. Installs변수
설치 횟수를 나타내는 변수인 Installs는 수치형 변수가 아닌 범주형 변수였다. 이를 수치형 변수로 바꾸기 위해 10,000+라고 나와있는 문자에서 ','를 제외하고, +를 제거하는 전처리 과정을 진행했다.
4. Price변수
어플리케이션의 가격을 나타내는 변수로, '$'표시가 모든 데이터 앞에 붙어있었다. 이 문자를 제거하기 위해 애를 좀 먹었다. R에서 데이터 프레임에 있는 변수명을 표시할 때 데이터프레임명$변수명으로 표시하기 때문에 이 $를 제거하기 위해서는
app$Price=gsub("\\$", "", app$Price)
이렇게 역슬레시를 넣어서 달러를 제거해줘야 했다. 이 역슬레시의 존재를 잘 몰라서 엄청 헤맸던 기억이 있다. 이렇게 모든 처리를 마친 데이터만을 사용해서 분석을 하기 위해 새로운 csv 파일을 만들어서 그 파일에 저장했다.