확률을 위한 머신러닝 (7일간의 미니 코스)

확률에 대한 머신러닝 속성 과정.
7일 안에 머신러닝에 사용된 확률을 파악하세요.


확률은 머신러닝의 기반이 되는 수학 분야입니다.

확률은 많은 난해한 이론과 발견이 있는 넓은 분야이지만 머신러닝 실무자에게는 현장에서 가져온 너트와 볼트, 도구 및 기호가 필요합니다. 확률이 무엇인지에 대한 견고한 기초가 있으면 연구에 좋은 부분이나 관련성 있는 부분에만 집중할 수 있습니다.

이 집중 과정에서는 7일 만에 Python을 사용하여 머신러닝에 사용되는 확률론적 방법을 시작하고 자신 있게 이해하고 구현하는 방법을 알아봅니다.


이 집중 코스는 누구를 위한 것입니까?

시작하기 전에 먼저 점검해 봅시다.

이 과정은 응용 머신러닝을 일부 알고 있을 수 있는 개발자를 위한 것입니다. 예측 모델링 문제를 처음부터 끝까지 또는 적어도 대부분의 주요 단계를 주요 도구로 해결하는 방법을 알고 있을 수 있습니다.

이 과정의 수업은 다음과 같은 몇 가지 사항을 가정합니다.

  • 당신은 프로그래밍을 위한 파이썬의 기본을 알고 있습니다.
  • 당신은 배열 조작을 위한 기본적인 NumPy를 알고 있습니다.
  • 당신은 머신러닝에 대한 이해와 응용을 심화하기 위해 확률을 배우고 싶습니다.


수업을 위해 다음과 같은 조건이 필요치는 않습니다.

  • 수학의 대가
  • 머신러닝 전문가


이 집중 과정은 약간의 머신러닝을 알고 있는 개발자에서 확률론적 방법의 기본 사항을 탐색할 수 있는 개발자로 안내합니다.

참고 :이 집중 과정은 적어도 NumPy가 설치된 Python3 SciPy 환경이 있다고 가정합니다. 환경에 대한 도움이 필요한 경우 여기에서 단계별 자습서를 따를 수 있습니다.


집중 과정 개요

이 집중 과정은 7개의 수업으로 나뉩니다.

하루에 한 레슨을 완료하거나(권장) 하루에 모든 레슨을 완료할 수 있습니다(하드코어). 이것은 당신이 사용할 수 있는 시간과 열정의 수준에 달려 있습니다.

다음은 Python에서 확률에 관한 머신러닝을 시작하고 생산성을 높일 수 있는 7가지 단원 목록입니다.

  • 레슨 01: 확률 및 머신러닝
  • 레슨 02: 세 가지 유형의 확률
  • 과정 03: 확률 분포
  • 레슨 04: 나이브 베이즈 분류기
  • 레슨 05: 엔트로피와 교차 엔트로피
  • 레슨 06: 전문적이지 않은 분류기
  • 과정 07: 확률 점수


각 수업은 60초 또는 최대 30분이 소요될 수 있습니다. 시간을 내어 자신의 진도에 맞게 수업을 완료하십시오. 아래 의견에 질문하고 결과를 게시하십시오.

이 수업을 통해 당신이 관련된 실무를 할 수 있기를 기대합니다. 힌트를 주겠지만 각 강의의 요점 중 일부는 통계 방법과 NumPy API 및 Python의 동급 최고의 도구에 대한 도움말을 찾기 위해 어디로 가야 하는지 배우도록 하는 것입니다. (힌트 :이 블로그에 모든 답변이 있습니다. 검색 상자를 사용하십시오.)

참고 : 이것은 단지 속성 과정입니다. 더 자세하고 구체화된 자습서는 “머신러닝에 대한 확률“이라는 제목의 책을 참조하시기 바랍니다.



레슨 01: 확률 및 머신러닝

이 단원에서는 머신러닝 실무자가 기술과 능력을 향상시키기 위해 확률을 연구해야 하는 이유를 알아봅니다.

