분류 전체보기(289)
-
Learning Curves
* 첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Learning Curves 이번 시간에는 머신 러닝 알고리즘이 데이터를 가지고 학습을 할 때에 얼마만큼의 에러를 발생시키는지를 알아보는 Learning Curve(학습 곡선)에 대해 알아보려고 한다. 머신 러닝 알고리즘을 적은 개수의 데이터로 훈련시키게 되면, (예를 들어 1개, 2개, 3개)Training Set의 데이터에 대해서 알고리즘은 Error 값이 0 인 Quadratic Curve h를 예측해 낼 수 있다.하지만 이 에러는 Training Set에만 해당되는 값이므로 Test Set이나 Cross-Validation Set의데이터에 대해서는 굉장히 큰 오류를 일으킬 수 있다. 같은 원리로, Training Set의 크..
2019.02.20 -
Dimensionality Reduction - Data Compression & PCA
* 첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Dimensionality Reduction - Data Compression & PCA 이번에는 주어진 데이터셋의 차원을 낮추는 Data Compression과 그 일종인 PCA에 대해서 알아보고자 한다. 고차원의 데이터에서는 관측단계도 기하급수적으로 증가하고메모리도 굉장히 많이 차지하기 때문에 많은 문제점이 발생하게 된다.즉, 차원이 증가하면 이를 표현하기 위한 데이터의 양이 기하급수적으로 증가한다는 것이다. 따라서 기계학습을 시키기 위해서는 이 데이터의 차원을 축소하여 다룰 필요가 생기는데, 이를 차원 축소(DImensionality Reduction)라 한다. 차원 축소의 의미는 바로 "데이터의 의미를 잘 표현하는 특징을 추..
2019.02.16 -
UnSupervised Learning - K means Algorithm
* 첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다 Unsupervised Learning- K means Algorithm 지금까지 살펴본 기계학습 방법들은, (크게는 Linear Regression과 Logistic Regression을 사용한 분류 방법부터 좀더 구체적으로는 Linear Regression, One vs One, One vs All 까지) 모두 지도학습 (Supervised Learning) 을 통해 데이터를 훈련시켰다. Supervised Learning 이란 데이터셋을 제공할 때 이 데이터 셋이 출력해야 하는 결과값(y)까지 제공하는 것으로주어진 데이터를 훈련시켜 알고리즘이 어떤 결과를 가져와야 하는지를 알려주는 훈련 방법이다. 예를 들면 위 그림과 같다. x..
2019.02.16 -
[BOJ_1182 | DFS backtracking] 부분집합의 합
풀이 DFS 백트래킹을 이용해서 풀 수 있는 문제였다.부분집합의 모든 경우를 헤아린다든지 하는 문제에서는 DFS를 통해재귀함수가 알아서 처리하도록 하는 편이 코딩하는 데 더 간편한 것 같다. 이 문제를 풀 때 주의해야 할 점은탐색을 하다가 S값을 찾았다고 해서 서둘러 탐색을 종료해서는 안된다는 것이다.예를 들어 S 값이 10이라고 할 때 1, 2, 3, 4 를 순서대로 탐색하고 '아 10이니까 이제 종료하고 다른 케이스를 살펴봐야지'하면 안된다는 의미인데, 왜냐하면 Array의 원소 중에 음수인 경우가 있으므로1, 2, 3, 4, -5, 5인 경우도 합이 10이 되는 케이스가 있을 수 있기 때문이다.따라서 S값을 찾았을 때는 counter의 값만 증가시켜주고 탐색을 계속해야 한다. 소스코드 import ..
2019.02.15 -
[BOJ_10799 | Stack] 쇠막대기
풀이 스택을 이용해서 풀어야하는 문제였다. 물론 반복문을 이용해서 풀 수도 있겠지만, 스택을 활용하면 문제풀이가 훨씬 용이해진다.간단히 정리해보자면, 스택은 FIFO(First in First out)을 특징으로 하는 자료구조이다.말 그래도, 먼저 넣은 데이터가 먼저 나오게 하는 구조인 것이다.이를 이용해서 쇠막대기를 레이저로 자를때 한번에 몇개씩 자르는지를 쉽게 구할 수 있다. *출처 Wikipedia 원리는 다음과 같다.'(' 가 나오면 스택에 '(' 를 집어넣고 막대기의 개수를 하나 추가한다.예를 들어 '((((' 이런식인 경우 계속 스택에 쌓기만 하는 것이다.막대기의 개수는 4개가 될 것이다. 그 다음이 중요한데, 만약 ')' 가 나오는 경우 "막대기의 개수를 하나 줄이고" 막대기의 개수만큼 총 ..
2019.02.15 -
Spam Classifier - implementation with Octave
* 첨부된 자료의 저작권은 COURSERA에 있음을 미리 밝힙니다. Spam Classifier - Implementation with Ocave 이번 시간에는 지난 시간에 논의한 바를 바탕으로 Spam Classifier 모델을 직접 구현해보았다.Spam Classifier Algorithm이 이메일을 분류하는 과정은 다음과 같다. 1. Preprocessing Emails 이메일을 처리하기 전에, 프로그램이 이메일을 처리하기 쉽도록 '전처리'단계를 밟아주는 것이 중요하다. 이 전처리 단계에서는 숫자들, 특수기호들, 서로 다른 URL주소들 등을 각자의 기준을 가지고 지정된 특정한 String으로 대체해 주는 것이다.예를 들어 모든 이메일 주소들은 "emailaddr", URL 주소들은 "httpaddr..
2019.02.14