빅데이타 & 머신러닝/머신러닝 71

Apache Beam (Dataflow)를 이용하여, 이미지 파일을 tfrecord로 컨버팅 하기

Apache Beam (Dataflow)를 이용하여, 이미지 파일을 tfrecord로 컨버팅 하기 조대협 (http://bcho.tistory.com) 개요텐서플로우 학습에 있어서 데이타 포맷은 학습의 성능을 결정 짓는 중요한 요인중의 하나이다. 특히 이미지 파일의 경우 이미지 목록과 이미지 파일이 분리되어 있어서 텐서플로우에서 학습시 이미지 목록을 읽으면서, 거기에 있는 이미지 파일을 매번 읽어야 하기 때문에, 코딩이 다소 지저분해지고,IO 성능이 떨어질 수 있다텐서플로우에서는 이러한 학습 데이타를 쉽게 읽을 수 있도록 tfrecord (http://bcho.tistory.com/1190)라는 파일 포맷을 지원한다. 이 글에서는 이미지 데이타를 읽어서 tfrecord 로 컨버팅하는 방법을 설명하며, 분..

NMF 알고리즘을 이용한 유사 문서 검색과 구현(2/2)

NMF 알고리즘을 이용한 유사 문서 검색과 구현(2/2)sklearn을 이용한 구현 조대협 (http://bcho.tistory.com) http://bcho.tistory.com/1216 를 통하여 tf-idf를 이용하여 문서를 벡터화 하고, nmf를 이용하여 문서의 특성을 추출한 다음, 코싸인 유사도를 이용하여 유사 문서를 검색하는 알고리즘에 대해서 알아보았다. 이번글에서는 이 알고리즘을 직접 sklearn을 이용해서 구현해보도록 하자. sklearn은 이용하면 분산 학습을 이용한 대규모 데이타 처리는 불가능하지만, 작은 수의 문서나 모델에는 사용이 가능하다. 무엇보다 sklearn의 경우 대부분의 모델을 라이브러리화 해놓았기 때문에, 복잡한 구현이 없이 쉽게 사용이 가능하다. 전체 소스 코드는 ht..

NMF 알고리즘을 이용한 유사한 문서 검색과 구현(1/2)

NMF 알고리즘을 이용한 유사한 문서 검색과 구현(1/2) 조대협 (http://bcho.tistory.com) 앞의 글들에서, 데이타의 특징을 뽑아내는 방법으로 차원 감소 (Dimension reduction) 기법에 대해서 설명하였다. 구체적인 알고리즘으로는 PCA와 t-SNE 알고리즘을 소개하였는데, 오늘은 차원 감소 기법중의 하나인 행렬 인수분해 (Matrix Factorization)에 대해서 알아보고자 한다.문서 유사도 검색행렬 인수 분해를 설명하기 위해서 유사한 문서를 찾는 시나리오를 예를 들어서 설명하겠다.문서 유사도 검색의 원리는 다음과 같다 문서에 나온 각 단어들을 숫자(벡터)로 변환하여 행렬화 한다.행렬화된 문서에서 차원 감소 기법을 이용하여, 문서의 특징을 추출한다.추출된 특징을 기..

t-SNE를 이용한 차원 감소 (Dimension reduction)

t-SNE를 이용한 차원 감소 조대협 (http://bcho.tistory.com) PCA 기반 차원 감소의 문제점앞의 글에서 차원 감소에 대한 개념과, 차원 감소 알고리즘의 하나인 PCA 알고리즘에 대해서 살펴보았다.PCA의 경우 선형 분석 방식으로 값을 사상하기 때문에 차원이 감소되면서 군집화 되어 있는 데이타들이 뭉게져서 제대로 구별할 수 없는 문제를 가지고 있다. 아래 그림을 보자 출처 https://www.youtube.com/watch?v=NEaUSP4YerM 이 그림은 2차원에서 1차원으로 PCA 분석을 이용하여 차원을 줄인 예인데, 2차원에서는 파란색과 붉은색이 구별이 되는데, 1차원으로 줄면서 1차원상의 위치가 유사한 바람에, 두 군집의 변별력이 없어져 버렸다.t-SNE이런 문제를 해결하..

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

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

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

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

분류모델 (Classification)의 성능 평가

Classification & Clustering 모델 평가 조대협 (http://bcho.tistory.com) 클러스터링과 분류 모델에 대한 성능 평가 방법은 데이타에 라벨이 있는가 없는가에 따라서 방법이 나뉘어 진다. 사실 클러스터링은 라벨이 없는 데이타에 주로 사용을 하고, 라벨이 있는 경우에는 분류 모델을 사용한다. 클러스터링 모델에 대한 평가는 라벨이 없는 상태에서 클러스터의 응집도등을 평가하는데 대부분 그 정확도가 그리 높지 않기 때문에, 도메인 지식을 가지고 있는 전문가에 의한 휴리스틱한 방식의 평가 방식이 대부분이다. 분류 모델(Classification) 에 대한 모델 평가 라벨이 있는 경우에는 분류 모델에 대한 모델 평가 방법을 사용한다.Confusion matrix이진 분류 문제에서..

클러스터링 #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 에 저장되어 있다. 예를 ..

클러스터링 #1 - KMeans

클러스터링과 KMeans를 이용한 데이타의 군집화조대협 (http://bcho.tistory.com)클러스터링 문제클러스터링은 특성이 비슷한 데이타 끼리 묶어주는 머신러닝 기법이다. 비슷한 뉴스나 사용 패턴이 유사한 사용자를 묶어 주는것과 같은 패턴 인지나, 데이타 압축등에 널리 사용되는 학습 방법이다.클러스터링은 라벨링 되어 있지 않은 데이타를 묶는 경우가 일반적이기 때문에 비지도학습 (Unsupervised learning) 학습 방법이 사용된다. 클러스터링 알고리즘은 KMeans, DBSCAN, Hierarchical clustering, Spectral Clustering 등 여러가지 기법이 있으며, 알고르즘의 특성에 따라 속도나 클러스터링 성능에 차이가 있기 때문에, 데이타의 모양에 따라서 적절..