확률은 불확실성을 정량화하는 수학 분야입니다.

머신러닝은 불확실한 데이터에서 예측 모델링을 개발하는 것입니다. 불확실성은 불완전하거나 불완전한 정보로 작업하는 것을 의미합니다.

불확실성은 머신러닝 분야의 기본이지만 초보자, 특히 개발자 배경에서 온 사람들에게 가장 어려움을 초래하는 측면 중 하나입니다.

머신러닝에는 세 가지 주요 불확실성 원인이 있습니다. 그들은:

  • 관측의 노이즈(예: 측정 오류 및 랜덤 노이즈).
  • 도메인의 불완전한 적용 범위(예: 모든 데이터를 관찰할 수 없음).
  • 문제의 불완전한 모델, 예를 들어 모든 모델에 오류가 있고 일부는 유용합니다.


적용된 머신러닝의 불확실성은 확률을 사용하여 관리됩니다.

  • 확률과 통계는 도메인에서 관찰한 변수의 기대값과 변동성을 이해하고 정량화하는 데 도움이 됩니다.
  • 확률은 영역에서 관측치의 예상 분포와 밀도를 이해하고 정량화하는 데 도움이 됩니다.
  • 확률은 새로운 데이터에 적용될 때 예측 모델의 예상 능력과 성능 분산을 이해하고 정량화하는 데 도움이 됩니다.


이것이 머신러닝의 기반입니다. 또한 확률을 예측하기 위해 모델이 필요할 수 있고, 확률을 사용하여 예측 모델을 개발할 수 있으며(예: Naive Bayes), 확률적 프레임워크를 사용하여 예측 모델을 훈련할 수 있습니다(예: 최대 가능성 추정).


목표

이 단원에서는 머신러닝의 맥락에서 확률을 학습하려는 세 가지 이유를 나열해야 합니다.

이것은 위의 이유 중 일부와 관련이 있거나 자신의 개인적인 동기일 수 있습니다.

다음 단원에서는 세 가지 유형의 확률과 이를 계산하는 방법을 알아봅니다.


레슨 02: 세 가지 유형의 확률

이 강의에서는 확률 변수 간의 결합 확률, 한계 확률 및 조건부 확률에 대한 간략한 소개를 할 것입니다.

확률은 사건의 가능성을 정량화합니다.

특히, 동전 던지기, 주사위 굴리기 또는 카드 뽑기와 같은 확률 변수에 대한 특정 결과가 얼마나 가능성이 있는지 정량화합니다.

변수 X에 대한 사건 A와 변수 Y에 대한 사건 B의 확률, 즉 줄여서 X=A 및 Y=B 이며 두 변수가 어떤 식으로든 관련되거나 종속적이라는 두 사건의 확률에 대해 논의할 수 있습니다.

따라서 고려해야 할 세 가지 주요 유형의 확률이 있습니다.


결합 확률

두 개의 서로 다른 확률 변수의 결과와 같이 두 개의 동시 사건의 확률에 관심이 있을 수 있습니다.

예를 들어, 사건 A와 사건 B의 결합 확률은 공식적으로 다음과 같이 작성됩니다.

  • P (A 및 B)

사건 A와 B에 대한 결합 확률은 주어진 사건 A의 확률에 사건 B확률을 곱한 값으로 계산됩니다.

이것은 다음과 같이 공식적으로 말할 수 있습니다.

  • P (A 및 B) = P (A 주어진 B) * P (B)


한계 확률

다른 확률 변수의 결과에 관계없이 하나의 확률 변수에 대한 사건의 확률에 관심이 있을 수 있습니다.

한계 확률에 대한 특별한 기호는 없습니다. 첫 번째 변수의 주어진 고정 이벤트에 대한 두 번째 변수의 모든 사건의 모든 확률에 대한 합계 또는 합집합입니다.

  • 모든 y에 대한 P (X = A) = 합계 P (X = A, Y = yi)

조건부 확률

