연습

시간 제한1초메모리 제한128 MB

요약
관측값 (n, w) 쌍들이 주어질 때 로지스틱 회귀의 우도를 최대화하는 절편과 기울기를 구해 소수점 네 자리까지 출력한다.
난이도

보통10점 중 7점

유형
수학, 확률, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

한 팀이 프로그래밍 대회에서 우승할 확률이, 그 팀이 얼마나 연습했는지에 얼마나 좌우되는지를 모형으로 나타내려고 한다.

어떤 팀이 어떤 대회에서 우승할 확률을 pp, 그 팀이 대회 전에 푼 연습 문제의 수를 nn이라 하자. 이 둘이 다음의 로지스틱 모형으로 연결되어 있다고 가정한다.

log⁡p1−p=a+b n\log\frac{p}{1-p} = a + b\,n

여기서 aa와 bb는 상수이다. 관측된 결과들의 집합에 이 모형이 가장 잘 들어맞도록 하는 aa와 bb를 구하는 것이 목표이다.

각 관측값은 순서쌍 (n,w)(n, w)이다. nn은 어떤 팀이 대회 전에 푼 연습 문제의 수이고, ww는 그 팀이 그 대회에서 우승했으면 11, 그렇지 않으면 00이다.

aa, bb, nn이 주어지면 이 모형으로부터 w=1w = 1일 추정 확률 pp를 계산할 수 있다. 한 관측값의 가능도(likelihood)는 w=1w = 1이면 pp, w=0w = 0이면 1−p1 - p이다. 관측값 집합의 가능도는 각 관측값의 가능도를 모두 곱한 값이다.

주어진 관측값 집합의 가능도를 최대로 만드는 aa와 bb, 즉 최대가능도추정값(maximum-likelihood estimate)을 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 마지막에는 00 하나만 있는 줄이 온다.

각 테스트 케이스는 정수 kk (1<k≤1001 < k \le 100)로 시작하며, 이는 뒤따르는 관측값의 개수이다. 이어지는 kk개의 줄에는 각각 두 정수 nn과 ww (0≤n≤1000 \le n \le 100, 0≤w≤10 \le w \le 1)가 주어진다. 각 테스트 케이스에는 서로 다른 nn 값이 적어도 두 개, 서로 다른 ww 값이 적어도 두 개 포함된다.

출력

각 테스트 케이스마다 aa와 bb를 소수점 아래 넷째 자리까지 반올림하여 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    20
    0 0
    0 0
    0 0
    0 0
    1 0
    1 0
    1 0
    1 1
    2 0
    2 0
    2 1
    2 1
    3 0
    3 1
    3 1
    3 1
    4 1
    4 1
    4 1
    4 1
    0
    
    예상 출력
    -3.1748 1.5874