본문 바로가기

머신러닝22

45. 빅데이터 대응하기 : 스트림형 데이터 처리하기 (Online learning) 이번에 배울 알고리즘은 Online learning 입니다.데이터가 지속적으로 흘러가는 것을 처리하기 위한 모델로서 stream 형태의 데이터들을 통해서 학습하는데 유용하게 사용되고 있습니다. 기본적인 아이디어는 stochastic gradient descent와 비슷합니다. 다만 다른 점은 데이터가 고정된 dataset이 아니라는 점일 뿐입니다. 많은 웹사이트 회사에서 지속적으로 유입되는 사용자들의 정보들을 Online learning과 비슷한 방식으로 학습하여 시시각각 변하는 사용자들의 선호도를 조사하고 웹사이트 개선에 이를 반영하기 위해서 널리 사용되고 있습니다. 아래는 배달 서비스를 예제로 하여 설명하고 있습니다. 유저는 배달 서비스가 내위치로 부터 목적지까지 배달이 가능한지 문의하게 됩니다. 그.. 2016. 9. 6.
44. 빅데이터 대응하기 : Large Scale Machine Learning 최근 5년~10년 동안에 머신 러닝이 급격하게 발전한 이유중에 하나는 데이터가 많아졌기 때문이기도 합니다. 최근에 대두된 빅데이터의 시대가 보다 정확한 머신러닝에서의 학습에 큰 도움이 되기 때문입니다. 때문에 우리는 많은 데이터들을 통해 학습을 하게 되는 경우가 자주 발생합니다. 하지만 이런 빅데이터는 학습하는 속도에 영향을 미치기도 하며 알고리즘이 연산을 함에 있어서 연산 비용이 크게 증가하는 원인이 되기도 합니다. 이번에는 이렇게 스케일이 큰 데이터들을 다루는 방법(알고리즘)들에 대해서 알아보도록 하겠습니다. 우리가 이전에도 살펴보았듯이 머신 러닝에서 어느 알고리즘을 사용하면 더 좋은 성능을 보이는가에서는 크게 차이가 없었습니다. 하지만 데이터의 사이즈가 커질 수록 더 좋은 결과가 나타난다는 것은 명.. 2016. 9. 5.
43. 추천 시스템 : 관련된 다른 상품을 추천해주기(Low Rank Matrix Factorization) 이번에는 collaborative filtering algorithm에서 한단계 더 나아가서 어떤 손님이 영화를 보고자 할때 관련된 다른 영화들을 추천해주는 방법에 대해서 알아보도록 하겠습니다. 이전에 배운 예제를 다시 가져오면 아래 그림과 같습니다. 5개의 영화가 있고 4명의 유저가 있습니다. 이들이 준 평점들은 Y로 나타낼 수 있습니다. Y가 주어졌기 때문에 이것을 x 와 세타로 표현하면 아래 그림의 오른쪽 matrix와 같이 됩니다. Y = 세타T(j) * x(i) 여기에서 모든 영화가 가지고 있는 x features들을 하나의 row로 합쳐서 X vector를 만들면 아래 그림 왼쪽 밑에와 같이 됩니다. 또, 모든 사람이 가지고 있는 선호도인 세타 parameters들을 하나의 row로 합쳐서 θ.. 2016. 9. 4.
42. 추천 시스템 : 유저와 머신러닝이 함께 만들기(Collaborative Filtering Algorithm) 이전내용과 이어서 이번에는 Collaborative Filtering 이라 불리우는 알고리즘에 대해서 알아보겠습니다. 이 알고리즘은 학습을 통해서 어떤 feature가 의미가 있는지를 배울 수 있습니다. 이전 내용에서 다루었던 예제를 다시 살펴보겠습니다. 아래 그림과 같이 5개의 영화와 4명의 유저가 평점을 기록합니다. 우리는 x1, x2의 x feature가 어떤 내용인지 알지 못합니다. 이전에서는 x feature를 알고 유저의 선호도(세타)를 찾는 방식이였던 것과 대조적이네요 유저가 남긴 평점을 토대로 하여 각 유저의 선호도인 세타를 아래 그림의 하단과 같이 나타내보았습니다. Love at last란 영화가 어떤 특징을 가지는 지는 모르겠지만 Alice와 Bob은 5점을 주어 선호도가 높음을 알 수.. 2016. 9. 3.
41. 추천 시스템 : Recommender Systems 개요 추천 시스템은 오늘날에 가장 많이 사용되는 알고리즘입니다. 다양한 분야의 서비스에서 사용되고 있으며 대표적으로는 아마존과 같은 쇼핑 사이트에서 추천상품이나 iTunes의 genius 서비스에서 사용되고 있습니다. 특히 아마존에서는 이러한 추천 서비스가 매출에 큰 영향을 미치고 있습니다. 이 추천 서비스를 개선하는 것이 직접적인 수입에 기여를 하는 방법이기도 합니다. 재미있는 것은 추천서비스는 학문적으로는 크게 주목을 받지 않을 만큼 기술적인 특색이 없지만, 상업적으로는 아주 중요한 서비스로 인식이 되고 있다는 것입니다. 사실상 기술적으로는 큰 이슈가 없지만 아이디어의 차이가 추천 서비스의 핵심이라고 할 수 있습니다. 어떤 features를 사용하느냐에 따라서 추천 서비스가 달라지며 핵심 features들.. 2016. 8. 30.
40. 이상(사기) 탐지 : 또 다른 탐지 알고리즘 (Multivariate Gaussian Distribution) 지금까지 배운 Anomaly Detection Algorithm은 Original Model 입니다. 가장 많이 사용되는 모델이지요이번에는 비슷하지만 조금 다른 Multivariate Gaussian Distribution에 대해서 알아보겠습니다. variate의 의미는 허용이 가능한 어떤 집합이나 데이터의 그룹내에서 어떤 확률에 따라 데이터가 자유롭게 변수로 사용되는 것을 말합니다. 다시 이야기해보면 multivariate라는 의미는 어느 집합데이터 내에서만 추출이 되는 멀티 변수들이라고 생각하면 될 것 같습니다. 이에 대해서 하나씩 알아보겠습니다.아래 그림과 같은 dataset이 있습니다. x1 에 대해서 오른쪽 상단의 그래프와 같이 정규분포를 형성하고 있습니다. 또 x2로 오른쪽 하단의 그래프와 같.. 2016. 8. 29.
39. 이상(사기) 탐지 : Anomaly Detection System 만들기 머신 러닝 알고리즘을 평가하는 방법으로 실제 숫자로 나타내어 평가하는 방법에 대해서 이전 시간에도 알아보았습니다. Anomaly Detection System을 만들때도 이러한 방법이 유용하게 사용됩니다.지금까지 살펴본 anomaly data들은 unlabeled data 였습니다만, labeled data가 될 수 있다면 평가하는 것이 가능할 겁니다. 그래서 만약 특정 data가 anomaly data라면 y=1로 정의하고, 그렇치 않다면 즉, 정상적인 normal data라면 y=0으로 하여 label을 생성할 것입니다. 이를 위해서 data set을 분리하고 어떻게 label을 만드는지 알아보겠습니다. 비행기 엔진을 예를 들어서 아래와 같이 설명을 할 수 있습니다. 10,000개의 정상적인 엔진이 .. 2016. 8. 28.
38. 이상(사기) 탐지 : Anomaly Detection System 개요 Anomaly Detection우리가 사용하는 dataset에는 수많은 데이터들이 있습니다. 이중에서 모든 데이터가 정상일 수도 있지만 그렇치 않을 수도 있을 것입니다. 이제부터는 특정 데이터가 이상이 있는지를 파악하기 위한 방법에 대해서 알아보고자 합니다.이상한(비정상적인) 데이터를 검출하는 것을 Anomaly Detection 이라고 합니다. 아래 그림에서와 같이 예를들어서 살펴보겠습니다. 비행기 엔진을 만드는 제조사를 생각해보겠습니다. 엔진은 열이 높아짐에 따라서 엔진의 회전이 빨리질 것이라고 생각해볼수 있을 것입니다. 아래 그래프의 데이터들과 같이 분포되어 있는 것을 볼 수 있습니다. 이때 녹색의 x 데이터와 같이 다른 데이터들과 밀접한 부분에 존재하는 경우는 정상적인 데이터라고 볼수 있으나 나홀.. 2016. 8. 24.
37. 자율학습 두번째 (Principal Component Analysis) : PCA 적용하기 Reconstruction 지금까지 데이터를 압축하여 차원을 낮추는 방법에 대해서 알아보았습니다. 이번에는 다시 원래의 차원으로 복원을 하는 방법에 대해서 알아보도록 하겠습니다.(Reconstruction or Decompress) 이것은 원래의 데이터를 다시 찾기 위해서 사용되는 방법이 되겠습니다.아래 그림에서와 같이 2차원 데이터들 x 를 직선에 투영하여 생성하였습니다. z = Ureduce T * X다시 z 로 부터 X를 복원하기 위해서는 반대로 Ureduce * z = Xapprox 를 구하면 됩니다. 이때 Ureduce는 nxk의 크기를 갖는 matrix이고 z 는 kx1의 크기를 갖는 vector 이므로 Xapprox는 다시 n의 크기를 갖는 vector가 됩니다. 하지만 이렇게 복원을 한 n.. 2016. 8. 23.
36. 자율학습 두번째 (Principal Component Analysis) : PCA Algorithm 앞에서 살펴본 data compression 또는 dimensionalilty reduction 을 이용해서 오늘날까지 널리 사용되고 인기있는 알고리즘이 바로 PCA(Principal Component Analysis) Algorithm 입니다. 2차원의 데이터를 1차원으로 줄이기 위해서 아래 그림과 같이 직선을 하나 그립니다. 그리고 이 직선에 모든 2차원 데이터들을 투영시켜서 한점으로 나타낼 수 있게 됩니다. 이때의 두 점과의 거리 즉, 2차원 데이터의 점과 직선에 투영되어 생성된 점 사이의 거리를 때로는 projection error 라고 불리우기도 합니다.이 projection error가 가장 최소화 되는 직선을 찾고 이로 인해서 2차원 데이터를 1차원으로 낮추는대 사용이 됩니다. 만약에 왼쪽 .. 2016. 8. 22.