‘파이썬 라이브러리를 활용한 머신러닝‘ p286 페이지에 나와 있는 F-값을 Scikit-Learn에서 어떻게 계산하는지 살펴 보겠습니다. F-값에 대한 정의는 다음과 같습니다.
여기에서 k는 클래스의 수, n은 데이터의 개수입니다. 보통 클래스별 평균 분산 과 전체 분산
는 다음과 같이 정의됩니다.
는 클래스별 평균이고,
는 전체 데이터에 대한 평균입니다.
는 클래스별 데이터 개수입니다.
클래스별 평균 분산을 풀어서 간략히 나타내 보겠습니다.
여기에서 은 전체 데이터의 평균이므로 상수값입니다. 또한
는 전체 데이터의 개수
과 같습니다. 따라서,
로 나타낼 수 있습니다. 평균 를 클래스별 데이터의 합으로 풀어서 쓰면
마찬가지로 를 전체 데이터의 합으로 풀어서 쓸 수 있습니다.
결국 정리된 식을 보면 클래스별 데이터 합의 제곱을 클래스별 데이터 개수로 나누고 이를 모든 클래스에 대해 계산하여 더합니다. 그리고 전체 데이터 합의 제곱을 전체 데이터 개수로 나눈 것을 빼 줍니다. 이 식이 http://vassarstats.net/textbook/ch14pt1.html 에 있는 Step 4a의 식입니다.
다음은 를 풀어 보겠습니다.
위 식과 표현을 맞추기 위해 을 간단히
로 표현하겠습니다. 또한
이므로
정리된 식은 전체 데이터 합의 제곱에서 이 값을 데이터 개수로 나눈 것을 빼고 있습니다. 이 식은 Step 1의 식에 해당합니다. 따라서 은,
이 됩니다.
이렇게 유도된 계산식을 사용하는 목적은 계산의 효율성때문입니다. 전체 데이터의 합과 클래스별 데이터의 합을 알고 있으면 손쉽게 F-값을 계산할 수 있습니다. 하지만 우리가 직관적으로 이해하기에는 원래의 공식이 더 낫습니다. : )