https://www.coursera.org/learn/machine-learning/lecture/iDBMm/problem-description-and-pipeline

PHOTO OCR – Problem Description and Pipeline

image

photo ocr ( optical character recognition ) 문제를 이 강의에서 주제로 다루고 있다.

사진에서 어떤 과정을 거쳐 글자를 인식하는지 보여주고 있다. 비슷한 문자로 인한 문제를 해결하는 작업이 추가되어야 하나 여기서는 생략한다. ( 예를 들어 1 과 l 을 혼동하는 경우를 대비해서 수정하는 작업 )

image

하나의 큰 작업을 수행하기 위해 연속된 작은 단위의 작업으로 나누어 수행하는 것을 machine learning pipeline이라고 한다. 보통 각 작은 단위에 1-5 명의 엔지니어가 작업을 수행한다. 


https://www.coursera.org/learn/machine-learning/lecture/bQhq3/sliding-windows

PHOTO OCR – Sliding Windows

image
image
image

그림에서 보듯이 녹색 박스를 좌우 상하로 움직이며 해당 물체를 찾는다. 박스크기를 다양하게 해서 여러 크기의 해당 물체를 찾아낸다.

image
image
image

위 그림 좌하단의 하얀 박스를 조금 넓혀서 글자의 영역을 넓혀준것이 우하단의 사진이다.

image

글자간의 여백을 찾아 각각의 글자를 구별한다.


https://www.coursera.org/learn/machine-learning/lecture/K0XQT/getting-lots-of-data-and-artificial-data

Getting Lots of Data and Artificial Data

좀더 많은 데이터가 필요한 상황인지 아닌지 파악하고 손수 데이터를 추가하는 것이 좋은지 가상의 데이터를 만드는 것이 좋은지 어떻게 판단하면 좋은지 설명하고 있다.

image

ocr 작업의 경우 다양한 폰트를 이용해서 가상데이터를 추가할수 있다.

image

ocr 작업의 경우 이미지 변형을 통해 가상데이터를 추가할수 있다.

image

음성인식인경우 다른 레이어의 음성을 추가할수 있다.

image
image

biased 된 알고리즘의 경우 데이터를 추가해도 별 효과가 없으므로 먼저 알고리즘이 biased된것이 아닌지 확인한다. 인공데이터를 이용할지 손수 데이터를 수집할지 다른 데이터 제공을 이용할지 결정하한다.


https://www.coursera.org/learn/machine-learning/lecture/LrJbq/ceiling-analysis-what-part-of-the-pipeline-to-work-on-next

Ceiling Analysis: What Part of the Pipeline to Work on Next

machine learning pipeline 작업을 하는 경우 어느 component의 성능이 가장 부족한지를 파악하고 그 부분에 신경을 쓰는 것이 좋다. 어떻게 어느 부분이 문제가 있는지 확인하는 작업에 대해 설명하고 있다.

image

각 단계를 최상으로 맞추고 전체 성능이 어떻게 변화하는지 확인한다. 예를 들어 text detection이 100%인 데이터를 넣고 알고리즘을 확인, 또 그다음에는 character segementation이 100%된 데이터를 넣고 확인한다.


https://www.coursera.org/learn/machine-learning/lecture/eYaD4/summary-and-thank-you

Summary

https://www.coursera.org/learn/machine-learning/lecture/iDBMm/problem-description-and-pipeline

PHOTO OCR – Problem Description and Pipeline

image

photo ocr ( optical character recognition ) 문제를 이 강의에서 주제로 다루고 있다.

사진에서 어떤 과정을 거쳐 글자를 인식하는지 보여주고 있다. 비슷한 문자로 인한 문제를 해결하는 작업이 추가되어야 하나 여기서는 생략한다. ( 예를 들어 1 과 l 을 혼동하는 경우를 대비해서 수정하는 작업 )

image

하나의 큰 작업을 수행하기 위해 연속된 작은 단위의 작업으로 나누어 수행하는 것을 machine learning pipeline이라고 한다. 보통 각 작은 단위에 1-5 명의 엔지니어가 작업을 수행한다. 


https://www.coursera.org/learn/machine-learning/lecture/bQhq3/sliding-windows

PHOTO OCR – Sliding Windows

image
image
image

그림에서 보듯이 녹색 박스를 좌우 상하로 움직이며 해당 물체를 찾는다. 박스크기를 다양하게 해서 여러 크기의 해당 물체를 찾아낸다.

image
image
image

위 그림 좌하단의 하얀 박스를 조금 넓혀서 글자의 영역을 넓혀준것이 우하단의 사진이다.

image

글자간의 여백을 찾아 각각의 글자를 구별한다.


https://www.coursera.org/learn/machine-learning/lecture/K0XQT/getting-lots-of-data-and-artificial-data

Getting Lots of Data and Artificial Data

좀더 많은 데이터가 필요한 상황인지 아닌지 파악하고 손수 데이터를 추가하는 것이 좋은지 가상의 데이터를 만드는 것이 좋은지 어떻게 판단하면 좋은지 설명하고 있다.

image

ocr 작업의 경우 다양한 폰트를 이용해서 가상데이터를 추가할수 있다.

image

ocr 작업의 경우 이미지 변형을 통해 가상데이터를 추가할수 있다.

image

음성인식인경우 다른 레이어의 음성을 추가할수 있다.

image
image

biased 된 알고리즘의 경우 데이터를 추가해도 별 효과가 없으므로 먼저 알고리즘이 biased된것이 아닌지 확인한다. 인공데이터를 이용할지 손수 데이터를 수집할지 다른 데이터 제공을 이용할지 결정하한다.


https://www.coursera.org/learn/machine-learning/lecture/LrJbq/ceiling-analysis-what-part-of-the-pipeline-to-work-on-next

Ceiling Analysis: What Part of the Pipeline to Work on Next

