기본 콘텐츠로 건너뛰기

새로운 측정기기의 유효성 판단 방법

새로운 측정기기의 유효성 판단 방법

이 글에서는 새로운 측정기기의 측정값과 표준 측정기기의 측정값간의 상관계수로 새로운 측정기기의 유효성을 판단할 수 있음을 베이지안 추론 방식으로 보여줍니다.

상식적인 결론을 수학적으로 뒷받침하기 위해 작성하는 글입니다. 본문에서 요구하는 수학 지식은 조건부확률베이즈 정리입니다.

이 글에 대한 구체적인 구현 사례는 아래 노트북에서 확인하실 수 있습니다.

문제 정의

현재 표준으로 사용하고 있는 기기(이하 표준기기)는 정밀도가 높기는 하지만 부피가 크고 고가이기 때문에 자주 이용하기는 어렵습니다. 이번에 가나다 업체에서 새롭게 개발한 기기(이하 신규기기)는 소형인데다가 가격도 저렴하여 가정에 구비해 놓고 사용할 수 있을 정도입니다.

그런데 신규기기가 측정하는 값과 표준기기가 측정하는 값의 종류가 서로 다릅니다. 이러한 경우에는 신규기기의 측정값을 토대로 표준기기의 측정값을 추정하는 모델을 개발하고 이의 유효성을 검증해야 합니다.

  • 표준기기 예시 - 컴퓨터단층촬영(CT)으로 복부 지방량 측정

  • 신규기기 예시 - 줄자로 허리 둘레 길이 측정

데이터 세트

신규기기의 유효성을 검증하기 위하여 조사대상군을 정하고 임상시험을 진행하여 아래와 같은 데이터 세트를 확보하였습니다.

# 신규기기 측정값 표준기기 측정값
11 m1m_1 a1a_1
22 m2m_2 a2a_2
33 m3m_3 a3a_3
NN mnm_n ana_n
  • 표준기기의 측정값을 실제값으로 간주합니다.

베이지안 추론

베이즈 정리에 기반하여 다음과 같이 세 단계를 거쳐 추론하는 것을 베이지안 추론이라고 합니다.

  1. 기존의 믿음 (prior belief)
  2. 새로운 증거 (new evidence)
  3. 믿음의 수정 (update belief -> posterior belief)

베이즈 정리

베이즈 정리는 아래의 식으로 표현됩니다.

  • P(HE)=P(EH)×P(H)P(E)P(H|E) = \frac{P(E|H)\times P(H)}{P(E)}

위 식에서 각 항목의 의미는 다음과 같습니다.

  • EE : 사건 (event)
  • HH : 추론하고자 하는 값 (hypothesis)
  • P(H)P(H) : E가 발생하기 전의 H에 대한 확률분포 (prior probability distribution)
  • P(EH)P(E|H) : H를 알고 있을 때 E의 발생 가능도 (likelihood)
  • P(E)P(E) : H에 관계없이 E의 발생 가능도 (marginal likelihood)
  • P(HE)P(H|E) : E가 발생한 후의 H에 대한 확률분포 (posterior probability distribution)

위의 식을 신규기기의 유효성 판단 문제에 적용하기 위하여 E와 H를 다음과 같이 정의합니다.

  • E: 신규기기의 측정값 (vmeasuredv_{measured})
  • H: 신규기기의 측정값으로부터 추정하는 실제값 (vactualv_{actual})

측정값이 vmeasuredv_{measured}일때 추정하는 실제값 vactualv_{actual}의 확률분포를 아래와 같이 조건부확률로 표현할 수 있습니다.

  • P(vactualvmeasured)P(v_{actual}|v_{measured})

이를 베이즈 정리에 따라 표현하면 아래와 같습니다.

  • P(vactualvmeasured)=P(vmeasuredvactual)×P(vactual)P(vmeasured)P(v_{actual}|v_{measured})=\frac { P(v_{measured}|v_{actual})\times P(v_{actual}) }{ P(v_{measured}) }