우리는 다른 사건의 발생을 감안할 때 사건의 확률에 관심이 있을 수 있습니다.

예를 들어, 주어진 사건B의 사건A의 조건부 확률은 다음과 같이 공식적으로 작성됩니다.

  • P (A 주어진 B)

주어진 사건B에 대한 조건부 확률은 다음과 같이 사건의 결합 확률을 사용하여 계산할 수 있습니다.

  • P (A 주어진 B) = P (A 및 B) / P (B)


목표

이 단원에서는 결합 확률, 주변 확률 및 조건부 확률 계산을 연습해야 합니다.

예를 들어, 한 가족에 두 명의 자녀가 있고 가장 나이가 많은 자녀가 소년인 경우 이 가족에게 두 명의 아들이 있을 확률은 얼마입니까? 이것을 “소년 또는 소녀 문제”라고 하며 확률을 연습하기위한 많은 일반적인 예제 중 하나입니다.

아래 의견에 답변을 게시하십시오. 나는 당신이 무엇을 생각해 내는지 보고 싶습니다.

다음 단원에서는 확률 변수에 대한 확률 분포를 발견합니다.


과정 03: 확률 분포

이 단원에서는 확률 분포에 대한 간략한 소개를 할 것입니다.

확률에서 랜덤 변수는 가능한 많은 값 중 하나를 취할 수 있습니다 (예 : 상태 공간의 이벤트). 랜덤 변수에 대한 특정 값 또는 값 집합에 확률을 할당할 수 있습니다.

확률 변수에는 두 가지 주요 클래스가 있습니다.

  • 이산 확률 변수. 값은 유한한 상태 집합에서 가져옵니다.
  • 연속 랜덤 변수. 값은 실수 값 숫자 값의 범위에서 가져옵니다.


이산 확률 변수에는 유한 상태 집합이 있습니다. 예를 들어, 자동차의 색상. 연속 랜덤 변수에는 숫자 값의 범위가 있습니다. 예를 들어, 인간의 키.

확률 분포는 랜덤 변수 값에 대한 확률의 요약입니다.


이산 확률 분포

이산 확률 분포는 이산 확률 변수에 대한 확률을 요약합니다.

잘 알려진 이산 확률 분포의 몇 가지 예는 다음과 같습니다.

  • 푸 아송 분포.
  • 베르누이 분포와 이항 분포.
  • 다항 분포와 다항 분포.


연속 확률 분포

계량형 확률 분포는 계량형 랜덤 변수에 대한 확률을 요약합니다.

잘 알려진 계량형 확률 분포의 몇 가지 예는 다음과 같습니다.

  • 정규 분포 또는 가우스 분포.
  • 지수 분포.
  • 파레토 분포.

랜덤 표본 가우스 분포

평균이 50이고 표준 편차가 5인 분포를 정의하고 이 분포에서 난수를 샘플링할 수 있습니다. normal() NumPy 함수를 사용하여 이를 달성 할 수 있습니다.

아래 예제에서는 이 분포에서 10개의 숫자를 샘플링하고 인쇄합니다.

예제를 실행하면 정의된 정규 분포에서 랜덤하게 샘플링된 숫자 10개가 인쇄됩니다.



목표

이 강의에서는 다른 계량형 또는 이산 확률 분포 함수에서 표본을 추출하는 예제를 개발해야 합니다.

보너스의 경우 주어진 분포에 대해 x-축에 값을 표시하고 y-축에 확률을 플로팅하여 선택한 확률 분포 함수의 밀도를 표시할 수 있습니다.

다음 단원에서는 Naive Bayes 분류자를 알아봅니다.


레슨 04: 나이브 베이즈 분류기

이 단원에서는 분류 예측 모델링을 위한 Naive Bayes 알고리즘을 알아봅니다.

머신러닝에서 우리는 종종 주어진 관측치에 대한 클래스 레이블을 예측하려는 예측 모델링 문제에 관심이 있습니다.

