기본 콘텐츠로 건너뛰기

라벨이 비용함수인 게시물 표시

[matplotlib]quiver()함수

[ML]비용함수: cross_entropy loss

비용함수: cross_entropy loss 한개의 특성(feture)과 3개의 클래스를 가진 라벨에 매핑시키는 모델을 생성합니다. 즉, 데이터는 다음의 구조를 가집니다. x y 1.5 0 $\vdots$ $\vdots$ 클래스 0, 1, 2를 각각 A, B, C로 나타내면 각각에 부여되는 가중치를 $w_A, w_B, w_C$로 표시하여 식 1과 같이 x에 대한 예측치를 계산할 수 있습니다. \begin{align}\tag{식 1}w_A \cdot x &= \hat{y}_A\\w_B \cdot x &= \hat{y}_B\\w_c \cdot x &= \hat{y}_C\end{align} 간단한 예로 다음의 경우에 대해서만 예측치를 계산해 봅니다. x=1.5, y=0 import numpy as np np.random.seed(3) W=np.random.rand(3) W array([0.5507979 , 0.70814782, 0.29090474]) x=1.5 y=0 haty=W*x haty array([0.82619685, 1.06222173, 0.43635711]) 위 haty는 x가 label의 각 클래스 A, B, C로 대응하기 위한 선형변환의 결과입니다. 위 값들이 [0, 1] 구간내에 포함하도록 정규화 할 수 있습니다. 이것은 특성이 A, B, C에 매핑될 확률로 간주할 수 있습니다. \begin{align}S(\hat{y_i})&=P_i\\\tag{식 2}&=\frac{e^{\hat{y_i}}}{\sum^k_{j=1}e^{\hat{y_i}}}\\ k:& \text{클래스 갯수} \end{align} 위 계산결과의 총합은 1이 됩니다. haty2=np.exp(haty) s1=haty2/np.sum(haty2) s1 array([0.33974648, 0.43018897, 0.23006455]) s1.sum().round(3) 1.0 위 결과 중 ...

[data analysis] 경사하강법(Descent Gradient)

경사하강법(Descent Gradient) 최소자승법 은 공식화된 계산식에 의해 결정된 회귀계수를 적용합니다. 경사하강법은 수치적으로 모델을 최적화하는 과정에서 회귀계수를 산출합니다. 식 1의 선형회귀모형은 독립변수(x)와 종속변수(y)의 사이의 다음의 선형식을 만족하는 최적의 회귀계수를 결정하는 것입니다. \begin{align} \tag{식 1}&y=xW\\&W:\text{회귀계수(가중치)}\end{align} 예를 들어 다음의 자료는 sklearn.datasets.make_regression(n_samples, n_features, coef, random_state, …) 함수를 사용하여 생성한 데이터 입니다. import numpy as np import pandas as pd from sklearn.datasets import make_regression import matplotlib.pyplot as plt import sympy as sp X,y, cof= make_regression(n_samples=1000, n_features=1, coef=True, random_state=1) cof array(38.69892343) X.shape, y.shape ((1000, 1), (1000,)) 역으로 위 자료의 선형회귀 모델을 생성한다고 할 경우 y=xw로부터 식 2와 같이 계산되는 mse가 최소가 되는 방식으로 W를 결정해야 합니다. $$\begin{align}\tag{식 2}\text{mse}&=\frac{\sum^n_{i=1}(\hat{y}-y)^2}{n}\\&=\frac{\sum^n_{i=1}(xW-y)^2}{n} \end{align}$$ W를 임의적으로 적용할 경우 mse의 변화는 그림 1과 같이 2차 곡선의 형태를 나타냅니다. plt.figure(figsize=(4, 3)) w=np.linspace(-50, 50, 100)#회귀계수의 변화 mse=[np.sum((X*...