Today I learned 5주차 Machine Learning 기초 Day1

Sanghoon Han·2021년 1월 4일
0

Today I learned

목록 보기
2/11

TIL 다시 시작

학기가 저번주로 종강을 했다.
기말고사 기간으로 인해 TIL을 하지 못했다.
방학기간이 끝난 새해 첫주 이기에 오늘부터 다시 화이팅 이다!!!

확률변수

  • 확률변수 X는 표본의 집합 S의 원소 e를 실수값 X(e) = x에 대응 시키는 함수이다

여기서 중요한것은 확률변수 또한 함수이다.

  • 대문자 X, Y ....로 표현한다
  • 소문자 x, y, .. 의 경우 확률변수가 가질 수 있는 값 들이다

예시를 들어보면
아래 사진을보자

위 주머니에서 공 2개를 뽑을때 나오는 표본의 공간은 3가지 이다.

이때 빨간공 의 갯수를 확률 변수 X로 두면
X가 1일때, X = 1, X = 2 일대 ..etc 으로 확률변수가 된다.

즉 위 표본공간에서 빨간공의 개수 라는 함수로 주어지게 되어 이를 정량화 할 수 있게 됐다.
X = f(x) = { x | x 는 빨간 공의 개수}
위 처럼 표현 될 수 있다.

위와 같은 상황일때 우리는 확률을 구할수있다.
p[X = 1] : 빨간공의 개수가 1개일 확률 -> p[X=1]=2/3(전체표본의갯수)p[X = 1] = {2/3(전체 표본의 갯수)}

확률변수의 함수(Function of Random Variables)

Inverse CDF Technique

  • 확률변수 X가 CDF Fx(x)Fx(x)를 가진다고 하자, 확률변수 UUNIF(0,1)U - UNIF(0,1)의 함수로 정의되는 다음 확률변수 YY를 생각해보자.

  • Y=Fx1(U)Y = Fx ^{-1}(U)

  • 확률변수 YY 는 확률변수 XX와 동일한 분포를 따르게 된다.

이게 무슨의미 일까?

우리가 어떤 X의 확률분포 p(x)p(x)를 알고 있다고 가정하자.
이때 p(x)p(x)를 활용해 실험을 하기위해 sampling을 하려 한다.
분포를 알기에 너무 쉽게 샘플링이 가능할것 같지만 어렵다

하지만 위 방법을 활용하면 이는 쉽게 샘플링을 할 수 가 있다.

  • 조건은 확률변수 XX의 경우 역함수가 존재 해야 한다.

증명

Fy(y)=P[Y<=y]Fy(y) = P[Y<=y]
=P[Fx1(U)<=y]=P[Fx^{-1}(U) <= y]
=P[U<=Fx(y)]=P[U <= Fx(y)]
=Fx(y)= Fx(y)

실제 코드에서 활용해 보자

#cdf: F(d) = d**2 /r**2 
#inverse cdf : r *(u**0.5)


import turtle
import math
import random

wn = turtle.Screen()
turtle.tracer = (8,0)
alex = turtle.Turtle()
alex.hideturtle()
r = 200
for i in range(5000):
    u = random.random() #0 ~ 1 U pdf를 따르는 u
    d = r * (u**0.5) # 역함수 
    theta = random.random()*360
    x = d * math.cos(math.radians(theta))
    y = d * math.sin(math.radians(theta))
    alex.penup()
    alex.setposition(x, y)
    alex.dot()
turtle.update()
wn.mainloop()

만약 역함수를 잘못된 함수로 샘플링을 하게되면 어떻게 될까?

d = r * u # d = r * (u**0.5)원래의 함수에서 바꿔주었다.

!

샘플링이 고르게 되지 않고 가운데에 몰려 있는것을 확인할 수 있다.

profile
Fail Fast learn Faster

0개의 댓글