machine learning pipeline 작업을 하는 경우 어느 component의 성능이 가장 부족한지를 파악하고 그 부분에 신경을 쓰는 것이 좋다. 어떻게 어느 부분이 문제가 있는지 확인하는 작업에 대해 설명하고 있다.

image

각 단계를 최상으로 맞추고 전체 성능이 어떻게 변화하는지 확인한다. 예를 들어 text detection이 100%인 데이터를 넣고 알고리즘을 확인, 또 그다음에는 character segementation이 100%된 데이터를 넣고 확인한다.


https://www.coursera.org/learn/machine-learning/lecture/eYaD4/summary-and-thank-you

Summary

https://www.coursera.org/learn/machine-learning/lecture/CipHf/learning-with-large-datasets

Learning With Large Datasets

image

위그림의 좌하단의 그림은 high variance 된 알고리즘이며 이런 경우 더 많은 데이터가 알고리즘 개선에 도움이 된다. 오른쪽의 경우는 high biase 된 경우이며 이런경우는 더이상의 데이터가 도움이 되지 않는다. 

자세한 내용은 week 6 강의를 참조한다. 


https://www.coursera.org/learn/machine-learning/lecture/DoRHJ/stochastic-gradient-descent

Stochastic Gradient Descent

image

이제까지 사용했던 일반 gradient descent ( batch gradient descent )에 대한 그림이다. 데이터의 양이 엄청 많아지면 ( m의 크기가 커짐) 작은 gradient descent step하나 지나가는데에 엄청난수의 데이터 총합을 매번 구해야 한다. 이렇게 되면 성능에 문제가 생긴다. 그래서 임의의 데이터 하나당 한번의 gradient descent step을 밟는 stochastic gradient descent 방법을 택한다. stochastic gradient descent는 꼭 linear regression아니더라도 다양한 알고리즘과 함께 사용 가능하다. 

image
image

빨간색은 일반 gradient descent 궤적이다.

보라색은 stochastic gradient descent 궤적이다. 결과적으로 local minimum에 도착할수도 있고 아닐수도 있지만 근처에 도착하는 것은 맞다. for loop를 감싸는 repeat은 보통 1-10정도 수행한다. 다만 엄청난 수의 데이터가 있는 경우 1번에도 좋은 결과는 만들어낸다.


https://www.coursera.org/learn/machine-learning/lecture/9zJUs/mini-batch-gradient-descent

Mini-Batch Gradient Descent

image

일반 batch gradient는 모든 데이터값에대한 cost의 총합을 구하고 이에 대한 partial derivative 를 통해 기울기를 구하고 이에 learning rate을 구해서 새로운 theta를 구하는 과정을 거친다. 데이터의 수가 많아지면 성능에 문제가 생기므로 무작위 데이터 하나를 가져와 그에 대한 cost를 이용하는 stocastic gradient descent 방법을 이용할수 있다. 또 몇몇 데이터를 이용하는 mini batch gradient descent를 이용할수도 있다. 좋은 선형대수 라이브러리의 경우 vectorization을 이용한 작업에 병렬연산을 제공하므로 하나의 데이터를 이용하는 것이나 여러데이터를 이용하는 것이나 큰차이가 없다. 

image


https://www.coursera.org/learn/machine-learning/lecture/fKi0M/stochastic-gradient-descent-convergence

Stochastic Gradient Descent Convergence

image

Stochastic Gradient descent 가 잘 작동하는지 ( cost 가 점점 감소하는지) 확인 하는 작업을 설명한다. 일정 수의 데이터 cost결과를 중간 중간 확인하는 방식으로 한다. 이 강의에서는 1000개의 데이터를 사용하고 있다. 

image

위위 그림에서 말하던 확인(plot) 결과를 보여주는 그래프이다. 좌상단의 그림의 경우 파란 그래프는 빨간 그래프보다 큰 알파값을 사용했으며 점차 cost가 줄어드는 것을 알수 있다. 

우상단의 경우 빨간 그래프는 파란 그래프보다 큰 숫자의 데이터를 이용 cost를 측정한 경우이다. 그래프가 부드럽게 바뀐것을 볼수 있으며 cost는 점차 줄고 있다.

좌하단 파란 그래프의 경우 cost가 전반적으로 줄고 있는지 알수 없다. 이런 경우 보다 많은 수의 데이터를 이용 보라색, 빨간색 그래프처럼 결과가 나오게 수정한다. 이렇게 바꾸면 미세하게 줄거나 늘고 있는 것을 볼수 있다. 

우하단의 그래프는 cost가 점차 상승하고 있으며 이런 경우 작은 값의 알파를 사용해 본다.

image

점차 minimum에 접근하다가 minimum근처를 배회하는 것을 위그림에서 볼수있다. 이를 보완하기 위한 작업을 아래그림에서 설명한다. 

image

두 상수를 이용해서 점차 learning rate값을 작게 만들어서 조금더 minimum에 다가가고 그곳에 머물게 하는 방법이다.


https://www.coursera.org/learn/machine-learning/lecture/ABO2q/online-learning

online learning

image

저장된 data 이용하기 보다 끊임없이 제공되는 데이터를 이용할수 있는 경우 사용하는 방법으로 데이터는 한번 사용하고 버린다. 그래서 그림 하단 알고리즘을 보면 x i , y i 가 아닌 x y를 사용한다. 이런 경우 사용자의 preferece 변화에 신속하게 대응할수 있다.

image

위와 같은 영역에서 사용될수 있다. 순간적으로 발생하는 데이터에 반응하는 경우에 online learning 를 사용할수 있다.


https://www.coursera.org/learn/machine-learning/lecture/10sqI/map-reduce-and-data-parallelism

Map Reduce and Data Parallelism

대용량의 데이터를 처리해야 하는 경우 이를 여러부분으로 나누어 처리하는 방법을 이용할수 있다. map- reduce, data parallelism을 이용할수 있다.

theta j에서 j는 feature이다. n은 feature의 총갯수.

위 그림은 여러 컴퓨터를 이용한 병렬 처리를 보여주고 있다.