이 문제를 해결하는 한 가지 방법은 확률론적 모델을 개발하는 것입니다. 확률론적 관점에서, 우리는 관측치가 주어진 클래스 레이블의 조건부 확률 또는 입력 데이터 X가 주어진 클래스 y의 확률을 추정하는 데 관심이 있습니다.

  • P(y | X)


Bayes 정리는 원하는 조건부 확률의 역전을 사용하여 조건부 확률을 계산하는 대안적이고 원칙적인 방법을 제공하며, 이는 종종 계산하기가 더 간단합니다.

베이즈 정리에 대한 계산의 간단한 형태는 다음과 같습니다.

  • 피(A| B) = P (B| A) * P (A) / P (B)


기서 P(A) 계산에 관심이 있을 확률| B)를 사후 확률이라고 하고 사건P(A)의 한계 확률을 사전 확률이라고 합니다.

분류를 위한 베이즈 정리의 직접적인 적용은 특히 변수 또는 특징(n)의 수가 증가함에 따라 다루기 어려워집니다. 대신 계산을 단순화하고 각 입력 변수가 독립적이라고 가정 할 수 있습니다. 극적이기는 하지만 이 간단한 계산은 입력 변수가 매우 의존적인 경우에도 매우 우수한 성능을 제공하는 경우가 많습니다.

각각의 개별 입력 변수에 대한 확률 분포를 가정하고 각 클래스에 속하는 각 특정 입력 값의 확률을 계산하고 결과를 곱하여 가장 가능성이 높은 클래스를 선택하는 데 사용되는 점수를 제공함으로써 처음부터 구현할 수 있습니다.

  • P(yi | x1, x2, …, xn) = P(x1|y1) * P(x2|y1) * … P(xn|y1) * P(yi)


scikit-learn 라이브러리는 각 입력 변수에 대해 가우스 분포를 가정하는 경우 알고리즘의 효율적인 구현을 제공합니다.

scikit-learn Naive Bayes 모델을 사용하려면 먼저 모델을 정의한 다음 학습 데이터 세트에 적합하게 합니다. 일단 적합하면 predict_proba() 함수를 통해 확률을 예측할 수 있고 클래스 레이블은predict() 함수를 통해 직접 예측할 수 있습니다.

가우스 나이브 베이즈 모델(GaussianNB)을 테스트 데이터 세트에 피팅하는 전체 예제는 다음과 같습니다.

예제를 실행하면 학습 데이터 세트의 모델이 적합해진 다음, 이전 예제에서 사용한 것과 동일한 첫 번째 예제에 대한 예측이 수행됩니다.



목표

이 단원에서는 예제를 실행하고 결과를 보고해야 합니다.

보너스를 받으려면 꽃 측정값을 기반으로 붓꽃 종을 분류하는 것과 같은 실제 분류 데이터 세트에서 알고리즘을 사용해 보세요.

다음 단원에서는 엔트로피와 교차 엔트로피 점수를 발견하게 됩니다.


레슨 05: 엔트로피와 교차 엔트로피

이 단원에서는 머신러닝을 위한 교차 엔트로피를 알아봅니다.

정보 이론은 의사 소통을 위한 정보를 정량화하는 것과 관련된 연구 분야입니다.

정보를 정량화하는 직관은 이벤트에 얼마나 많은 놀라움이 있는지 측정하는 아이디어입니다. 드문 사건 (낮은 확률)은 더 놀랍고 따라서 일반적인 사건 (높은 확률)보다 더 많은 정보를 가지고 있습니다.

  • 낮은 확률의 사건 : 높은 정보 (놀라움).
  • 높은 확률의 사건: 낮은 정보(놀라운 일이 아님).


사건의 확률을 사용하여 사건에 존재하는 정보의 양을 계산할 수 있습니다.

  • 정보 (x) = -로그 ( p (x) )


또한 확률 변수에 얼마나 많은 정보가 있는지 정량화 할 수 있습니다.

이를 엔트로피라고 하며 이벤트를 나타내는 데 평균적으로 필요한 정보의 양을 요약합니다.

