목록컴퓨터과학 (45)
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으로 수렴시키는 형..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 한 숫자를 정했을 때 그 위의 두 경로 중 가장 최대값을 정하는 문제이다. 양 끝에 위치하는 숫자일 경우 바로 위 하나의 경로만 더하고 나머지 경우는 dp로 저장한 두 최대 경로 중 더 큰 값을 저장한다. #include #include #define MAX 501 using namespace std; vector v[MAX]; int dp[MAX][MAX]; int n, tmp, ans; int main() { ios::sync_with_stdio(0); cin.ti..
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 파티하는 집 x가 주어졌을때 각 집에서 x로 갔다오는 최단거리를 모두 구하고 그 중 최대값을 묻는 문제이다. 한 정점으로부터 모든 정점으로의 최단거리를 구하는 다익스트라를 이용하면 된다. 하지만 주의할 점으로 여기서는 i에서 x로 가고 x에서 i로 가는 두 방향에 대해서 최단거리를 구해야 한다는 것이다. 여기서 문제를 조금 바꿔 해석하면 쉽게 되는데 우선, x에서 모..

위 그림은 다양한 알고리즘을 이용해 문제를 해결할 때 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 이..