한 컴퓨터내의 여러 코어를 이용한 병렬 처리를 보여주고 있다.

때로는 라이브러이에서 기본적으로 병렬처리를 제공하는 경우도 있다. 선형대수 처리를 하는 경우 병렬처리를 제공하는 경우도 있다.

https://www.coursera.org/learn/machine-learning/lecture/CipHf/learning-with-large-datasets

Learning With Large Datasets

image

위그림의 좌하단의 그림은 high variance 된 알고리즘이며 이런 경우 더 많은 데이터가 알고리즘 개선에 도움이 된다. 오른쪽의 경우는 high biase 된 경우이며 이런경우는 더이상의 데이터가 도움이 되지 않는다. 

자세한 내용은 week 6 강의를 참조한다. 


https://www.coursera.org/learn/machine-learning/lecture/DoRHJ/stochastic-gradient-descent

Stochastic Gradient Descent

image

이제까지 사용했던 일반 gradient descent ( batch gradient descent )에 대한 그림이다. 데이터의 양이 엄청 많아지면 ( m의 크기가 커짐) 작은 gradient descent step하나 지나가는데에 엄청난수의 데이터 총합을 매번 구해야 한다. 이렇게 되면 성능에 문제가 생긴다. 그래서 임의의 데이터 하나당 한번의 gradient descent step을 밟는 stochastic gradient descent 방법을 택한다. stochastic gradient descent는 꼭 linear regression아니더라도 다양한 알고리즘과 함께 사용 가능하다. 

image
image

빨간색은 일반 gradient descent 궤적이다.

보라색은 stochastic gradient descent 궤적이다. 결과적으로 local minimum에 도착할수도 있고 아닐수도 있지만 근처에 도착하는 것은 맞다. for loop를 감싸는 repeat은 보통 1-10정도 수행한다. 다만 엄청난 수의 데이터가 있는 경우 1번에도 좋은 결과는 만들어낸다.


https://www.coursera.org/learn/machine-learning/lecture/9zJUs/mini-batch-gradient-descent

Mini-Batch Gradient Descent

image

일반 batch gradient는 모든 데이터값에대한 cost의 총합을 구하고 이에 대한 partial derivative 를 통해 기울기를 구하고 이에 learning rate을 구해서 새로운 theta를 구하는 과정을 거친다. 데이터의 수가 많아지면 성능에 문제가 생기므로 무작위 데이터 하나를 가져와 그에 대한 cost를 이용하는 stocastic gradient descent 방법을 이용할수 있다. 또 몇몇 데이터를 이용하는 mini batch gradient descent를 이용할수도 있다. 좋은 선형대수 라이브러리의 경우 vectorization을 이용한 작업에 병렬연산을 제공하므로 하나의 데이터를 이용하는 것이나 여러데이터를 이용하는 것이나 큰차이가 없다. 

image


https://www.coursera.org/learn/machine-learning/lecture/fKi0M/stochastic-gradient-descent-convergence

Stochastic Gradient Descent Convergence

image

Stochastic Gradient descent 가 잘 작동하는지 ( cost 가 점점 감소하는지) 확인 하는 작업을 설명한다. 일정 수의 데이터 cost결과를 중간 중간 확인하는 방식으로 한다. 이 강의에서는 1000개의 데이터를 사용하고 있다. 

image

위위 그림에서 말하던 확인(plot) 결과를 보여주는 그래프이다. 좌상단의 그림의 경우 파란 그래프는 빨간 그래프보다 큰 알파값을 사용했으며 점차 cost가 줄어드는 것을 알수 있다. 

우상단의 경우 빨간 그래프는 파란 그래프보다 큰 숫자의 데이터를 이용 cost를 측정한 경우이다. 그래프가 부드럽게 바뀐것을 볼수 있으며 cost는 점차 줄고 있다.

좌하단 파란 그래프의 경우 cost가 전반적으로 줄고 있는지 알수 없다. 이런 경우 보다 많은 수의 데이터를 이용 보라색, 빨간색 그래프처럼 결과가 나오게 수정한다. 이렇게 바꾸면 미세하게 줄거나 늘고 있는 것을 볼수 있다. 

우하단의 그래프는 cost가 점차 상승하고 있으며 이런 경우 작은 값의 알파를 사용해 본다.

image

점차 minimum에 접근하다가 minimum근처를 배회하는 것을 위그림에서 볼수있다. 이를 보완하기 위한 작업을 아래그림에서 설명한다. 

image

두 상수를 이용해서 점차 learning rate값을 작게 만들어서 조금더 minimum에 다가가고 그곳에 머물게 하는 방법이다.


https://www.coursera.org/learn/machine-learning/lecture/ABO2q/online-learning

online learning

image

저장된 data 이용하기 보다 끊임없이 제공되는 데이터를 이용할수 있는 경우 사용하는 방법으로 데이터는 한번 사용하고 버린다. 그래서 그림 하단 알고리즘을 보면 x i , y i 가 아닌 x y를 사용한다. 이런 경우 사용자의 preferece 변화에 신속하게 대응할수 있다.

image

위와 같은 영역에서 사용될수 있다. 순간적으로 발생하는 데이터에 반응하는 경우에 online learning 를 사용할수 있다.


https://www.coursera.org/learn/machine-learning/lecture/10sqI/map-reduce-and-data-parallelism

Map Reduce and Data Parallelism

대용량의 데이터를 처리해야 하는 경우 이를 여러부분으로 나누어 처리하는 방법을 이용할수 있다. map- reduce, data parallelism을 이용할수 있다.

theta j에서 j는 feature이다. n은 feature의 총갯수.

위 그림은 여러 컴퓨터를 이용한 병렬 처리를 보여주고 있다.

한 컴퓨터내의 여러 코어를 이용한 병렬 처리를 보여주고 있다.

때로는 라이브러이에서 기본적으로 병렬처리를 제공하는 경우도 있다. 선형대수 처리를 하는 경우 병렬처리를 제공하는 경우도 있다.

