본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.

전체 글178

Hands-on ML : 5.1 선형 SVM 분류 SVM이란? SVM은 서포터 벡터 머신으로 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델이다. SVM은 복잡한 분류 문제에 잘 들어맞으며 작거나 중간 크기의 데이셋에 적합하다. 5.1 선형 SVM 분류 SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것으로 생각할 수 있다. 도로 바깥쪽에 훈련 샘플을 더 추가해도 결정 경계에는 전혀 영향을 미치지 않는다. 도로 경계에 위치한 샘플에 의해 전적으로 결정된다. 이런 샘플을 서포트 벡터라고 한다. 5.1.1 소프트 마진 분류 모든 샘플이 도로 바깥쪽에 올바르게 분류되어 있다면 이를 하드 마진 분류(hard margin classification)라고 한다. 하드 마진 분류에는 두 가지 문제점이 있다.. 2022. 5. 26.
Hands-on ML : 4. 6 로지스틱 회귀 4.6 로지스틱 회귀 로지스틱 회귀(logistic regression)는 샘플이 특정 클래스에 속할 확률을 추정하는 데 널리 사용된다. 추정 확률이 50% 이상이면 모델은 그 샘플이 해당 클래스에 속한다고 예측, 아니면 클래스에 속하지 않는다고 예측한다. -> 이진 분류기이다. 4.6.1 확률 추정 로지스틱 회귀 모델은 입력 특성의 가중치 합에 편향을 더해 계산한다. 이때 선형 회귀처럼 바로 결과를 출력하지 않고, 결과값의 로지스틱(logistic)을 출력한다. 로지스틱은 0 과 1 사이의 값을 출력하는 시그모이드 함수(sigmoid function)이다. 이 함수를 거쳐나온 확률값으로 최종적으로 주어진 데이터가 어느 클래스에 속할지에 대해 결정하게 된다. 보통 확률값이 0.5 이상이면 1 (양성 클래.. 2022. 5. 26.
Hands-on ML : 4. 5 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elastic-net) 모델 훈련 4.5 규제가 있는 선형 모델 과대적합을 감소시키는 좋은 방법으로 다항회귀모델의 다항식 차수를 감소시키는 등 자유도를 줄이는 방법이다. 4.5.1 릿지 회귀 릿지 회귀(Ridge Regression)은 능형회귀로 불리며 선형회귀에 규제가 추가된 것이다. 이 규제는 비용함수에 추가되는 것으로 테스트 세트에서 성능을 평가하거나 예측할 때 적용되지는 않는다. 위 식에서 i가 1부터 시작하는 것은 θ0는 규제되지 않는 것을 의미 w를 가중치 벡터(θ1~θn)라고 정의 -> 규제항은 ½(∥ w ∥2)^2와 같다. 여기서 ∥ w ∥2가 가중치 벡터의 ℓ2노름이다. 이를 경사하강법에 적용하려면 MSE 그라디언트 벡터에 αw를 더하면 된다. 선형회귀와 마찬가지로 릿지 회귀를 계산하기 위해 정규방정식과 경사하강법을 이용.. 2022. 5. 20.
Hands-on ML : 4. 3 다항회귀 및 4.4 학습곡선 4.3 다항회귀 import numpy as np import matplotlib.pyplot as plt m = 100 X = 6 * np.random.rand(m,1) - 3 y = 0.5 * X**2 + X + 2 + np.random.randn(m,1) # 약간의 노이즈 포함 plt.plot(X,y,"b.") plt.show() 사이킷런의 PolynomialFeatures를 사용하여 훈련 데이터를 변환 from sklearn.preprocessing import PolynomialFeatures poly_features = PolynomialFeatures(degree=2, include_bias=False) X_poly = poly_features.fit_transform(X) print(X[0.. 2022. 5. 19.
Hands-on ML : 4. 2 확률적 경사하강법, 미니배치 경사 하강법 배치 경사 하강법 문제점 배치 경사 하강법의 문제는 매 스텝에서 전체 훈련 세트를 사용해 그레디언트를 계산한다는 것이다. 훈련 세트가 커지면 매우 느려지는 이유로 확률적 경사하강법을 사용한다. 확률적 경사하강법 매 스텝에서 한 개의 샘플을 무작위 선택하고 그에 대한 그레이디언트를 계산한다. 매 반복에서 적은 데이터를 처리하기에 속도가 매우 빠르며, 1개 샘플에 대한 메모리만 필요하므로 매우 큰 훈련 데이터 셋도 가능하다. 반면에 확률적이기에 배치 경사 하강법보다 불안정하다는 단점이 있다. 또한 매끄러운 하강이 아닌 요동치는 것을 볼 수 있는데, 요동치는 것은 지역 최솟값을 뛰어넘어서 전역 최솟값을 찾게 도와줄 수 있다. 학습률이 너무 천천히 줄어들면 오랫동안 최솟값 주변을 맴돌거나 지역 최솟값에 머무를 .. 2022. 5. 18.
Hands-on ML : 4. 2 경사 하강법 경사 하강법 (gradient descent) 최적의 해법을 찾을 수 있는 일반적인 최적화 알고리즘 아이디어 : 비용 함수를 최소화하기 위해 반복해서 파라미터 조정해가는 것. 제시된 함수의 기울기로 최소값을 찾아내는 머신러닝 알고리즘 1. 특정 파라미터 값으로 시작 : 가중치 W1에 대한 시작점을 선택한다. 2. 비용 함수 (Cost function) 계산 : 모델을 구성하는 가중치 W의 함수 3. 반복 학습 (iteration) : 과정을 n번 반복하며 최소값으로 수렴. (스텝의 크기가 중요) -> numeric analysis에서의 수치적 접근법과 같다. ( ex) Bisection algorithm etc..) 4.2.1 배치 경사 하강법 경사 하강법을 구현하기 위해 각 모델 파라미터에 대한 비용 .. 2022. 5. 17.
[2022 통계청 공모전] 5. test 및 후기.. 마지막.. test padding이다. 토크나이저시키고.. tokenizer = Tokenizer() tokenizer.fit_on_texts(test) X_encoded = tokenizer.texts_to_sequences(test) 패딩시킨다... X_test = pad_sequences(X_encoded, maxlen=max_len, padding='post') 잘잘한 코드를 몇 줄 작성한 뒤, predicted에 y_pred의 argmax 다시 말해서, 최대가 되는 벡터값을 넣어주면 완료! y_pred = np.mean(pred_list,axis=0) predicted = y_pred.argmax(axis=-1) 이후 아래 그림처럼 digit_1, digit_2, digit_3이 비어있는데, 이.. 2022. 5. 16.
[2022 통계청 공모전] 4. CNN-LSTM 사용 CNN-LSTM 사용하기에 앞서 PCA를 진행해주었다. PCA 함수 생성 compute_pca 함수를 만들어, covariance 행렬을 계산 covariance matrix에서 eignvector와 eigenvalue를 계산 eigenvalue를 오름차순으로 sort highest 에서 lowest로 종렬 eigen vector를 내림차순으로 sort n개의 eigenvector를 선택 후 배열 eigenvector의 transpose를 곱하여 데이터를 변환 def compute_pca(X: np.ndarray, n_components: int=2) -> np.ndarray: X_demeaned = X - X.mean(axis=0) covariance_matrix = np.cov(X_demeaned, .. 2022. 5. 15.
[삼성 SDS Brightics] Brightics Studio 활용 https://honeyofdata.tistory.com/66 지난 포스팅에 이어 이상치 탐지의 시각적 분석을 해보려고 한다. Boxplot boxplot도 확인해주고 Histogram count된 histogram도 확인해주었다. 시간에 따른 plot도 확인해주었다. 이제 이상치 탐지(Outlier Detection)에 Turkey 방식으로 TVOC의 열만 이상치 제거를 해주었다. 이상치 전후 비교 Histogram -왼쪽 히스토그램 : 이상치 제거 전 , -오른쪽 히스토그램 : 이상치 제거 후 (Turkey방법) 아래 그림의 경우, 왼쪽 분포와 오른쪽 분포가 비슷한 양상을 보이는 것처럼 보여도, 두 그래프의 y축의 범위가 다르다. 뿐만 아니라, outlier로 보이는 긴 선도 제거되었음을 볼 수 있다.. 2022. 5. 14.