namgyu(김남규)
소개말이 없습니다.
Contact

DS스쿨 데이터 분석 프로젝트

이 프로젝트는 DS스쿨의 데이터분석가라고 가정하고 진행되었다. DS School의 데이터베이스에서 파일을 읽어와 운영, 기획, 마케팅, 재무팀의 요청사항을 분석한다.

데이터셋 설명

  • surveys: DS School 홈페이지에 접속하게 되면 설문조사를 수행하게 되고, 이 결과를 바탕으로 적절한 강의를 선정해 과목 추천을 해준다. 이 때, 수집한 설문조사 내용은 고객의 수요를 조사하고, 강의 내용에 대한 피드백이나 향후 오픈할 강의의 우선순위를 정하는데 쓰일 수 있다.
  • users: 여러가지 마케팅 채널들을 통해서 유입된 고객들에게는 별도의 id가 부여가 됩니다. 이를 통해 고객의 결제 유무 등을 파악할 수 있다.
  • payments: 유저들의 결제 정보이다. 연락처와 수강신청한 기수, 결제일, 결제 상태 등이 제공되는데 마찬가지로 개인정보는 비식별화되어있는 상태로 제공된다. 2018년 이전의 결제 정보가 포함되어 있다.
  • mixpanel: DS School은 웹로그 데이터 분석을 위해 믹스패널을 사용한다. 믹스패널은 사용자 추적을 기본으로 하는 분석 툴로, 원하는 서비스 사용자를 지정하면 해당 유저의 활동을 모두 조회할 수 있는 기능을 제공한다. 이를 통해 해당 사용자 그룹의 특성과 사용 패턴을 알 수 있다. 실시간분석이 가능하며 코호트 분석과 잔존율, 퍼널 분석이 가능하다. 믹스패널 데이터 또한 고객의 유입경로 등의 정보를 가지고 있다.

데이터 클리닝

survey : answer 값이 't', 'f'를 True, False로 변환. created_at과 updated_at을 datetime 형식으로 변환. 같은 user_id가 여러번의 설문조사를 응답한 경우도 제거.

payments : 모든 연락처의 양식을 010-xxxx-xxxx으로 통일. 010으로 시작하지 않는 전화번호는 잘못 기입된 전화번호라고 가정하고 NaN값 처리 신청수업을 띄어쓰기를 기준으로 split 하고 이를 이용하여 수업타입과 기수를 분리 신청날짜 칼럼을 이용하여 월, 일, 요일, 시간 칼럼을 추가, 금액 정보를 정수형 (int)로

클리닝.jpg

분석

DS School에서 주로 사용하고 있는 마케팅 채널인 페이스북은 시간, 요일대별 광고 노출빈도를 조절할 수 있는 기능이 있다. 기존의 결제 패턴을 분석해 결제가 특정 시간대에서 높게 일어난다면 해당 시간대에 더 많은 예산을 사용하는 것이 효율적일 것이다.

결제양.jpg

평일의 결제량이 주말에 비해 매우 높은 것을 알 수 있다.

결제.jpg

요일별 결제량을 시간별 결제량과 연결지어 보면 DS School 수강생들의 대부분이 직장인임을 감안할 때, 일별, 시간별 결제금액을 보고 '직장인들이 주로 근무시간에 결제를 결심한다.' 라는 합리적인 가설을 세울 수 있다. 이 가설은 점심시간대인 12시부터 1시 사이에 급격하게 감소하는 것을 통해 더 지지받을 수 있다.

이를 바탕으로 콘텐츠 제작자에게 근무시간에 딴 짓을 하는 직장인들을 타겟팅하는 콘텐츠를 제작해달라고 요청할 수 있다. 또한, 페이스북이 제공하는 광고 시간 타겟팅 기능을 이용하여 근무시간대에 들어가는 광고예산의 비중을 늘릴 수도 있다.

그래프.jpg

모든 설문조사 결과와 결제한 사람들의 설문조사 결과는 상당히 비슷한 양상을 보인다. 그런데, 1번 질문의 5번 응답 '최신 데이터사이언스 트렌드에 관심이 있어서' 응답을 한 경우는 결제율이 낮다는 것을 알 수 있다.

아무래도 고가의 강의이다 보니, 관심만 있는 정도로는 구매로의 전환이 쉽게 일어나지 않는다. 1번 응답 (현재 다니는 직장에서 데이터 사이언스를 활용하기 위해)의 비율이 압도적으로 높고, 두 번째는 전업 데이터 사이언티스트로 이직/전직하기 이다.