https://www.coursera.org/learn/machine-learning/lecture/V9MNG/problem-motivation

Anomaly Detection Problem Motivation

image

anomaly detection 은 정상인지 아닌지 확인해주는 기능을 수행한다. 위의 경우 새로운 항공기 엔진이 정상인지 아닌지 확인해주는 작업을 예로 보여준다.

image
image


https://www.coursera.org/learn/machine-learning/lecture/ZYAyC/gaussian-distribution

Anomaly Detection Gaussian Distribution

image

gaussian distribution은 normal distribution이라고 불리기도 한다. 그래서 x tilda n(mu, sigma squares) 에서 n을 사용했다. tilda의 의미는 distributed as 의 의미이다. 즉 여기서는 normal distribution을 이용해 distributed되었다는 의미이다.

mu 는 중앙을 나타낸다. 시그마를 통해 그래프의 높낮이, 폭이 조절된다. 그래프 높이의 총합은 항상 1이 된다.

image
image

위그림은 중앙점 mu를 구하는 공식, 시그마를 구하는 공식이다. 


https://www.coursera.org/learn/machine-learning/lecture/C8IJp/algorithm

Anomaly Detection Algorithm

image

p(x)는 최종 계산값이며 최종 probability이다. 이는 각각의 feature의 probability의 곱으로 결정되어 진다. pi는 각 요소들의 곱을 나타내는 기호이다. 

image

mu j를 간단하게 vector로 묶어서 생각할수 있다. 이때 features 들도 묶어서 vector 들끼리의 연산으로 생각할수도 있다.( vectorization ) 

image


https://www.coursera.org/learn/machine-learning/lecture/Mwrni/developing-and-evaluating-an-anomaly-detection-system

Developing and Evaluating an Anomaly Detection System

image

위의 그림은 anomaly detection 알고리즘을 이용한 프로젝트 과정을 설명한다.

image

가지고 있는 데이터를 training, cross validation, test set으로 구분하는 비율에 관한 내용이다.

image

anomaly 를 구분하는 정확도만으로 알고리즘의 성능을 평가 할수 없다. logistic regression과 마찬가지로 skewed class의 경우를 생각해야 한다. 위의 예시의 경우 대부분의 엔진은 문제가 없고 아주 극소수의 엔진만이 문제를 가지므로 모든 경우에 anomaly로 판단하는 알고리즘이라도 좋은 적중률을 가지게 된다.


https://www.coursera.org/learn/machine-learning/lecture/Rkc5x/anomaly-detection-vs-supervised-learning

Anomaly Detection vs. Supervised Learning

image

anomaly detection과 logistic regression은 비슷하다. 어떤 경우에 어떤 알고리즘을 써야 하는지 설명하고 있다. 위 그림 anomaly detection 설명에서 말하는 positive ( y=1) 이란 anomaly 인경우를 말한다. 많은 수의 negative 데이터를 가지고 있는 경우 즉 normal인 경우의 데이터가 많고 anomaly의 경우의 데이터가 별로 없는 경우. 이제 까지 젼혀 보지 못한 anomaly를 관측해내야 하는 경우 anomaly detection을 이용한다. 

일반상태 자료가 많아서 일반상태를 상정하고 여기에서 벗어나는 경우를 측정하는 경우에 anomaly detection을 사용한다. 

image


https://www.coursera.org/learn/machine-learning/lecture/LSpXm/choosing-what-features-to-use

Anomaly Detection Choosing What Features to Use

image

일반 gaussian 의 모양( bell모양 )이 아닌 경우 x의 변형을 통해 근접하게 만들어 준다. 


https://www.coursera.org/learn/machine-learning/lecture/Cf8DF/multivariate-gaussian-distribution

Anomaly Detection Multivariate Gaussian DistributionLoaded

image

위그림의 왼쪽 그래프처럼 normal인 데이터들의 형성이 정확히 동심원형태가 아닌경우 mu, sigma를 조정할필요가 있다. 

image

위그림에서 p(x1)*p(x2)*p(x3) …… p(xn) 과 같이 계산하던것을 p(x) 로 한번에 계산 하는 것에 유의한다. 

image
image
image
image
image
image


https://www.coursera.org/learn/machine-learning/lecture/DnNr9/anomaly-detection-using-the-multivariate-gaussian-distribution

Anomaly Detection using the Multivariate Gaussian Distribution

image

multivariate gaussian distribution을 사용할때 의 공식과 mu와 sigma를 구하는 방법을 설명하고 있다.

image
image

위 그림은 original gaussian model과 multivariate gaussian model을 비교하고 있다.

상단부분처럼 기울어지지 않은 벨모양인 경우는 multivariate model로도 구현 가능하다. 이때 시그마 matrix는 그림 하단 처럼 대각선에는 각각의 시그마값을 요소로 가지며 나머지는 0이 되게 된다. 

multivariate gaussian model은 기울어진 벨모양도 만들수 있다.  

image

언제 original gaussian model과 multivariate gaussian model 를 사용해야 하는지 각각 어떤 특성을 가지는지 보여주고 있다. original gaussian model은 두 feature의 연관성을 스스로 알아내지 못하므로 손수 찾아서 지정해 주어야 한다. original gaussian의 경우 데이터의 갯수가 features의 수보다 적어도 사용가능하다. multivariate gaussian model은 두 features간의 관계를 스스로 찾아낼수 있다. m ( 데이터수 )보다 n ( features수 )가 항상 커야하며 m >= 10n 인경우 multivariate gaussian model 사용을 추천한다.

그림 우하단은 중독된 feature나 linearly dependent 관계를 가진 features를 줄여 사용하기를 추천한다는 내용이다.


https://www.coursera.org/learn/machine-learning/lecture/Rhg6r/problem-formulation

predicting movie rating Problem Formulation

이 강의는 영화 평점을 예상하고 영화를 추천하는 경우를 예시로 들고 있다.

image

