728x90
Machine Learning/Theory
13

Gradient Descent(경사하강법)

경사하강법으로는 크게 Gradient Descent와 Stochastic Gradient Descent로 나눌 수 있을 것 같다. 지금은 Gradient Descent에 대한 설명을 시작해보려고 한다. 경사하강법이란? 경사하강법은 반복적인 실행을 통해 에러를 최소화 시킬 수 있는 값을 구하는 방법이다. 여기서 에러라는 것은 실제값과의 다른 정도라고 이해하자. 자, 조금 더 파보자. 아래와 같은 그래프가 있다고 하자. 이 그래프에서 에러가 최소인 지점이 어디일까? 바로 아래 그림처럼 빨간 점으로 표시된 지점일 것이다. 이처럼 육안으로는 최소인 지점을 한 눈에 알아볼 수 있었다. 하지만 컴퓨터에게는 눈이 없기때문에 한 눈에 알아볼 수가 없다. 일단 저 빨간 점을 지나는 접선을 그려보자. 그러면 위 그림처럼 ..

주성분 분석(Principal Component Analysis, PCA)

주성분 분석(Principal Component Analysis)이란 고차원의 데이터를 저차원의 데이터로 차원 축소하는 알고리즘이다. 주로 고차원의 데이터를 3차원 이하의 데이터로 바꿔서 시각화하는데 많이 사용되며, 유용한 정보만 살려서 적은 메모리에 저장하거나 데이터의 노이즈를 줄이고 싶을 때도 사용하는 알고리즘이다. 이해하기 쉽게 시각화 가능한 2차원 데이터를 1차원 데이터로 축소하는 과정을 알아보겠다. 위와 같은 2차원 공간의 데이터들을 직선상의 데이터로 변환하면 다음과 같다. 보다시피 x1과 x2 선상에 옮기면 중첩되는 데이터가 많이 생긴다. 하지만 1차원 직선 상에 옮겨진 데이터들은 하나도 중첩되지 않고 육안으로 7개의 점을 확인할 수 있다.이를 정보이론 측면에서 해석해본다면 고차원 데이터를 저..

로지스틱 회귀(Logistic Regression)

로지스틱 회귀에 대해 설명하기 전 일단 시그모이드 함수에 대해서 알아보자. 시그모이드 함수는 입력값이 크면 클수록 1이라는 값으로 수렴하고, 입력값이 작을수록 0이라는 값으로 수렴하는 함수이다. 또한 0부터 1까지의 값을 가지는 특성 때문에 시그모이드의 출력값은 확률로도 사용될 수 있고, 출력값이 0.5 이상일 경우에는 참, 0.5 이하일 경우에는 거짓이라고 분류하는 분류 모델로도 사용될 수 있다. 선형 회귀의 입력값(x), 출력값 및 로지스틱 회귀의 출력값에 따른 이진 분류 결과를 표로 정리하면 다음과 같다. [표] 선형 회귀 입력값(x) 선형 회귀 출력값(wx) 로지스틱 회귀 입력값(z) 로지스틱 회귀 출력값(y) 이진 분류 0.5 이상: O, 0.5 이하: X -2 -2 0.12 X -1.5 -1...

선형회귀(Linear Regression)

선형회귀 모델이란 회귀 계수를 선형적으로 결합할 수 있는 모델을 의미한다. 여기서 회귀 계수란 무엇이고 선형적으로 결합한다는 것은 무슨 말인지 알아보겠다. 회귀 계수 간단하게 설명하면 1차 함수의 기본 형식인 y = ax+b에서 a 와 b를 회귀 계수라고 한다. 선형 결합 선형 결합(linear combination)은 선형 대수의 벡터의 합에서 나온 개념이다. 즉, 서로 다른 a와 b 벡터를 더해 새로운 벡터를 얻는 과정이라고 말할 수 있다. 또한 가중치를 곱한 후 더하는 것도 선형 결합이다. 예를 들어 2a + b, a + 2b와 같은 것도 a 벡터와 b 벡터의 합을 말한다. 다시 선형회귀에 대해 말하면 선형회귀는 회귀 계수들이 선형 결합된 함수를 뜻하여 이 함수를 통해 데이터의 값을 예측하는 것을 ..

K 평균 알고리즘(kmean++)

순서 데이터 준비 몇 개의 클래스로 분류할 것인지 설정 클러스터의 최초 중심 설정 데이터를 가장 가까운 클러스터로 지정 클러스터 중심을 클러스터에 속한 데이터들의 가운데 위치로 변경 클러스터 중심이 바뀌지 않을 때까지 4번부터 5번 과정을 반복적으로 수행 1. 데이터 준비 데이터 간의 거리를 사용해 가까운 거리에 있는 데이터끼지 하나의 클래스로 묶는 알고리즘이다. 물론 데이터는 수치화된 데이터여야 한다. 2. 몇 개의 클래스로 분류할 것인가 k는 몇 개의 클래스로 분류할 것인지를 나타내는 변수이다. 3. 클러스터의 최초 중심 설정 k 평균의 표준 알고리즘은 클러스터의 최초 중심을 무작위로 설정한다. 그리고 사이킷런의 k 평균 라이브러리는 기본적으로 kmean++라는 알고리즘을 써서 클러스터의 최초 중심을..