엔트로피는 다음과 같이 K 개의 이산 상태를 갖는 랜덤 변수 X에 대해 계산할 수 있습니다.

  • 엔트로피(X) = -sum(i=1 to K p(K) * log(p(K)))


교차 엔트로피는 주어진 확률 변수 또는 사건 집합에 대한 두 확률 분포 간의 차이를 측정한 것입니다. 분류 모델을 최적화 할 때 손실 함수로 널리 사용됩니다.

엔트로피 개념을 기반으로 하며 한 배포판에서 다른 분포와 비교하여 이벤트를 나타내거나 전송하는 데 필요한 평균 비트 수를 계산합니다.

  • 교차 엔트로피 (P, Q) = – X의 합 x P (x) * 로그 (Q (x))


우리는 작은 예를 통해 교차 엔트로피 콘크리트를 계산할 수 있습니다.

세 개의 사건이 서로 다른 색으로 있는 랜덤 변수를 고려합니다. 이 변수에 대해 두 가지 다른 확률 분포가 있을 수 있습니다. 이 두 분포 사이의 교차 엔트로피를 계산할 수 있습니다.

전체 예제는 다음과 같습니다.

예제를 실행하면 먼저 P에서 Q의 교차 엔트로피가 계산된 다음 Q에서 P의 교차 엔트로피가 계산됩니다.



목표

이 단원에서는 예제를 실행하고 결과와 그 의미를 설명해야 합니다. 예를 들어, 교차 엔트로피의 계산은 대칭입니까?

다음 단원에서는 순진한 분류자 모델을 개발하고 평가하는 방법을 알아봅니다.


레슨 06: 비전문적인 분류기

이 단원에서는 머신러닝을 위한 비전문적인 분류 전략을 개발하고 평가하는 방법을 알아봅니다.

분류 예측 모델링 문제에는 모델에 대한 입력이 지정된 클래스 레이블을 예측하는 작업이 포함됩니다.

분류 모델이 주어지면 모델에 기술이 있는지 여부를 어떻게 알 수 있습니까?

이것은 모든 분류 예측 모델링 프로젝트에서 일반적인 질문입니다. 대답은 주어진 분류자 모델의 결과를 기준선 또는 비전문적인 분류자 모델과 비교하는 것입니다.

각 클래스에 대해 관측치의 수가 같지 않은 간단한 2클래스 분류 문제(예: 불균형)를 가정해 보겠습니다(예: 불균형 상태) class-0에 대한 25개의 예제와 class-1에 대한 75개의 예제가 있습니다. 이 문제는 다른 순진한 분류기 모델을 고려하는 데 사용할 수 있습니다.

예를 들어, 동일한 확률로 클래스 0 또는 클래스 1을 랜덤하게 예측하는 모형을 고려해 보십시오. 어떻게 수행될까요?

간단한 확률 모델을 사용하여 예상 성능을 계산할 수 있습니다.

  • P(yhat = y) = P(yhat = 0) * P(y = 0) + P(yhat = 1) * P(y = 1)


각 클래스의 발생(0.25 및 0.75)과 각 클래스에 대한 예측 확률(0.5 및 0.5)을 연결하고 모델의 성능을 추정할 수 있습니다.

  • P(야하트 = y) = 0.5 * 0.25 + 0.5 * 0.75
  • P (yhat = y) = 0.5


이 분류기는 꽤 열악하다는 것이 밝혀졌습니다.

이제 매번 다수 클래스 (클래스 1)를 예측하는 것을 고려하면 어떨까요? 다시 말하지만, 예측 확률(0.0 및 1.0)을 연결하고 모델의 성능을 추정할 수 있습니다.

  • P(야하트 = y) = 0.0 * 0.25 + 1.0 * 0.75
  • P(야하트 = y) = 0.75


이 간단한 변경은 더 나은 비전문적인 분류 모델을 초래하며 클래스가 불균형 할 때 사용하기에 가장 좋은 비전문적인 분류자 일 것입니다.