이 예시에서 영화를 두가지 종류로 바라본다. 로맨스, 액션으로 나누어본다.

영화는 5가지 이고 사용자는 4명이다. 써있는 숫자는 평점이고 물음표는 사용자가 평점을 내리지 않는 경우이며 이 점수를 예상하는 것도 이 프로젝트의 목적중의 하나이다. 

image

쎄타는 각 사용자들의 각 영화종류에대한 쎄타값이다. 즉 위그림의 하단의 경우 0 , 5, 0 이 주어졌는데 이는 사용자 alice 의 x0 feature에대한 쎄타값 0 , x1에대한( romance features 값 도표) 사용자 alice의 x1 쎄타값, x2에 대한 ( action 값) 사용자 alice의 쎄타값이된다. 사용자가 평점하지 않은 영화에 대한 평점 구하기위해서는 사용자의 각 영화종류에 대한 쎄타값을 구하는 방법은 아래는 참조한다.

image

각 영화종류에 대한 쎄타값을 구하는 방법이다.

image

k0는 biased value이므로 regularization할 필요가 없다 그러므로 뒷부분 시그마에서 k는 0이 아닌 1부터시작한다. 위의 경우는 단 한 명의 사용자에 대한 쎄타값을 구하는 경우이고 아래는 전체 사용자들에 대한 쎄타값을 구하는 경우이다.

image

일반 gradient descent와 다르게 1/m이 사라졌음에 유의한다. 있어도 상관없지만 계산을 줄이기위한 작업인것 같다.


https://www.coursera.org/learn/machine-learning/lecture/2WoBV/collaborative-filtering

Collaborative Filtering

image

이 강의는 전강의에 이어서 영화 추천 알고리즘에 관한 것이다.

처음 프로젝트를 시작하는 경우 위 같이 theta ( 사용자의 각 영화 카테고리별 쎄타값 )도 알수 없고 x features ( 각 영화 카테고리별 feature값 )도 알수 없다, theta 값을 구하기 위해서는 x features값이 필요하고 x features 값을 구하기 위해서는 theta값이 필요하기 때문이다. 이때는 아래 그림과 같이 먼저 theta값이나 features값중 하나를 임의로 정하고 두 과정을 반복하면서 수정해 나가는 방법을 택한다. 이 방법을 collaborative filtering이라고 한다.

image


https://www.coursera.org/learn/machine-learning/lecture/f26nH/collaborative-filtering-algorithm

Collaborative Filtering Algorithm

image

예상 feature 값( 각 영화종류 별에 대한 값 )에 대한 cost 를 줄이기 위한 공식은 상단의 공식이다.

예상 theta값( 사용자들의 영화종류에 대한 성향 값 )에 대한 cost 를 줄이기 위한 공식은 중간의 공식이다.

위 두개의 알고리즘을 이용하는 경우 theta -> feature -> theta -> feature ….  이와 같은 방법으로 왔다 갔다 해야 하나 하단의 공식의 경우 그런 작업 필요없이 한번에 처리된다. 

위 두개 공식의 보라색 박스의 내용을 살펴보면 실상 같은 내용이다. 상단의 경우 사용자가 본 영화중에서의 cost를 구한다는 내용이고 중간의 경우는 영화중에서 사용자가 본 영화의 cost를 구한다는 이야기 이므로 결국 같은 내용이므로 하나로 통일되어 들어간다. 그리고 각각의 regularization 부분은 살아서 들어간다.

image


https://www.coursera.org/learn/machine-learning/lecture/CEXN0/vectorization-low-rank-matrix-factorization

Collaborative Filtering Vectorization: Low Rank Matrix Factorization

이 전 강의와 마찬가지로 영화 추천 알고리즘의 예시를 이야기하고 있다.

image

위 그림은 사용자들의 영화들에 대한 평점 matrix이다.

image
image

한 영화와 다른 또 하나의 영화간의 거리를 측정하고 그값이 작을 수록 비슷한 영화라고 볼수 있는 알고리즘을 만든다.


https://www.coursera.org/learn/machine-learning/lecture/Adk8G/implementational-detail-mean-normalization

Collaborative Filtering Implementational Detail: Mean Normalization

image

위그림은 eve라는 사용자를 가정한다. eve는 어떤 영화에 대해서도 평점을 남기지 않았다. 이런경우 그림 하단의 공식에서 앞부분 시그마에 해당하는 데이터가 없으므로 아무 영향을 미치지 못한다. 그렇다면 전체 cost를 줄이기 위해서는 뒷부분 시그마의 값이 최소가 되는 방향으로 알고리즘은 움직이게 된다. 이런경우 결국 theta 1, 2는 0이 되는 방향으로 가게 된다. 그렇다면 theta vector는 (0, 0) 이 된다. 

위의 그림은 mean normalization을 추가한 Collaborative Filtering 알고리즘이다. 이를 통해 평점을 하나도 남기지 않은 사용자에게도 기본적으로 평균 theta값을 부여할수 있게 된다. 과정을 살펴보면 우선 각 영화에 대한 평점의 평균을 구한다. 이를 mu 라고 한다. 그리고 각 평점에 mu를 빼서 위에서 보는 Y matrix를 만든다. 이를 살펴보면 각 영화의 평점의 합은 0이 되는 것을 알수 있다. 새로운 평점 Y matrix를 이용 learning과정을 수행한다. 이를 통해 구해진 theta , feature값을 통해 예비예상값을 구하고 이에 mu를 더하면 최종 예상값이 된다.

https://www.coursera.org/learn/machine-learning/lecture/V9MNG/problem-motivation

Anomaly Detection Problem Motivation

image

anomaly detection 은 정상인지 아닌지 확인해주는 기능을 수행한다. 위의 경우 새로운 항공기 엔진이 정상인지 아닌지 확인해주는 작업을 예로 보여준다.

image
image


https://www.coursera.org/learn/machine-learning/lecture/ZYAyC/gaussian-distribution

Anomaly Detection Gaussian Distribution