모든 사람을 대상 설문조사 결과와 결제자 대상 설문조사 결과를 3번 질문에서도 비교해 봤을 때, 응답 8번 또한 눈에 띄게 줄어든 것을 확인할 수 있다. 8번의 응답은 '마케팅 데이터를 분석하여 마케팅의 효율을 높이기' 다. 이를 바탕으로 마케팅에 관심이 있는 사람들은 데이터 마케팅 강의로 이탈하거나 사이언스 강의를 수강하지 않는다고 생각할 수 있다.

현재 설문조사 결과를 종합해봤을 떄, 직장에서 업무에 데이터 사이언스를 활용하면서 '추천 시스템'을 만들거나 텍스트 데이터를 다루는 것에 대한 수요가 매우 높음을 확인할 수 있다.

DS School 홈페이지에 처음 접근한 순간부터 결제까지 걸린 시간을 계산해서 그래프화하면 아래와 같다.

그랲.jpg

위의 분포를 통해 결제를 한 사람들 중 80% 이상이 10일 이내 결제, 그리고 나머지 20%는 훨씬 많은 고민을 한다는 것을 파악할 수 있다. 이를 통해 DS School에 관심을 가졌지만 아직 결제를 하지 않은 잠재고객들의 결제 가능성을 역으로 추정해 리타겟팅 전략의 예산 분배를 할 수도 있을 것이다.

여러개의 강의를 수강하는 고객들은 향후 오픈되는 강의도 수강할 확률이 높다. payments 테이블을 이용하여 이러한 고객분들을 찾아내어 구매 강좌수를 포함하여 데이터프레임으로 만들면 VIP로 선정할 수 있다.

vip.jpg

