목록ai (23)
MG

이번 챕터에서 알아볼 것은 Unsupervised learning 이다. 이는 앞의 classification 문제와 달리 input만 주어지고 output이 따로 없는 training 인데 이를 어떻게 분류하고 분석할 것인지 알아보자. 위와 같이 데이터가 주어졌을때 우리가 2개의 무리로 분류하고 싶을때 우리는 clustering 이라는 것을 한다. 이를 위해 cluster centroids 라는 것을 정해줘야 하는데 이는 무리의 중심을 설정한다고 보면 된다. 여기서는 cluster centroid를 2개 설정했으며 훈련을 통해 이를 각 cluster의 중심에 위치시킬 것이다. 훈련을 시키기 위해 우선 각 데이터들이 어느 cluster centroid에 가까운지 정해줘야 한다. 빨간색에 가까운 데이터는 ..

우리가 실무에서 SVM을 사용할 때는 SW을 직접 개발하는 것이 아닌 라이브러리를 사용하는 것이 권장된다. 그 이유는 이를 구현하기 매우 복잡하고 최적화가 어렵기 때문이다. 그래서 우리가 이를 사용할 때는 parameter C와 어떤 종류의 Kernel을 사용할 지만 정하면 된다. 만약 n이 크고 m이 작으면 Linear Kernel을 사용한다. 작은 수의 데이터를 갖고 있기에 복잡한 함수로 대응하면 overfitting의 문제가 생길 수 있기 때문이다. 하지만 반대로 n이 작고 m이 크다면 Gaussian Kernel을 사용하는 것이 권장된다. 이를 만약 선택한다면 bias와 variance의 trade-off를 고려하여 sigma를 선택할 필요가 있다. 만약 Gaussian Kernel을 사용한다면 ..

위 그림과 같은 데이터가 주어진다면 non-linear 한 decision boundary가 필요하게 된다. 그래서 위의 h함수처럼 non-linear한 함수가 필요해지고 x로 이루어진 각 feature들을 f로 변환하여 나타낸다. 이를 통해 우린 non-linear decision boundary 를 나타낼 것이다. f는 smililarity 함수로 정의되는데 이를 Kernel 이라 부른다. 이 함수는 두 변수가 얼마나 가까이 있는지를 나타내며 우리는 여기서 x와 Landmark 변수 l 에 적용할 것이다. 여기서 사용된 Kernel은 Gaussian Kernel 이고 x가 landmark 에 가까울수록 1에 가까운 값이 나오고 멀수록 0에 가까운 값이 나오게 된다. 여기서 sigma는 정규분포의 표준..

우리는 이번 챕터에서 새로운 알고리즘인 SVM(Support Vector Machine)에 대해 알아볼 것이다. 이 알고리즘은 Logistic Regression을 응용해서 변형한 형태로 복잡한 비선형 함수에 대해 Logistic Regression이나 Neural Network에 비해 더 명확히 해결할 수 있는 알고리즘이다. 우선 Logistic Regression의 Cost Function을 보자. 원래는 y = 0, 1 일 때 두 상황에 다른 함수를 적용해 그래프를 곡선으로 그렸다. 하지만 SVM 에서는 조금 다른 함수를 사용하는데 cost1(z) 함수부터 확인하자면 z가 1 이상일때는 0으로 수렴시켜 대략적으로 cost를 계산한다. cost0(z) 함수는 z가 -1 이하일때만 0으로 수렴시키는 형..

위 그림은 다양한 알고리즘을 이용해 문제를 해결할 때 training set size에 따른 정확도 그래프이다. 결론적으로 말하는 것은 어떤 알고리즘을 가지더라도 data set을 더 많이 training 시킬수록 정확도가 올라간다는 것이다. 여기서 알 수 있듯 machine learning 에서 data set의 크기는 매우 중요하다. 하지만 평수만 주어지고 집값을 예측하는 문제는 단순히 하나의 특징만으로 예측하기 어려운 문제이다. 그렇기에 이런 문제는 data set 이 늘어나도 정확도가 많이 상승한다고 장담할 수 없다. 이에 대한 유용한 방법으로 전문가에게 맡겨 이를 검증하는 것이다. 정확도를 상승시키기 위해 앞 강의에서 봤듯이 많은 parameter을 추가하면 된다. regression 에서 더 ..

이번 챕터에서는 skewed data에 대해 알아볼 예정이다. 앞에서 봤던 cancer classification 문제를 예를 들면 어떤 모델을 설계해 1%의 오류가 발생했다고 가정하자. 그러면 이 모델은 좋은 모델이라고 할 수 있어 보인다. 하지만 train data를 들여다 보니 실제 암 환자가 전체의 0.5% 밖에 안 되었다. 그렇다면 이 모델이 환자 전부를 암에 걸리지 않았다고 판단해도 0.5%의 error만 갖게된다. 그러므로 이 모델이 좋다고 말할 수 없게 된다. 이런 극단적인 데이터를 skewed data 라고 부른다. 데이터가 너무 한 쪽으로 몰려있기에 이런 경우 error 만으로는 모델의 성능을 정확하게 평가하기 힘들다. 모델을 정확하게 판단하기 위해 Precision 과 Recall 이..

메일을 받았을 때 이를 스팸, 비스팸 메일로 구분하는 모델을 생각해보자. 우선 feature을 정해야 하는데 이메일 안에 담긴 단어의 여부를 파악한다. 예를 들어 deal, buy, discount 등등 스팸메일에서 자주 보이는 단어가 등장하면 스팸메일로 분류하는 식이다. 실제로 훈련을 할 때는 수동적으로 단어 100개를 뽑기보단 training set에서 자주 나타나는 10000 ~ 50000 개의 단어를 선택한다. 모델이 더 작은 오류를 갖게 하기 위해서는 아래의 방법들을 사용하면 된다. - 데이터를 많이 모은다. - email header에 기반해 더 정교한 특징을 가진 알고리즘으로 개선한다. - email body에 기반해 더 정교한 특징을 가진 알고리즘으로 개선한다. (ex. 단어의 미세한 차이..

train error와 cross validation(cv) error의 차이를 확인하고 모델의 문제를 확인하고 싶을 때 사용하는 지표가 bias와 variance이다. 왼쪽 상황과 같이 underfit된 상황을 high bias를 갖고 있다고 하고 오른쪽과 같이 overfit된 상황을 high variance를 갖고 있다고 말한다. 그리고 그 중간 상황을 우리가 원하는 정상적인 예측값이다. train error 값과 cv error값이 주어졌을 때 어떤 문제 상황인지 알고 이에 대처하기 위해서는 두 값을 비교해보면 알 수 있다. 위 그래프는 degree of polynomial d값을 x축으로 삼아 두 error값을 나타낸 그래프이다. 위 그림에서 왼쪽과 같이 cv error와 train error가 ..