scikit-learn 머신러닝 라이브러리는 다음 분류 예측 모델링 프로젝트에서 사용할 수 있는DummyClassifier라는 다수 클래스 순진한 분류 알고리즘의 구현을 제공합니다.

전체 예제는 다음과 같습니다.

예제를 실행하면 데이터 집합이 준비되고, 다수결 클래스 전략을 사용하여 데이터 집합에 DummyClassifier가 정의되고 맞춰집니다.



목표

이 단원에서는 예제를 실행하고 결과를 보고하여 모델이 계산에서 예상한 대로 수행되는지 확인해야 합니다.

보너스로, 예측이 이루어질 때마다 학습 데이터 세트에서 클래스 레이블을 임의로 선택하는 비전문적인 분류자 모델의 예상 확률을 계산합니다.

다음 단원에서는 확률을 예측하는 점수 매기기 모델에 대한 메트릭을 검색합니다.


과정 07: 확률 점수

이 단원에서는 분류 예측 모델링 문제에서 예측 확률을 평가하는 데 사용할 수 있는 두 가지 점수 매기기 방법을 알아봅니다.

분류 문제에 대한 클래스 레이블 대신 확률을 예측하면 예측에 추가적인 뉘앙스와 불확실성을 제공할 수 있습니다.

추가된 뉘앙스를 통해 보다 정교한 메트릭을 사용하여 예측된 확률을 해석하고 평가할 수 있습니다.

예측 확률을 평가하기 위해 널리 사용되는 두 가지 채점 방법을 자세히 살펴보겠습니다.


로그 손실 점수

로지스틱 손실 또는 줄여서 로그 손실은 예측 확률과 관측 확률 간의 로그 가능성을 계산합니다.

로지스틱 회귀와 같은 이진 분류 모델을 학습하기 위해 개발되었지만 다중 클래스 문제를 평가하는 데 사용할 수 있으며 정보 이론에서 파생된 교차 엔트로피를 계산하는 것과 기능적으로 동일합니다.

완벽한 기술을 가진 모델의 로그 손실 점수는 0.0입니다. 로그 손실은 scikit-learn의log_loss() 함수를 사용하여 파이썬에서 구현할 수 있습니다.

예를 들어:



브라이어 점수

Glenn Brier의 이름을 딴 Brier 점수는 예측 확률과 예상 값 사이의 평균 제곱 오차를 계산합니다.

점수는 확률 예측에서 오차의 크기를 요약합니다.

오류 점수는 항상 0.0에서 1.0 사이이며, 완벽한 기술을 가진 모델의 점수는 0.0입니다.

브라이어 점수는scikit-learn의 brier_score_loss() 함수를 사용하여 파이썬에서 계산할 수 있습니다.

예를 들어:

 


목표

이 단원에서는 각 예제를 실행하고 결과를 보고해야 합니다.

보너스로 모의 예측을 변경하여 더 좋거나 나쁘게 만들고 결과 점수를 비교하십시오.

이것이 마지막 수업이었습니다.


끝!
잠시 시간을내어 얼마나 멀리 왔는지 되돌아보십시오.

당신은 다음 내용을 배웠습니다.

  • 응용 머신러닝에서 확률의 중요성.
  • 확률의 세 가지 주요 유형과 계산 방법.
  • 확률 변수에 대한 확률 분포와 랜덤 변수에서 랜덤 표본을 추출하는 방법.
  • Bayes 정리를 사용하여 조건부 확률을 계산하는 방법과 분류 모델에서 사용하는 방법.
  • 정보, 엔트로피 및 교차 엔트로피 점수를 계산하는 방법과 그 의미.
  • 비전문적인 분류 모델에 대한 예상 성능을 개발하고 평가하는 방법.
  • 분류 문제에 대한 확률 값을 예측하는 모델의 기술을 평가하는 방법입니다.

네피리티
No Comments

Sorry, the comment form is closed at this time.