본문 바로가기

파이썬/머신러닝

(18)
딥러닝의 기본이 되는 인공신경망과 딥러닝 기초 딥러닝은 머신러닝의 한 방법으로 대용량 비정형 데이터 분석을 위한 인공신경망 기반 머신러닝 알고리즘이다. 연속된 층(layer)에서 점진적으로 의미 있는 표현을 배우는데 강점이 있다. 딥러닝의 딥(deep)이라는 단어 때문에 다소 혼란이 올 수 있지만 이 '딥'은 모델을 만드는데 얼마나 많은 층을 사용했는지를 의미한다. 최근의 딥러닝 모델은 표현 학습을 위해 수 십, 수 백개의 연속된 층을 사용한다. 현재 딥러닝은 이미지 인식, 음성인식, 자연어처리 등 인공지능 분야의 핵심 기술로 자리잡았다. 1. 인공신경망(RNN) 인공신경망은 사람 두뇌의 신경세포인 뉴런이 전기신호를 전달하는 모습을 모방한 머신러닝 모델이다. 입력값을 받아서 출력값을 만들기 위해 활성화 함수를 사용한다. 뉴런은 간단한 계산 능력을 가..
나이브베이즈 가장 기초적인 지도학습 모델 나이브베이즈는 가장 기초적이고 간단한 지도학습 모델입니다. 텍스트 분류를 위해 전통적으로 사용되는 분류기이기도 하며 속도가 빠르고 정확도도 높은 편입니다. 나이브베이즈를 알기 위해서는 우선 베이즈 정리를 알아야 합니다. 베이즈 정리는 어떤 사건이 서로 배반하는 두 원인에 의해 일어난다고 가정할 때, 실제 사건이 일어났을 시 두 원인 중 하나일 확률을 구하는 것입니다. 쉽게 이야기 해서 조건부 확률입니다. 기본적으로 나이브베이즈는 모든 feature가 서로 독립이고 동등하게 중요하다고 가정합니다. 즉, 나이브베이즈가 잘 작동하기 위해서는 기본적으로 특성들 사이에 연관성이 없어야 하고 특별히 중요하거나 특별히 중요하지 않은 특성이 있으면 안됩니다. 현실적으로 feature가 많은 데이터셋에서는 사용되기 어려..
로지스틱 회귀 개념 알아보기, 선형회귀와의 차이점 로지스틱 회귀는 가장 기본적인 분류 모델 중 하나입니다. 이름은 회귀이지만 실질적인 작동 방식은 분류에 가깝습니다. 로지스틱 회귀는 데이터가 어떤 범주에 속할 확률을 0에서 1 사이 값으로 예측하고 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류합니다. 보통 0.5를 기준으로 하며, 0.5보다 크면 1, 작으면 0으로 분류합니다. 로지스틱 회귀는 독립변수의 선형 결합을 이용해 사건의 발생 여부를 예측하며 종속변수가 범주형일 경우에 사용하는 회귀분석입니다. 종속변수의 범주가 2개이면 이항 로지스틱 회귀 분석, 2개 이상이면 다항 로지스틱 회귀분석이라고 합니다. 로지스틱 회귀를 이해하려면 일단 선형회귀 개념을 알아야 합니다. 선형회귀 개념 Linear Regression 선형회귀 파이썬 코드 예..
k-평균 군집화 알고리즘 기본 개념과 예제 머신러닝은 크게 지도 학습과 비지도 학습으로 나뉩니다. 지도 학습은 정답이 정해진 것(=데이터에 레이블이 있음), 비지도 학습은 정답이 정해지지 않은 것(=데이터에 레이블이 없음)입니다. 현재 대부분의 머신러닝은 지도 학습 기반이지만 실제 현실에서 사용하는 데이터 중 대부분은 레이블이 없습니다. 비지도 학습은 크게 군집, 이상치 탐지, 밀도 추정 3가지 영역으로 나눌 수 있습니다. 이번 포스팅에서는 군집, 그 중에서도 가장 유명하고 보편적인 군집 알고리즘인 k-평균 군집분석에 대해 살펴보겠습니다. k-평균 군집(k-means) 우선 군집은 비슷한 샘플을 구별해 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 알고리즘입니다. 클러스터에 대한 보편적인 정의는 없으며 상황에 따라, 알고리즘에 따라 다르고 종류도..
차원 축소 PCA(주성분 분석) 기본 개념 - 투영과 매니폴드 학습 먼저 읽어보면 좋은 글 ▼▼▼▼▼▼▼▼ 차원의 저주 개념 지난번 포스팅에서는 차원의 저주에 대해 알아봤고 이번에는 차원의 저주를 해결하는 방법인 차원 축소에 대해 알아보자. PCA 알고리즘을 공부하기 전에 차원 축소 접근법인 투영과 매니폴드 학습법부터 먼저 짚고 넘어가자. 투영 투영은 고차원 공간에 있는 훈련 샘플을 저차원 공간에 그대로 수직으로 옮기는 것이다. 위의 예시에서 보듯 3차원 데이터를 2차원에 투영해도 데이터 특성이 크게 뭉개지지 않고 거의 그대로 보존된다. 다만 항상 투영법이 통하는 것은 아니다. 이렇게 스위스롤처럼 데이터가 말려있는 경우라면 X3을 버리고 그냥 평면에 투영시켜버리면 아래처럼 데이터가 뭉개져버린다. 왼쪽이 그냥 투영시켰을 때의 모습이다. 데이터가 구분되지 않고 완전히 뭉개져..
차원의 저주 개념, 발생 원인과 해결 방법 머신러닝에서 훈련 샘플이 수백, 수천만개 특성을 갖고 있으면 훈련이 느리고 좋은 결과값을 얻기도 다소 어렵다. 이를 차원의 저주라고 부른다. 오늘 포스팅에서는 차원의 저주에 대해 자세히 다뤄보겠다. 차원의 저주란? 차원의 저주란 차원이 증가하면서 학습데이터 수가 차원 수보다 적어져서 성능이 저하되는 현상을 일컫는다. 차원이 증가할수록 변수가 증가하고, 개별 차원 내에서 학습할 데이터 수가 적어진다. 이때 주의할 점은 변수가 증가한다고 반드시 차원의 저주가 발생하는 것은 아니다. 관측치보다 변수 수가 많아지는 경우에 차원의 저주 문제가 발생하는 것이다. 위 그림에서 보는 것과 같이 차원이 증가할수록 빈 공간이 많아진다. 같은 데이터지만 1차원에서는 데이터 밀도가 촘촘했던 것이 2차원, 3차원으로 차원이 커..
서포트벡터머신(SVM) 개념과 주요 파라미터 정의 서포트벡터머신(SVM)은 모델 성능도 좋고 선형, 비선형 분류, 회귀, 이상치 탐색 등에 다목적으로 사용할 수 있는 강력한 ML모델이다. SVM 개념 SVM은 결정경계(Decision Boundary)를 정의하는 모델이다. 위 그림에서 실선은 빨간색, 파란색 두 개의 클래스를 정확하게 분류한다. 선 밖에 새로운 훈련 샘플이 추가되어도 결정경계에는 전혀 영향을 미치지 못하지만 경계에 걸쳐있는 샘플은 그렇지 않다. 점선에 걸쳐있는 샘플들은 boundary가 더 밖으로 밀려나게끔 한다. 이렇게 결정경계에 위치해서 Boundary에 결정적인 영향을 미치는 샘플을 서포트 백터라고 부르며, 결정경계와 서포트 백터 사이의 거리를 Margin(마진)이라고 한다. 위 그래프에서 클래스를 분류하는 결정 경계 중 어떤 것이..
경사하강법(Gradient Descent)과 learning_rate 조정의 중요성 경사하강법은 가장 일반적인 최적화 알고리즘이다. gradient는 비용함수의 미분값으로, 경사하강법은 비용 함수를 최소화하기 위해 반복적으로 파라미터를 조정한다. 고등학교 때 미분 배웠던걸 생각해보자. 위와 같은 이차함수에서 편미분값=0이 되는 지점이 함수의 최소값이다. 마찬가지로 경사하강법도 임의의 초기값에서 시작해 학습스텝의 크기만큼 MSE가 감소되는 방향으로 진행해 최소값에 수렴할 때까지 파라미터를 조정한다. 이 때 학습 스텝의 크기가 매우 중요하다. 학습 스텝의 크기는 learning_rate 파라미터로 조정한다. 만약 learning_rate가 너무 작다면 알고리즘이 최소값에 수렴할 때까지 아주 오랜 시간이 걸릴 것이다. 반대로 learning_rate가 너무 크다면 점진적으로 하강하지 못하고 ..