위 식의 각 항목에 대한 의미는 다음과 같습니다.

  • P(vactual)P(v_{actual}) : 측정값을 알기 전의 실제값 vactualv_{actual}에 대한 확률분포
  • P(vmeasuredvactual)P(v_{measured}|v_{actual}) : 실제값이 vactualv_{actual}일때 측정값 vmeasuredv_{measured}을 얻을 가능도
  • P(vmeasured)P(v_{measured}) : 실제값이 무엇이냐에 관계없이 측정값 vmeasuredv_{measured}을 얻을 가능도
  • P(vactualvmeasured)P(v_{actual}|v_{measured}) : 측정값이 vmeasuredv_{measured}일때 추정하는 실제값 vactualv_{actual}에 대한 확률분포

실제값 추정

임상시험을 통해서 수집한 데이터 세트로부터 아래의 항목들을 구합니다.

  • P(vactual)P(v_{actual}) : 표준기기 측정값에 대한 확률분포
  • P(vmeasuredvactual)P(v_{measured}|v_{actual}) : 표준기기 측정값이 vactualv_{actual}일때 신규기기 측정값 vmeasuredv_{measured}에 대한 확률분포
  • P(vmeasured)P(v_{measured}) : 신규기기 측정값에 대한 확률분포

측정값이 vmeasuredv_{measured}일때 vactualv_{actual} 전 구간에 대하여 사후 확률분포 P(vactualvmeasured)P(v_{actual}|v_{measured}) 값들을 구합니다.

  • P(vactual1vmeasured)=P(vmeasuredvactual1)×P(vactual1)P(vmeasured)P(v_{actual_1}|v_{measured})=\frac { P(v_{measured}|v_{actual_1})\times P(v_{actual_1}) }{ P(v_{measured}) }
  • P(vactual2vmeasured)=P(vmeasuredvactual2)×P(vactual2)P(vmeasured)P(v_{actual_2}|v_{measured})=\frac { P(v_{measured}|v_{actual_2})\times P(v_{actual_2}) }{ P(v_{measured}) }
  • ......
  • P(vactualkvmeasured)=P(vmeasuredvactualk)×P(vactualk)P(vmeasured)P(v_{actual_k}|v_{measured})=\frac { P(v_{measured}|v_{actual_k})\times P(v_{actual_k}) }{ P(v_{measured}) }
  • ......
  • P(vactualm1vmeasured)=P(vmeasuredvactualm1)×P(vactualm1)P(vmeasured)P(v_{actual_{m-1}}|v_{measured})=\frac { P(v_{measured}|v_{actual_{m-1}})\times P(v_{actual_{m-1}}) }{ P(v_{measured}) }
  • P(vactualmvmeasured)=P(vmeasuredvactualm)×P(vactualm)P(vmeasured)P(v_{actual_m}|v_{measured})=\frac { P(v_{measured}|v_{actual_m})\times P(v_{actual_m}) }{ P(v_{measured}) }

위의 사후확률 값들 중에서 vactualkv_{actual_k}일 때 최대가 된다면 실제값은 vactualkv_{actual_k}일 가능성이 가장 크다고 추정합니다. 이것을 Maximum A Posteriori (MAP) 추정이라고 부릅니다.

  • P(vactual)P(v_{actual})은 조사대상군에 따라 달라질 수 있습니다.
  • P(vmeasured)P(v_{measured}) 값은 위의 값들을 구하는 과정에서 변하지 않기 때문에 무시해도 됩니다.
  • P(vmeasuredvactual)P(v_{measured}|v_{actual}) 항목은 표준기기 측정값과 신규기기 측정값과의 관계를 나타냅니다.

신규기기의 유효성 판단

실제값과 측정값과의 관계를 나타내는 아래 항목을 통해서 신규기기의 유효성 판단 방법을 도출할 수 있습니다.

  • P(vmeasuredvactual)P(v_{measured}|v_{actual})

유효성 판단 과정은 다음과 같습니다.

1. 데이터 분석

  1. 데이터 세트의 (vactualv_{actual}, vmeasuredv_{measured})로 산포도를 그립니다.
  2. 두 값의 상관관계를 표현할 수 있는 모델(예를 들어 선형 회귀 모델)을 정의합니다.
  3. vactualv_{actual}vmeasuredv_{measured}의 상관계수를 구합니다.

2. 유효성 판단

