Machine Learning 48

차원 감소(Dimension reduction) 와 PCA 분석

차원 감소와 PCA 분석조대협 (http://bcho.tistory.com)차원 감소 (Dimension reduction)데이타를 분석할때 피쳐가 많으면 데이타 분석이 어렵고, 특히 3개 이상 (3차원)의 피쳐가 존재할 경우 시각화가 어려워진다. 머신러닝의 경우에 학습용 데이타의 피쳐가 많으면, 연산량이 많아지고, 특히 학습을 위해서 더 많은 데이타가 필요해진다. 이렇게 피쳐가 많음 으로써 발생하는 문제를 차원의 저주 (Dimension Curse)라고 이야기 하는데, 이 차원의 수를 줄이는 방법을 Dimension reduction / 차원 감소 방법이라고 한다. 차원 수를 줄인 다는 것은 다른 말로는 피쳐의 수를 줄인다는 말과 같고, 앞에서 언급한 바와 같이 데이타 분석에서는 차원을 줄여서 시각화를..

수학포기자를 위한 딥러닝과 텐서플로우의 이해

이 글은 제가 텐서플로우와 딥러닝을 공부하면서 블로그에 메모해놨던 내용을 모아놓은 글입니다.혼자 공부하면서 어려웠던 점도 있었기 때문에, 저처럼 텐서플로우와 딥러닝을 공부하시는 분들께 도움이 되고자 자료를 공개합니다. 텐서플로우 초기버전부터 작성하였기 때문에, 다소 코드가 안맞는 부분이 있을 수 있으니 이 점 양해 부탁드리며, 이 글은 개인이 스터디용으로 자유롭게 사용하실 수 있으며, 단체나 기타 상용 목적으로 사용은 금지 됩니다. 혹시 이 교재로 공부하시다가 잘못된 부분을 수정하셨으면 다른분들을 위해서 친절하게 댓글을 달아주시면 감사하겠습니다.

클러스터링 #3 - DBSCAN (밀도 기반 클러스터링)

DBSCAN (밀도 기반 클러스터링) 조대협(http://bcho.tistory.com)기본 개념이번에는 클러스터링 알고리즘중 밀도 방식의 클러스터링을 사용하는 DBSCAN(Density-based spatial clustering of applications with noise) 에 대해서 알아보도록 한다.앞에서 설명한 K Means나 Hierarchical 클러스터링의 경우 군집간의 거리를 이용하여 클러스터링을 하는 방법인데, 밀도 기반의 클러스터링은 점이 세밀하게 몰려 있어서 밀도가 높은 부분을 클러스터링 하는 방식이다. 쉽게 설명하면, 어느점을 기준으로 반경 x내에 점이 n개 이상 있으면 하나의 군집으로 인식하는 방식이다. 그러면 조금 더 구체적인 개념과 용어를 이해해보자먼저 점 p가 있다고 할때..

클러스터링 #2 - Hierarchical clustering (계층 분석)

Hierarchical clustering을 이용한 데이타 군집화 조대협 (http://bcho.tistory.com) Hierarchical clustering (한글 : 계층적 군집 분석) 은 비슷한 군집끼리 묶어 가면서 최종 적으로는 하나의 케이스가 될때까지 군집을 묶는 클러스터링 알고리즘이다. 군집간의 거리를 기반으로 클러스터링을 하는 알고리즘이며, K Means와는 다르게 군집의 수를 미리 정해주지 않아도 된다. 참고로 이 글에서 사용된 예제 코드는 https://github.com/bwcho75/dataanalyticsandML/blob/master/Clustering/3.%20Hierarchical%20clustering-IRIS%204%20feature.ipynb 에 저장되어 있다. 예를 ..

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #4 - 오토인코더 기반의 신용카드 이상거래 검출코드와 분석 결과

오토인코더를 이용한 비정상 거래 검출 모델 구현 #4신용카드 이상 거래 감지 코드 조대협 (http://bcho.tistory.com) 구현코드 전체 모델 코드는 https://github.com/bwcho75/tensorflowML/blob/master/autoencoder/creditcard_fraud_detection/3.model.ipynb 에 있다. 코드는 http://bcho.tistory.com/1198 에 설명한 MNIST 데이타를 이용한 오토인코더 모델과 다르지 않다. 차이는 데이타 피딩을 784개의 피쳐에서 28개의 피쳐로만 변환하였고, 데이타를 MNIST 데이타셋에서 CSV에서 읽는 부분만 변경이 되었기 때문에 쉽게 이해할 수 있으리라 본다. 학습 및 예측 결과모델을 만들고 학습을 한..

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #2 - MNIST 오토 인코더 샘플

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #2MNIST 오토인코더 샘플 조대협 (http://bcho.tistory.com) 신용카드 이상 거래 감지 시스템 구현에 앞서서, 먼저 오토인코더에 대한 이해를 하기 위해서 오토 인코더를 구현해보자. 오토 인코더 샘플 구현은 MNIST 데이타를 이용하여 학습하고 복원하는 코드를 만들어 보겠다. 이 코드의 원본은 Etsuji Nakai 님의 https://github.com/enakai00/autoencoder_example 코드를 사용하였다. 데이타 전처리이 예제에서는 텐서플로우에 포함된 MNIST 데이타 tensorflow.contrib.learn.python.learn.datasets 를 tfrecord 로 변경해서 사용한다.TFRecord에 대한 ..

오토 인코더를 이용한 비정상 거래 검출 모델의 구현 #1

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #1신용카드 거래 데이타 분석 조대협 (http://bcho.tistory.com) 이미지 인식 모델은 만들어봤고, 아무래도 실제로 짜봐야 하는지라 좋은 시나리오를 고민하고 있는데, 추천 시스템도 좋지만, 이상 거래 감지에 대해 접할 기회가 있어서 이상 거래 감지 (Fraud Detection System) 시스템을 만들어 보기로 하였다 데이타셋샘플 데이타를 구해야 하는데, 마침 kaggle.com 에 크레딧 카드 이상거래 감지용 데이타가 있었다.https://www.kaggle.com/dalpozz/creditcardfraud 에서 데이타를 다운 받을 수 있다. CSV 형태로 되어 있으며, 2013년 유럽 카드사의 실 데이타 이다. 2일간의 데이타 이고..

텐서플로우 하이레벨 API를 Estimator를 이용한 모델 정의 방법

텐서플로우 하이레벨 API Estimator를 이용한 모델 정의 방법 조대협 (http://bcho.tistory.com) 텐서플로우의 하이레벨 API를 이용하기 위해서는 Estimator 를 사용하는데, Estimator 는 Predefined model 도 있지만, 직접 모델을 구현할 수 있다. 하이레벨 API와 Estimator에 대한 설명은 http://bcho.tistory.com/1195 글을 참고하기 바란다. 이 문서는 Custom Estimator를 이용하여 Estimator를 구현하는 방법에 대해서 설명하고 있으며, 대부분 https://www.tensorflow.org/extend/estimators 의 내용을 참고하여 작성하였다.Custom EstimatorEstimator의 스켈레톤..

텐서플로우 하이레벨 API

텐서플로우 하이레벨 API에 대한 이해 머신러닝을 공부하고 구현하다 보니, 모델 개발은 새로운 모델이나 알고리즘을 개발하는 일 보다는, 기존의 알고리즘을 습득해서 내 데이타 모델에 맞도록 포팅하고, 학습 시키는 것이 주된 일이 되고, 오히려, 모델 보다는 데이타에 대한 이해와 전처리에 많은 시간이 소요되었다. 특히 여러번 실험을 하면서 패러미터를 조정하고 피쳐등을 조정하기 위해서는 많은 실험을 할 수 있어야 하는데, 이러기 위해서는 실험(학습)시간이 짧아야 한다. 이를 위해서는 모델 개발 보다 분산 러닝을 하기 위한 코드 변경 작업등이 많이 소요된다. 결론을 요약하자면, 실제로 알고리즘을 개발하는 데이타 과학자가 아니라, 머신러닝을 활용만 하는 프랙티셔너 입장이라면, 모델을 개발하는 것 보다는 있는 모델..

Tensorflow Object Detection API를 이용한 물체 인식 #2-동물 사진을 학습 시켜보자

Object Detection API에 애완동물 사진을 학습 시켜 보자 조대협 (http://bcho.tistory.com) Object Detection API에 이번에는 애완동물 사진 데이타를 학습시켜 보도록 한다.애완 동물 학습 데이타의 원본은 Oxford-IIIT Pets lives 로 http://www.robots.ox.ac.uk/~vgg/data/pets/ 에 있다. 약 37개의 클래스에, 클래스당 200개 정도의 이미지를 가지고 있다. 이번 글에서는 이 애완동물 데이타를 다운 받아서, Object Detection API에 학습 시키는 것까지 진행을 한다.데이타를 다운로드 받은 후, Object Detection API에 학습 시키기 위해서, 데이타 포맷을 TFRecord 형태로 변환한 후..