데이터사이언스(5)
-
[8] K-최근접 이웃(KNN) 이해하기
KNN KNN은 전형적인 게으른 학습기(Lazy learner)에 속한다. 즉, 훈련데이터에서 판별함수를 학습하는 대신 훈련 데이터셋을 메모리에 저장하여 학습을 진행한다. 덕분에 학습 과정에서 비용이 전혀 들지 않는다. 대신 예측 단계에서의 계산 비용이 높다. 메모리 기반 방식의 분류기는 수집된 새로운 훈련 데이터에 즉시 적응할 수 있다는 장점이 있다. 하지만 대규모 데이터 셋에서 작업한다면 저장 공간에 문제가 생길 수 있다. 모수 모델과 비모수 모델 모수 모델은 새로운 데이터 포인트를 분류할 수 있는 함수를 학습하기 위해 훈련 데이터셋에서 모델 파라미터를 추정(타깃을 예측)하는 모델을 말한다. 대표적인 모수 모델에는 퍼셉트론, 로지스틱 회귀, 선형 SVM이 있다. 비모수 모델은 고정된 개수의 파라미터로..
2021.01.17 -
[6] 의사결정나무의 정보이득과 불순도
의사결정나무는 일정 기준을 통해 클래스를 분류해나가는 모양이 나무와 같다고 해서 붙여진 이름이다. 의사결정나무의 분류 기준은 정보 이득(information gain)이다. 정보 이득은 불순도를 토대로 결정지을 수 있다. 이름에서도 알 수 있듯이 불순도는 해당 노드(node)에 얼마나 다양한 클래스가 섞여있는지에 대한 지표이다. \( IG(D_p,f) = I(D_p) - \sum_{j=1}^{m}\frac{N_j}{N_p}I(D_j) \) 정보 이득 f : 분할에 사용할 특성 \(D_p\)와 \(D_j\) : 부모와 j번째 자식 노드의 데이터셋 I : 불순도 지표 \(N_p\) : 부모 노드에 있는 샘플 개수 \(N_j\) : j번째 자식 노드에 있는 샘플 개수 간단하게 설명하자면 자식 노드들의 불순도 ..
2021.01.06 -
[5] 커널 SVM을 활용한 비선형 문제 해결하기
선형 SVM과 회귀분석과 같은 알고리즘은 비선형으로 구별되는 클래스를 구분 짓지 못한다. 이때 매핑함수\(\phi\)를 활용한 커널 방식을 사용한다면 비선형 문제를 해결할 수 있다. 매핑 함수를 활용해 원본 특성의 비선형 조합을 선형적으로 구분되는 고차원 공간에 투영시키고 이 공간에서의 초평면을 구분한 뒤 다시 원본 특성 공간으로 돌리면 비선형 결정 경계를 구분 지을 수 있게 된다. Ex) \(\phi(x_1,x_2) = (z_1,z_2,z_3) = (x_1,x_2,x_1^2+x_2^2)\) '2차원 -> 3차원 -> 2차원'의 투영 과정을 통해 결정 경계를 정의할 수 있다. 다만 매핑 함수의 문제점은 새로운 특성을 만드는 계산 비용이 매우 비싸다는 점이다. 특히 고차원 데이터일 경우에는 계산 비용이 더..
2021.01.04 -
[2] 아달린(Adaline, 적응형 선형 뉴런) 구현해보기
본 포스팅은 kaggle에서 bronze 메달을 받은 notebook의 코드를 따왔습니다. 관심 있으신 분은 해당 노트북을 참고해보셔도 좋을 것 같습니다. www.kaggle.com/choihanbin/predict-titanic-survival-by-adaptive-linear-neuron 이전 포스팅에서는 퍼셉트론에 대해 알아봤습니다. 이번 시간에는 이를 약간 변형한 버전인 아달린에 대해 알아보겠습니다. 2020/12/22 - [머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로] - 퍼셉트론(Perceptron) 구현해보기 아달린이란? 아달린은 Adaptive linear neuron의 약자입니다. 적응형 선형 뉴런은 퍼셉트론의 향상 버전이라고 생각할 수 있습니다. 퍼셉트론과의 가장 큰 사이는 가..
2020.12.31 -
캐글 타이타닉 1-2. Titanic Survival Prediction(타이타닉 생존자 예측), EDA Features
Kaggle에 올린 첫 노트북입니다. 전반적인 데이터 분석의 흐름을 알기 위해서 모델의 정확성보단 배운 내용을 활용하는 것에 초점을 맞췄습니다. 링크 : www.kaggle.com/choihanbin/titanic-survival-prediction-eda-ensemble 1.2 EDA Features 1.2.1 Sex with Survived feature # Count plots a feature's number without Survival and feature's number with Survival def count_subplots(data, feature1, hue = 'Survived', ylim = None, xlim = None): f, ax = plt.subplots(2, figsize..
2020.12.28