프로그래밍(23)
-
Bias & Variance
* 첨부자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Bias & Variance 이번 포스팅에서 살펴볼 내용은 우리가 Machine Learning 을 통해 구현한 알고리즘의 성능을 진단하고, 오류를 수정하는 방법과 절차에 대한 것이다. 우리가 예측한 알고리즘을 검증하는 방법은 다음과 같았다.1. 알고리즘을 학습시킬 데이터를 더 모은다. 2. 비슷한 류의 Parameter set으로 알고리즘을 수행해본다.3. 추가적인 Parameter를 알고리즘에 집어넣는다.4. Polynomial 한 Parameter를 추가한다.5. Regularization parameter lambda의 값을 증가시키거나 감소시킨다. (즉, 각 항의 영향력을 감소시키거나 증가시켜본다.) 하지만 여전히, 위의 방법..
2019.02.12 -
[BOJ_1812 | Math] 사탕
풀이 깔끔한 수학 구현 문제였다. 입력케이스의 개수가 홀수 개여서 복잡하게 머리를 굴리지 않아도 된다. 문제를 해결하는 기본 원리는 다음과 같다.입력으로 들어오는 모든 숫자들을 더한다음 2로 나누면, 1~N까지의 학생들이 가지고 있는모든 사탕의 수가 나오게 된다.(왜냐하면 모든 수를 다 두 번씩 더하기 때문 1+2 2+3 3+1) 거기에 지금 구하고자 하는 학생을 제외한 나머지 학생들의 사탕의 개수들의 합을 빼주면지금 구하고자 하는 학생의 사탕의 개수가 나오게 된다. 1 = (1+2+3) - (2+3)2 = (1+2+3) - (3+1)3 = (1+2+3) - (1+2) 이 식을 N에 대해 일반화하면 금방 정답을 구할 수 있다. 소스 코드 1234567891011121314151617181920212223..
2019.02.10 -
[BOJ_1629 | Divide & Conquer] 곱셈
풀이 처음에 문제를 접근 할 때에는 그냥 반복문을 n번정도 돌리면서 곱하고, 그 값이 c보다 커지면 한번씩 나누어 나머지를 구해주고 이렇게 계산을 반복하면 되는 것 아닌가? 하고 생각했다. 이렇게 생각하면 굉장히 단순하고 구현또한 어렵지 않았기 때문에 왜 정답률이 30%가 채 안되는지 이해할 수 가 없었지만..Online Judge에 코드를 넣고 돌려본 뒤에 시간초과가 뜨는 걸 확인하고아 O(n)으로 풀면 안되는 문제였구나 라는 생각이 들었다. 정수의 거듭제곱을 구하는 알고리즘은 여러가지가 있다.그 중 가장 단순하고 구현하기 쉬운 알고리즘은 물론 a를 b번 반복하면서 곱해주는 것이지만시간복잡도가 O(n)으로 비교적 오래 걸리는 알고리즘이다. 그래서 나온 것이 바로 Divide & Conquer 방법을 사..
2019.02.09 -
Neural Networks(3) - Cost Function & BackPropagation
*첨부자료의 모든 저작권은 Coursera에 있음을 미리 밝힙니다. Neural Networks(3)- Cost Function & BackPropagation 이번 시간에는 Neural Networks의 Cost Function에 대해 살펴보고 저번 포스팅에서 살펴보았던 Forward Propagation에 이어 error 를 최소화하기 위한 하나의 방법인Back Propagation Algorithm에 대해서 간략하게 살펴보고자 한다. Cost Function의 식은 Logistic Regression의 식과 굉장히 비슷하다. 아니 사실상 동일하다고 봐도 무방하다. 한 가지 차이점은, h(theta) 함수, 즉 가설함수의 개수(Neural Network의 경우 k개, Logistic Regressio..
2019.02.08 -
Multi-Class Classification with Octave
Programming Exercise 3: Multi-class Classification & Neural Networks 이번 프로그래밍 과제에서는 hand-written digit들의 픽셀정보를 저장한 data matrix를 기반으로각 digit들이 0~9 사이의 어떤 수를 나타내는지를 판단하는One vs all Multi-class Classification model을 구현하였다. 두 번째 과제로는 간단한 Layer 3의 Neural Networks를 구현하도록 하였다. 구현해야 하는 파일은 다음과 같았다. ex3.m - Octave/MATLAB script that steps you through part 1 ex3 nn.m - Octave/MATLAB script that steps you t..
2019.02.08 -
[BOJ_1940 | While] 주몽
풀이 반복문의 성질을 잘 이용해서 풀어야 하는 문제이다. 먼저 주어진 고유 번호를 arr 배열에 저장한 후 정렬한다.Java의 Arrays.sort를 이용하면 데이터 크기에 맞게 O(nlogn) 시간복잡도를 가지는 정렬 알고리즘으로Java가 데이터를 잘 정렬해 준다. 정렬해 준 데이터를 while문 안에 넣고 연산을 수행하면 된다.연산 과정은 다음과 같다.start = 0, end = num.of data -1 로 놓고 시작한다. 만약 arr[end]가 m보다 클 경우 end를 1만큼 감소시키고 continue한다.그렇지 않을 경우 i를 start부터 end-1까지 반복하면서 arr[i]+arr[end] == m이 되는 i의 값을 찾는다.값이 없으면 end를 감소시키고 continue, 값이 있으면 co..
2019.02.07