좋아요 0
    댓글 0

    Bag of Words

    Bag of Words : 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법. bow.jpg

    컴퓨터 비전 쪽에서는 Bag of Words 기법을 이미지를 분류(image categorization)하는데 사용할 수 있다.

    Bag of Words 방법을 이용한 이미지 분류 과정을 정리해 보면 다음과 같다.

    1. Feature Extraction

    BovW, SPM에서는 Classfication을 하기 위해 feature extraction을 사용한다. Feature Extraction는 KeyPoint와 Descriptor로 나눠서 볼 수 있다. KeyPoint : 이미지에서 대표 점으로 볼 수 있는 변화를 가진 점 Descriptor : KeyPoint의 지역적 특성이 설명된 것

    SPM에서는 feature extraction 여러 종류 중 SIFT(Scale-Invariant Feature Transform)를 사용하고 Descriptor를 추출하고, 이용하여 classfication을 하도록 제시했다.

    strong feature.jpg

    또 SPM에서는 위에서 소개한 Keypoint 방법을 이용하여 Descriptor를 추출한 방법을 weak feature 정하고, 정통적인 방법인 weak feature보다 성능을 향상 시키기 위해서 KeyPoint를 step_size: 8, diameter: 8로 설정하여 이미지를 빽빽(Dense)하게 KeyPoint를 생성한 후, Descriptor(기술자)를 추출한 방법인 "Strong features"을 소개한다. Dense하게 Keypoint를 생성함으로써, 모든 공간에서 정보들 습득할 수 있어, weak feature 보다 위치 정보에 강인함을 가지게 된다.

    2. Clustering

    추출된 feature들에 대해 클러스터링을 수행하여 클러스터 센터(center)들인 codeword들을 찾아낸다. 클러스터링 방법은 보통 k-means clustering이 사용된다. kmeans.jpg

    3. Codebook Generation

    찾아진 codeword들로 구성되는 코드북을 생성한다. 코드북은 물체 클래스마다 생성하는 것이 아니라 <그림 2>의 예와 같이 공통적으로 하나만 생성되며 모든 클래스의 codeword들을 포함한다.

    4. Image Representation

    각각의 이미지들을 codeword들의 히스토그램으로 표현한다. 이미지 하나당 하나의 히스토그램이 나오며 이 히스토그램의 크기(bin의 개수)는 코드북의 크기(코드북을 구성하는 codeword들의 개수)와 동일하다.

    hist.jpg

    5. Learning and Recognition

    BoW 기반의 학습 및 인식 방법은 크게 Bayesian 확률을 이용한 generative 방법과 SVM 등의 분류기를 이용한 discriminative 방법이 있다. Bayesian 방법은 물체 클래스별 히스토그램 값을 확률로서 해석하여 물체를 분류하는 것이고, discriminative 방법은 히스토그램 값을 feature vector로 해석하여 SVM(support vector machine)등의 분류기에 넣고 클래스 경계를 학습시키는 방법이다.

    한계

    Bag of Words 방법은 기본적으로 feature들의 히스토그램(histogram)으로 이미지를 표현하기 때문에 feature들간의 기하학적인 위치 관계를 잃어버리는 문제점을 가지고 있다. 물론 동물 등과 같이 변형이 심한 물체를 인식하는데는 이 특성이 오히려 장점으로 작용하지만 자동차 등과 같이 형태가 고정된 물체의 경우에는 성능저하의 큰 요인중 하나가 될 수 있다. 이러한 단점을 보완한 방법이 SPM이다.

    Spatial Pyramid Matching

    spm.jpg

    Spatial Pyramid Matching 방법은 이미지를 여러 단계의 resolution으로 분할한 후 각 단계의 분할 영역마다 히스토그램을 구하여 이들을 전체적으로 비교하는 방법을 일컫는다. 그림을 통해 보면 level 0은 이미지 전체에 대해서 하나의 히스토그램을 구하는 경우로서 전통적인 Bag of Words 기법이 이에 해당한다. 하지만 Spatial Pyramid Matching 방법에서는 여기에 추가적으로 이미지를 점진적으로 세분(level 1에서는 2x2로 분할, level 2에서는 4x4로 분할, ...)해 가면서 각각의 분할 영역마다 별도로 히스토그램을 구한 후 , 이들 히스토그램들을 전부 모아서 일종의 피라미드(pyramid)를 형성한다. 그리고 이렇게 형성된 히스토그램 피라미드들을 서로 비교함으로써 두 이미지의 유사도를 측정하는 방식이다.

    결과

    결과.jpg

    좋아요 0
      댓글 0

      CNN 기반 재활용품 분류기

      CNN(Convolutional Neural Network) 모델에 재활용품 이미지 데이터셋을 학습시켜 인공지능 재활용품 분류기 제작

      주제 선정 계기

      네프론.jpg

      학교 주변의 인공지능 쓰레기통 '네프론'은 캔과 페트병 2 가지만 분류 가능한 성능의 한계 보였다. 따라서 학교에서 배운 Convolutional Neural Network에 기반한 Image classification으로 더 다양한 클래스의 재활용품 분류가 가능한 분류기를 개발하고자 했다.

      데이터셋 수집

      데이터셋.jpg

      데이터 수집의 경우, trash net[1]의 기존셋과 Google Images Download[2]를 이용한 이미지 크롤링(crawling)을 사용했다. 데이터의 클래스분류는 한국의 분리수거 기준을 참고하여 정했다. 분류 기준 중 비닐류(vinyl)는 데이터셋이 구하기가 어렵고 학습이 쉽지 않아 제외했다.

      모델 선정

      모델 선정.jpg

      VGGNet: VGGNet 은 2014 년 ILSVRC 에서 GoogLeNet 에 밀려 2 위를 했지만, 훨씬 간단한 구조로 이루어져있고, 변형이 쉽다는 장점이 있어 많이 응용된 모델

      ResNet: ResNet 은 2015 년 ILSVRC 대회에서 우승한 모델이다. top-5 error 가 겨우 3.6%로 사람의 분류 수준인 5% 내외를 뛰어 넘었다. 이 모델은 데이터들의 흐름에 지름길과 비슷한 Residual 을 만들어 깊은 망을 사용할 때 학습이 되지 않는 문제점을 해결하였다.

      간단한 모델 테스트 결과 Test accuracy 가 비교적 높은 ResNet50 을 선정하였다.

      Confusion Matrix 분석 -> 데이터셋 재분류 및 전처리

      오차행렬.jpg

      confusion matrix에서 FN으로 판정된 이미지데이터를 전부 띄워서 분석해보았다.

      • Cardboard 의 FN 중 가장 많은 예측값이 Paper 이고 반대로 Paper 의 경우에는 Cardboard 였다. 재활용품 분류기준에도 Paper 에 Cardboard 가 포함되기 때문에 두 클래스를 Paper 로 합쳤다.
      • 데이터셋에 학습에 적용시키기 어려울 것이라고 생각되는 데이터가 많았다.(흑백으로 나누어진 배경, 2개 이상의 객체, 배경에 붙어있는 라벨, 클래스 분류가 잘못 된 사진 등). 또한 대부분의 이미지 배경이 흰색이라 그런지 test 데이터셋의 검은색 배경의 이미지는 전부 에러데이터에 포함되어 있었다. 따라서 이처럼 학습에 적합하지 않다고 판정되는 데이터들을 Training set 과 Test set 에서 전부 제거하였다.

      메탈,카드보드.jpg

      • 위와 같이 경계선이 울퉁불퉁한 데이터(ex 찢겨진 판지)를 Metal 로 판정하는 경우가 많았지만, L2 정규화를 적용하고 난 뒤에는 Cardboard 에서의 Metal 판정이 눈에 띄게 줄어들었다.

        모델 성능 개선

      1. Data augmentation 데이터 어그멘테이션.jpg

      케라스의 ImageDataGenerator를 이용하여 트레이닝 셋 증강

      1. L1, L2 정규화 정규화.jpg

      L1,L2 정규화를 동시에 사용했을 때와 L1 정규화만 적용시켰을 때는 학습이 되지 않고 local minima 에 빠진 듯 보였다. 하지만 L2 정규화만 적용했을 때는 정확도가 4%가량 증가했다.

      1. 데이터셋 수정, 재분류

        에러 데이터를 분석한 결과, L2 정규화를 적용하기 이전에는 Cardboard 를 metal로 착각한 에러가 가장 많은 반면, L2 정규화를 적용시키자 카드보드의 FN 43 개중 38 개를 종이류로 착각한 것으로 나타났다. 또한 한국 재활용품 분류 기준을 보면 판지 또한 종이류에 포함되기 때문에 데이터셋의 Cardboard, Paper 를 Paper 로 통합해서 정확도가 향상했다.

      2. Dropout

        유닛들간의 연결을 강제로 끊어, 일정 비율의 유닛들만 학습이 되게 함으로써 과적합을 방지하는 방법이다. 랜덤서치 범위를 (0.2,0.7)정도로 설정하고 돌려보았지만 학습속도 저하에 비해 효과가 미미했다. Batch normalization 이 ResNet50 코드에 들어가 있어서 그런것으로 보인다.

      3. 하이퍼 파라미터 튜닝

        하이퍼 파라미터.jpg

      Andrew Ng 의 딥러닝 강좌에 따르면 하이퍼 파라미터 튜닝 시 중요도는 위와 유사하다고 한다. 모든 하이퍼 파라미터를 튜닝하는 것은 무리이므로 중요도가 높은 learning rate와 mini batch size를 중점적으로 튜닝하였다.

      Bergstra and Bengio 의 논문 Random search forHyper-Parameter Optimization에 따르면 그리드 서치(사람이 직접 제안한 값들을 생성하여 순차적으로 찾는 방법)보다는 랜덤 서치(값을 임의의 값으로 자동생성하여 찾는 방법)가 더 중요한 하이퍼 파라미터 발견을 용이하게 하고 효율적이라고 한다.

      파라미터.jpg

      • learning rate : David Mack 의 How to pick the best learning ratefor your machine learning project 에 따르면 6 가지 optimizer 중 Adam optimizer 가 가장 안정적이며, Adam 의 learning rate 는 0.0005, 0.001,0.00146 이 좋은 성능을 보인다고 한다. 랜덤서치 범위는 0.0005 부터 0.00146 사이로 설정하고 후에는 0.0008 부터 0.0014 로 범위를 좁혔다. 그 결과 learning rate가 0.00123일 때 가장 높은 정확도인 78%를 기록했다.

      • Batch size : Udacity deep learning 강좌 중 Jay alammar 의 Hyperparameters 강좌에 따르면 Batch size 의 범위는 32~256 (2 의 n 승)이 대체로 좋은 결과를 낸다고 한다. 따라서 32, 64, 128 순서로 Batch size 를 설정하여 결과를 비교해본 결과,Batch size가 32일 때 가장 높은 정확도를 기록했다.

      결론

      웹 크롤링을 통해 얻은 데이터셋으로 ResNet50 의 모델 성능을 최대한 올린 결과, 비슷한 주제의 기존 논문에서 ResNet50 을 사용한 accuracy 보다 근소하게 높게 나왔다. 하지만 최대한 다양한 분리수거 물품을 판별해보고자 직접 촬영한 실제 데이터(이미지로 클래스 판별이 어려울것 같은)로 시연 시 정확도가 떨어지는 모습을 보여주었다. 다수의 에러 데이터는 다른 클래스를 종이 클래스로 오판한 경우이다. 그림과 문자가 많은 종이 클래스의 특성때문에 다른 클래스의 겉표면에 다양 한 그림이 있는 경우, 인공지능이 종이라고 오판 하기 쉬운 듯 하다. 실제 재활용품은 그래서 슈퍼빈의 네프론처럼 캔과 페트병만을 분류하는 것이 아닌 다양한 종류 의 재활용품을 정확하게 분류하는 것은 이미지만으로는 한계가 있을 것이다. 이러한 문제상황에서 더 좋은 CNN 모델을 사용하는 것과 함께 재활용품에 대한 물리적인 측정 수단이 하나의 해결책이 될 것 이라고 생각한다. 예를 들어, 무게 혹은 금속 판에 떨어질 때 발생하는 소리의 파형 등을 함께 측정한다면 더 정확한 분류가 가능할 것이라고 생각한다.

      좋아요 0
        댓글 0