반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


부트스트랩(Bootstrap)이란?

현재 있는 표본에서 추가적으로 표본을 복원추출하고 각 표본에 대한 통계량과 모델을 다시 계산하는 것이며, 데이터나 표본통계량이 정규분포를 따라야 한다는 가정은 꼭 필요하지 않다. 즉, 원래 표본을 수천, 수백만 번 복제하는 것이라고 할 수 있다. 이를 통해 원래 표본으로부터 얻어지는 모든 정보를 포함하는 가상 모집단을 얻을 수 있다.

 

부트스트랩(Bootstrap)은 표본통계량의 변동성을 평가하는 강력한 도구이다.

 

 

부트스트랩 재표본추출 알고리즘

1. 샘플 값을 하나 뽑아서 기록하고 제자리에 놓는다.

2. n번 반복한다.

3. 재표본추출된 값의 평균을 기록한다.

4. 1~3단계를 R번 반복한다.

5. R개의 결과를 사용하여 표준편차, 히스토그램, 신뢰구간 등을 찾는다.


배깅(Bagging)이란?

배깅(Bagging)은 앙상블 기법의 종류 중 하나이며, 부트스트랩(Bootstrap) 데이터를 가지고 모델을 돌려 모델 파라미터의 안정성(변동성)을 추정하거나 예측력을 높일 수 있다. 이를 활용하여 분류 및 의사 결정 트리를 사용할 때, 여러 부트스트랩(Bootstrap) 샘플을 가지고 트리를 여러 개 만들어 각 트리에서 나온 예측값을 평균 내는 것이 단일 트리를 사용하는 것보다 효과적인데, 이 방법을 배깅(Bagging)이라고 한다.

 

배깅(Bagging) 기법을 활용한 모델이 우리가 흔히 사용하는 랜덤 포레스트 모델(Random Forest Model)이다.

 

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


복원추출(Sampling with replacement)

추첨 후, 다음번에도 중복 추출이 가능하도록 한 번 뽑은 표본을 모집단에 다시 넣고 다른 표본을 추출하는 방법.

즉, 같은 표본이 중복해서 추출될 수 있다.

 

복원추출인 경우 표본평균의 평균과 분산은 아래와 같다.

 

평균 = 모평균

분산 = 모분산 / N


비복원추출(Sampling without replacement)

추첨 후, 한번 뽑힌 표본은 다시 뽑히지 않도록 모집단에 넣지 않고 다른 표본을 추출하는 방법.

즉, 한번 추출된 표본은 다시 추출되지 않는다.


예를 들어, 숫자 카드 1, 2, 3이 있다. 숫자 카드를 뽑는 방법은 아래와 같다.

복원추출(Sampling with replacement)

-> (1,2), (1,3), (2,3) 으로 총 3개로 1/3의 확률을 가지고 있다.

 

비복원추출(Sampling without replacement)

-> (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3) 으로 총 9개로 1/9의 확률을 가지고 있다.

 

위의 예시와 같이, 복원추출(Sampling with replacement)과 비복원추출(Sampling without replacement)은 모집단의 모든 원소가 표본으로 추출될 확률이 동일한 확률추출법이다.


샘플링 기반의 추정이나 모델링에서 데이터의 품질은 데이터의 양보다 더 중요하다. 그렇기에, 복원추출(Sampling with replacement)과 비복원추출(Sampling without replacement)의 선택에 따라 결과가 달라진다.

 

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


지능형 기차 성공출처분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 14864 10749 9609 77.567%

문제

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.

 내린 사람 수탄 사람 수1번역(출발역)2번역3번역4번역(종착역)

0 32
3 13
28 25
39 0

예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.

이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.

  1. 기차는 역 번호 순서대로 운행한다.
  2. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
  3. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
  4. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.

4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.

입력

각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 넷째 줄까지 역 순서대로 한 줄에 하나씩 주어진다. 

출력

첫째 줄에 최대 사람 수를 출력한다.  


A = []
people_result = 0
for _ in range(4) : 
    Out_people, In_people = map(int, input().split())
    people_result += In_people
    people_result -= Out_people
    
    A.append(people_result)

print(max(A))

 

반응형

+ Recent posts