zenn.skin 무료버전 배포중!
자세히보기

DataScience 56

DataScience
[ML] 정확도가 아닌 손실 함수를 사용해 학습하는 이유

모델의 성능을 평가할 때는 정확도를 사용하는데 정작 모델을 학습시키며 파라미터값을 수정할 때는 정확도를 사용하지 않고 손실함수를 사용합니다. 모델의 최적의 파라미터값을 최적화할 때, 매개변수의 미분을 계산하고, 계산한 미분 값을 이용해 다시 파라미터값을 조금씩 수정하며 계산하게 됩니다. 매개변수에 대한 손실함수의 미분은 "가중치 매개변수를 아주 조금 변화시켰을 때, 손실함수가 얼마나 변하는지"를 나타냅니다. 미분값이 음수라면 가중치를 양의 방향으로 변화시켜 손실함수의 값을 줄이고, 미분값이 양수라면 가중치를 음의 방향으로 변화시켜 손실함수의 값을 줄입니다. 미분값이 0이라면 매개변수의 갱신을 멈추고 모델의 학습이 끝나게 됩니다. 1. 정확도를 학습에 대한 지표로 사용하면 대부분의 지점에서 미분값이 0이 ..

DataScience
[ML] 다층 퍼셉트론(multi-layer perceptron)

퍼셉트론은 하나의 선형 결정경계를 갖습니다. 그렇기 때문에 XOR과 같이 비선형 결정 경계를 갖는 문제는 풀 수 없는 한계점이 있었습니다. 하지만 두 개 이상의 퍼셉트론을 사용하면 이러한 비선형 결정 경계를 갖는 문제도 풀 수 있게 됩니다. 위와 같이 두 개의 선형 결정 경계를 사용하면 XOR문제를 깔끔하게 해결할 수 있습니다. 실제로 XOR문제는 AND, NAND, OR Gate를 사용해서 풀 수 있습니다. A B Q 0 0 0 1 0 1 0 1 1 1 1 0 앞서 구현한 AND, NAND, OR Gate 함수를 호출해도 동일한 결과를 구할 수 있습니다. def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) return AND(s1, s2) 이렇게 XOR은 두 개 ..

DataScience
[ML] 퍼셉트론 (Perceptron)

1. 퍼셉트론(Perceptron) 퍼셉트론은 신경망의 기원이 되는 알고리즘입니다. 퍼셉트론의 구조를 배워야 신경망과 딥러닝의 아이디어를 이해할 수 있습니다. 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력하는 역할을 합니다. 이 때 퍼셉트론은 0 또는 1의 출력을 가질 수 있습니다. 위 그림에서 x1, x2, y는 뉴런(노드)라고 부르며, x1과 x2는 입력 신호, y는 출력 신호가 됩니다. 입력 신호가 다음 뉴런에 보내질 때는 일정한 가중치가 곱해집니다. 출력 신호는 입력 신호에 들어온 신호의 합이 일정한 값(역치, 임계값)을 넘는 경우에만 1을 출력합니다. 2. 퍼셉트론을 이용한 논리 회로의 표현 이 퍼셉트론을 사용하면 AND, OR, NAND와 같은 논리 게이트를 표현할 수 있습니다. 출력..

DataScience
[Python] 두 표본에 대한 모평균 검정

두 표본에 대한 모평균 검정을 할 때는 표본이 대응하는 표본인지, 독립된 표본인지에 따라 표준편차를 구하는 방법이 달라집니다. 또 독립된 표본이라도 모분산을 알고 있을 때와 모분산을 모를 때의 검정 방법에 차이가 있습니다. 1. 대응표본 t검정(Paired-sample t test) 대응표본은 검정하려고 하는 두 표본이 동일한 대상일 때 사용 가능합니다. A, B, C, D라는 표본이 있고, 어떠한 처리가 주어진 후 결과가 A', B', C', D'이 될 때, 표본은 동일하지만 통계치는 달라지게 됩니다. 처리 전 처리 후 A 13 15 B 16 18 C 19 17 D 11 13 위와 같이 검정하고자하는 표본이 동일한 경우에 대응표본 t검정을 수행할 수 있습니다. import numpy as np from..

