본문 바로가기

머신러닝

(8)
Pytorch (1) Custom Dataset: dataset을 model이 인식 가능한 형태로 custom하고, data의 index이 가능하도록 하고, 전체 data의 개수를 return하는 함수도 구현한다.(2) Sampler: dataset을 model에 적용할 때 mini-batch 형태로 넘겨줄 것인데, 전체 dataset에서 batch를 어떤 식으로 만들 지 정해줌, ramdom sampler 등(3) Data Loader: data를 batch_size만큼 model로 load 해주는 역할(4) Model: neural network를 만들고 forward propagation 과정을 수행 0. Data upload1. Data Load -1) Custom Dataset: FashionDataset(i..
Keras, TensorFlow Keras1) sequential API로 만든 모델- 각 layer을 순차적으로 담는 class - add 메서드로 모델을 만들 수도 있다. 2) functional API로 만든 모델 - deep neural network는 거대한 합성함수라고 볼 수 있고, 각 층을 하나의 함수로 봐서 합성함수를 쌓는 방향으로 모델을 만들 수 있다. - 각 층을 callable 한 class instance로 생각할 수 있다. - callable object: 함수처럼 호출될 수 있는 객체- 상황에 따라 다양한 함수를 만들 수 있도록 객체에서 일정 정보를 저장하여 필요할 때마다 새로운 함수를 만들 수 있음.Input() 함수에 입력의 크기를 정의합니다.이전층을 다음층 함수의 입력으로 사용하고, 변수에 할당합니다.Mo..
Resnet Resent의 등장 배경 딥러닝에서 층이 지나치게 깊으면 gradient vanishing/exploding 문제가 생겨서 학습 성능이 오히려 떨어짐. 위 문제를 해결하기 위해 층 수에 대해 학습 성능이 어느정도 비례하도록 만드는 딥러닝 모델이 resnet임. gradient vanishing / exploding [input ↔ L1 ↔ L2 ↔ L3 ↔ ... ↔ output] 일반 딥러닝 네트워크에서 층이 지나치게 많아지면 back propagation 과정에서 미분을 많이 하게 된다. 뒤 층의 미분값이 크면 앞 층의 미분값이 점점 커지고 (gradient exploding) , 뒤 층의 미분값이 작으면 앞 층의 미분값이 작아지면서 (gradient vanishing) 학습 성능이 낮아진다. Res..
Boosting & Adaboost Boosting Decision tree Bagging Boosting - 단 한 번의 sample 추출과 한 개의 model이 필요함 - sample을 복원추출 - ensemble 기법으로 여러 model을 이용함. - 분류기들이 서로 독립적이고 상호 영향을 주지 않는다고 가정 - 학습이 sequential하게 진행됨 - 이전 sample의 학습 결과가 다음 학습 결과에 영향을 줌 - Adaboost, Gradient boost가 있음. Boosting algorithm Adaboost (Adaptive Boosting) Stump: tree에서 한 번의 split만을 통해 두개의 node를 내는 classifer로 weak classifer이다. 이전 model의 예측 결과에 따라 오분류된 데이터에 ..
Bagging & Random Forest : Programming 1. import packagesimport os from os.path import join import copy import warnings warnings.filterwarnings('ignore') import numpy as np import pandas as pd import sklearn import matplotlib.pyplot as plt adult_path = join( 'adult_data.csv') column_path = join( 'adult_names.txt') adult_columns = list() for l in open(column_path): adult_columns = l.split() #adult_columns에 변수명을 리스트로 저장 2. 데이터 불러오기data..
Bagging & Random Forest Resampling 데이터의 크기가 작은 경우 데이터셋의 크기를 늘리는 방법 1) CV (Cross Validation) dataset을 k fold로 쪼개어 하나의 fold를 validation fold로, 나머지를 training fold로 사용한다. training fold로 model을 생성하고 validation fold로 모델을 평가한다. k번의 iteration이 끝난 후 성능을 평균내어 성능을 평가한다. 2) BootStrap - 앙상블(ensemble): 여러 학습 알고리즘을 사용하여 학습 모델을 생성하는 것으로, 단일 알고리즘을 사용했을 때보다 성능이 높다. bootstrap은 앙상블 기법 중 하나이고 연산량이 많다. - BootStrap: original sample을 하나의 모집단처..
SVM: programming 1. import packagesimport numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap 2. 데이터 불러오기df = pd.read_csv(r"train.csv") test=pd.read_csv(r"test.csv") 3. SVM model 생성from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler# feature 와 target 분리 # targ..
SVM (Support Vector Machine) SVM이란 supervised learning algorithm classification / regression 모두 가능하고 classification에 높은 성능을 보인다. 탄탄한 수학적 이론으로 딥러닝 이전에 인기가 많았음 hyperplane(초평면)을 이용하여 카테고리를 나눈다. SVM 모델 margin을 최대로 하는 분류 경계면을 찾는 문제와 같다. SVC 수식 x(i)의 i번째 example의 방향 벡터를 u 벡터, decision boundary와 수직인 벡터를 v 벡터라고 했을 때, w˙v의 내적 길이에 따라 x가 x-인지 x+인지가 결정될 수 있다. 그 경계에 있는 실수를 b라고 했을 때 w˙u+b>=0이면 x는 x+, =1이면 x+, local minimum에 빠지지 않는다. => s..