측정값으로부터 실제값을 추정함에 있어서 위에서 구한 상관계수의 크기는 다음과 같은 의미를 가집니다.

  • 낮은 상관계수: P(vmeasuredvactual)P(v_{measured}|v_{actual})P(vactualvmeasured)P(v_{actual}|v_{measured}) 계산에 미치는 영향이 작고 이는 측정값이 실제값에 대한 추정에 크게 기여하지 못한다는 것을 의미함
  • 높은 상관계수: P(vmeasuredvactual)P(v_{measured}|v_{actual})P(vactualvmeasured)P(v_{actual}|v_{measured}) 계산에 미치는 영향이 크고 이는 측정값이 실제값의 추정에 크게 기여하다는 것을 의미함

따라서 신규기기의 유효성을 아래와 같이 판단할 수 있습니다.

  • 상관계수가 작다 ==> 신규기기의 유효성이 낮다
  • 상관계수가 크다 ==> 신규기기의 유효성이 높다

Written with StackEdit.

댓글

이 블로그의 인기 게시물

Intel MKL 예제를 Microsoft Visual C++로 빌드하기

Intel MKL 예제를 Microsoft Visual C++로 빌드하기 인텔 프로세서 시스템에서 아래의 영역에 해당하는 수학 계산을 빠르게 수행하고자 한다면 Intel MKL 라이브러리를 사용할 수 있습니다. Linear Algebra Fast Fourier Transforms (FFT) Vector Statistics & Data Fitting Vector Math & Miscellaneous Solvers 이 문서는 Intel MKL 이 제공하는 예제 파일을 Microsoft Visual C++ 로 컴파일하고 링크하여 실행 파일을 만드는 과정을 소개합니다. 빌드 환경 다음은 이 문서를 작성하는 과정에서 Intel MKL 예제를 빌드하기 위하여 사용한 환경입니다. 시스템 운영체제: Windows 10 (64비트) 프로세서: Intel Core i7 설치 제품 IDE: Microsoft Visual Studio Community 2019 (version 16) 라이브러리: Intel Math Kernel Library 2019 Update 5 환경 변수 명령 프롬프트 창을 엽니다. 아래 스크립트를 실행하여 환경 변수 INCLUDE , LIB , 그리고 PATH 를 설정합니다. @echo off set CPRO_PATH=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows set MKLROOT=%CPRO_PATH%\mkl set REDIST=%CPRO_PATH%\redist set INCLUDE=%MKLROOT%\include;%INCLUDE% set LIB=%MKLROOT%\lib\intel64;%LIB% set PATH=%REDIST%\intel64\mkl;%PATH% REM for OpenMP intel thread set LIB=%CPRO_PATH%\compiler\lib...

Llama 3.2로 문장 생성 및 챗팅 완성 실습

Llama 3.2로 문장 생성 및 챗팅 완성 실습 Running Meta Llama on Linux 문서의 내용을 참고하여 Llama 3.2 1B 모델로 다음 두 가지 기능을 실습합니다. 문장 완성 챗팅 완성 실습 환경 Ubuntu 20.04.6 LTS Python 3.12.7 Llama3.2-1B, Llama3.2-1B-Instruct rustc 1.83.0 NVIDIA RTX 4090 24GB 프로그램 준비 실습에서 사용할 wget , md5sum 설치 sudo apt-get install wget sudo apt-get install md5sum NVIDIA GPU 설치 여부 확인 nvidia-smi 실습 디렉토리 만들기 mkdir llama3-demo cd llama3-demo git clone https://github.com/meta-llama/llama3.git Python 3.10 이상의 버전으로 가상환경 만들고 활성화 python -m venv llama-venv . llama-venv/bin/activate Rust 컴파일러 설치 How To Install Rust on Ubuntu 20.04 문서를 참고하여 Rust 컴파일러를 설치합니다. curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh 위 명령을 실행하면 아래와 같이 세 가지 선택 옵션이 나타나는데 그냥 엔터를 쳐서 1번 옵션으로 진행합니다. ... 1) Proceed with installation (default) 2) Customize installation 3) Cancel installation 아래 명령을 실행하여 현재 쉘에 반영하고 설치된 컴파일러 버전을 확인합니다. source $HOME/.cargo/env rustc --version 의존 라이브러리 설치 pip install ...