DataScience
[Python] t분포의 신뢰구간(Confidence Interval, CI)

t분포를 사용한 신뢰구간을 구해보겠습니다. 신뢰수준이 주어졌을 때, t분포의 단방향 신뢰구간은 위와 같이 구할 수 있습니다. 오른쪽에 대한 신뢰구간도 동일하게 구할 수 있습니다. from scipy.stats import t from typing import Tuple from math import sqrt from numpy import inf def one_side_interval(x_bar: float, s: float, n: int, alpha: float, lower: bool=True) -> Tuple[float, float]: if lower: critical_value = x_bar - t.ppf(1 - alpha, n - 1) * s / sqrt(n) return tuple([round(..

DataScience
[Python] 통계량을 이용해 t 검정, z 검정(t-test, z-test)

scipy.stats에서 제공하는 ttest_ind를 사용하면 t검정을 수행할 수 있습니다. 하지만 ttest_ind는 입력값으로 array_like를 받기 때문에 원본 데이터값이 있을 때만 사용할 수 있습니다. 데이터가 없고 데이터에 대한 통계량만 있는 경우 t검정과 z검정을 수행하는 방법에 대해 정리해보겠습니다. 1. t검정(t-test) 파라미터 설명 x_bar 표본평균 float mu 검저하고자 하는 평균값 float s 표본표준편차 float n 표본크기 int alpha 신뢰수준 float default=0.05 two_sided 양측검정 여부 bool defalut=True t검정을 하기 위해서는 먼저 검정통계량인 t0를 구해야 합니다. t_value = (x_bar - mu) * sqrt(..

DataScience
[ML] 분류모형의 평가지표(confusion matrix, accuracy, precision, sensitivity(recall), specificity, F1-score)

지난번에 회귀모형을 평가하는 지표에 대해 알아보았습니다. [ML] 회귀모형의 평가지표, MAE, MSE, RMSE, RSE, R^2 회귀모델을 평가하는 평가지표는 여러 가지가 있습니다. 1. MAE(Mean Absolute Error, 평균 절대 오차) 데이터의 단위와 동일하기 때문에 해석이 직관적이라는 장점이 있습니다. MSE에 비해 이상치의 영 koosco.tistory.com 분류모형을 평가할 때는 회귀모형에서의 MAE나 RMSE, R^2를 사용할 수 없기 때문에 혼동행렬(confusion matrix)을 이용한 별도의 지표를 사용해 모델을 평가하게 됩니다. 1. 혼동행렬(Confusion Matrix) confusion matrix는 모델의 성능 측정을 위해, 실제값과 측정값을 비교하기 위한 표를..

DataScience
[ML] MAB(Multi-Armed Bandit Algorithm, 멀티 암드 밴딧)

MAB는 다중 처리 실험에 대한 모델링으로 볼 수 있습니다. 카지노에 여러 개의 슬롯머신이 있습니다. 슬롯머신들은 각각이 다른 수익율을 낸다고 할 때 어떤 슬롯머신을 선택하는 것이 좋을지에 대한 답을 알려줍니다. 여러 슬롯머신들의 손잡이는 실험에서의 처리를 나타내고, 슬롯머신을 통해 얻은 수익을 처리에 대한 효과로 볼 수 있습니다. MAB 알고리즘의 핵심 아이디어는 탐색과 활용(Exploration & Exploitation)입니다. 슬롯머신들을 돌려보고(탐색) 수익이 높다고 생각하는 슬롯머신을 돌려봅니다.(활용) 1. Greedy Algorithm 가장 먼저 생각해볼 수 있는 방법은 일정 횟수만큼 슬롯머신을 돌려보고, 돌려본 슬롯머신들 중 가장 수익률이 높은 슬롯머신에 몰빵을 하는 방법입니다. A, B..