image

gaussian distribution은 normal distribution이라고 불리기도 한다. 그래서 x tilda n(mu, sigma squares) 에서 n을 사용했다. tilda의 의미는 distributed as 의 의미이다. 즉 여기서는 normal distribution을 이용해 distributed되었다는 의미이다.

mu 는 중앙을 나타낸다. 시그마를 통해 그래프의 높낮이, 폭이 조절된다. 그래프 높이의 총합은 항상 1이 된다.

image
image

위그림은 중앙점 mu를 구하는 공식, 시그마를 구하는 공식이다. 


https://www.coursera.org/learn/machine-learning/lecture/C8IJp/algorithm

Anomaly Detection Algorithm

image

p(x)는 최종 계산값이며 최종 probability이다. 이는 각각의 feature의 probability의 곱으로 결정되어 진다. pi는 각 요소들의 곱을 나타내는 기호이다. 

image

mu j를 간단하게 vector로 묶어서 생각할수 있다. 이때 features 들도 묶어서 vector 들끼리의 연산으로 생각할수도 있다.( vectorization ) 

image


https://www.coursera.org/learn/machine-learning/lecture/Mwrni/developing-and-evaluating-an-anomaly-detection-system

Developing and Evaluating an Anomaly Detection System

image

위의 그림은 anomaly detection 알고리즘을 이용한 프로젝트 과정을 설명한다.

image

가지고 있는 데이터를 training, cross validation, test set으로 구분하는 비율에 관한 내용이다.

image

anomaly 를 구분하는 정확도만으로 알고리즘의 성능을 평가 할수 없다. logistic regression과 마찬가지로 skewed class의 경우를 생각해야 한다. 위의 예시의 경우 대부분의 엔진은 문제가 없고 아주 극소수의 엔진만이 문제를 가지므로 모든 경우에 anomaly로 판단하는 알고리즘이라도 좋은 적중률을 가지게 된다.


https://www.coursera.org/learn/machine-learning/lecture/Rkc5x/anomaly-detection-vs-supervised-learning

Anomaly Detection vs. Supervised Learning

image

anomaly detection과 logistic regression은 비슷하다. 어떤 경우에 어떤 알고리즘을 써야 하는지 설명하고 있다. 위 그림 anomaly detection 설명에서 말하는 positive ( y=1) 이란 anomaly 인경우를 말한다. 많은 수의 negative 데이터를 가지고 있는 경우 즉 normal인 경우의 데이터가 많고 anomaly의 경우의 데이터가 별로 없는 경우. 이제 까지 젼혀 보지 못한 anomaly를 관측해내야 하는 경우 anomaly detection을 이용한다. 

일반상태 자료가 많아서 일반상태를 상정하고 여기에서 벗어나는 경우를 측정하는 경우에 anomaly detection을 사용한다. 

image


https://www.coursera.org/learn/machine-learning/lecture/LSpXm/choosing-what-features-to-use

Anomaly Detection Choosing What Features to Use

image

일반 gaussian 의 모양( bell모양 )이 아닌 경우 x의 변형을 통해 근접하게 만들어 준다. 


https://www.coursera.org/learn/machine-learning/lecture/Cf8DF/multivariate-gaussian-distribution

Anomaly Detection Multivariate Gaussian DistributionLoaded

image

위그림의 왼쪽 그래프처럼 normal인 데이터들의 형성이 정확히 동심원형태가 아닌경우 mu, sigma를 조정할필요가 있다. 

image

위그림에서 p(x1)*p(x2)*p(x3) …… p(xn) 과 같이 계산하던것을 p(x) 로 한번에 계산 하는 것에 유의한다. 

image
image
image
image
image
image


https://www.coursera.org/learn/machine-learning/lecture/DnNr9/anomaly-detection-using-the-multivariate-gaussian-distribution

Anomaly Detection using the Multivariate Gaussian Distribution

image

multivariate gaussian distribution을 사용할때 의 공식과 mu와 sigma를 구하는 방법을 설명하고 있다.

image
image

위 그림은 original gaussian model과 multivariate gaussian model을 비교하고 있다.

상단부분처럼 기울어지지 않은 벨모양인 경우는 multivariate model로도 구현 가능하다. 이때 시그마 matrix는 그림 하단 처럼 대각선에는 각각의 시그마값을 요소로 가지며 나머지는 0이 되게 된다. 

multivariate gaussian model은 기울어진 벨모양도 만들수 있다.  

image

언제 original gaussian model과 multivariate gaussian model 를 사용해야 하는지 각각 어떤 특성을 가지는지 보여주고 있다. original gaussian model은 두 feature의 연관성을 스스로 알아내지 못하므로 손수 찾아서 지정해 주어야 한다. original gaussian의 경우 데이터의 갯수가 features의 수보다 적어도 사용가능하다. multivariate gaussian model은 두 features간의 관계를 스스로 찾아낼수 있다. m ( 데이터수 )보다 n ( features수 )가 항상 커야하며 m >= 10n 인경우 multivariate gaussian model 사용을 추천한다.

그림 우하단은 중독된 feature나 linearly dependent 관계를 가진 features를 줄여 사용하기를 추천한다는 내용이다.


https://www.coursera.org/learn/machine-learning/lecture/Rhg6r/problem-formulation

predicting movie rating Problem Formulation

이 강의는 영화 평점을 예상하고 영화를 추천하는 경우를 예시로 들고 있다.

image

이 예시에서 영화를 두가지 종류로 바라본다. 로맨스, 액션으로 나누어본다.

영화는 5가지 이고 사용자는 4명이다. 써있는 숫자는 평점이고 물음표는 사용자가 평점을 내리지 않는 경우이며 이 점수를 예상하는 것도 이 프로젝트의 목적중의 하나이다. 

image

