maching learning
-
[Week 8] Principal Component AnalysisCourses/Andrew Ng - Machine Learning 2022. 1. 30. 15:13
Principal Component Analysis Problem Formulation 차원 축소를 실행하는 알고리즘인 PCA(Principal Component Analysis)에 대해 알아봅니다. 데이터 셋을 관통하는 임의의 빨간 직선을 긋습니다. 데이터들을 직선 위에 투영합니다. 투영된 점과 데이터들 사이의 거리가 가장 짧은 더 낮은 차원의 표면이나 직선을 찾는 것이 PCA입니다. PCA를 적용하기 전에 feature scaling을 진행해야 합니다. PCA를 수학적으로 풀어보자면 , 데이터를 2차원에서 1차원으로 축소하는 벡터 u^(1)을 찾는 것 입니다. 이 그림에서 u^(1)은 2차원 벡터입니다. u^(1)은 투영 오차를 최소화하는 직선입니다. 즉 PCA는 n차원 데이터를 k차원으로 축소합니다..
-
[Week 8] MotivationCourses/Andrew Ng - Machine Learning 2022. 1. 30. 14:43
Data Compression 데이터 압축은 메모리나 디스크 사용량을 줄이고 학습 알고리즘의 속도를 높일 수 있는 방법입니다. 차원 축소를 이용한 데이터 압축에 대해 알아보겠습니다. 두 개의 변수 x1 ,x2가 있습니다. x1은 cm 단위이고 x2는 inch 단위입니다. 똑같이 물체의 길이에 대한 변수이지만 단위만 다릅니다. 따라서 2차원이 아닌 1차원으로 줄이는 것이 더 효율적입니다. 중복되는 변수가 발생하는 일은 흔한 일입니다. 이제 데이터들을 녹색 직선에 투영하고 이를 z1으로 부릅니다. x^(m) 은 z(m)으로 치환 가능합니다. 이렇게 차원 축소를 실행하면 메모리를 아끼고 알고리즘의 속도도 올릴 수 있습니다. 보통 1000개의 변수를 100개로 줄이는 것 처럼 큰 스케일의 작업을 주로 하지만 이..
-
[Week 8] ClusteringCourses/Andrew Ng - Machine Learning 2022. 1. 27. 19:55
K-Means Algorithm 이번 시간부터 비지도학습의 클러스터링을 설명합니다. 지도 학습과는 다르게 비지도 학습은 주어진 데이터셋에 레이블이 붙어있지 않고 알고리즘이 스스로 구조를 찾아야 합니다. 위 그래프처럼 레이블없이 데이터가 주어졌을 때 두가지 그룹으로 묶는 것을 클러스터링이라고 합니다. 가장 많이 사용하는 클러스터링 알고리즘인 K-평균 알고리즘에 대해 알아봅니다. 위와 같이 데이터들이 주어졌을 때 K-평균 알고리즘을 적용해봅시다. 우선 임의로 클러스터의 중심으로 사용될 두 개의 점을 지정합니다. K-평균 알고리즘은 두 가지 단계로 이루어집니다. 첫째, 클러스터 할당. 둘째, 클러스터 중심 이동입니다. 클러스터 할당 단계에서는 각 데이터들이 어떤 클러스터 중심에 더 가까운 지를 계산합니다. 빨..
-
[Week 7] SVMs in PracticeCourses/Andrew Ng - Machine Learning 2022. 1. 23. 18:54
서포트 벡터 머신을 알고리즘을 위한 좋은 라이브러리들이 제작되어 있으므로 굳이 구현할 필요는 없습니다. 다만 파라미터 C와 어떤 커널을 사용할 지 선택해야 합니다. 커널을 사용하지 않는다는 것은 선형 커널을 사용한다는 것을 의미합니다. 변수의 수가 많고 데이터 셋의 크기 m이 작을 때는 유용할 수 있습니다. 두번째 옵션은 가우시안 커널입니다. n이 작고 m은 클 때, 비선형 분류기가 필요하다면 가우스 커널을 사용하는 것이 좋습니다. 다만 파라미터 sigma^2를 정해야 합니다. 선형 커널과 가우시안 커널이 실제로 가장 인기있는 커널입니다. 다만 가우시안 커널을 사용하기 전에 적절한 feature scaling이 필요합니다. 변수 값의 범위가 다르면 SVM이 제대로 동작하지 않습니다. 멀티 클래스 분류에서..
-
[Week 7] KernelsCourses/Andrew Ng - Machine Learning 2022. 1. 23. 17:38
복잡한 비선형 가설을 위해 커널이라는 알고리즘에 대해 알아보겠습니다. 변수 x 대신 f라는 새로운 변수를 사용합니다. f1은 x1을 대체하고 fm은 xm을 대체합니다. f로 대체하는 이유는 x의 고차 다항식을 사용하면 계산적 부담이 크기 때문입니다. 새로운 변수 f를 정의하는 법을 알아봅니다. 평면에 임의의 랜드마크 3개 l1 l2 l3를 찍습니다. f1은 변수 x와 l1 사이의 유사도입니다. exp(-|x-l1|^2/2*sigma^2) 입니다. 즉 x와 l1 사이가 얼마나 가까운지에 대한 함수입니다. 이 함수를 가우시안 커널이라고 합니다. 임의의 x가 l1과 가깝다고 칩시다. 그러면 x와 l1사이의 거리는 가까워지고 분자는 0에 가까워 집니다. 분자가 0에 가까워 지면 exp(-0)이 되고 이는 1에 ..
-
[Week 7] Support Vector MachineCourses/Andrew Ng - Machine Learning 2022. 1. 23. 16:12
Optimization Objective 이번 시간에는 Support Vector Machine 알고리즘에 대해 배워보겠습니다. 서포트 벡터 머신은 복잡한 비선형 함수를 학습하는 점에 있어서 더 간단하고 강력한 알고리즘입니다. 로지스틱 회귀와 비교해 보겠습니다. 로지스틱 회귀의 -log(sigmoid) 함수 그래프를 표시해봅니다. 분홍색으로 새로운 그래프를 그렸습니다. y=1일 때 z가 1 이하이면 근사치 직선을 그립니다. z가 1 이상이면 0입니다. 반대로 y=0일 때 z가 -1 이상이면 근사치 직선을 그리고 -1 이하면 0의 값을 갖습니다. 이것이 SVM의 비용 함수 그래프입니다. 새로운 함수를 Cost1(z), Cost2(z) 로 부릅니다. 역시 로지스틱 회귀에서 아이디어를 확장해나갑니다. log ..
-
[Week 6] Machine Learning System DesignCourses/Andrew Ng - Machine Learning 2022. 1. 18. 20:23
Building a Spam Classifier 스팸 메일을 분류하는 모델을 만든다고 가정합시다. 어떤 방법으로 접근하면 효율적일까요? 스팸 메일들을 수집하고 그 데이터를 바탕으로 스팸이면 y=1 , 스팸이 아니면 y=0 인 식으로 분류할 수 있을 것 같습니다. 스팸에서 사용되는 단어들을 변수 x로 둘 수 있을 것 같습니다. 예를 들어 deal 이라는 단어가 있으면 스팸일 수 있습니다. 거기에 coin이나 free같은 단어들이 같이 있다면 더 확률이 높아질 것 입니다. 이렇게 추정 가능한 단어 수백 개를 변수로 지정합니다. 반면 제 이름이 쓰여있다면 상대적으로 스팸일 가능성은 낮아지겠지요. 100차원의 변수 벡터를 만들었습니다. 스팸 분류 기준으로 선택한 단어들이 순차적으로 부여되어 있고 1이면 스팸일 ..
-
[Week 6] Bias vs. VarianceCourses/Andrew Ng - Machine Learning 2022. 1. 16. 17:06
Diagnosing Bias vs. Variance 학습 알고리즘은 종종 편향성(Bias)이나 분산성(Variance)를 띄게 됩니다. 편향을 띈다는 것은 과소 적합 문제가 발생한다는 뜻이고 분산을 띈다는 것은 과적합 문제가 발생한다는 뜻입니다. 작성한 모델이 편향인지 분산인지를 판단하는 것이 차후의 개선 작업에서 많은 유리함을 가져갑니다. 주로 다항식의 차수가 높아질 수록 과적합하여 분산이 높아지는 경우가 많고 일반화의 오류를 범하기 쉬워집니다. 가운데 곡선이 딱 적당하게 적합합니다. 트레이닝 셋, 교차 검증 셋에 적용하여 오차를 그려봅니다. 다항식의 차수가 높아질수록 트레이닝 셋의 오차는 과적합하여 낮아집니다. 반대로 교차 검증 셋에서는 다항식의 차수가 높아질수록 트레이닝 셋에 과적합되어 있기 때문에..