본문 바로가기

implement_ml_models

(94)
implement_gradientdescent 경사 하강법이라고도 불리는 옵티머이저 방법 중 하나, 여러 딥러닝 알고리즘의 최적화 함수 비용 함수의 미분값을 이용하는 방법, 그래디언트 디센트 과정 2단계의 수식 표현 비용 함수의 편도함수 class gradient_descent: n_iterations = 0 # 데이터 개수 eta = 0.001 # 학습률 theta = np.random.randn(2,1) # 가중치 무작위 초기화 def eta(self, eta): self.eta = eta def gradient(self, x, y): x_b = np.c_[x, np.ones((x.shape[0],1))] # 입력 데이터에 편향값을 위한 1의 추가 self.n_iterations = x.shape[0] for iterations in range(..
implement_ridge_regression(L2) 기본적인 회귀 분석에는 제약식이 포함될 수 있다. 제약식을 통해 가중치가 크게 커지는 것을 방지한다. 목적 함수와 제약식을 표현, 가중치 요소 제곱합이 t 보다 작다는 제약식이 추가된 형태 데이터 행렬 X는 표준화되어 평균이 0이고 분산은 1이며, y는 평균을 0으로 조정한 값이라고 가정, 위 L2 제약식을 그림으로 표현 회색 영역이 L2 제약식, 제약식이 제곱의 형태이므로 원의 형태, 기존 추정량 w 는 외부에 있어 최종적인 추정량이 될 수 없다. L2 제약식 영역의 추정량인 w_ridge 를 구해야 한다. 최적화 문제를 라그랑주 형식으로 나타낸다. 최적의 해 계산 감마값에 따라 릿지 회귀 분석의 최적값이 달라진다. shrinkage parameter 계수의 사이즈 조절 정규식의 크기 조절 커질수록 릿..
implement_linear_regression 선형 회귀 모형 가중치 w , 각 가중치 요소 하나하나가 우리가 구하려는 파라미터, 파라미터 값은 예측값에 영향을 미친다. 가중치는 트레이닝 데이터로부터 최소 제곱법을 사용해 구할 수 있다. 이때, 최소 제곱법은 오차의 제곱합이 최소가 되는 추정량을 구하는 방법, 최소 제곱법을 이용하기 위해 전체 식에서 오차를 구한다. 실제 타깃 데이터값 yi 는 학습을 통해 구한 모형에 오차 ei 를 더한 값, 오차 제곱합의 수식 표현 이를 행렬로 확장 행렬 X는 데이터 x 와 b 를 합친 형태며, 가중치 벡터 w 도 기존 가중치와 b를 합친 형태 y = Xw 위 식을 최적화해 구한 가중치의 추정량은 다음과 같다. 위 식을 풀면 다음과 같은 과정을 거친다. 최적의 가중치를 구하려면 위 식을 가중치로 미분한 값이 0 이..
k-최근접 이웃 알고리즘 KNN k-Nearest Neighbor 알고리즘은 테스트 샘플들이 주어진다면 어떤 거리 척도에 기반해 훈련 세트에 인접한 k개의 훈련 샘플을 찾아, 이 k개 이웃의 정볼르 바탕으로 예측을 진행한다. 분류 문제의 경우 k 개 샘플 중 출현 빈도가 가장 높은 클래스를 선택해 예측 결과로 보는 투표법을 사용, 반면 회귀 문제에는 k 개 샘플의 실질적인 출력의 평균값을 예측 결과로 보는 평균법을 사용한다. 그리고 거리를 바탕으로 가중 평균이나 가중 투표법을 사용하기도 한다. 즉, 거리가 짧을수록 샘플에 부여하는 가중치는 커진다. k-최근접 이웃 학습은 게으른 학습 lazy learning 의 대표주자이다. 이런 종류의 학습은 훈련 시간이 0이고, 샘플을 받은 후 처리한다. 하지만 이는 예측 시에 메모리상에 학..
implement_standardscaler 특성의 범위를 같게 만들어줘 특성 간에 가중치가 동일하게 작동할 수 있도록 만든다. min-max 스케일링 데이터에서 최솟값을 뺀 후 최댓값과 최솟값의 차이로 나눈다. 0~1 사이의 값으로 변한다. class min_max: min_data = [] max_data = [] deviation = 0 def __init__(self): self.min_data = [] self.max_data = [] def min_max_scaling(self, X): """ min_max scaling 함수, 학습과 적용 Arg: X : 스케일링 할 데이터 Return : min-max 스케일링 후 데이터 """ x_min = [] x_max = [] for i in range(X.shape[1]): x_min.app..
implement_ml_models 시작하며 머신러닝에 사용되는 수학적 이론들을 코드를 통해 구현해본다. 이를 통해 머신러닝 모델을 직접 만들어보고, 기존 머신러닝 프레임 워크와의 비교를 통해 그 차이를 확인할 수 있을 것이다.