본문 바로가기

implement_ml_models

(94)
Implement_supportVectorMachine 서포트 벡터 머신은 서포트 벡터를 기준으로 클래스를 판별한다. 서포트 벡터 머신은 중심선과 경계선을 이용해 데이터를 구분한다. 클래스를 구분하는 여러 방법 중 서포트 벡터 머신은 중심선과 경계선을 이용해 데이터를 구분한다. 그 경계선을 서포트 벡터라고 한다. 먼저 서포트 벡터 머신에서 중심선을 그리기 위해서 중심선에 수직인 벡터 w 를 구하는 것이 중요하다. 중심 벡터 w 와 데이터 포인트 x 를 내적했을 때 내적값 c 가 되는 지점이 중심선이 되고, 이는 w^T x = c 라고 표현할 수 있다. 내적값 c 가 되는 지점인 중심선을 기준으로 영역을 나눌 수 있다. 데이터 공간을 내적값이 c 보다 큰 영역과 c 보다 작은 영역으로 각각 나누면 중심선 윗부분과 아랫부분으로 나눌 수 있다. 데이터 (x_1, ..
implement_logisticRegression 로지스틱 회귀는 샘플이 특정 클래스에 속할 확률을 추정하는데 사용, 로지스틱 회귀 모델은 입력 특성의 가중치 합을 계산한다. 그 후 결괏값의 로지스틱을 출력한다. 명칭은 회귀지만, 일종의 분류 학습법이다. 이러한 방법은 분류 가능성에 대해 직접적으로 모델을 만들고 사전 데이터 분포에 대한 가정이 필요하지 않다. 이는 부정확한 가설 분포에 대한 문제를 피할 수 있게 해준다. 또한 근사확률에 대한 예측도 할 수 있다. 또한 로지스틱 회귀가 구하고자 하는 해의 목표 함수는 컨벡스 함수라는 점, 최적화 알고리즘을 통해 최적해를 구하는 데 사용할 수 있기 때문 로지스틱 함수는 일종의 시그모이드 함수이다. 이 함수는 z 값을 0 과 1 사이의 y 값으로 전환하고, 아웃풋이 z=0 근처에서 급격하게 변화한다. 위 식..
implement_polynomialRegression class PolynomialRegression: def polynomialRegression(self, input, degree): """ 다항 회귀 Args input : 입력 데이터 degree : 특성 항 수 """ # 입력 데이터의 마지막 열의 원소 1의 추가 input_b = np.c_[input, np.ones((input.shape[0], 1))] # degree 의 개수만큼 반복 for degree_count in range(degree - 1): # 새로 생성될 데이터 생성 result = np.zeors((input.shape[0], math.factorial(input_b.shape[1] + 2) / (math.factorial(input_b.shape[1]) * math.facto..
implement_GradientDescent 미분해서 0이 되는 지점을 찾기 위해 그래디언트 디센트는 최초에 구한 미분값의 반대 방향으로 이동, 이동한 지점에서 미분 시행, 이러한 과정을 반복해서 최적값에 가까워진다. 1 : 초기 파라미터 A_1 에 해당하는 F(A_1) 의 미분값을 구한다. 2 : 1에서 구한 미분값의 반대 바향으로 A_1 을 d F(A_1) 만큼 이동시킨다. 이동 후 지점을 A_2 라고 한다. 3 : 1-2 의 반복 즉 가중치에 대한 비용 함수의 변화량을 계산해야 한다. from sklearn.datasets import fetch_openml import numpy as np mnist = fetch_openml('mnist_784', version=1) x, y = mnist["data"], mnist["target"] x_..
implement_Autuencoder(linear_Autuencoder) 2023.03.20 - [책/Hands-On Machine Learning] - 오토인코더와 GAN 을 사용한 표현 학습과 생성적 학습 오토인코더와 GAN 을 사용한 표현 학습과 생성적 학습 오토인코더는 어떤 지도 없이도 잠재 표현이라 부르는 입력 데이터의 밀집 표현을 학습할 수 있는 인공 신경망이다. 일부 오토인코더는 훈련 데이터와 매우 비슷한 새로운 데이터를 생성할 수 teach-meaning.tistory.com 3차원 데이터 생성, # 데이터셋 생성 np.random.seed(4) def generate_3d_data(m, w1=0.1, w2=0.3, noise=0.1): angles = np.random.rand(m) * 3 * np.pi / 2 - 0.5 data = np.empty((m, 3..
implement_CNN(weight_update_mlp) 2023.03.19 - [분류 전체보기] - implement_cnn (수정3_result_delta) implement_cnn (수정3_result_delta) 2023.03.18 - [분류 전체보기] - implement_cnn (수정3) implement_cnn (수정3) 2023.03.18 - [분류 전체보기] - implement_cnn (수정2) implement_cnn (수정2) 2023.03.17 - [분류 전체보기] - implement_cnn (수정1) implement_cnn (수정1) teach-meaning.tistory.com 이전 과정을 통해 CNN 내에서의 MLP 노드들에 대한 delta 값을 계산할 수 있었다. 이 delta 값은 이전 층의 delta 값을 계산하는 것 뿐만..
implement_cnn (수정3_result_delta) 2023.03.18 - [분류 전체보기] - implement_cnn (수정3) implement_cnn (수정3) 2023.03.18 - [분류 전체보기] - implement_cnn (수정2) implement_cnn (수정2) 2023.03.17 - [분류 전체보기] - implement_cnn (수정1) implement_cnn (수정1) 코드 부분의 오류가 있어 수정, cnn 클래스의 same_padding_cnn 부분 기 teach-meaning.tistory.com 수정한 cnn 연산으로 인해 역전파 과정에도 수정이 필요 먼저 CNN 의 MLP 층에서의 접근 방식 수정 def mlp_forward_cal(self, node_count): if(len(self.mlp.node_output) =..
implement_cnn (수정3) 2023.03.18 - [분류 전체보기] - implement_cnn (수정2) implement_cnn (수정2) 2023.03.17 - [분류 전체보기] - implement_cnn (수정1) implement_cnn (수정1) 코드 부분의 오류가 있어 수정, cnn 클래스의 same_padding_cnn 부분 기존 코딩 부분 # 패딩 cnn 연산 수행 def same_padding_cnn(self, input, filter teach-meaning.tistory.com def max_pooling(self, input, pooling_size): """ input : 입력 데이터 pooling_size : pooling size """ self.pool_result = [] pooling_matri..