쎄타는 각 사용자들의 각 영화종류에대한 쎄타값이다. 즉 위그림의 하단의 경우 0 , 5, 0 이 주어졌는데 이는 사용자 alice 의 x0 feature에대한 쎄타값 0 , x1에대한( romance features 값 도표) 사용자 alice의 x1 쎄타값, x2에 대한 ( action 값) 사용자 alice의 쎄타값이된다. 사용자가 평점하지 않은 영화에 대한 평점 구하기위해서는 사용자의 각 영화종류에 대한 쎄타값을 구하는 방법은 아래는 참조한다.

image

각 영화종류에 대한 쎄타값을 구하는 방법이다.

image

k0는 biased value이므로 regularization할 필요가 없다 그러므로 뒷부분 시그마에서 k는 0이 아닌 1부터시작한다. 위의 경우는 단 한 명의 사용자에 대한 쎄타값을 구하는 경우이고 아래는 전체 사용자들에 대한 쎄타값을 구하는 경우이다.

image

일반 gradient descent와 다르게 1/m이 사라졌음에 유의한다. 있어도 상관없지만 계산을 줄이기위한 작업인것 같다.


https://www.coursera.org/learn/machine-learning/lecture/2WoBV/collaborative-filtering

Collaborative Filtering

image

이 강의는 전강의에 이어서 영화 추천 알고리즘에 관한 것이다.

처음 프로젝트를 시작하는 경우 위 같이 theta ( 사용자의 각 영화 카테고리별 쎄타값 )도 알수 없고 x features ( 각 영화 카테고리별 feature값 )도 알수 없다, theta 값을 구하기 위해서는 x features값이 필요하고 x features 값을 구하기 위해서는 theta값이 필요하기 때문이다. 이때는 아래 그림과 같이 먼저 theta값이나 features값중 하나를 임의로 정하고 두 과정을 반복하면서 수정해 나가는 방법을 택한다. 이 방법을 collaborative filtering이라고 한다.

image


https://www.coursera.org/learn/machine-learning/lecture/f26nH/collaborative-filtering-algorithm

Collaborative Filtering Algorithm

image

예상 feature 값( 각 영화종류 별에 대한 값 )에 대한 cost 를 줄이기 위한 공식은 상단의 공식이다.

예상 theta값( 사용자들의 영화종류에 대한 성향 값 )에 대한 cost 를 줄이기 위한 공식은 중간의 공식이다.

위 두개의 알고리즘을 이용하는 경우 theta -> feature -> theta -> feature ….  이와 같은 방법으로 왔다 갔다 해야 하나 하단의 공식의 경우 그런 작업 필요없이 한번에 처리된다. 

위 두개 공식의 보라색 박스의 내용을 살펴보면 실상 같은 내용이다. 상단의 경우 사용자가 본 영화중에서의 cost를 구한다는 내용이고 중간의 경우는 영화중에서 사용자가 본 영화의 cost를 구한다는 이야기 이므로 결국 같은 내용이므로 하나로 통일되어 들어간다. 그리고 각각의 regularization 부분은 살아서 들어간다.

image


https://www.coursera.org/learn/machine-learning/lecture/CEXN0/vectorization-low-rank-matrix-factorization

Collaborative Filtering Vectorization: Low Rank Matrix Factorization

이 전 강의와 마찬가지로 영화 추천 알고리즘의 예시를 이야기하고 있다.

image

위 그림은 사용자들의 영화들에 대한 평점 matrix이다.

image
image

한 영화와 다른 또 하나의 영화간의 거리를 측정하고 그값이 작을 수록 비슷한 영화라고 볼수 있는 알고리즘을 만든다.


https://www.coursera.org/learn/machine-learning/lecture/Adk8G/implementational-detail-mean-normalization

Collaborative Filtering Implementational Detail: Mean Normalization

image

위그림은 eve라는 사용자를 가정한다. eve는 어떤 영화에 대해서도 평점을 남기지 않았다. 이런경우 그림 하단의 공식에서 앞부분 시그마에 해당하는 데이터가 없으므로 아무 영향을 미치지 못한다. 그렇다면 전체 cost를 줄이기 위해서는 뒷부분 시그마의 값이 최소가 되는 방향으로 알고리즘은 움직이게 된다. 이런경우 결국 theta 1, 2는 0이 되는 방향으로 가게 된다. 그렇다면 theta vector는 (0, 0) 이 된다. 

위의 그림은 mean normalization을 추가한 Collaborative Filtering 알고리즘이다. 이를 통해 평점을 하나도 남기지 않은 사용자에게도 기본적으로 평균 theta값을 부여할수 있게 된다. 과정을 살펴보면 우선 각 영화에 대한 평점의 평균을 구한다. 이를 mu 라고 한다. 그리고 각 평점에 mu를 빼서 위에서 보는 Y matrix를 만든다. 이를 살펴보면 각 영화의 평점의 합은 0이 되는 것을 알수 있다. 새로운 평점 Y matrix를 이용 learning과정을 수행한다. 이를 통해 구해진 theta , feature값을 통해 예비예상값을 구하고 이에 mu를 더하면 최종 예상값이 된다.

https://www.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representationhttps://www.coursera.org/learn/machine-learning/lecture/czmip/unsupervised-learning-introduction

Unsupervised Learning: Introduction

image

unsupervised learning은 labeled된 데이터가 없으므로 그냥 x 값만 있다. 


https://www.coursera.org/learn/machine-learning/lecture/93VPG/k-means-algorithm

K-Means Algorithm

image
image

k mean algorithm에서 k는 총그룹 갯수이다. 뮤 는 centroid를 말한다. x 에 가장 가가운 centroid index를 c라고 한다. 즉 x i 는 i 번째 데이터를 말하며 이에 가장 가까운 centroid index를 c i 라고 한다. 위 알고리즘의 과정을 설명하면 우선 m개의 data set에서 요소 하나씩 가져온다 이는 x i 이며 이 요소에 가장 가까운 cluster centroid index를 c i 에 저장한다. 그다음 단계는 총 갯수 k 인  mu 를 처음부터 순환하며 본인의 index와 같은 x 들의 평균값을 구하고 이를 새로운 mu 값으로 갱신한다. 즉 cluster centroid 위치를 갱신하는 것이다.


