목록ML & DL/Coursera-ML (21)
실제로 SVM을 사용할 때 중요한 부분에 대해 알아본다. 요즘에는 SVM을 쉽게 사용할 수 있는 좋은 라이브러리들이 많으니 처음부터 구현할 필요 없이 이를 통해 SVM을 쉽게 사용할 수 있다. 그러나 이러한 라이브러리를 사용한다 하더라도 우리가 해야 하는 것들이 있다. 첫째 C, 𝝈 등의 파라미터 값을 선택해야 한다. C, 𝝈에 따라 bias/variance effect가 달라질 수 있기 때문에 적절한 값으로 잘 선택해야 한다. 둘째, 어떤 커널을 사용해야 할지 선택해야 한다. 물론 커널을 사용하지 않을 수도 있다. 이러한 경우를 linear kernel이라고 부른다. SVM을 사용할 때 Linear kernel을 사용한다는 뜻은 커널을 사용하지 않는다는 뜻이다. 때론 linear kernel을 사용하는..
SVM을 Complex nonlinear classifier로 사용하기 위한 Kernel에 대해 알아본다. 다음과 같은 data를 잘 분류하는 Non-linear decision boundary가 있을 때, 이와 같은 boundary는 오른쪽과 같은 굉장히 복잡한 다항식을 사용한 모델일 것이며 이때 가설 h(x) 값이 0 이상이면 1, 그렇지 않으면 0으로 예측할 것이다. 그리고 x1, x2, x1*x2의 feature를 f1, f2, f3와 같이 다른 표기법으로 나타내어 h(x)를 표현할 수 있다. 컴퓨터 비전 문제를 풀 때 굉장히 복잡한 고차 다항식 모델을 사용하게 될 것이고 이러한 모델은 계산량이 매우 expensive하다는 단점이 있다. 그럼 f1, f2, f3와 같은 새로운 feature를 잘 ..
지도학습에서 자주 사용하는 알고리즘 중 하나인 SVM에 대해 알아본다. SVM에 대해 알아보기 전 익숙한 로지스틱 회귀를 다시 보자. 로지스틱 회귀에서 가설 h(x)의 정의는 시그모이드 함수를 사용하였다. 만약 y=1인 data가 있을 때 정확히 예측하고 싶다면 h(x)의 값이 1에 가까워야 한다. 다시 말해z가 0보다 매우 클 수록 1에 가까워지게 된다. 반대로 y=0인 데이터가 있을 때는 h(x) 값이 0에 가까워지길 원한다. 따라서 z값이 매우 매우 작은 값이 될 수록 좋다. 로지스틱 회귀의 cost 값은 다음과 같다. Y=1일 때 z값은 매우 클 수록 좋다고 했다. 그 이유는 z가 크면 클 수록 아래에 있는 cost 값이 점점 줄어들기 때문이다. 이제 cost function을 조금 수정하여 직선..
머신러닝에서 데이터가 가지는 중요한 특징에 대해 알아본다. For breakfast I ate _ eggs.라는 문장에서 빈칸에 들어갈 단어 중 적절한 단어를 분류해야 한다. 4 개의 알고리즘으로 실험했을 때 모두 다 데이터 셋이 많으면 많을 수록 성능이 향상되는 모습을 보여주었다. Large data set이 성능 향상에 도움이 된다는 이론적인 해석을 위해 feature x가 y를 예측하기 위해 충분한 정보를 담고 있다고 가정해보자. For breakfast I ate _ eggs.라는 문장에서 빈칸 주위에 여러 단어들이 feature가 되며 이를 보고 to, two, too 중 어떤 단어가 들어가야 하는지 선택할 수 있다. 이와 상반된 예시로 집값을 예측해야 하는 문제에서 고려할 수 있는 featur..
Skewed classes를 가지고 있는 data의 error metric에 대해 알아본다. 암을 진단하는 로지스틱 회귀 모델을 열심히 트레이닝해서 test set에 대해 평가를 해보니 error가 1%밖에 되지 않았다. 정확도가 99%가 나왔기 때문에 굉장히 좋은 모델인 것 같다. 그런데 test set을 확인해보니 전체 환자 중 진짜 암에 걸린 환자는 0.5%밖에 되지 않았다. 만약 모델이 모든 환자에 대해서 그냥 y=0이라고 결과를 낸다면 정확도는 99.5%가 된다. 왜냐하면 암에 걸리지 않은 환자가 99.5%나 있기 대문이다. 따라서 우리가 열심히 트레이닝한 모델보다 정확도가 더 높은 모델이 나온다. 정확도가 99.5%가 나오긴 했지만 모든 환자에 대해 y=0이라고 진단하는 모델은 좋은 모델이라고..
머신러닝 시스템을 설계하기 위해 어떻게 해야 하는지 알아본다. 스팸메일 분류 시스템을 만든다고 해보자. 왼쪽은 스팸메일이고 오른쪽은 스팸메일이 아니다. 스팸메일의 경우 의도적으로 단어의 철자를 제대로 사용하지 않는 것을 볼 수 있다. 이와 같이 이러한 메일 data set이 있고 스팸인지 아닌지에 대한 라벨링이 붙어있다고 하자 그러면 지도학습을 통해서 어떻게 스팸 분류 시스템을 만들어야 할까? 스팸메일 분류 시스템을 설계하기 위해서 해야 할 첫번째 순서는 이메일이라는 데이터에서 feature x를 정의하는 것이다. Feature x와 이에 대한 labeling y가 존재한다면 앞서 배웠던 로지스틱 회귀와 같은 방법을 사용해서 분류를 할 수 있을 것이다. 여기서 feature x는 이메일에서 존재할 수 있..
High bias, high variance 문제에 대해 알아본다. High bias와 high variance는 이전에 배웠던 것처럼 모델의 underfit, overfit 문제를 의미한다. 만약 사용하고자 하는 모델의 다항식 degree가 작다면 학습 데이터를 잘 맞추지 못 할 것이다. 이 문제는 High bias(underfit)문제가 된다. 반면에 상대적으로 큰 degree를 사용한다면 모델이 학습 데이터를 매우 잘 맞출 수 있지만 다른 test data는 잘 맞추지 못 할 것이다. 이 때의 문제는 High variance(overfit)문제가 된다. 따라서 둘 사이의 trade off로 적절한 모델을 찾는 것이 중요하다. Degree of polynomial D와 error 그래프를 통해 Hig..
효율적으로 머신러닝 알고리즘의 성능을 개선할 수 있는 테크닉에 대해 알아본다. 집 값을 예측하는 선형 회귀 시스템을 만들었다고 해보자. 그러나 test 시에 우리의 hypothesis가 잘 작동하지 않는다면 어떻게 해야 할까? 뭐 여러가지 방법들이 있을 것이다. Training data를 더 많이 모아보는 것, feature의 수를 줄여보는 것, 다른 feature를 추가해보는 것 등등 그런데 트레이닝 데이터를 열심히 모으는데 시간이 너무 많이 걸린다면? 만약 수개월이 걸려서 트레이닝 데이터를 모아서 다시 학습을 시켰는데도 성능이 개선되지 않는다면 이러한 과정은 분명 엄청난 시간을 낭비한 것이다. 대부분의 사람들은 직감에 따라 이런 저런 시도를 해보기 때문에 시간을 낭비하게 된다. 따라서 어떤 방법이 도..