앞선 Kaplan-Meier와 Log-Rank Test 방법은 생존율을 추정하는 가장 단순한 방법입니다. 시간(Time)과 사건(Event)만을 고려하여 생존율을 추정하기 때문입니다. 이러한 측면에서 앞선 두 방법은 데이터의 특성을 전혀 반영하지 못하는 Non-Parametric한 분석 방법이라고 합니다. 이와 반대로, Parametric 방법은 생존 시간 분포(예를 들어 정규분포)가 존재한다고 가정하고 회귀 모델로 생존 기간을 예측하는 방법입니다. 대표적으로 Linear Regression이 있으며, 그 외에도 Accelerated Failure Time Model이 존재합니다.
Survival Analysis. 로그 순위법 (Log-Rank Test)
앞선 포스팅 Kaplan-Meier Estimation에서 구간생존율을 누적하여 누적생존율을 구하는 방법을 확인했습니다. 의료 분야에서는 생존 분석을 위해 다양한 방법들이 사용됩니다. Kaplan-Meier 방법이 특정 집단의 생존율을 추정하는 방법이라면, 이번 포스팅에서 살펴볼 Log-Rank Test는 두 집단의 생존율의 차이가 유의미하게 있는지 확인하기 위한 방법입니다. 기존의 생존 분석과 마찬가지로 시간(Time)과 사건(Event) 개념이 필요합니다. Log-Rank Test는 두 집단의 데이터를 병합하여 관찰 시간 순으로 정렬하고, 절단 데이터(Censored Data)를 제거합니다. 결과적으로 사건이 발생한 구간만을 남기는 방식으로 생존 분석을 진행합니다. 예제 데이터를 생성하여 Log-Rank Test를 진행해보겠습니다.
Survival Analysis. 카플란-마이어 추정 (Kaplan Meier Estimation)
생존 분석(Survival Analysis)는 시간의 흐름에 따른 어떠한 사건의 발생 확률을 알아보는 통계 분석 및 예측 기법 중 하나입니다. 일반적으로 의료분야에서 특정 수술 방법 혹은 치료 방법에 따른 환자의 생존 기간을 분석할 때 활용하거나, 일반적인 IT 분야에서는 시간에 따른 사용자 이탈 분석에도 활용합니다. Survival Analysis에는 크게 3가지 주요 개념 사건(Event), 시간(Time), 중도절단(Censored)이 존재합니다.
Algorithm. 행렬의 대각 성분을 출력하는 방법
파이썬에서 행렬(Matrix) 데이터 타입을 다룰 때, 대각 성분을 출력하고자 하는 경우가 있습니다. NUMPY등의 라이브러리를 사용하면 손쉽게 대각 성분을 출력할 수 있지만, 본 포스팅에서는 각 인덱스에 접근하여 출력하는 방법을 소개하고자 합니다.
Python. 정규 표현식(Regular Expression) - 1
정규 표현식(Regular Expression)은 복잡한 문자열을 손쉽게 처리할 수 있도록 하는 프로그래밍 방법 중 하나입니다. 파이썬을 포함한 대부분의 프로그래밍 언어에서 정규 표현식(이하 정규식)을 지원합니다. 문자열을 처리해야 하는 코드를 작성할 때 정규식을 사용하면 간단하게 나타낼 수 있습니다. 만약, 사용자의 이메일에서 아이디 부분을 모자이크 처리해야 하는 코드가 필요하다고 할 때, 일반적으로 다음과 같은 맥락으로 코드가 구성됩니다.
Python. 매직 메소드(Magic Method)
매직 메소드(Magic Method or Special Method)는 클래스 내에 정의할 수 있는 특별한 메소드를 의미합니다. 매직 메소드를 사용하여 미리 정의되어 있는 메소드를 재정의하여 데이터 객체를 만들거나, 연산하는데 사용합니다. 다시 말하면, 다양한 빌트인(Built-in) 함수들이 처리할 연산을 원하는대로 다시 정의할 수 있습니다.
Python. 정적 메소드(@classmethod & @staticmethod)
파이썬에서 클래스 안에서 정의되는 메소드는 크게 인스턴스 메소드, 스태틱 메소드, 클래스 메소드가 있습니다. 스태틱 메소드와 클래스 메소드를 정적 메소드라 표현합니다. 정적 메소드는 클래스를 통해 직접 접근할 수 있는 메소드를 의미합니다. 기존에는 클래스 속 정의된 인스턴스 메소드를 호출하기 위해 1)클래스 정의 2)객체 생성 3)함수 호출의 과정을 거쳐야 했으나, 정적 메소드를 활용하면 객체를 생성하지 않고 클래스 이름 뒤에 마침표(.)를 찍어 직접 호출이 가능합니다.
Python. @Property
클래스에서 함수를 사용하여 값을 가져오거나 저장하는 경우가 있습니다. 일반적으로 getter, setter라고 명명합니다. 말 그대로 값을 가져오거나 저장하기 위해 만들어진 함수를 의미합니다. 아래의 예제는 Person이라는 클래스에 이름을 저장하는 setter set_name 함수와 이름을 가져오는 getter get_name 함수로 구성되어 있습니다.
Tensorflow Basic. Overview of the tensorflow
텐서플로(Tensorflow)를 사용하면 머신 러닝 문제를 아주 효과적으로 해결할 수 있습니다. 머신 러닝은 음성 인식, 자연어 처리, 영상 처리 등의 다양한 분야에서 사용되고 있습니다. 텐서플로가 동작하는 방식이 처음에는 낮설게 느껴질 수 있지만, 이러한 복잡한 계산 방식 덕분에 복잡한 알고리즘을 쉽게 개발할 수 있습니다.
Python. List Comprehension
List Comprehension은 리스트를 생성하는 파이썬의 독특한 코드 형태를 의미합니다. List Comprehension을 활용하면 리스트를 생성하고 값을 하나씩 넣어줘야 하는 번거로운 과정을 단 몇 줄로 간단하게 표현할 수 있다는 장점을 가지고 있습니다.