목록전체 글 (34)
동삼이의 노트북
다이나믹 프로그래밍(Dynamic programming)은 컴퓨터의 연산 속도를 비약적으로 향상시킬 수 있는 방법 중의 하나이다. 이런 다이나믹 프로그래밍으로 해결할 수 있는 가장 대표적인 예는 피보나치 수열이 있다. 피보나치 수열은 1202년 레오나르도 피보나치의 토끼 번식에 관한 문제를 통해 언급되었다. 이 전에도 이 수열에 대한 연구가 진행된 흔적이 발견되었지만, 체계화된 수열 연구를 진행한 레오나르도 피보나치의 이름을 따서 피보나치 수열이라는 이름으로 널리 알려져있다. 피보나치 수열은 이전 두 항의 합을 현재의 항으로 하는 수열이다. 피보나치 수열의 특징은 아래와 같다. n번째 피보나치 수 = (n - 1) 피보나치수 + (n - 2) 피보나치수 1번째 피보나치수와 2번째 피보나치수는 1임 이러한..
서포트 벡터 머신(Support Vector Machine, SVM)은 선형이나 비선형 분류, 회귀, 이상치 탐색 등 범용성이 좋은 강력한 다목적 머신러닝 모델이다. SVM은 특히 복잡한 분류 문제에 잘 들어맞으며 작거나 중간 크기의 데이터셋에 적합하다. 이번 포스팅에서는 SVM의 핵심 개념 및 간단한 예제를 살펴보기로 하고 다음 포스팅에서 디테일한 작동원리를 다룬다. 선형 SVM 분류 SVM의 기본 개념을 살펴보기 위해 이전에 사용했던 사이킷 런의 붓꽃 데이터를 예시로 든다. 두 종류의 붓꽃 Versicolor와 Setosa를 구분하는 직선을 만드려고 한다. 두 붓꽃은 선형적으로 잘 구분되는 클래스이다. 왼쪽 그래프의 세 직선이 보인다. 각 직선은 결정 경계를 의미하는데, 결정 경계란 클래스를 구분 짓..
순차 탐색 보통 코딩을 배우다 보면 흔치 않게 탐색 알고리즘을 작성할 때가 많다. 어느 한 리스트에서 특정 값을 찾을 때나 아니면 그 리스트 안에 원소의 개수를 세는 count() 메소드와 같은 방식으로 작성한다. 우리가 흔히 작성하는 탐색 알고리즘은 순차 탐색 알고리즘으로, 리스트안에 원소를 앞에서 부터 하나씩 확인해 가면서 탐색하는 방식이다. 간단히 예를 들어서, 원소 A B C D E가 포함되어 있는 리스트가 있다고 가정할 때, 리스트에서 C 값을 탐색하고자 한다면 앞에서부터 순차적으로 탐색을 시작한다. 첫 번째 원소 A를 비교했을 때, 찾고자 하는 문자열인 C와 다르기 때문에 넘어간다. 두 번째 원소 B를 비교했을 때도 찾고자 하는 문자열인 C와 다르기 때문에 넘어간다. 세 번째 원소 C를 비교할..
여기 두 개의 예측이 있다. 평균 재정 손실은 4000만원 이다 95% 신뢰구간의 재정 손실은 1000만원 ~ 7000만원이고 68% 신뢰구간의 재정 손실은 3000만원 ~ 4000만원이 될 것이다. 위 두개의 예측 중에서 어떤 것이 더 유용하게 쓰일 수 있을까? 당연히 2번일 것이다. 우리는 이전 포스팅을 통해, 혹은 이미 너무 많이 접해서 선형 회귀는 아마 익숙할 것이다. 선형 회귀는 대개 최소자승법(OLS)을 통해 회귀식을 만들고 예측값을 예측한다. 위 1번 예측이 최소자승법을 통해 구해낸 예측 값이다. 그렇다면 두 번째 예측은 무엇일까? 바로 Quantile Regression(분위 회귀)이다. 최소자승법은 쉽게 말해 예측 값 범위 중 평균에 해당하는 값을 구하는 방식이다. 그렇다면 예측 값의 범..
이전 포스팅에서 다뤘던 로지스틱 회귀는 여러 개의 이진 분류기를 훈련시켜 연결하지 않고 직접 다중 클래스를 지원하도록 일반화 될 수 있다. 이를 소프트맥스 회귀(Softmax Regression) 혹은 다항 로지스틱 회귀(Multinominal logistic regression)라고 한다. 샘플 x가 주어지면, 먼저 소프트맥스 회귀 모델이 각 클래스 k에 대한 점수 s(x)를 계산하고 그 점수에 소프트맥스 함수(또는 정규화된 지수함수)를 적용하여 각 클래스의 확률을 추정한다. 각 클래스는 자신만의 파라미터 벡터 Wk 가 있다. 이 벡터들은 파라미터 행렬에 행으로 저장된다. 위 식에서 샘플 x에 대한 각 클래스의 점수가 계산되면 소프트맥스 함수를 통과시켜 클래스 k에 속할 확률 pk를 추정할 수 있다. ..
로지스틱 회귀는 회귀 알고리즘 중에서 분류에 사용할 수 있는 알고리즘이다. 이는 샘플이 특정 클래스에 속할 확률을 추정하는데 사용된다. 추정 확률이 50%가 넘으면 모델은 그 샘플이 해당 클래스에 속한다고 예측한다. 즉 레이블이 1인 양성 클래스가 되는 것이고 50%보다 낮으면 레이블이 0인 음성 클래스가 된다. 이를 이진 분류기라고 한다. 확률 추정 로지스틱 회귀는 선형 회귀와 같이 입력 특성의 가중치 합을 계산하고 편향을 더하는 식으로 작동한다. 대신 선형 회귀처럼 바로 결과를 출력하지 않고 결과값의 로지스틱(logistic)을 출력한다. 로지스틱은 0과 1사이 값을 출력하는 시그모이드 함수(sigmoid function)이다. 함수는 다음과 같이 생겼다. 로지스틱 회귀 모델이 샘플 x가 양성 클래스..