본문 바로가기

전체 글

MLE(Maximum Likelihood Estimation), 음의 로그우도(Negative log-likelihood) 머신러닝은 주어진 데이터를 가장 잘 설명하는 '함수'를 찾는 알고리즘을 디자인한 것이다. 그렇다면, 주어진 데이터가 아닌 관측하지 못한 데이터에 대해서 해당 '함수'가 얼마나 정확한 예측을 해낼 수 있을까? 다음과 같은 문제를 일반화 문제라고 하는데, 머신러닝의 목표는 주어진 데이터를 잘 학습하는 optimization이 아니라, 우리가 관측하지 못한 데이터(unseen data)에 대해서 일반화(generalization)하는 것이다. 이러한 일반화를 위해 우리는 실제 확률 분포로부터 샘플링하여 수집된 데이터만을 가지고 " 현상을 가장 잘 설명하는 확률 분포 모델"을 추정함으로써, 우리가 알고 싶은 실제 확률 분포를 근사하게 된다. 이때 주어진 데이터를 잘 추정하기 위해 가능도를 최대화하도록 파라미터를.. 더보기
[비모수 통계] KS test (Kolmogorov–Smirnov test) 방법 신용평가모형의 타당성을 테스트하는 통계적인 기준은 많지만, 오늘은 그 중 하나인 K-S 통계량을 소개하고자 한다. 아래는 NICE평가정보에서 소개하고 있는, K-S 통계량 산출 원리이다. K-S 통계량은 우량집단과 불량집단의 누적분포의 차이를 나타내는 지표로 신용평가모형의 변별력 평가 시 주요 판별 통계량으로 활용됩니다. K-S 통계량이 20 이상인 경우 신용평가모형의 변별력이 확보되는 것으로 판단합니다. 신용등급에 따른 우불량 집단의 분포 차이를 비교하여, 누적 우량비율과 누적 불량비율 차이의 최대 값을 K-S 통계량으로 정의합니다. 출처 :NICE평가정보 신용등급체계공시 K-S 테스트는 one-sample, two-sample로 나뉘는데, 우선 모집단에서 추출한 관측된 표본의 분포가 어떤 특정한 이론.. 더보기
[기초 통계] 08. 모비율 검정(One sample case) 오류나 틀린 부분이 있을 경우 언제든지 댓글 혹은 메일로 남겨주세요 😄 One sample case 우선 하나의 집단에서 샘플을 뽑아 모집단 비율을 추론하는 one sample case 예를 들어보자. 예를들어, 새누리당과 민주당 후보 중 누가 대통령 후보가 될까? 라는 예시가 있다고 하자. 이것은 선택지가 2개인 범주이며, 대통령 선거 투표자는 두 후보 중 하나를 선택할 것이다. 우리는 출구조사로 투표자와 후보에 대한 투표수의 비율로 모집단의 비율을 추정할 것이다. \begin{equation} \hat{p}=\frac{x}{n} \end{equation} 여기서 n은 샘플의 수이며, x는 샘플에서 특정 정당을 지지하는 수이다. 2022년 새누리당 후보와 민주당 후보의 출구조사 결과를 가지고 선출될 가.. 더보기
AttributeError: 'TensorVariable' object has no attribute 'get_shape' 해결 Keras에서 사용하는 Backend가 "Theano"를 사용했기 때문에 발생한 문제이다. 내가 실행하려고 하는 딥러닝 아키텍처가 Tensorflow Backend 기반으로 작성되었기에 발생하는 오류 get_shape()를 int_shape()로 변경해보고, 뭐시기를 다 해봤는데 안되더라. 코드가 get_shape().as_list()로 들어가는데, get_shape()를 변경하면, as_list()가 없다더라.. 벡앤드를 우선 체크해보자. backend Keras is a model-level library, providing high-level building blocks for developing deep learning models. It does not handle low-level operat.. 더보기
[MYSQL] 예약 테이블을 통해 RFM 테이블 만들기 방법 및 쿼리 어떤 고객에게 마케팅을 할 것인지 선정하기 위해서, 고객이 최근 우리 서비스에서 언제 결제했고, 최근 결제 했다면 오늘 부터 얼마나 지났으며, 금액은 얼마고, 몇 번을 결제했는지 알고 싶다고 한다. 여기서 RFM은 다음과 같이 정의한다. Recency: 고객이 얼마나 최근에 구매를 했는가? Frequency: 고객이 (주어진 기간 동안) 얼마나 자주 구매를 했는가? Monetary: 고객이 (주어진 기간 동안) 구매에 얼마를 지출하였는가? SELECT SUB.user_id, -- 결제한 고객 ID MAX(SUB.date) AS recent_date, -- 고객별 최근 구매일 DATEDIFF(CURRENT_DATE(), (MAX(SUB.date))) AS recency, -- 고객별 구매 최근성 ROUND.. 더보기
Hold-out, 교차검증 K-Fold, Stratified K-Fold 여기서 코드는 권철민 저의 머신러닝 완벽가이드를 바탕으로 정리하였습니다. 오류나 틀린 부분이 있을 경우 언제든지 댓글 혹은 메일로 남겨주세요 😄 Intro 교차검증은 간단하게 말해서, 학습 데이터로 여러번 검증을 하는 것을 말한다. 머신러닝은 데이터에 의존적일 수 밖에 없어서, 반복적으로 테스트를 진행하는 교차검증이 필요하다. 예를 들어, 학습 데이터와 테스트 데이터가 종속성이 강하다고 치자. 그렇다면 알고리즘이 데이터를 학습한 후 진행한 테스트 성능이 좋았을때, 그 이유가 알고리즘의 성능이 좋아서 그런건지, 정답과 비슷한 데이터를 학습해서 성능이 좋은 건지 알 수 없다. 따라서 여러번의 테스트를 통해 실제 알고리즘의 성능을 평가하는 것이 중요하다. 또 머신러닝의 목표인 일반화 성능을 높이기 위해 여러번.. 더보기
[기초 통계] 07. 두 집단 비교에 대한 추론 앞에서 우리는 하나의 집단에 대한 모집단의 평균을 검증하기 위해 신뢰구간을 구하고, 가설검증을 해보았다. -> (one-sample-test) 이제는 2개의 집단이 존재하고, 집단의 평균이 통계적으로 유의미한지 비교하는 상황을 생각해보자. -> (two sample-test) 두 모집단 비교 앞에서 진행한 one-sample-test와는 다르게, 두 집단을 비교할때 두 집단의 모분산이 동일한가?(equal variance) 동일하지 않는가?(unequal variance)에 따라 검증 수행 방법이 달라진다. 따라서 two-sample-test를 진행하기 전에 등분산 검정을 먼저 수행한다. 그리고 한 표본의 값이 다른 표본의 값에 영향을 주는지에 따라서 (두 표본이 독립적인가?) 에 따라서 independ.. 더보기
[기초 통계] 06. 가설검증과 오류 오류나 틀린 부분이 있을 경우 언제든지 댓글 혹은 메일로 남겨주세요 😄 가설 검정 가설이란 무엇인가? 가설은 모집단에 대한 진술을 의미함. 우리는 보통 모집단이 너무 크기 때문에 전수조사를 하지 않고, 표본의 통계값으로 모집단이 모집단의 진술을 지지하는지 검정함 그럼 가설을 어떻게 검증할까? 내가 연구하고자 하는 모든 집단을 전수조사 한다면 시간과 돈이 기하급수적으로 들것임. 따라서 앞에서 언급한 표본분포와 신뢰구간 그리고 추정을 이용함 똑같은 예시인데, 하버드 입학생의 SAT 평균성적이 500점인지에 대한 가설을 검증하고 싶다고 하자. 그렇다면, 100명의 하버드 학생에게 SAT 성적을 조사하여 평균을 냈을 때, 350점이 나온다면 아마 가설을 기각해야 할 것이다. 그럼 510점이 나왔으면 최초에 세운.. 더보기