여러 분류기를 하나로 연결하여 개별 분류기보다 더 좋은 일반화 성능을 달성하는 방법을 앙상블이라 한다. 여러 분류 알고리즘을 사용하는 투표Voting 기반 방법과 하나의 분류 알고리즘을 여러 번 사용하는 배깅Bagging, 부스팅Boosting 방법이 있다. 투표 방법: 동일한 학습 데이터를 사용한다. 배깅: 각 모델마다 서로 다른 학습 데이터를 추출하여, 여러 개의 모델을 생성 (Random Forest 등) 부스팅: 샘플링에서 잘못 분류된 데이터 50%를 재학습에 사용 또는 가중치를 사용 다수결 투표Majority Voting 동일한 데이터로 여러 개의 모델을 구축한다. (선형 회귀, 결정 트리 등) 이후 각 결과값의 다수결 투표를 진행하여 최종 예측값을 낸다. 배깅Bagging 알고리즘마다 별도의 ..
사이킷런 파이프라인 사이킷런의 pipeline 클래스는 연속된 변환을 순차적으로 처리할 수 있는 기능을 제공하는 유용한 래퍼 도구이다. 전처리와 모델 등을 설정하고, 학습 데이터와 테스트 데이터를 넣어 편리하게 성능을 측정할 수 있다. pipe_lr = make_pipeline(StandardScaler(), PCA(n_components=2), LogisticRegression(solver='liblinear', random_state=1)) pipe_lr.fit(x_train, y_train) y_pred = pipe_lr.predict(x_test) print('테스트 정확도: %.3f' % pipe_lr.score(x_test, y_test)) 교차 검증 교차 검증이란, 머신러닝 모델의 성능을 검..
주성분 분석은 비지도 학습 기반 차원 축소 방법 중 하나로, 사영 후 원 데이터의 분산을 최대한 보존할 수 있는 기저인 Principal Axis/Principal Component를 찾아 차원을 줄이는 방법이다. 데이터를 사영시켰을 때, 손실되는 정보의 양이 적은 기저(축)을 찾아서 선택한다. PCA의 배경 데이터 X의 사영 변환된 변수(주성분) Z에서 분산이 보존되도록 하는 기저 a를 찾는 것. Z1=aT1X=a11X1+a12X2+⋯+a1pXpZ2=aT2X=a21X1+a22X2+⋯+a2pXp 공분산Covariance 공분산은 변수의 상관 정도로, n개의 데이터와 ..
차원 축소는 데이터 전처리의 일종으로, 말 그대로 데이터의 차원을 줄이는 과정이다. 고차원 데이터를 머신러닝에 적합한 저차원의 데이터로 축소한다. 차원의 저주Curse of Dimension 차원이 증가할 수록 동일 정보량을 표현하기 위해 필요한 데이터의 수가 지수적으로 증가한다. 차원이 증가하면서, 학습 데이터 수가 차원 수보다 적어져 모델 성능이 저하된다. 데이터 차원이 증가할 수록, 데이터들의 밀도가 희박sparse해져서 학습이 어려워진다. 데이터의 수에 비해 특성의 수가 많아지면 발생한다. 차원 축소 배경 이론적으로, 차원의 증가는 모델의 성능을 향상시킨다. (각 변수가 독립일 경우) 그러나 실제로는 차원의 증가가 모델 성능 저하를 야기한다. 각 변수들이 상관관계가 있고, 노이즈가 존재하기 때문 ..
군집화란, 유사한 속성을 갖는 데이터를 n개의 군집으로 나누는 것이다. 좋은 군집화는 동일한 군집에 소속된 데이터는 서로 유사하게(inter-class similarity), 상이한 군집에 소속된 데이터는 서로 다르게(intra-class dissimilarity) 군집화하는 것이다. 분류와 군집화 분류는 사전 정의된 범주가 있는 데이터로부터 예측 모델을 학습하는, 지도 학습 문제이다. 반면 군집화는 사전 정의된 범주가 없는 데이터로부터 최적의 그룹을 찾아가는 비지도 학습 문제이다. 군집화 수행 시 주요 고려사항 어떤 거리 측도를 사용하여 유사도를 측정할 것인가? (Similarity Metric 선정) 어떤 군집화 알고리즘을 사용할 것인가? 어떻게 최적의 군집 수(K)를 결정할 것인가? 어떻게 군집..
가중 그래프와 두 개의 정점 u,v가 주어졌을 때, u에서 v 사이의 가중치 합이 최소인 경로를 구하는 문제를 최단 경로 문제라고 한다. 인터넷 패킷 라우팅, 항공편 예약, 길 안내 서비스 등에서 응용된다. 최단 경로의 속성 최단 경로의 부분경로 역시 최단 경로이다. 출발 정점으로부터 다른 모든 정점들에 이르는 최단 경로들의 트리가 존재한다. 최소 신장 트리와의 비교 최단 경로는 최소 신장 트리와 달리, 무방향 뿐 아닌 방향 그래프에서도 정의된다. 그래프에 음의 가중치를 가진 사이클이 있거나, 무향 그래프에 음의 가중치를 가진 간선이 있으면 만들 수 없다. 최단 경로 트리는 루트가 있는 트리이다. 최단 경로 알고리즘 그래프 알고리즘 시간 음의 무게를 가진 간선이 없는 그래프 다익스트라 $O(..
신장 트리는 그래프의 모든 노드를 방문하고, 사이클이 없는 그래프이다. 최소 신장 트리는 어떤 가중 그래프에서 가중치의 합이 최소가 되는 신장 트리이다. 최소 신장 트리는 아래 두 가지 속성을 갖는다. 사이클 속성 T를 가중그래프 G의 최소신장트리라 하자. e를 T에 존재하지 않는 G의 간선으로, C를 e를 T에 추가하여 형성된 사이클로 가정할 때, C의 모든 간선 f에 대해 weight(f)≤weight(e)가 성립한다. 왜냐하면, 만약 weight(f)≥weight(e)라면, f를 e로 대체함으로써 가중치 합이 더 작은 신장트리를 얻을 수 있기 때문이다. 분할 속성 G의 노드들을 두 개의..
최근 수년간 메모리(DRAM)의 속도는 프로세서의 속도 증가에 비해 많이 증가하지 않았다. 이로인해, 프로세서와 메모리 사이의 속도 차이는 점차 커지고 있다. 이러한 문제를 해결하고자 컴퓨터 구조에서는 메모리의 계층을 분리하여 가장 빠른 메모리인 레지스터를 프로세서 데이터 패스 안에 넣고, 레지스터에 비해 느린 메모리에서 레지스터로 미리 데이터를 보내놓는 방식으로 속도 차이로 인한 문제를 완화시키고 있다. 레지스터와 시스템 메모리 사이에는 L1 캐시, L2 캐시 L3 캐시와 같은 메모리가 추가로 들어가서 이러한 역할을 수행한다. 레지스터 L1캐시 L2캐시 L3캐시 메모리 (DRAM) 속도 빠름 ↔ 느림 크기(용량) 작음 큼 비용 비쌈 쌈 메모리 계층의 관리 메모리 계층의 관리는 다음과 같은 주체에 의해 ..
V와 W가 벡터공간이고, u,v가 V에 속하며 α가 실수일 경우, V로부터 W로 가는 함수 L이 다음 2가지 공리를 만족할 때, 선형 변환Linear Transformation 또는 선형 사상Linear Mapping이라 한다. L:V→WL(u+v)=L(u)+L(v)L(αu)=αL(u) 특히, V=W일 경우에는 L을 V상에서의 선형 연산자Linear Operation라고 한다. 함수의 정의 집합 X에서 집합 Y로의 관계의 부분집합으로써, 집합 X에 있는 모든 원소 x가 집합 Y에 있는 원소 중 한 개와 관계가 있을 경우 f를 함수라고 하며, 다음과 같이 나타낸다. $..
R3상의 두 벡터 u,v의 다음과 같은 벡터 곱을 외적이라고 한다. u×v=(||u||||v||sinθ)e 이때, θ는 0≤θ≤π인 두 벡터 사이의 각이고, 벡터 e는 u,v에 의해 생성된 평면과 수직인 단위벡터이다. 벡터의 외적은 u,v와 수직인 벡터로 나타내어지는데, 이때 해당 벡터의 크기는 아래와 같다. ||u×v||=||u||||v||sinθ 이는 벡터 u,v가 이루는 평행사변형의 면적에 해당한다. 외적 $$ u = [u1u2u3], v = \begin{bmatrix}v_1\\v_2\\v_3\e..
어떤 값이 어떤 값과 근사함을 나타내는 표현들을 알아보자. Tilde tilde는 ∼으로 나타낸다. 의미는 아래와 같다. f(x)∼g(x) if lim Big Oh Big Oh 표기는 O(g(x))와 같이 나타내며, 의미는 아래와 같다. f(x) = O(g(x)) \text{ if } \lim_{x\rightarrow \infty} |\frac{f(x)}{g(x)} | < \infty Big Oh 표기법에서, f(x)는 g(x)보다 작거나 같다. 즉, Big Oh 표기법은 상한을 이용한다. Big Oh 표기법에 사용되는 g(x)는 항상 최악의 경우(값이 가장..
함수 f를 다음과 같이 정의해보자. f(i) = \sqrt{i}f는 양의 방향으로 증가하는 함수positive increasing function이다. 이런 함수에 대해, 아래가 성립한다. \sum_{i=1}^nf(i) \geq f(1) + \int_1^n f(x) dx \sum_{i=1}^nf(i) \leq f(n) + \int_1^n f(x) dx 이는 \sum_{i=1}^n f(i)의 상한Upper Bound과 하한Lower Bound을 나타낸다. 우리가 알고자 하는 것은 \sum_{i=1}^n \sqrt{i}이다. $$ \begin{align*} \int_1^n\sqrt{x} dx &= [\frac{2}{3}x^{\frac{3}{2}}|^n_1\\ &= \f..