[앙상블] 배깅(bagging)과 부스팅(boosting)

앙상블 기법은 여러 개의 분류 모델을 조합해서 더 나은 성능을 내는 방법이다. 크게 배깅(bagging)과 부스팅(boosting)으로 나눌 수 있다. 배깅(bagging) 배깅은 비유하자면 한 명의 중급자보다 두세 명의 초급자가 나누어서 수행하는 것이 더 나은 것과 비슷하다. 여기서 중급자를 과대적합된 모델이라고 할 수 있는데 이런 과대적합이 쉬운 모델에 상당히 적합한 것이 배깅이라고 할 수 있다. 배깅은 한 가지 분류 모델을 여러 개 만들어서 서로 다른 학습 데이터로 학습(부트스트랩)시킨 후, 동일한 테스트 데이터에 대한 서로 다른 예측값들을 투표(어그리게이팅)를 통해 가장 높은 예측값으로 최종 결론을 내리는 앙상블 기법이다. 여기서 부트스트랩과 어그리게이팅에 대해 좀 더 자세히 살펴보자. 부트스트랩..

나이브 베이즈(Naive Bayes)

나이브 베이즈 알고리즘은 대표적인 확률 기반 머신러닝 분류 알고리즘이다. 나이브 베이즈는 데이터를 독립적인 사건으로 보고 이 사건들을 베이즈 이론에 대입시켜 가장 높은 확률의 레이블을 분류해낸다. 베이즈 이론은 다음과 같은 공식으로 표현된다. P(A|B) : 어떤 사건 B가 일어났을 때 사건 A가 일어날 확률 P(B|A) : 어떤 사건 A가 일어났을 때 사건 B가 일어날 확률 P(A) : 어떤 사건 A가 일어날 확률 P(A|B)와 같이 어떤 사건 B가 일어났을 때 사건 A가 일어날 확률을 조건부 확률이라고 한다. 조건부 확률의 공식은 다음과 같다. 머신러닝에서의 나이브 베이즈 공식 P(레이블 | 데이터 특징) = P(데이터 특징 | 레이블) * P(레이블) / P(데이터 특징) 어떤 데이터가 있을 때 그..

의사결정 트리(decision tree)

의사결정 트리는 데이터 분류 및 회귀에 사용되는 지도학습 알고리즘이다. 간단하게 의사결정 트리가 무엇인지 비유하자면 스무고개 놀이와 비슷하다고 말할 수 있다. 즉, 여러 질문을 하여 답을 도출해내는 방법이라고도 할 수 있다. 다음과 같은 데이터를 예시로 설명을 이어가겠다. 이름 군대를 다녀왔는가 긴 생머리인가 성별 김덕수 네 아니요 남자 이쁜이 아니요 아니요 여자 박장군 네 아니요 남자 최빛나 아니요 네 여자 최강민 네 아니요 남자 지화자 아니요 아니요 여자 위 데이터를 바탕으로 각 사람이 남자인지 여자인지를 구별하는 질문을 만든다고 해보자. 먼저 군대를 다녀왔는지를 먼저 물어보면 한 번에 남자와 여자가 분류된다. 하지만 긴 생머리인지 먼저 물어보게되면 정확하게 남자와 여자를 구분할 수 없으므로 이후 군..

SVM(Support Vector Machine)

우선 SVM에 대해서 간략하게 설명하자면 SVM은 '마진'이라는 값을 최대로 하는 결정 경계선을 찾는 것을 목표로하는 분류 알고리즘이다. 결정 경계선이라는 것은 예를 들어서 한강을 기준으로 강북과 강남으로 나뉘어진다고 했을 때 한강이 결정 경계선이 되는 것이다. 이제 다음과 같은 용어들의 개념을 하나씩 알아보겠다. 서포트 벡터(support vector) 마진(margin) 비용(cost) 커널 트릭(kernel trick) 서포트 벡터 서포트 벡터는 결정 경계선과 가장 가까이 맞닿은 데이터 포인트를 의미한다. 결정 경계선하고 가장 가까운 데이터의 위치라고도 할 수 있겠다. 마진 서포트 벡터와 결정 경계 사이의 거리를 마진이라고 한다. 위에서도 언급했듯이 이 '마진'을 최대로..

k-최근접 이웃(k-Nearest Neighbor, kNN)

kNN 알고리즘은 데이터 분류에 사용되는 아주 간단한 지도학습 알고리즘이다. kNN의 이해 kNN 알고리즘은 주변 데이터에게 물어봐서 현재 데이터가 무엇인지 판단하는 알고리즘이라고 할 수 있다. 구체적으로 말하면 기존의 데이터 안에서 현재 데이터로부터 가까운 k개의 데이터를 찾아 k개의 레이블 중 가장 많이 분류된 값으로 현재의 데이터를 분류하는 알고리즘이다. 예를 들어서 주변에 가장 가까이있는 5명에게 "여기는 강남일까요, 강북일까요?"라고 물어보는 상황을 생각해보자. 그리고 4명은 강남, 1명은 강북이라고 대답했다면 현재 위치는 강남이라고 판단할 수 있을 것이다. 바로 여기서 k가 5명을 가리키고 이 방법이 kNN 알고리즘이라 한다. 그렇다면 실제 데이터 간의 거리는 어떻게 알 수 있을까?? 우선 대..

728x90