https://www.coursera.org/learn/machine-learning/lecture/G6QWt/optimization-objective

K-Means Optimization Objective

image
image


https://www.coursera.org/learn/machine-learning/lecture/drcBh/random-initialization

K-Means Random Initialization

image

k means 알고리즘을 사용하는데에는 최초 시작 centroids를 지정해 주어야 하는데 training set에서 무작위로 k 숫자 만큼 선택하는 것을 추천한다.

image


https://www.coursera.org/learn/machine-learning/lecture/Ks0E9/choosing-the-number-of-clusters

K-Means Choosing the Number of Clusters

사실 cluster ( 그룹 )의 숫자는 개발자가 지정해 주어야 한다. 자동으로 지정할수 있는 방법은 없다.

image

cluster의 숫자에 따른 cost 값을 볼때 왼쪽 그래프와 같이 급격한 변화가 있다면 그 지점의 값만큼의 cluster 를 만든다. 오른쪽과 그래프와 같이 특별한 변화가 없는경우 개발자가 적당히 선택해야 한다. 


https://www.coursera.org/learn/machine-learning/lecture/0EJ6A/motivation-i-data-compression

Motivation I: Data Compression

image

2d dimensions의 data를 1d 바꾸어서 단순화하는 작업이다. 녹색선을 z1이라고 보고 이에 대응하는 각 데이터를 이용한다.

image

3차원의 데이터를 2차원에 project해서 새로운 데이터를 만들고 이를 이용한다. 3차원의 데이터를 z1, z2 벡터로 이루어진 평면에 project해서 얻은 데이터를 이용한다는 의미이다.


https://www.coursera.org/learn/machine-learning/lecture/t6pYD/motivation-ii-visualization

Motivation II: Visualization

image

예를 들어 위와 같은 데이터가 있다고 했을 때 이를 한번에 알아 보기가 힘들가 그래서 여러차원의 데이터를 dimensionality reduction작업을 통해 2차원, 3차원의 데이터로 바꾸고 이를 시각화 하는 것을 Visualization 한다고 한다.

image
image

2차원으로 줄여서 시각화 한 예를 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/GBFTt/principal-component-analysis-problem-formulation

Principal Component Analysis Problem Formulation

image

pca 는 어떤 형태가 되는 지 보여준다. 위의경우는 2d를 1d로 바꿔주는 과정이다.

image
image

위의 그림은 linear regression과 pca와의 차이를 보여주고 있다.


https://www.coursera.org/learn/machine-learning/lecture/ZYIPa/principal-component-analysis-algorithm

Principal Component Analysis Algorithm

image

pca 작업을 하기 전에 사전작업이 필요하다. 일단 mean normalization 작업을 통해서 각 데이터의 위치를 조정해서 전체 평균점이 0이 되게 한다. 위의 그림에서 첫번째 [ 안의 내용이 이에 해당한다.두번째 [ 의 작업은 feature scaling 작업에 대한 설명이다. 

image

위의 그림에서  u 는 벡터이고 z i 는 각각 새로 만들어진 축상의 값이다. 각각 2차원에서 1차원으로 3차원에서 2차원으로 차원이 낮아( dimension reduction ) 지는 것을 알수 있다.

image

pca 알고리즘은 두단계로 이루어져 있다. 1. covariance matrix를 구한다. x 한행과 x 한행의 transepose의 곱들을 다 더해서 행의 총갯수 m으로 나눈다. 

2. 1번에서 구해진 값을 sigma 변수에 넣고 이를 svd( singular value decomposition ) 또는 eig 함수에 넣어서 eigenvectors값을 구한다. 

위 그림에서 u1, u2 등등은 차원을 낮추면서 새로 생기게 되는 vector들이다. 위위그림에서 u1을 확인해볼것

image
image


https://www.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representation

Reconstruction from Compressed Representation

image

왼쪽그림은 dimension reduction은 보여주고 오른쪽 그림은 reconstruction을 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/S1bq1/choosing-the-number-of-principal-components

Choosing the Number of Principal Components

image

principal components의 숫자를 정한다는 이야기는 몇차원의 맞출것인가 하는 말과 같다.

우선 이를 결정하는 데 중요한 요소는 차원을 줄임에도 불구하고 데이터가 본래 가지고 있는 분별력을 유지해야 한다는 점이다. 즉 전체 분별정도 (전체 분산)과 projection error squares의 총합의 관계을 확인하면 되는데 여기서 한단계 더 나아가 평균값을 비교한다. 위의 그림에서 보듯이 m으로 나누어준다. 위의 예시를 보면 99% 분산 정도가 유지 되었다. 이렇게 볼수 있다. 보통 90% 이상이 유지 되는 것을 추천한다.

분산개념 이해를 위한 참고 자료) https://needjarvis.tistory.com/43

image

왼쪽의 방법을 통해 k = 1부터 원하는 값이 나올때까지 k값을 늘려가며 확인할수도 있다. 

또는 좀더 쉽게 오른쪽 처럼 svd 함수의 결과로 나오는 S matrix를 이용할수 도 있다.

S matrix 는 대각선만 값이 있고 나머지는 다 0을 요소로 갖는 특성을 가진다. 위 그림과 같이 s k까지 요소를 더한 값을 전체 s 요소들을 더한 값으로 나누고 결과값이 0.99 ( 또는 원하는 수치 ) 이상이 되는지 확인한다.

image


https://www.coursera.org/learn/machine-learning/lecture/RBqQl/advice-for-applying-pca

Advice for Applying PCA

overfitting을 보완하기 위해 pca를 쓰는 것은 좋지 못하다는 이야기이다. 그대신 regularization을 사용하기를 추천한다.

pca를 통해 약간 변화된 데이터를 이용하기 보다 본래 데이터를 이용해 우선 작업 시도하는 것을 추천한다.