민공지능/딥러닝 & 머신러닝(12)
-
Optuna
설치 방법 : pip install optuna ( Python 3.6 이상 지원된다.) import optuna def objective(trial): x = trial.suggest_uniform('x', -10, 10) return (x - 2) ** 2 study = optuna.create_study() study.optimize(objective, n_trials=100) study.best_params # E.g. {'x': 2.002108042} ''' [I 2021-05-22 21:50:25,855] Trial 0 finished with value: 4.901344506787557 and parameters: {'x': -0.21389803441521593}. Best is trial ..
2021.05.22 -
SVM(Support Vector Machine)
SVM은 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델이다. SVM은 특히 복잡한 분류 문제에 잘 들어맞으며 작거나 중간 크기의 데이터셋에 적합하다. SVM의 장점 : 범주나 수치 예측 문제에 사용 가능하다. 오류 데이터에 대한 영향이 적다. 과적합 되는 경우가 적다. 신경망보다 사용하기 쉽다. SVM의 단점 : 여러 개의 조합 테스트가 필요하다. 쵲거의 모델을 찾기 위해 커널과 모델에서 다양한 테스트를 해야한다. 학습 속도가 느리다 해석이 어렵고 복잡한 블랙박스 형태로 되어있다. SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것으로 생각할 수 있다. 위의 그림에서 실선이 결정 경계이며 점선까지의 거리를 '마진(margin)'이라고 한다. 도로 경계에 위..
2021.05.22 -
EfficientNet
EfiicientNet은 모델 사이즈 별로 B0~B7버전이 있으며 B0이 제일 가벼운 모델이다. B4부터는 파라미터가 커져도 크게 성능 향상이 없어서 B7이 안될 때는 B4모델을 선택하는 것이 좋을 것 같다. EfficientNet에서 activation은 swish를 사용하는데 swish는 깊은 신경망에서 relu보다 좋은 성능을 나타낸다. EfficeintNet B0의 기본 구조
2021.05.22 -
TTA(Test Time Augmentation)
Data Augmentation 기법중 하나로써 부족한 데이터셋을 보완하고, 성능을 끌어올릴 수 있는 방법론 같은 테스트 이미지에 다른 변환을 적용하고 모델에 넣어서 나온 결과를 평균값 내어 추론한다. tta_steps = 10 predictions = [] for i in tqdm(range(tta_steps)): # generator 초기화 test_generator.reset() preds = model.predict_generator(generator = test_generator, steps = len(test_set) // batch_size, verbose = 1) predictions.append(preds) # 평균을 통한 final prediction pred = np.mean(pred..
2021.05.22 -
Scikit-Learn의 Scaler
https://scikit-learn.org/stable/search.html?q=scaler StandardScaler 평균을 제거하고 단위 분산으로 스케일링하여 기능 표준화 MinMaxScaler 지정된 범위로 확장하여 기능을 변환(기본값 0~1 사이) 단, 이상치가 있으면 변환된 값이 매우 좁은 범위로 압축될 수 있다. MaxAbsScaler 최대 절댓값이 1~0 사이 RobustScaler 평균과 분산 대신 중앙값(median)과 IQR(interquartile range) 사용. 이상치(outlier) 영향을 최소화 한다.
2021.05.22 -
Autokeras
autokeras 설치 : pip install autokeras import numpy as np import tensorflow as tf from tensorflow.keras.datasets import mnist import autokeras as ak (x_train, y_train), (x_test, y_test) = mnist.load_data() print(x_train.shape) # (60000, 28, 28) print(y_train.shape) # (60000,) # Initialize the image classifier. clf = ak.ImageClassifier(overwrite=True, max_trials=1) # max_trials = 최대 시도 설정 # Feed th..
2021.05.06