<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>데알못정을</title>
    <link>https://datascience0321.tistory.com/</link>
    <description>https://github.com/Jeong-Eul</description>
    <language>ko</language>
    <pubDate>Sat, 27 Jun 2026 10:43:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>쩡을이</managingEditor>
    <image>
      <title>데알못정을</title>
      <url>https://tistory1.daumcdn.net/tistory/5693099/attach/d3284657cb234d409482a44eafe5f604</url>
      <link>https://datascience0321.tistory.com</link>
    </image>
    <item>
      <title>[Circulatory Shock] Shock의 유형 별 진단 및 치료법</title>
      <link>https://datascience0321.tistory.com/57</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;[1] &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Vincent, Jean-Louis, and Daniel De Backer. &quot;Circulatory shock.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;New England Journal of Medicine&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;369.18 (2013): 1726-1734.&lt;/span&gt; &lt;br /&gt;[2] &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Smith, Nicholas, Richard A. Lopez, and Michael Silberman. &quot;Distributive shock.&quot; (2017).&lt;br /&gt;&lt;/span&gt;[3] &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Kosaraju, Ateet, Venkata Satish Pendela, and Ofek Hai. &quot;Cardiogenic shock.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;Statpearls [internet]&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;. StatPearls Publishing, 2023.&lt;/span&gt; &lt;br /&gt;[4] &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Taghavi, Sharven, Aussama K. Nassar, and Reza Askari. &quot;Hypovolemia and hypovolemic shock.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;StatPearls [Internet]&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;. StatPearls Publishing, 2025.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1,600명 이상의 쇼크 환자를 대상으로 도파민 또는 노르에피네프린을 투여하도록 무작위 배정한 한 임상시험에서, 쇼크의 유형은 패혈성 쇼크 (distributive)&amp;nbsp; 62%, 심인성 쇼크 (cardiogenic) 16%, 저혈량성 쇼크 (hypovolemic)가 16%, 기타 분배성 쇼크 (distributive nonseptic)가 4%, 그리고 폐쇄성 쇼크 (obstructive)가 2%를 차지함&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Shock의 유형&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Distrubutive shock&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zSL6b/dJMcagc2r1q/kf474PiCjnXUdb8hy8fguK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zSL6b/dJMcagc2r1q/kf474PiCjnXUdb8hy8fguK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zSL6b/dJMcagc2r1q/kf474PiCjnXUdb8hy8fguK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzSL6b%2FdJMcagc2r1q%2Fkf474PiCjnXUdb8hy8fguK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;374&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;중환자실 환자들에서 가장 흔한 형태의 쇼크 (패혈성 쇼크는 이 유형의 한 형태)로 전신 혈관 확장 (vasodilation)과 미세 순환 장애로 인해 혈액량은 충분하거나 정상임에도 불구하고, 조직 관류가 저하되는 쇼크 상태를 말함. 임상적으로 distributive shock의 가장 대표적인 형태는 septic shock이며, 이 외에도 아나필락시스 쇼크, 신경성 쇼크 등이 포함됨.&lt;br /&gt;&lt;br /&gt;Distributive shock의 진단은 단일 검사로 확정되기보다는, 임상 소견과 혈역학적 특징, 그리고 다른 쇼크 유형의 배제를 통해 이루어짐. 환자는 일반적으로 저혈압(MAP 65mmHg 미만), 빈맥, 의식 변화, 소변량 감소 등의 전형적인 쇼크 증상을 보이며, 초기에는 따뜻한 피부와 확장된 말초 혈관이 관찰될 수 있음. 혈액 검사에서는 lactate 수치 상승이 흔하며, 감염이 원인일 경우 염증 지표 상승이 동반됨. 혈역학적으로는 심박출량이 유지되거나 증가된 반면, 전신 혈관 저항은 감소되어 있는 것이 특징임&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;진단 과정에서 현장 심장 초음파 (point of care echocardiography)는 매우 중요한 역할을 함. 이를 통해 좌/우심실 기능을 평가하여 심인성 쇼크를 배제하고, 심낭 삼출 여부를 확인하여 폐쇄성 쇼크 가능성을 확인하며, 하대정맥 직경과 호흡성 변화를 통해 체액 반응성을 평가할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;치료의 목표는 조직 관류를 회복하고, 원인이 되는 병태를 교정하는 것임. 초기 치료에서는 산소 공급과 기도 확보를 포함한 기본적인 소생술을 시행하고, 상대적 저혈량을 보정하기 위해 정질액을 중심으로 한 적극적인 수액 요법을 시행함. 충분한 수액 투여에도 불구하고 저혈압이 지속되는 경우에는 혈관 수축제를 사용하여 혈관 톤을 회복시키는 것이 필요하며, 이때 &lt;b&gt;노르에피네프린이 1차 선택 약제&lt;/b&gt;로 권고됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;동시에 distributive shock의 근본 원인에 대한 치료가 반드시 병행&lt;/b&gt;되어야 함. 패혈성 쇼크에서는 조기 항생제 투여와 감염원 제거가 핵심이며, 아나필락시스의 경우 에피네프린 투여가 생명을 좌우함. 신경성 쇼크에서는 혈관 수축제와 함께 신경 손상의 원인 치료가 필요함. 치료 경과 중에는 젖산 수치의 추이, 소변량, 혈압과 같은 지표를 지속적으로 모니터링하여 조직 관류가 실제로 회복되고 있는지를 평가해야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;[Summary]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;진단&lt;/b&gt;: shock가 의심되면 (저혈압, 소변량 감소, 의삭 변화 등) 현장에서 심장 초음파를 통해 심인성 또는 폐쇄성 쇼크를 배제함으로써 진단이 특정됨&lt;br /&gt;&lt;b&gt;치료&lt;/b&gt;: 조직 관류 회복 + 원인 교정을 위해 충분한 수액 투여를 해보고, 그래도 저혈압이 지속되면 혈관 수축제(노르에피네프린)를 사용함. 이와 동시에 감염, 아나필락시스, 신경 손상, 부신 기능 부전 등 원인에 대한 치료가 지체 없이 병행됨. 그 후 혈압, 소변량, 젖산 수치의 추이를 지속적으로 모니터링하여 조직 관류가 회복되고 있는지 판단함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 2. Cardiogenic shock&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Cardiogenic shock은 심장의 펌프 기능이 급격히 저하되어 충분한 심박출량을 유지하지 못함으로써 조직 관류가 감소하는 쇼크 상태임. 가장 흔한 원인은 급성 심근경색이며, 이 외에도 중증 심부전의 급성 악화, 부정맥, 심장 판막 질환, 심근염 등이 원인이 될 수 있음. 심박출량이 감소하여 저관류가 발생하고, 이에 따른 보상 반응으로 전신 혈관 저항이 증가하면서 말초 혈관 수축이 동반됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;임상적으로 cardiogenic shock 환자는 저혈압, 빈맥, 의식 저하, 소변량 감소와 같은 전형적인 쇼크 증상을 보이며, distributive shock과 달리 피부가 차고 축축하며, 폐울혈로 인한 호흡곤란이나 청진상 수포음이 동반되는 경우가 많음. 혈액 검사에서는 젖산 상승과 함께 심근 손상을 반영하는 심근효소 상승이 관찰될 수 있으며, 흉부 X 선에서는 폐부종 소견이 흔함.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;진단은 현장 심장 초음파가 핵심적인 역할을 함. 이를 통해 좌심실 수축 기능 저하 여부, 국소 벽운동 이상, 판막 질환, 우심실 기능 장애 등을 평가할 수 있으며, 이는 cardiogenic shock을 확진하고 다른 쇼크 유형과 감별하는데 결정적인 정보를 제공함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;치료의 기본 원칙은 심박출량을 회복하고, 심근 산소 소모를 최소화하며, 근본 원인을 교정하는 것임. 초기에는 산소 공급과 기도 확보를 포함한 기본적인 소생술을 시행하되, &lt;b&gt;수액 치료는 폐울혈 악화를 초래할 수 있으므로 신중하게 제한적으로 사용함.&amp;nbsp;&lt;/b&gt;저혈압이 동반된 경우 inotrope를 사용하여 심근 수축력을 증가시키며, 필요 시 혈관 수축제를 병용하여 관류압을 유지함. &lt;b&gt;도부타민은 심박출량 증가를 위해 흔히 사용&lt;/b&gt;되며, 혈압 유지가 어려운 경우 노르에피네프린이 병행될 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;무엇보다 &lt;/span&gt;&lt;span&gt;cardiogenic shock &lt;/span&gt;&lt;span&gt;치료에서 가장 중요한 것은 원인 질환에 대한 조기 개입임.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;급성 심근경색이 원인일 경우에는 가능한 한 빠른 관상동맥 재관류 치료가 예후를 결정하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;약물 치료에 반응하지 않는 중증 환자에서는 &lt;b&gt;기계적 순환 보조 장치&lt;/b&gt;가 고려됨.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;치료 경과 동안에는 혈압&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;소변량&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;젖산 수치&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;심초음파 소견을 지속적으로 모니터링하여 실제로 조직 관류와 심장 기능이 회복되고 있는지를 평가함&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;[Summary]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;진단&lt;/b&gt;: shock가 의심되면 (저혈압, 소변량 감소, 의삭 변화 등) 현장에서 심장 초음파, 심전도를 통해 진단&lt;br /&gt;&lt;b&gt;치료&lt;/b&gt;: 조직 관류 회복 + 원인 교정을 목적으로 하는데, 수액은 제한적으로 사용하고, 도부타민을 주로 사용하면서 동시에 원인 질환에 대한 조기 개입을 중심으로 함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Hypovolemic shock&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;Hypovolemic shock&lt;/span&gt;&lt;span&gt;는 체내 순환 혈액량의 절대적 감소로 인해 심장으로의 정맥 환류가 감소하고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;그 결과 심박출량과 조직 관류가 저하되는 쇼크 상태를 의미함&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;가장 흔한 원인은 &lt;b&gt;외상이나 위장관 출혈과 같은 출혈성 손실&lt;/b&gt;이며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이 외에도 심한 &lt;b&gt;탈수&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;구토&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;설사&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;화상&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;b&gt;삼출&lt;/b&gt; 등으로 인한 비출혈성 체액 손실이 원인이 될 수 있음.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;이 상태의 핵심 병태생리는 혈액량 자체의 감소로&lt;/span&gt;&lt;span&gt;, preload &lt;/span&gt;&lt;span&gt;감소에 따라 심박출량이 감소하고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이를 보상하기 위해 말초 혈관 수축과 빈맥이 발생함.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;임상적으로 &lt;/span&gt;&lt;span&gt;hypovolemic shock &lt;/span&gt;&lt;span&gt;환자는 저혈압&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;빈맥&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;의식 저하&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;소변량 감소와 같은 전형적인 쇼크 증상을 보이며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;피부는 차고 창백하거나 축축하게 느껴지는 경우가 많음.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;출혈성 원인일 경우 외부 출혈이나 혈종&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;흑색변&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;토혈 등의 단서가 관찰될 수 있으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;비출혈성 원인에서는 심한 탈수 소견이나 체중 감소&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;점막 건조 등이 동반될 수 있음.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;혈액 검사에서는 헤모글로빈 감소&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;출혈 초기에는 정상일 수 있음&lt;/span&gt;&lt;span&gt;), &lt;/span&gt;&lt;span&gt;대사성 산증&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;젖산 상승이 관찰될 수 있으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;심한 경우 응고 이상이 동반됨.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;진단은 병력과 &lt;b&gt;신체 진찰&lt;/b&gt;을 중심으로 이루어지며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;최근 출혈이나 체액 손실 여부를 확인하는 것이 핵심임&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;혈역학적으로는 심박출량 감소&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;중심정맥압 감소&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;전신 혈관 저항 증가가 특징적임.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;현장 초음파는 진단과 치료 방향 설정에 중요한 역할&lt;/b&gt;을 하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;복강 내 출혈 여부를 확인하거나 하대정맥 직경 감소를 통해 체액 부족 상태를 추정하는 데 활용됨.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;이러한 소견들은 &lt;/span&gt;&lt;span&gt;hypovolemic shock&lt;/span&gt;&lt;span&gt;가 &lt;/span&gt;&lt;span&gt;&amp;ldquo;&lt;/span&gt;&lt;span&gt;혈관 톤의 문제&lt;/span&gt;&lt;span&gt;&amp;rdquo;&lt;/span&gt;&lt;span&gt;나 &lt;/span&gt;&lt;span&gt;&amp;ldquo;&lt;/span&gt;&lt;span&gt;심장 기능 부전&lt;/span&gt;&lt;span&gt;&amp;rdquo;&lt;/span&gt;&lt;span&gt;이 아니라&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;순환 혈액량 부족에 기인한 쇼크임을 뒷받침함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;치료의 핵심은 신속한 혈액량 회복과 원인 교정임.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;초기에는 기도와 호흡을 안정화한 후&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;정질액을 이용한 적극적인 수액 소생술을 시행하여 &lt;/span&gt;&lt;span&gt;preload&lt;/span&gt;&lt;span&gt;와 심박출량을 회복시킴&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;출혈성 &lt;/span&gt;&lt;span&gt;hypovolemic shock&lt;/span&gt;&lt;span&gt;가 의심되는 경우에는 단순 수액만으로는 충분하지 않으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;조기 수혈과 대량 출혈 프로토콜의 적용이 중요함&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;동시에 출혈의 원인을 신속히 확인하고 외과적 또는 중재적 치료를 통해 출혈을 조절해야 함&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;비출혈성 원인에서는 지속적인 체액 보충과 함께 전해질 이상 교정이 병행됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;치료 반응은 혈압&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;심박수&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;소변량&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;의식 상태&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;그리고 젖산 수치의 변화로 평가하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이러한 지표들이 개선되는 것은 순환 혈액량과 조직 관류가 회복되고 있음을 의미함&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;요약하면&lt;/span&gt;&lt;span&gt;, hypovolemic shock&lt;/span&gt;&lt;span&gt;는 절대적인 혈액량 감소로 인해 발생하는 쇼크로&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;진단은 체액 손실의 증거를 확인하는 데 초점이 맞추어지며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;치료는 신속한 체액 및 혈액 보충과 원인 제거를 중심으로 이루어짐.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Research</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/57</guid>
      <comments>https://datascience0321.tistory.com/57#entry57comment</comments>
      <pubDate>Mon, 22 Dec 2025 16:54:49 +0900</pubDate>
    </item>
    <item>
      <title>Uncertainty of Treatment Effect</title>
      <link>https://datascience0321.tistory.com/55</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;! 개인 연구 미팅 준비하면서 정리한 내용으로, 의식의 흐름 전개가 있을 수 있음 !&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Potential outcome은 Rubin의 Potential Outcome Framework에서 나온 개념이다. 이 개념은 한 사람에게 가능한 모든 treatment 시나리오에 따른 결과를 말한다. 가령 어떤 치료가 있을 때 Y(1)은 치료를 받았을 때의 potential outcome이고, Y(0)은 치료를 받지 않았을 때의 potential outcome이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5Izo/btsOv0LBh1H/5jKnYQNGK7xcB0tAyNOBd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5Izo/btsOv0LBh1H/5jKnYQNGK7xcB0tAyNOBd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5Izo/btsOv0LBh1H/5jKnYQNGK7xcB0tAyNOBd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5Izo%2FbtsOv0LBh1H%2F5jKnYQNGK7xcB0tAyNOBd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;409&quot; height=&quot;168&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Observational data에서는 두 potential outcome 중 단 하나만 관측이 가능하다. 이 경우 potential outcome 중 실제로 관측되지 않은 것을 counterfactual outcome이라 한다. 가령 어떤 환자가 실제로 치료를 받았다면, 우리는 Y(1)은 알지만, Y(0)은 관측할 수 없다. 이떄 Y(0)은 counterfactual outcome이 된다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FbIE0/btsOvaOfvUq/iNKlzrOXixeADQKuDOT7kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FbIE0/btsOvaOfvUq/iNKlzrOXixeADQKuDOT7kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FbIE0/btsOvaOfvUq/iNKlzrOXixeADQKuDOT7kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFbIE0%2FbtsOvaOfvUq%2FiNKlzrOXixeADQKuDOT7kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;304&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;전체 인구에 대해 치료의 평균 효과는 다음처럼 정의된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- Average Treatment Effect (ATE): E[Y(1) - Y(0)]&lt;br /&gt;- Conditional Average Treatment Effect (CATE): E[Y(1) - Y(0) | X= x]&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;산업에서 decision making을 하기 위해 이렇게 averaged causal quantities를 사용하게 되면 오해가 생길 수 있고, 특정 분야 (의료)에서는 위험할 수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;ATE나 CATE는 모두 기대값만을 알려준다. 두 환자 모두 CATE가 2라고 하더라도, 실제 분포는 다음처럼 완전히 다를 수 있다.&lt;br /&gt;- A 환자 군: Y(1) ~ N(5, $0.1^2$), Y(0) ~ N(3, $0.1^2$) $\rightarrow$ CATE = 2, 효과 매우 확실&lt;br /&gt;- B 환자 군: Y(1) ~ N(6, $4^2$), Y(0) ~ N(4, $4^2$) $\rightarrow$ CATE = 2, 효과 불확실&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이렇게 어떤 치료가 평균적으로는 효과가 있다고 해도, 어떤 사람에게는 전혀 안듣거나, 오히려 해로울 수도 있다. ( 평균이라는 것이 예외, 변동성을 고려할 수 없기 때문에 특정 환자에게는 치료효과가 없어도 평균을 내게 되면 커보일 수 있다. 꼬리분포) 그래서 결과의 분포를 알아야 한다. 이를 통해 어떤 결과가 얼마나 자주 일어날지까지 알 수 있다. 특히 의료에서는 &quot;이 치료가 성공할 확률은 70%&quot; 처럼 성공/실패 확률을 알려줄 수 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;따라서 분포 전체를 추정해야만 확률, 신뢰구간에 기반한 의사결정이 가능하다.&amp;nbsp;&lt;br /&gt;예시 1 ) 치료를 했을 때 종양의 크기가 $\tau$ 이하가 될 확률: P(Y(1) $&amp;lt;= \tau$ | X = x)을 구해서 임계 확률을 넘는 경우 치료를 권장&amp;nbsp;&lt;br /&gt;예시 2 ) 치료의 부작용이 너무 클 확률이 높은 경우 P(Y(1) &amp;lt; Y(0) ) 기존 CATE가 양수라도, 이 확률이 크면 치료를 보류&lt;br /&gt;예시 3 ) 치료 효과 Y(1) - Y(0)의 95% 신뢰 구간이 [1.5, 4.5]로 긍정적인 경우 치료,, 반면 [-2, 6]인 경우 불확실하니까 보류&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;다음은 인과 추론에서 평균 효과 (ATE)만 보고 판단하면 위험하다는 점을 보여주는 시뮬레이션 기반 예시이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C4dWb/btsOu7qDLUQ/ogJpTUuqiHwEeiXlvcHW70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C4dWb/btsOu7qDLUQ/ogJpTUuqiHwEeiXlvcHW70/img.png&quot; data-alt=&quot;데이터는 구조적 인과 모델 (오른쪽 식들)을 통해 생성됨&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C4dWb/btsOu7qDLUQ/ogJpTUuqiHwEeiXlvcHW70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC4dWb%2FbtsOu7qDLUQ%2FogJpTUuqiHwEeiXlvcHW70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1050&quot; height=&quot;315&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터는 구조적 인과 모델 (오른쪽 식들)을 통해 생성됨&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- P(Y[0]), P(Y[1]): 전체 인구에 대해 치료를 안받았을/받았을 경우 나타났을 결과 분포 (관측 데이터를 통해 추정 불가능, counterfactual outcome을 포함하여 추정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- P(Y=y|A=0), P(Y=y|A=1) : factual outcome 분포&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;-&amp;nbsp; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;P(Y[1]=y|A=0), P(Y[0]=y|A=1)&lt;span&gt; : counterfactual outcome 분포&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그림 (b), (c)에서 두 점선 분포의 mixture인 실선 분포가 전체 인구에 대해 치료를 안받았을/받았을 경우 나타났을 결과에 대한 분포 (a)임&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;설명을 보면, 두 가지 치료에 대한 potential outcome의 평균과 분산이 같다. (평균 = 4.77, 분산 = 4.06) 그러나, 그래프를 보면 (a) intervention distributions에서 평균은 같지만 분포의 모양 (꼬리, 다봉성 등)이 달랐다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이런 경우 outcome(가령 혹의 크기)이 5보다 작을 때 성공적이라는 기준이 있을때, 치료/비치료에 대해 outcome이 5보다 작을 확률을 추정 한다고 했을 때 다음과 같은 결론을 얻을 수 있는데,&lt;br /&gt;- P(Y[1] &amp;lt; 5) = 0.63&lt;br /&gt;- P(Y[0] &amp;lt; 5) = 0.51&lt;br /&gt;즉, 두 분포의 평균과 분산이 같더라도, 분포가 다르기 때문에 확률에 차이가 생겨 치료를 했을 때의 결과가 더 좋을 확률이 높다는 결론을 낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;분포를 고려하면 치료의 성공 확률 차이를 알 수 있다. 이는 임상 의사결정에 필수적이다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;potential outcome의 aleatoric uncertainty&lt;br /&gt;aleatoric uncertainty란 내재적 불확실성 또는 우연에 의한 불확실성을 뜻한다. 이것은 측정 오차, &lt;b&gt;데이터 자체의 자연스러운 변동성&lt;/b&gt; 등 본질적으로 제거할 수 없는 불확실성을 의미한다.&amp;nbsp; -&amp;gt; 같은 치료를 해도 환자 A는 90%의 성공 가능성이 있지만 B는 60%의 성공 가능성이 있는 경우 (Y(a)가 확률적인 결과이다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;결과 Y가 어떤 확률 분포를 따르는지 추정하는 문제인 Interventional Density Estimation 방법론 중에 &lt;a href=&quot;https://arxiv.org/pdf/2209.06203&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Interventional Normalizing Flows (INF)&lt;/a&gt;가&amp;nbsp; 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;INF는 정규화된 밀도 함수를 생성하고, 직접 샘플링도 가능하며 대규모, 고차원 데이터에도 잘 작동하는 fully parametric 방법이다. Kennedy et al. (2023)의 이론을 기반으로 복잡한 조건 (편향 보정 moment condition)을 최적화 가능한 형태로 변환하고, 이를 딥러닝 기반 모델로 실제 학습 가능하게 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;다음은 Normalizing Flow에 대한 배경 지식을 시작으로 INF 논문에 기반한 내용을 정리하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;b&gt;Normalizing Flow&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;데이터 $x$가 존재할 때, 그 데이터의 확률 분포 $p_X(x)$를 알고 싶은 상황. 하지만 현실에서는 $p_X(x)$는 복잡하고 계산이 어렵기 때문에 간단한 분포 $p_Z(z)$를 잘 정의해두고, 그것을 적절한 함수 $f$를 통해 변환해서 $x$로 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$x = f(z), z \sim&amp;nbsp; P_Z(z)$$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이때 $f$는 가역 함수 (invertible function)이고, 미분 가능해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;확률 변수 $z$를 함수 $x = f(z)$를 통해 변환했을 때 결과 변수 $x$의 확률 분포 $p_X(x)$는 어떤 분포를 가질지 계산하려면 확률의 보존 원칙을 적용해야 한다. (그러니까 변환을 하더라도, 확률(질량)은 보존되어야 한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 이야기를 조금 쉽게 풀어보자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;1차원 예시)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC3T74/btsOCOvy3iw/yJN5KFEkFPFTd0nKuV3Qw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC3T74/btsOCOvy3iw/yJN5KFEkFPFTd0nKuV3Qw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC3T74/btsOCOvy3iw/yJN5KFEkFPFTd0nKuV3Qw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC3T74%2FbtsOCOvy3iw%2FyJN5KFEkFPFTd0nKuV3Qw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1380&quot; height=&quot;289&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;z가 구간 [0, 1]에서 Uniform을 따른다고 하면 $z \sim Uniform(0, 1)$ 구간 [0, 1]에서 확률은 $p_Z(z) = 1$ 일 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;만약 여기서 $x = 2z$ 변환을 한다고하면 $p_X(x)$는&amp;nbsp; z의 공간인 [0,1] 보다 2배 더 긴 [0, 2]에서 존재한다. 그래도 이 구간에서 확률의 합은 항상 1로 동일해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러므로 $\int_{0}^{2}p_X(x)dx = \int_{0}^{1}p_Z(z)dz = 1$ 이다. 이걸 아주 작은 변화에 대한 확률로 다시 표현하면 $p_X(x)dx = p_Z(z)dz$다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;위 식에서 $p_X(x)$를 좌변에 남기고 넘기면&amp;nbsp; $p_X(x) =&amp;nbsp;p_Z(z) \cdot \frac{dz}{dx}$이고, 이는 즉 $p_X(x) =&amp;nbsp;p_Z(z) \cdot&amp;nbsp;\frac{1}{2}$를 의미한다. 따라서 $x$의 공간(구간)이 2배 길어졌지만, x의 확률 밀도($p_X(x)$)는 z의 확률 밀도($p_Z(z)$) 보다 2배 작아졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;2차원 예시)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tEgBV/btsOBcEKQ68/xv9kzwJYmxkHLHK6InDK3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tEgBV/btsOBcEKQ68/xv9kzwJYmxkHLHK6InDK3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tEgBV/btsOBcEKQ68/xv9kzwJYmxkHLHK6InDK3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtEgBV%2FbtsOBcEKQ68%2Fxv9kzwJYmxkHLHK6InDK3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;226&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;다변량으로 확장해서 2개의 입력, 2개의 출력으로 변환되는 상황을 가정한다. $[x_1, x_2] = f([z_1, z_2])$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$x_1 = 2z_1$, $x_2 = 2z_2$ 이렇게 변환되는 상황에서 $p_X(x)$를 구하고자 한다.&lt;br /&gt;- 입력 $z=[z_1, z_2]$&lt;br /&gt;- 변환 함수 :&amp;nbsp; $\begin{bmatrix} x_1 \\ x_2\end{bmatrix} = \begin{bmatrix} 2 &amp;amp; 0 \\ 0 &amp;amp; 2 \\ \end{bmatrix}\begin{bmatrix} z_1 \\ z_2\end{bmatrix} = \begin{bmatrix} 2z_1 \\ 2z_2\end{bmatrix}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;구간 [0, 1]에서 $z_1, z_2$가 존재한다고 하면, 면적이 1인 정사각형 영역에서 확률 밀도는 p_Z(z)로 표현할 수 있다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;이를 변환 하면 $x_1, x_2$는 구간 [0, 2]에서 존재하게 되고, 변환된 공간의 면적(4)에서 확률 밀도 p_X(x)가 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;같은 양의 확률 질량이 존재해야 하므로 x의 밀도 p_X(x)는 p_Z(z)의 1/4 배여야 한다.&lt;br /&gt;&lt;br /&gt;이러한 관계를 1차원 예시와 마찬가지로, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;$p_X(x) =&amp;nbsp;p_Z(z) \cdot \frac{dz}{dx}$로 나타낼 수 있는데, 다변량에서는 $\frac{dz}{dx} $를 여러 입출력에 대해 미분량을 구해야 하므로, 편미분을 사용하는 jacobian 행렬의 행렬식을 이용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$ p_X(x) = p_Z(z) \cdot |det J|^{-1} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$J_f(\mathbf{z})&amp;nbsp;=&amp;nbsp;\frac{\partial&amp;nbsp;f(\mathbf{z})}{\partial&amp;nbsp;\mathbf{z}^\top}&amp;nbsp;=&lt;br /&gt;\begin{bmatrix}&lt;br /&gt;\frac{\partial&amp;nbsp;f_1}{\partial&amp;nbsp;z_1}&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_1}{\partial&amp;nbsp;z_2}&amp;nbsp;&amp;amp;&amp;nbsp;\cdots&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_1}{\partial&amp;nbsp;z_n}&amp;nbsp;\\&lt;br /&gt;\frac{\partial&amp;nbsp;f_2}{\partial&amp;nbsp;z_1}&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_2}{\partial&amp;nbsp;z_2}&amp;nbsp;&amp;amp;&amp;nbsp;\cdots&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_2}{\partial&amp;nbsp;z_n}&amp;nbsp;\\&lt;br /&gt;\vdots&amp;nbsp;&amp;amp;&amp;nbsp;\vdots&amp;nbsp;&amp;amp;&amp;nbsp;\ddots&amp;nbsp;&amp;amp;&amp;nbsp;\vdots&amp;nbsp;\\&lt;br /&gt;\frac{\partial&amp;nbsp;f_m}{\partial&amp;nbsp;z_1}&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_m}{\partial&amp;nbsp;z_2}&amp;nbsp;&amp;amp;&amp;nbsp;\cdots&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;f_m}{\partial&amp;nbsp;z_n}&lt;br /&gt;\end{bmatrix}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$\frac{dz}{dx} $ 는 x에 대한 미분이기 때문에 $ J_f(\mathbf{z}) $의 역수를 취해 행렬식을 구한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;$$J&amp;nbsp;=&amp;nbsp;\frac{\partial&amp;nbsp;x}{\partial&amp;nbsp;z}&amp;nbsp;=&amp;nbsp;\begin{bmatrix} &lt;br /&gt;\frac{\partial&amp;nbsp;x_1}{\partial&amp;nbsp;z_1}&amp;nbsp;&amp;amp;&amp;nbsp;0&amp;nbsp;\\ &lt;br /&gt;0&amp;nbsp;&amp;amp;&amp;nbsp;\frac{\partial&amp;nbsp;x_2}{\partial&amp;nbsp;z_2}&amp;nbsp;\\ &lt;br /&gt;\end{bmatrix}&amp;nbsp;=&amp;nbsp;\begin{bmatrix} &lt;br /&gt;2&amp;nbsp;&amp;amp;&amp;nbsp;0&amp;nbsp;\\ &lt;br /&gt;0 &amp;amp; 2 \\ \end{bmatrix}&amp;nbsp; $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$|det J| = |2 \times 2 - 0| = 4 $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러므로, $p_X(x) =&amp;nbsp;p_Z(z) \cdot \frac{1}{4}$이다.&amp;nbsp;&lt;br /&gt;&amp;nbsp;따라서 $x$의 공간(구간)이 4배 커졌지만, x의 확률 밀도($p_X(x)$)는 z의 확률 밀도($p_Z(z)$) 보다 4배 작아졌다&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;--&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;야코비안 행렬이 의미하는 것은 입력 $z_j$가 조금 변했을 때, 출력 $f_i$가 어떻게 변하는지 전부 기록해 놓은 것이다. 그래서 이것의 행렬식(det)를 구하면 입력 공간이 얼마나 늘어나거나 줄어드는지를 측정할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$\begin{vmatrix} det(J_f(z))\end{vmatrix}$ = 공간이 얼마나 변형되었는가&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\begin{vmatrix} det(J_f(z))\end{vmatrix} = 1$: 면적/부피 보존&lt;br /&gt;&amp;nbsp;$\begin{vmatrix} det(J_f(z))\end{vmatrix} &amp;gt; 1$: 공간이 늘어남 $\rightarrow$ 밀도는 작아짐&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;$\begin{vmatrix} det(J_f(z))\end{vmatrix} &amp;lt; 1$: 공간이 줄어듦 $\rightarrow$ 밀도는 커짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;--&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;다시 돌아와서 우리는 쉬운 분포 $z \sim N(0, I)$를 통해 $x$의 분포를 추정하고자 하는 과정에서 가역함수 $f$를 통해 $x$의 densitiy function $p_X(x)$를 다음과 같이 추정할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$ p_X(x) = p_Z(z) \cdot |\frac{dz}{dx}|$$&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;여기서 $\frac{dz}{dx}$는 역변환 $f^{-1}$의 jacobian이다. ($f^-1(x) = z$)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$ p_X(x) = p_Z( f^-1(x) ) \cdot |\frac{d f^-1(x) }{dx}|$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;우리는 데이터 $x$가 주어졌을 때 이를 $f^{-1}$로 base space (쉬운 분포 z)로 되돌린 후, density p_X(x)를 계산하는 것이 목적이다. 이때 jacobian 보정이 필요한데 우리는 $f^(-1)$의 야코비안을 직접 모르고, $f$의 jacobian만 아는 경우가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 Inverse Function Theorem을 도입한다.&amp;nbsp; Inverse Function Theorem은 어떤 점 근처에서 이 함수가 잘 정의되고, 되돌릴 수 있다면 (invertible) 그 역함수도 미분 가능하고, 그 변화율(jacobian)은 정방향의 jacobian의 역행렬이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$\frac{dz}{dx}=\frac{f^{-1}}{dx}=(\frac{df}{dz})^{-1}$$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(머신러닝으로 비유하면 학습 데이터 x를 알고, base 분포 z도 알고 모델 f를 아는 상황 (f의 역함수만 모름)) $\rightarrow$ 아는 요소들로만 다시 재구성 하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 수식을 다시 쓰면&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$p_X(x) = p(z=f^{-1}(x)) \cdot |det(\frac{df}{dz}(z=f^{-1}(x)))|^{-1}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;현실에서는 $x = f(z)$를 단 하나의 변환으로 구성하기 어렵기 때문에 다음처럼 여러 번의 변환 $f_1, f_2, ..., f_k$로 구성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$x = f_K \circ f_{K-1} \circ \cdots \circ f_1(z_0)$$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그럼 최종 밀도는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$p_X(x) = p_{Z_{0}}(z_0) \cdot \prod_{k=1}^{K}|det(\frac{df_k}{dz_{k-1}})|^{-1}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;즉, base density에 모든 jacobian 보정 인자를 곱한 것의 역수이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1X6vH/btsODrgEpQr/Ub0jVNPH6HZKLNyJBjcnOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1X6vH/btsODrgEpQr/Ub0jVNPH6HZKLNyJBjcnOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1X6vH/btsODrgEpQr/Ub0jVNPH6HZKLNyJBjcnOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1X6vH%2FbtsODrgEpQr%2FUb0jVNPH6HZKLNyJBjcnOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;615&quot; height=&quot;185&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;계산을 용이하게 하기 위해서 log를 씌우면&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$logp_{Z}(z_0) - \sum_{k = 1}^{K}log|det \frac{df_i}{dz_{i-1}}|$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이다. Transformation function $f_i$는 쉽게 invertible하고, 그것의 jacobian의 행렬식이 쉽게 계산될 수 있는 함수로 설정해야 한다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;&lt;b&gt;Interventional Density Estimation&lt;/b&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;우리는 observation data를 기반으로, treatment $A$를 $a$로 개입했을 때의 결과 $Y[a]$의 분포, 즉 interventional density $P(Y[a] = y)$를 추정하고자 한다.&amp;nbsp;&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;[Notation]&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;- $P(Z)$: 확률 변수 Z의 분포 전체&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- $P(Z = z)$: 확률 질량 또는 밀도 함수&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- $\pi_{a}(x) = P(A = a | X = x)$: propensity score, 환자 특성 $X$에 대해 치료 $A = a$를 받을 확률&amp;nbsp;&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- $P(Y | X, A)$: conditional outcome distribution, 관찰된 치료 A, 공변량 X 하에서의 결과 분포&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- $Y[a]$: potential outcome, &quot;만약 A = a였더라면&quot;의 결과&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- $\widehat{P}(Y[a] = y)$: 우리가 추정하고 싶은 interventional distribution&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;관찰 데이터로부터 분포를 추정하고, 추정된 분포와 진짜 분포(정답 분포가 있어야 함)의 차이를 average log-likelihood, empirical wassertein distance 등을 통해 비교한다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;데이터셋 $D = \left\{(X_i, A_i, Y_i) \right\}^{n}_{i=1} \sim P(X, A, Y)$는 공변량 $X$, 치료 $A\in \left{ 0, 1\right\}$, 연속형 결과 $Y$의 삼쌍으로 이루어져있음. 여기서 X는 treatment와 outcome 모두에 영향을 줄 수 있는 변수이므로, confounder이고, 만약 $P(Y[a]) \neq P(Y | A = a)$ 라면 confounding bias가 존재한다는 것임.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;(하다보니까 section4.1에서 수식에 propensity score를 활용하고 있는걸 발견 -&amp;gt; 우리의 상황에서는 쓰지 못함 우리는 representation에서 어떤 치료를 받을지에 대한 정보를 지워버렸기 때문에)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;방향을 틀어서 그냥 어차피 CausalML로 potential outcome을 다 추정을 해놨으니까 이 데이터를 기반으로 NF 기법 아무거나 쉬운거 하나 적용해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&lt;b&gt;Affine Coupling Layer -&amp;gt; D차원 입력이 필요해서 pass (우리의 경우 potential outcome은 1차원)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;Planar flow&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Planar flow는 NF의 한 종류로, 1D 또는 low-dimensional setting에서도 사용할 수 있다는 점에서 유용함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$f(z) = z + u \cdot tanh(w^{T}z +b)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$u$, $w$는 학습 가능한 파라미터&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$|\frac{df}{dz}|=|1 + u \cdot (1 - tanh^2(wz+b)) \cdot w|$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;데이터 내에서 시간에 따른 분포 변화를 식별 -&amp;gt; Conditional Planar flow 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;일단 빠르게 컨셉만 확인할겸 GPT에 물어봄&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RD79m/btsODYfwXZt/hkp9Kfcbe8OtWGtjTU8H30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RD79m/btsODYfwXZt/hkp9Kfcbe8OtWGtjTU8H30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RD79m/btsODYfwXZt/hkp9Kfcbe8OtWGtjTU8H30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRD79m%2FbtsODYfwXZt%2Fhkp9Kfcbe8OtWGtjTU8H30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;483&quot; height=&quot;95&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;971&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k8LYs/btsODqcAxPx/0o9Z1HNWNltqjhzGrW1lE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k8LYs/btsODqcAxPx/0o9Z1HNWNltqjhzGrW1lE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k8LYs/btsODqcAxPx/0o9Z1HNWNltqjhzGrW1lE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk8LYs%2FbtsODqcAxPx%2F0o9Z1HNWNltqjhzGrW1lE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;971&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;971&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;375&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyjNj/btsODWWioXR/BQoW677X2BF2Mn4Ps6rxk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyjNj/btsODWWioXR/BQoW677X2BF2Mn4Ps6rxk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyjNj/btsODWWioXR/BQoW677X2BF2Mn4Ps6rxk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlyjNj%2FbtsODWWioXR%2FBQoW677X2BF2Mn4Ps6rxk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;375&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;375&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Research</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/55</guid>
      <comments>https://datascience0321.tistory.com/55#entry55comment</comments>
      <pubDate>Tue, 17 Jun 2025 13:27:24 +0900</pubDate>
    </item>
    <item>
      <title>Causal Machine Learning에서 Balanced Representation의 의미</title>
      <link>https://datascience0321.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;Balanced Representation in Causal Machine Learning&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Balanced representation&lt;/b&gt;은 &lt;b&gt;인과 추론(causal inference)&lt;/b&gt; 또는 &lt;b&gt;counterfactual prediction&lt;/b&gt; 분야에서 사용하는 개념으로,&lt;br /&gt;처치(treatment)와 비처치(control) 그룹 간 confounding bias를 줄이기 위해 학습된 표현 공간(latent space)을 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;쉽게 말하면:&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-size: 0.87em; letter-spacing: 0px;&quot;&gt;처치 여부와 관계없이 비슷한 환자들이 비슷한 표현(embedding)을 갖도록 만드는 것&lt;/span&gt;&lt;span style=&quot;font-size: 0.87em; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 배경&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;인과 추론에서 큰 문제는 &lt;b&gt;confounding&lt;/b&gt;&lt;br /&gt;예: 건강한 사람은 치료를 안 받고, 아픈 사람은 치료를 받는다면 &amp;rarr; 치료 효과 자체를 구분하기 어려움&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Randomized trial&lt;/b&gt;이 아니라면 관측 데이터에서 &lt;b&gt;처치 여부 $T$와 공변량 $X$ 사이의 상관&lt;/b&gt;이 존재함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이를 해결하기 위해, representation learning을 통해&lt;br /&gt;$T=1$과 $T=0$ 그룹이 공정하게 비교될 수 있는 공간 $\Phi(X)$을 학습합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 목표&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Representation $\Phi(x)$를 학습할 때&lt;/b&gt;, 다음 두 가지 조건을 만족시켜야 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Treatment-independence (균형)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\Phi(x)$ 만으로는 이 샘플이 처치받았는지 알 수 없어야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\Rightarrow$ 처치와 비처치 샘플들이 $\Phi(x)$ 공간에서 &lt;b&gt;비슷한 분포&lt;/b&gt;를 갖도록&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Outcome-relevance (예측력)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\Phi(x)$는 결과 $Y$를 &lt;b&gt;정확히 예측&lt;/b&gt;할 수 있어야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 대표적인 objective 함수는 다음과 같다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$ &lt;br /&gt;\min_{\Phi,&amp;nbsp;f}&amp;nbsp;\;&amp;nbsp;\mathcal{L}_{\text{pred}}(f(\Phi(x),&amp;nbsp;t),&amp;nbsp;y)&amp;nbsp;+&amp;nbsp;\lambda&amp;nbsp;\cdot&amp;nbsp;\text{Discrepancy}(\Phi(x)&amp;nbsp;\mid&amp;nbsp;t=1,&amp;nbsp;\Phi(x)&amp;nbsp;\mid&amp;nbsp;t=0) &lt;br /&gt;$$ &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\mathcal{L}_{\text{pred}}$: 결과 예측 손실 (예: MSE)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\text{Discrepancy}$: 처치 그룹 간 representation 분포 차이&lt;br /&gt;(예: MMD, Wasserstein distance, adversarial loss 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\lambda$: 균형과 예측 정확도 간 trade-off 조절 하이퍼파라미터&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;예시)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;원본 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 치료 받은 환자: 중증&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 치료 안 받은 환자: 경증&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;rarr; 평균 비교하면 &lt;b&gt;치료 효과가 왜곡&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$\Phi(x)$ 공간에서는&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 중증/경증이 &lt;b&gt;균일하게 분포되도록 표현을 바꿈&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;rarr; 마치 &lt;b&gt;무작위 실험처럼 공정하게 비교 가능&lt;/b&gt;하게 만듦&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Research</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/54</guid>
      <comments>https://datascience0321.tistory.com/54#entry54comment</comments>
      <pubDate>Tue, 3 Jun 2025 14:52:46 +0900</pubDate>
    </item>
    <item>
      <title>[Review] Estimation and Inference of Heterogeneous Treatment Effects using Random Forests</title>
      <link>https://datascience0321.tistory.com/53</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;많은 응용 분야에서, 우리는 treatment의 인과 효과에 대한 추론을 그려내는데 데이터를 사용하고 싶다. 예를 들어 건강 결과들에 약물이 미치는 영향에 대한 의학 연구나 광고나 마케팅이 고객 구매에 미치는 영향, 또 정부 프로그램, 공공 정책의 효과성 평가 같은 것들이 있다. 기술 회사에서 자주 사용되는 A/B test 또한 예시 중 하나이다. 역사적으로, 데이터셋이 너무 작아서 샘플을 몇 개의 하위 그룹으로 나누는 것 이상으로 치료 효과의 이질성을 탐색하기에는 부족했다. 여기서 말하는 치료 효과의 이질성 (heterogenity of treatment effects)란 같은 treatment 라도, 사람에 따라 효과가 다르게 나타나는 성질로, 단순히 남/녀, 젊은/나이 든 사람 사이의 이질성 뿐만 아니라, 더 복잡한 그룹이 정의 될 수 있다. 그러나, 기존 데이터셋은 단순히 남/녀, 젊은/나이 든 사람 정도로만 분석했지, 훨씬 더 미세한 이질성을 분석할 수는 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이질적 처리 효과(heterogeneous treatment effects, 이하 HTE)를 탐색하는 데 있어 한 가지 장애물은, 연구자들이 반복적으로 효과가 큰 하위 그룹을 찾은 뒤 극단적인 결과가 나온 그룹만 선택적으로 보고함으로써, 실제로는 우연히 발생한 이질성을 마치 의미 있는 발견처럼 잘못 부각시킬 위험이 있다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;예시: 새로운 항암제가 실제로 누구에게 더 효과적인가?&lt;br /&gt;$\rightarrow$ 연구자는 나이, 성별, 체중, 혈액형 등 다양한 환자 특성별 하위 그룹을 분석하는데, 여러 그룹을 분석하다 보니, 혈액형이 B형인&amp;nbsp; 50세 이상 여성에게서 유독 큰 효과가 관찰되었다. 이떄 연구자는 이 결과만 논문에 강조했다. 이 경우 해당 그룹은 우연히 효과가 커 보였을 수도 있다. 다수의 그룹을 동시에 분석하면, 그 중 일부는 단순 통계적 변동으로 인해 크게 보이는 경우가 생기기 때문이다. 하지만 실제로는 이 그룹이 특별히 반응한 것이 아닐 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이런 문제는 머신러닝에서 과적합 문제와 비슷한 결이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이러한 이유로 어떤 하위 그룹이 분석될 것인지에 대한 임상 시행에 대한 프로토콜이 미리 구체화 되어야 한다. &lt;b&gt;하지만&lt;/b&gt;, 그러한 절차적 제약들은 예상치 못한 강력한 치료 효과 이질성을 발견하는 것을 어렵게 만든다. 예를 들어, 연구자가 &quot;60세 이상 vs 미만&quot; 으로 나눠 분석하겠다고 사전 등록했는데, 실험 결과를 보니 &quot;비타민 D 수치가 낮은 환자&quot;에서만 효과가 확연하게 나타났다. 하지만 이 그룹은 계획에 없었기 때문에 공식 분석에 포함될 수 없다. (새로운 중요한 발견이 묻히게 됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;$\rightarrow$&lt;span&gt; 따라서 프로토콜 없이 모든 데이터에서 하위 그룹 효과를 탐색하되, Causal forest는 어떤 방법론을 통해 우연의 효과인지 정량화하고, 통계적으로 보장되게 끔 함&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&quot;In this article, we seek to address this challenge by developing a powerful, nonparametric method for heterogeneous treatment effect estimation that yields valid asymptotic confidence intervals for the true underlying treatment effect.&quot;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;$\rightarrow$ 진짜 처치 효과에 대한 유효한 점근적 신뢰 구간을 제공하는 이질적 치료 효과를 위한 비모수 방법론을 개발함으로써 이러한 문제에 접근하고자 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #8cb3be; text-align: start;&quot;&gt;*여기서 점근적 (asymptotic)이 잘 이해가 안가서: asymptotic은 표본 크기 n이 무한히 커질 때의 성질을 말하는데, 데이터가 많아지면 많아질수록 어떤 성질이 안정적으로 성립한다는 의미 (약간 중심극한정리) 그래서 causal forest는 표본의 커기가 작을 때는 완벽하다고 보장할 수 없어도, 표본 크기가 커지면 커질수록 효과 추정이 신뢰할 수 있게 된다는 것을 말하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;비모수적 접근 방법이 causal forest가 처음은 아니다. nearest-neighbor matching, kernel methods, series estimation이라는 방법들이 있긴한데, 이들은 적은 수의 covariates에서 잘 작동하지만, covariate의 갯수가 많아질수록 그렇지 않다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;random forest는 예측과 분류에서 매우 성공적이지만, 그것을 인과추론에 직접적으로 적용하기엔 중요한 장애물들이 있다. 좋은 추정량(estimator)은 표본 수가 많아질 때 수렴하는(consistent) 성질을 가지며, 그 분포가 점근적으로 어떻게 되는지 명확하게 이해되어야 한다. 그래야 연구자가 가설 검정도 하고, 신뢰 구간도 계산할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;예를 들어, 환자에게 약을 쓸지 말지 결정할 때 예상 효과가 비용(약값 + 부작용 관리 비용)보다 작은지 아닌지 가설 검정을 할 수 있어야 한다. 이때 신뢰구간이 필요하고, 그건 추정량의 분포(asymptotic distribution)을 알아야 가능하다. 특히 인과 추론에서는 &lt;b&gt;추정량이 점근적으로 정규분포를 따른다는 결과 (asymptotic normality)&lt;/b&gt;가 중요하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 기존 random forest는 그 추정값의 점근적 성질이 잘 정의되어 있지 않다. 심지어 일반 회귀나 분류 문제조차도 아직 asymptotics가 완전히 해결되지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal forest에서는 다루기 쉬운 점근 이론과 통계 추론을 가능하게하는 treatment effect estimation을 위한 forest 기반 방법을 개발함으로써 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이러한 한계들에 &lt;/span&gt;접근한다. tree의 잎에서 치료 효과를 추정하는 causal tree들의 구성인 forest여서 causal forest라 명명한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Causal Forests&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;2.1. Treatment Estimation with Unconfoundedness&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;Feature vector가 $X_i \in [0, 1]^d$이고, 반응 변수 $Y_i \in &amp;nbsp;\mathbb{R}$, treatment indicator $W_i \in \left\{ 0, 1 \right\}$로 구성된 $n$개의 i.i.d training sample을 가지고 있다고 가정한다. ($i = 1, ..., n$) 더불어, Rubin, Neyman의 potential outcome framework에 따라, 실제로는 존재하지 않지만, potential outcome ($Y_i^{(1)}$, $ Y_i^{(0)} $)이 존재한다고 가정한다. 이럴 경우, potential outcome framework에서 정의된 treatment effect 역시 그대로 따른다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 1: $$\tau(x) = \mathbb{E}[Y_i^{(1)}-Y_i^{(0)}|X_i = x].$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal forest의 목표는 $\tau(x)$를 추정하는 것이다. 주요 문제는 실제 데이터에서는 counterfactual outcome을 모른다는 것이고, 머신러닝을 이용해서 단순하게, 직접적으로 계산할 수 없다. 그래서 추정을 위해선 어떤 가정이 필요하다. 이 문제를 해결하는 가장 널리 쓰이는 방법은 unconfoundedness (비혼합성) 가정을 도입하는 것이다. 즉, 공변량 $X_i$를 고려하면, 처치 여부 $W_i$가 potential outcome $Y_i^{(1)}$, $ Y_i^{(0)} $과 독립적이라는 의미이다. (어떤 사람이 치료를 받을 확률은, 그 사람의 잠재적인 치료 결과와는 관계 없이, 공변량 X_i(나이, 성별, 병력 등) 에 의해서만 결정된다는 가정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;조금 더 쉽게 정리하자면, 원래부터 상태가 안좋은 사람 (공변량 = 10)이 치료를 받았을 때 결과가 나빴고, 상태가 괜찮은 사람이 (공변량 = 1) 치료를 안받았을 때 결과가 좋았다면, 이 상태에서는 치료효과를 정확히 알 수 없다. 그래서 비혼합성 가정을 도입한다는 말은 공변량 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;$X_i$를 고려한다 (= 비슷한 상태인 환자들을 뽑는다) 이때 치료 여부가 결과에 영향을 주는가?를 보겠다는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;즉, 비슷한 상태의 사람 중에 약을 받은 사람 vs 안 받은 사람을 비교하면 그 차이는 약의 효과라고 봐도 된다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;그래서 논문에서는 공변량 X를 고정한 상태에서는 치료 여부와 potential outcome이 독립이라는 가정을 세워서 위 상황을 만들고자 한 것이다. (마치 치료가 랜덤 배정된 것 처럼 보이게)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 2: $$\{ Y_i^{(0)}, Y_i^{(1)} \} \perp\!\!\!\perp W_i \mid X_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;unconfoundedness (비혼합성) 가정이란 비슷한 사람들 사이에서는 치료가 무작위처럼 주어졌다고 간주할 수 있다는 뜻이다. 그래서 가까운 사람들끼리 비교하면, 마치 랜덤 실험처럼 치료 효과를 비교할 수 있다. 이 가정 아래에서는 다음 수식을 이용하면 치료 효과 $\tau(x)$를 추정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 3: $$\mathbb{E} \left[ Y_i \left( \frac{W_i}{e(x)} - \frac{1 - W_i}{1 - e(x)} \right) \Big| X_i = x \right] = \tau(x)$$ where, $$e(x) = \mathbb{E}[W_i \mid X_i = x]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;여기서 $e(x)$는 성향 점수 (propensity score) = 치료를 받을 확률이다. 수식을 보면 일단 공변량 $X_i$를 고정했을 때 데이터 내에서 $Y_i$는 potential outcome $Y_i^{(1)}$, $ Y_i^{(0)} $ 둘 중에 하나일것이다. 먼저, $Y_i^{(1)}$일 때는 $ W_i&amp;nbsp; = 1$이기 때문에 $ \frac{W_i}{e(x)} $랑 연산이 될 것이다. 다시 정리하면, $Y_i^{(1)} \cdot \frac{1}{e(x)} $. 그럼 값은 치료를 받은 결과에 $ \frac{1}{e(x)} $ 만큼 결과가 반영된다. 반대의 경우에는 $ \frac{1}{1 - e(x)} $ 만큼 결과가 반영될 것이다. 두 값은 $e(x)$에 따라 달라질 것인데, 치료를 받을 확률이 낮은 경우 곱해지는 값은 커진다. 이 의미는 희귀한 케이스의 결과는 가중치를 더 주겠다는 의미이다. 그래야 공정하게 효과를 비교할 수 있다. 이러한 방식은 propensity weighting (성향 가중법)이라고 불린다. (가중치를 통해 집단 전체를 대표하게 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;초창기 머신러닝 기반 인과추론 연구는 일단 $e(x)$를 예측하고, 그걸 위 수식에 대입해서 $\tau(x)$를 추정하는 방식이었다. 이를 위해 random forest, neural network 등 ML 기법을 활용해 $e(x)$를 먼저 예측하는 것이 핵심이었다. 그런데 causal forest에서는 그런 방식이 아니라, $e(x)$를 직접 추정하지 않고도, $\tau(x)$를 추정할 수 있도록 한다. 즉, propensity score를 몰라도 된다. 이것에 대한 이점은 $e(x)$의 추정이 정확하지 않을 경우 발생할 수 있는 편향을 줄일 수 있고, 고차원에서 더 유연하게 만들 수 있으며, 이중 추정 없이도 일관성을 확보할 수 있고, 정규성 증명이 가능하다고 한다. 자세한 내용은 논문의 내용을 더 보고 정리할 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;2.2. From Regression Trees to Causal Trees and Forests&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 regression tree가 어떻게 causal tree로 확장되는지 설명한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;decision tree는 데이터를 여러 조건으로 나눠서 그룹을 만드는 방식이다. 각각의 그룹은 leaf node라고 불리운다. 하나의 leaf 안에는 비슷한 샘플들만 모여 있게 된다. Tree는 일종의 K-NN 방법처럼 생각할 수 있지만, K-NN이 고정된 거리 측정 지표를 사용하는 것 대신, Tree는 문제에 맞게 split하는 조건을 스스로 학습한다는 점이다. 그래서 이걸 adaptive neighborhood라고 부른다. (나이에 따라 나누거나, 혈압에 따라 나누는 기준을 자동으로 학습)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;CART regeression tree란 $(X_i, Y_i)$라는 data pair를 가지고 있을 때, tree는 feature 공간을 분할해서 leaf 마다 소수의 샘플이 있도록 만든다. 그러면 특정 입력 값 $x$가 주어졌을 때, $x$가 속한 leaf $L(x)$를 찾고, 그 안에 있는 샘플들의 $Y_i$ 값을 평균내어 예측한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 4: $$\hat{\mu}(x) = \frac{1}{|\{i : X_i \in L(x)\}|} \sum_{\{i : X_i \in L(x)\}} Y_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하나의 leaf 안에 있는 샘플들은 서로 비슷하기 때문에, 그 안에서는 $Y_i$값이 대체로 비슷한 분포에서 나왔다고 가정할 수 있다. 따라서 평균을 내는 것이 좋은 예측이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;causal tree에서는 $x$가 속한 leaf $L$ 안에서 치료를 받은 사람들과 안 받은 사람들의 평균 결과 차이를 비교함으로써 치료 효과 $\tau(x)$를 추정한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 5: $$\hat{\tau}(x) = \frac{1}{|\{i : W_i = 1, X_i \in L\}|} \sum_{\{i : W_i = 1, X_i \in L\}} Y_i - \frac{1}{|\{i : W_i = 0, X_i \in L\}|} \sum_{\{i : W_i = 0, X_i \in L\}} Y_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 식은 equation 1과 의미가 정확히 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Tree 하나만으로는 편향이 생기거나 분산이 클 수 있으므로, 여러 개의 causal tree를 만들어서 그 결과를 평균내는 방식을 쓴다. &lt;b&gt;$\rightarrow$ Causal Forest의 핵심 아이디어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 6: $$\hat{\tau}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{\tau}_b(x)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$B$: 트리 개수 (forest 안의 나무 수)&lt;br /&gt;$\hat{\tau}_b(x)$: 각 트리에서 추정한 치료 효과&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;2.3. Asymptotic Inference with Causal Forests&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 이론성 정당성을 논한다. causal forest를 썼을 때, 정말로 $\tau(x)$에 수렴하는지, 샘플이 많아질수록 예측이 정확해질지에 대해 보장하기 위해 어떤 조건이 필요한지 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Casual forest가 충분히 많은 데이터를 갖고 있을 때, 진짜 치료 효과 $\tau(x)$에 점점 더 정확히 수렴할 수 있다는 것을 수학적으로 증명하려면 몇 가지 조건이 필요하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1. Subsampling: 각각의 트리는 전체 데이터를 다 쓰는 게 아니라 일부 샘플 (subsample)만 사용해야한다.&amp;nbsp;&lt;br /&gt;- 그래야 편향이 줄고, 분산을 평균냄으로써 안정적 예측이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;2. Honest splitting: split rule이 $Y_i$를 부적절하게 사용하면 안된다.&lt;br /&gt;- 이것도 과적합과 관련된 문제. 나중에 honest splitting 언급 시 자세히 다룰 예정&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;3. Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다.&amp;nbsp;&lt;br /&gt;- 이 말은 $x $ 가 조금 변하면 $\mathbb{E}[Y_i^{(1)}|X_i = x]$, $\mathbb{E}[Y_i^{(0)}|X_i = x]$도 조금만 변해야 한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;4. Overlab (positivity): 모든 x에 대해, 치료 받을 확률이 0도 아니고 1도 아니어야 한다.&lt;br /&gt;- 만약 어떤 $ x $ 에서는 100% 치료만 받았다면, 그 $ x $ 에 대해 비치료 결과는 아예 관측되지 않아서 비교 불가능하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 모든 조건이 만족되면, Causal forest는 점점 진짜 치료 효과 $\tau(x) $에 가까운 값을 추정하게 되고, 나아가 신뢰구간 추정 등 통계적 추론(asymptotic inference)도 가능해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 논문에서는 추정한 치료 효과 $\tau(x)$는 충분히 많은 데이터를 쓸 경우, 정규분포에 가까워짐을 유도한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 7: $$\frac{\hat{\tau}(x) - \tau(x)}{\sqrt{\text{Var}[\hat{\tau}(x)]}} \Rightarrow \mathcal{N}(0, 1)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;만약 정규분포를 따른다는 것이 증명될 경우, 우리는 신뢰 구간을 계산할 수 있고, p-value(이 치료 효과가 유의미한가?를 검정) 또한 구할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;정규 분포가 되려면 subsample size $s$는 전체 데이터 수 $n$의 $\beta$제곱 비율이어야 한다. $s \sim n^{\beta} \quad \text{for some } \beta &amp;lt; 1$ 그 이유는 정규분포를 따르려면 편향 ($\hat{\tau}(x) - \tau(x) $)은 충분히 작고, 분산($ \text{Var}[\hat{\tau}(x)] $)은 충분히 커야하는데, s가 너무 작으면 예측이 불안정하여 분산이 커지고, s가 너무 크면 트리들이 서로 비슷해져서 편향이 증가한다. 따라서 적당한 수준을 유지하기 위해서 전체 샘플 수의 베타 제곱 만큼을 sampling 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;분산을 계산할 때에는 Infinitesimal Jackknife (IJ) 방법을 활용한다. 이렇게 하는 이유는 random forest의 트리의 개수가 많아질 수록 부트스트랩은 계산 비용이 매우 크고, 분산이 과대추정되는 경향이 있기 때문이다. IJ 방법은 각 샘플 i가 최종 추정 값에 얼마나 기여했는지를 미분처럼 무한소 단위로 측정해서 그걸 가지고 분산을 추정한다. 너무 어려우니 컨셉만 이해하고 넘어감&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 8: $$\hat{V}_{\text{IJ}}(x) = \frac{n - 1}{n} \left( \frac{n}{n - s} \right)^2 \sum_{i=1}^{n} \text{Cov}_* \left[ \hat{\tau}^*_b(x), N^*_{ib} \right]^2$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- $\hat{\tau}^*_b(x)$: $b$번째 트리에서의 추정값&lt;br /&gt;- $N^*_{ib}\in \left\{ 0, 1\right\}$: i번째 샘플이 b번째 트리에 포함되었는지 여부&lt;br /&gt;- $ \text{Cov}_* $: 트리 간의 공분산&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 방식으로 구한 분산 $ \hat{V}_{\text{IJ}}(x) $은 진짜 분산에 점점 가까워지며 일관성 있는 추정량이 된다. (section 3의 Definition 5에 증명)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;2.4. Honest Trees and Forests&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal Forest가 믿을 만한 예측과 신뢰구간을 제공하려면, honest한 방식으로 트리를 만들어야 한다. 여기서 honest란 한 데이터를 트리에 쓸 때 분할 기준을 정할 때 쓴다면, 그 데이터의 결과값 $Y_i$는 예측 계산에는 쓰지말자는 것이다. 반대로 예측에 썼다면, 그 데이터로 split을 만들지 말자는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;같은 데이터를 split과 예측에 동시에 쓰면 트리가 결과 $Y_i$를 너무 많이 본 상태에서 트리를 만들게 된다. 그러면 과적합이 생기고 예측 값이 편향되고, 잘못된 신뢰구간을 도출할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;핵심아이디어는 훈련데이터를 반으로 나누고 한쪽은 split 결정에만 사용하고, 다른 쪽은 리프 노트 안에서 예측 계산에만 사용하는 것이다. 대신 전체 forest에서는 모든 데이터가 결국 둘 다에 참여하므로 데이터를 낭비하지 않으면서도 honesty를 유지한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;961&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mSQlU/btsN26cJxtg/pSbuLWB53x4Twtw0Bj3CH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mSQlU/btsN26cJxtg/pSbuLWB53x4Twtw0Bj3CH0/img.png&quot; data-alt=&quot;마지막 highlight에서 : 치료 효과가 이질적인 집단을 캐치하기 위해 maximizing the variance of tau임&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mSQlU/btsN26cJxtg/pSbuLWB53x4Twtw0Bj3CH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmSQlU%2FbtsN26cJxtg%2FpSbuLWB53x4Twtw0Bj3CH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;440&quot; height=&quot;662&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;961&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마지막 highlight에서 : 치료 효과가 이질적인 집단을 캐치하기 위해 maximizing the variance of tau임&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal forest의 또 다른 honest 트리 구성 방법은 Propensity Tree이다. 트리를 만들 때 결과 값 $Y_i$를 전혀 보지 말고, 치료를 받았는지 여부 $W_i$만 보고 트리를 나누는 것이 핵심 아이디어. 이를 통해 성향이 다른 집단끼리 나눠진 트리가 완성된다. 성향이 비슷한 사람들끼리 묶어버리면 공변량을 완전히 통제해버릴 수 있어서 마치 무작위 실험처럼 치료 효과를 비교할 수 있음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmpm4J/btsN1R1T29L/rothN1U7sPv8pOWzUE2kF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmpm4J/btsN1R1T29L/rothN1U7sPv8pOWzUE2kF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmpm4J/btsN1R1T29L/rothN1U7sPv8pOWzUE2kF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmpm4J%2FbtsN1R1T29L%2FrothN1U7sPv8pOWzUE2kF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;529&quot; height=&quot;489&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;Procedure 1은 분산을 최대화 하는 split을 찾는 방식, Procedure 2는 split을 predicted treatment로 하고 비슷한 군집끼리 leaf node에 있다고 가정하고 치료효과 계산&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(실제 실험에서는 세팅에 따라 선택하여 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Asymptotic Theory for Random Forests&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 Causal Forest 보다 더 일반적인 Random Forest Regression부터 시작해서 정규분포 근사가 왜 성립하는지, 그 이론적 기반을 설명한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;우리가 random forest로 예측한 값이 얼마나 정확한지를 수학적으로 분석하려면 예측값이 정규분포처럼 흔들리는지 (asymptotic normaility) 알아야한다. 즉, 단순히 예측값 하나 뱉는 걸 넘어서, 불확실성까지 정당하게 말할 수 있어야 신뢰구간, p-value도 계산할 수 있고, 통계적으로 의미 있는 모델이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$Z_i = (X_i, Y_i) 데이터가 n개 있다고 가정했을 때, 목표는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 10: $$\mu(x) = \mathbb{E}[Y \mid X = x]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;즉, 입력이 $x$일 때 $Y$의 평균을 잘 예측하는 함수 $\mu(x)$를 아는 것이다. random forest에서 각 트리 $T$는 데이터와 랜덤 요소 $\xi$에 따라 결과가 달라질 수 있다. (각 트리마다 어떤 feature를 선택해서 split할지 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 트리 하나의 예측을 확률적이다. ($T(x;\xi, Z_1, ..., Z_n)$)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Random forest는 여러 트리를 만들고 그 결과를 평균 내는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 11: $$\text{RF}(x; Z_1, \dots, Z_n) = \frac{1}{B} \sum_{b=1}^{B} T\left(x; \xi_b, Z_{b1}^*, \dots, Z_{bs}^* \right)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;쉽게 말해, 랜덤하게 선택된 s개의 샘플로 트리 하나 만들고, 예측 값 계산하고, 이걸 여러 번 반복해서 평균을 낸 것이다. 실재로는 수천 개의 트리를 만들고 평균을 내서 하나의 $\hat{\mu(x)}$을 예측한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;아래는 asymptotic normality of random forest의 preliminaries이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Definition 1. base learner가 $T$이고, subsample size가 $s$인 random forest:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 12: $$\text{RF}(x; Z_1, \dots, Z_n) = \binom{n}{s}^{-1} \sum_{1 \le i_1 &amp;lt; \cdots &amp;lt; i_s \le n} \mathbb{E}_\xi \left[ T(x; \xi, Z_{i_1}, \dots, Z_{i_s}) \right]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Definition 2. Tree가 honest하다는 뜻은 다음 중 하나를 만족해야 한다. Standard case&amp;nbsp; (split을 정할 때 Y를 사용하지 않음) 또는 Double-sample case (Procedure 1)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Definition 3. Random-Split tree: split을 고를 때 무작위성 $\xi$를 따라, 각 변수 $j$가 split 후보로 선택될 확률이 $&lt;b&gt;\frac{\pi}{d}&lt;/b&gt; $이상으로 보장되어야 한다. (특정 변수에 우치지 않고 고르게 split이 일어나야 leaf 크기가 고르게 줄어들고, 전체 공간을 잘 커버할 수 있음)&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$$\frac{\pi}{d} \le \mathbb{P}(\text{split variable is } j) \le 1 &lt;br /&gt;\quad \text{for all } j = 1, \dots, d,\quad \text{where } 0 &amp;lt; \pi \le 1$$&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Definition 4. $\alpha$-regular tree: 트리에서 split할 때, 양쪽 leaf에 최소한 $\alpha$ 비율의 데이터가 있어야 한다. 그리고 그 트리는 최소 깊이 $k$ 이상까지 자라야 한다.(각 리프에는 샘플이 k개 이상 있어야 함) $\rightarrow$ 트리 구조가 너무 한쪽으로만 쏠리면 leaf가 데이터 전체를 대표하지 못하게 되고 정규분포 수렴이 깨질 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Definition 5. training data의 순서를 바꾸어도 예측 결과가 바뀌지 않는 모델은 symmetric predictor이다. 학습 데이터 인덱스 (1, 2, 3, 4, 5,...n)를 (n, 4, 3, 2, ...5)로 바꾸어도 결과가 같아야 대칭적이라는 의미 $\rightarrow$ 정규성 증명을 위한 고전적인 통계 이론 도구 들이 대부분 대칭성을 전제로 하기 때문에 필&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;지금까지 제시한 honesty, random split, symmetry, $\alpha$-regular 등의 조건들을 만족시키면 신뢰할 수 있는 분산 추정량을 갖게된다. 분산을 계산하는 방법은 eq8과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Equation 13: $$\hat{V}_{\text{IJ}}(x) =\frac{n - 1}{n} \left( \frac{n}{n - s} \right)^2 \sum_{i=1}^{n} \text{Cov}_* \left[ \hat{\mu}^*_b(x), N^*_{ib} \right]^2$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;section 2.3인 &lt;b&gt;&lt;i&gt;3. Asymptotic Inference with Causal Forests&lt;/i&gt;&lt;/b&gt; 에서 다룬 내용과, 위 definition에서 다룬 조건이 다 갖추어졌다면, random forest 예측 값 $\hat{\mu(x)}$는 정규분포로 수렴한다고 말할 수 있다.&amp;nbsp; (seciton 2.3이 만족하지 않더라도, 정규분포처럼 퍼지긴 하되, 편향이 남을 수 있다. - asymptotically biased but normal)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;Theorem 3.1 : Random Forest 예측값의 정규분포 수렴 (Asymptotic Normality)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;우리는 section 2.3에서&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;- 3. Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;- 이 말은 $x $ 가 조금 변하면 $\mathbb{E}[Y_i^{(1)}|X_i = x]$, $\mathbb{E}[Y_i^{(0)}|X_i = x]$도 조금만 변해야 한다는 의미이다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;- 정규 분포가 되려면 subsample size $s$는 전체 데이터 수 $n$의 $\beta$제곱 비율이어야 한다. $s \sim n^{\beta} \quad \text{for some } \beta &amp;lt; 1$ &lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;라는 내용을 다룬적이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이 이론은 위 내용과 Definition 2 ~ 5를 기반으로 random forest의 예측 값이 정규 분포로 수렴하는지 보인다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;데이터 생성 프로세스가 다음과 같다고 가정한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;- $Z_i = (X_i, Y_i)$는 서로 독립이고, i.i.d이다. : 데이터를 서로 영향을 주지 않고 같은 규칙으로 랜덤하게 하나씩 뽑은 상황, 통계에서 중심극한정리는 샘플이 서로 독립적일 때만 성립&lt;br /&gt;- $ X_i \sim \textrm{Uniform}[0, 1]^d $: 입력값 $X_i$는 $[0, 1]$ 범위에서 고르게 퍼져있다. 키, 체온 같은 숫자들이 0부터 1사이의 값 안에서 골고루 퍼져 있다. d는 변수 갯수 $\rightarrow$ 트리가 분할을 고르게 하려면 입력값이 너무 한쪽에 몰려 있지 않아야 함. 이 조건은 수학적으로 다루기 쉽게 하기 위해 넣은 가정이므로 실제 데이터는 꼭 이렇게 생기지 않아도 됨&lt;br /&gt;- Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다. $\mu(x) = \mathbb{E}[Y \mid X = x]$&amp;nbsp; ~ Lipschitz continuous&lt;br /&gt;- $\text{Var}[Y \mid X = x] &amp;gt; 0$ : 입력값 x일 때 결과 Y는 완전히 예측되는 게 아니라 약간의 불확실성이 있어야 함&lt;br /&gt;- $\mathbb{E}[|Y - \mu(X)|^{2 + \delta}] \le M$: 평균으로부터 얼마나 멀리 떨어졌는지의 $ 2 + \delta $제곱이 상수 유한 상수 M보다 작아야한다는 뜻인데, 이는 Outlier가 없어야한다는 의미&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$\alpha$-regular에서 $\alpha &amp;lt;= 0.2$로 설정하고, Definition 2~5를 만족하며, subsample size $s_n$이 section 2.3에서 언급했던 것을 구체화해서 아래와 같이 정의된다고 가정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Equation 14: $$s_n \sim n^\beta \quad \text{for some} \quad \beta_{\min} := \left(1 + \frac{d}{\pi} \cdot \frac{\log(\alpha^{-1})}{\log\left((1 - \alpha)^{-1}\right)}\right)^{-1} &amp;lt; \beta &amp;lt; 1$$&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;그럼, Random Forest prediction은 asymptotically Gaussian을 따른다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Equation 15: $$\frac{\hat{\mu}_n(x) - \mu(x)}{\sigma_n(x)} \Rightarrow \mathcal{N}(0, 1)$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이렇게 되면, IJ로 추정한 분산이 실제 분산에 확률 수렴한다. $\hat{V}_{\text{IJ}}(x) / \sigma_n^2(x) \xrightarrow{p} 1$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;분류로의 확장, 위 증명 과정은 생략 --&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Inferring Heterogeneous Treatment Effects&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 본격적으로 potential outcome framework에서 random forest를 사용하여 HTE를 추정하고, asymptotic theory를 causal inference에 적용한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Causal Forest의 목표를 상기해보면, 아래와 같은 Conditional Average Treatment Effect (CATE)를 추정하는 것이 목적이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$$\tau(x) = \mathbb{E}[Y^{(1)} - Y^{(0)} \mid X = x]$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;test point x에 대해, &lt;b&gt;Definition 1&lt;/b&gt;에서 유추할 수 있듯이, 다음과 같이 Causal forest를 만들 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Equation 24: $$\text{CF}(x; Z_1, \dots, Z_n) = \binom{n}{s}^{-1} \sum_{1 \le i_1 &amp;lt; \dots &amp;lt; i_s \le n} \mathbb{E}_\xi \left[ \Gamma(x; \xi, Z_{i_1}, \dots, Z_{i_s}) \right] $$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;학습된 Tree $\Gamma$를 통해 test point $x$를 넣고, 치료 효과 $ &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;\tau(x)&lt;span&gt; &lt;/span&gt;&lt;/span&gt;$ 를 추정하는 것이다. Causal Tree에 대해서는 Theorem 3.1의 대부분의 조건은 유사하게 적용되지만, 두 가지 주요 수정 사항이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Honesty 조건에서 Standard case&amp;nbsp; (split을 정할 때 Y를 사용하지 않음) 또는 Double-sample case (Procedure 1)를 언급했었는데, 치료 변수를 이용한 split이 가능하다는 것이 추가된다. (&lt;b&gt;Definition 2b&lt;/b&gt;)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Eh, $\alpha$-regular 조건에서 leaf 마다 샘플이 k개 이상이면 됐지만, Causal Tree는 treatment 그룹과 control 그룹 모두 k개 이상 있어야 한다. (각 leaf에서 공정하게 비교가 가능해야하기 때문 (&lt;b&gt;Definition 4b&lt;/b&gt;)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Causal Forest에서 우리가 원하는 예측 값인 $\tau(x)$ (치료효과)를 어떻게 계산할 수 있는지는 아래부터 다룬다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Equation 25: $$\mathbb{E}[\Gamma(x) \mid X, W] = \frac{1}{|\mathcal{I}^{(1)}(x)|} \sum_{i \in \mathcal{I}^{(1)}(x)} \mathbb{E}[Y^{(1)} \mid X = X_i] - \frac{1}{|\mathcal{I}^{(0)}(x)|} \sum_{i \in \mathcal{I}^{(0)}(x)} \mathbb{E}[Y^{(0)} \mid X = X_i]$$&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;$\Gamma(x)$&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Causal Tree가 예측한 treatment effect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;$\mathcal{I}^{(1)}(x)$&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;leaf node 안에서 &lt;b&gt;treatment(=1)&lt;/b&gt; 받은 사람들의 인덱스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;$\mathcal{I}^{(0)}(x)$&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;leaf node 안에서 &lt;b&gt;control(=0)&lt;/b&gt; 받은 사람들의 인덱스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;$\mathbb{E}[Y^{(1)} \mid X = X_i]$&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$X_i$&lt;/span&gt;일 때 치료받았을 경우 결과의 평균&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;$\mathbb{E}[Y^{(0)} \mid X = X_i]$&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$X_i$&lt;/span&gt;일 때 치료 안 받았을 경우 결과의 평균&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;하지만, 이 값이 충분히 수렴할 수 있으려면, 주변의 $X_i$들이 $x$에 충분히 가까워야 하고(=training sample로 만든 split 기준에 test sample x가 적용될 수 있어야 함), treatment/control sample이 충분히 있어야 한다. (overlap 조건)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. Simulation Experiments&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 Causal Forest가 정말로 다른 방법들보다 치료 효과를 더 잘 추정할 수 있을지에 대해 시뮬레이션 데이터로 실험해본다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;관찰 데이터를 기반으로 HTE를 정확히 추정하려면 두 가지 도전과제를 해결해야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;1. Local stability: 치료 효과 $\tau(x)$가 비교적 일정한 구간을 잘 찾아야 함 (샘플의 수가 증가할 수록 같은 leaf 안에서 샘플이 서로 비슷해지고, 결과적으로 일정한 치료 효과를 내뱉는다) 구체적으로 말하면, 실제 치료 효과가 너무 들쭉날쭉하게 바뀌지 않아야한다. 만약 아주 작은 x 변화에도 치료 효과가 요동친다면, 그 지역에서의 평균을 내도 의미가 없다. 따라서 추정하려는 치료 효과는 어느 정도 안정되어 있어야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;2. Propensity bias: -&amp;gt; positivity&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;그래서 본 시뮬레이션 실험에서는 두 가지 문제에 대해 Causal forest가 얼마나 잘 견디는지를 확인하고자 한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Baseline model: KNN - causal forest는 결국 adaptive neighborhood method이다. 그래서 non-adaptive 방식인 KNN을 선정하여 비교한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;KNN은 test point $x$를 기준으로 치료군에서 가장 가까운 k명, 대조군에서 가장 가까운 k명을 고른뒤, 두 집단의 평균 차이를 계산한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Equation 26: $$\hat{\tau}_{\text{kNN}}(x)&amp;nbsp;=&amp;nbsp;\frac{1}{k}&amp;nbsp;\sum_{i&amp;nbsp;\in&amp;nbsp;\mathcal{S}_1(x)}&amp;nbsp;Y_i &lt;br /&gt;- \frac{1}{k} \sum_{i \in \mathcal{S}_0(x)} Y_i$$\&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이 추정값 역시 정규분포로 근사한다고 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$$\hat{\tau}_{\text{kNN}}(x) \sim \mathcal{N}(\tau(x), \ \frac{\hat{V}(\mathcal{S}_1) + \hat{V}(\mathcal{S}_0)}{k(k - 1)})$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;실험의 의도는 단순한 K-NN 방식과 비교했을 때 causal forest가 신뢰 구간을 포함해 더 정확하고 견고한 추정이 가능한가를 알아보는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;i&gt;5.1 Experimental Setup&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;기본 실험 환경 --&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;표본 수 n: 사용한 전체 데이터 수&lt;br /&gt;특징 벡터 $X\in[0, 1]^d$: 각 샘플은 d차원의 실수 값 벡터로 구성되어 있고, [0, 1] 구간에서 균등하게 뽑힌다.&lt;br /&gt;결과 값 $Y^(0)$, $Y^(1)$은 정규분포를 따른다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;실험에서는 다음과 같은 함수를 정의했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;1. Main effect: 어떤 사람이 치료를 받든 안 받든 공통적으로 영향을 주는 요인이 outcome에 어떤 영향을 주는지 측정&lt;br /&gt;따로 정의하는 이유: main effect와 treatment effect를 구분하지 않으면 치료 효과에 대한 추정이 혼동(confounding) 될 수 있기 때문 (가령 나이가 많을수록 치료도 더 많이 받고, 혈압도 높다면, 그냥 약을 받은 사람의 혈압이 높다고 해석될 수 있음)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$$m(x) = \frac{1}{2} \mathbb{E}[Y^{(0)} + Y^{(1)} \mid X = x]$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;2. Treatment effect:&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$$\tau(x) = \mathbb{E}[Y^{(1)} - Y^{(0)} \mid X = x]$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;3. Propensity score:&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;$$e(x) = \mathbb{P}(W = 1 \mid X = x)$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;평가지표: MSE, Coverage rate (모델의 추정 치료효과로 구한 신뢰구간 실제 치료효과를 포함하는 비율)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Confidence interval: $[\hat{\tau}(x) - z \cdot \hat{\sigma}(x),\ \hat{\tau}(x) + z \cdot \hat{\sigma}(x)]$&lt;br /&gt;Coverage rate: $\text{Coverage} = \frac{\# \text{ of points where } \tau(x_i) \in \text{CI}_i}{N}$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실험 1. Propensity bias에 강한지 테스트&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;중환자실 환자는 항생제를 더 많이 받는다. 그런데 그들은 원래 상태가 좋지 않다. 그래서 항생제를 줬는데도 상태가 나빠지면 항생제가 해롭다고 착각할 수 있다. (confounding)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;논문에서는 이런 거짓된 착각에 모델이 속는지 보려고한다. 치료 효과 $\tau(x)$의 ground truth를 0으로 고정하고, 상태 $X_1$에 따라 치료 확률 (propensity score)과 기본 상태 (main effect)를 함정처럼 구성한다. 모델이 여기에 속지 않고 0에 가까운 예측을 할 수 있는지 확인&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;치료 확률 구성: $e(x) = \frac{1}{4} \left( 1 + \beta_{2,4}(X_1) \right)$ =&amp;gt; X_1이 작을수록 치료 확률이 높음&amp;nbsp;&lt;br /&gt;기본 상태 구성: $m(x) = 2X_1 - 1$ =&amp;gt; X_1이 클 수록 건강함 (이걸 Y로 쓴 듯)&lt;br /&gt;치료 효과: $\tau(x)&amp;nbsp;=&amp;nbsp;0$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이렇게 구성하면 공변량 X_1와 치료 확률 e(x)에 상관관계를 만들 수 있어서 일반적인 머신러닝에 착각을 유도하는 구조를 만들어냄&lt;br /&gt;이걸 &lt;b&gt;procedure 2 tree로 구현된 causal forest&lt;/b&gt;가 confounding에 속지 않는지 보는게 핵심&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Causal Tree는 구조 특성상 X_1을 기준으로 split을 하게 되면 건강한 집단 / 건강하지 않은 집단으로 데이터가 분리되고, 각 집단 안에서 control/treatment 군집이 나뉜다. 따라서 비슷한 상태에서의 비교는 비슷한 m(x)의 차이이기 때문에 0이되어야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;하지만 KNN의 경우 x가 들어오면 x랑 가장 가까운 치료군을 k개를 가져오고, 가장 가까운 통제군 k개를 가져오기 때문에 평균 치료효과가 0이 아니게된다. (x가 건강한 사람일 때 통제군 k개 샘플은 x랑 비슷할 수 있어도, 치료군은 x랑 비슷하지 않은 샘플일 가능성이 높음)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwESC/btsN5xolVrQ/Aa6gYcQRcTRmgc5e7Vxkl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwESC/btsN5xolVrQ/Aa6gYcQRcTRmgc5e7Vxkl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwESC/btsN5xolVrQ/Aa6gYcQRcTRmgc5e7Vxkl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwESC%2FbtsN5xolVrQ%2FAa6gYcQRcTRmgc5e7Vxkl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;253&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;CF는 다양한 차원에서도 항상 MSE가 0.02 수준이었으나, 10-NN, 100-NN은 오차가 10배 이상 컸다. K-NN은 주변 이웃과 비교하지만, confounding 구조에 잘 적응하지 못한다. 특히 k가 작으면 분산이 크고, k가 크면 편향이 크다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKzeFg/btsN6lHK14R/eahGaKO5Ae9OhozRkG42o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKzeFg/btsN6lHK14R/eahGaKO5Ae9OhozRkG42o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKzeFg/btsN6lHK14R/eahGaKO5Ae9OhozRkG42o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKzeFg%2FbtsN6lHK14R%2FeahGaKO5Ae9OhozRkG42o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;252&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;(왼쪽 그림 해설)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;x축은 데이터 갯수, y축은 추정량의 분산이다. 데이터가 많아질수록, Causal Forest의 예측 분산이 점점 줄어든다. 이는 학습 데이터가 늘어날수록 모델이 더 자신 있게 예측한다는 것을 의미한다. (신뢰도 상승)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;(가운데 그림 해설)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;우리는 분산을 IJ 방식으로 계산한 분산으로 근사했다. 가운데 플롯은 IJ가 얼마나 분산을 잘 추정했는가를 보는 것이다. Y축이 낮을수록 IJ가 추정한 분산이 실제 분산과 비슷하다는 것을 의미한다. 데이터가 많아질수록 추정이 정확해졌다. (실제 우리가 다루는 데이터는 1600개 보다 많으니까 더 정확할 것임. 믿을 만한 방식이다)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;(오른쪽 그림 해설)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;일반적인 QQ플롯이다. 그림이 대각선에 가까울 수록 Causal forest의 예측이 정규분포에 가까움을 의미한다. 이를 통해 신뢰구간을 정규분포를 기반으로 만들어도 괜찮다는 근거가 만들어진다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실험 2. 치료 효과가 지역마다 다른지&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;어떤 약은 특정 유전자형이 있는 사람에게만 효과가 있다. 즉, 사람에 따라 약효가 다르다. 이런 상황을 시뮬레이션으로 만들어서 치료 효과가 위치(x)에 따라 다르게 변할 때 Causal Forest가 그 변화를 잘 포착할 수 있는지 확인한다. (double sample tree 사용)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;치료 효과 함수: $\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2), \quad \varsigma(x) = 1 + \frac{1}{1 + e^{-20(x - 1/3)}}$,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;여기서는 propensity score가 0.5로, 각 샘플에 랜덤으로 배정되고, 치료를 받지 않았을 경우 $Y^0=0$이고, $Y^1= \varsigma(X_1) \cdot \varsigma(X_2) $라는 것을 유추할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;$X_1$, $X_2$가 특정 값 (1/3) 근처이면 치료 효과가 급격히 증가함 (특정 사람들에겐 약효가 크다는 구조)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NUf8L/btsN4usX3xZ/GQeZvRm2ab9KiZDk7KjZb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NUf8L/btsN4usX3xZ/GQeZvRm2ab9KiZDk7KjZb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NUf8L/btsN4usX3xZ/GQeZvRm2ab9KiZDk7KjZb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNUf8L%2FbtsN4usX3xZ%2FGQeZvRm2ab9KiZDk7KjZb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;430&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;CF는 차원이 커져도 MSE가 거의 일정하게 낮았다. 그러나 NN기반 모델은 차원이 커질수록 오차가 급격히 증가했다. Coverage도 마찬가지로 CF가 좋았다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;고차원일수록 CF의 성능이 좋아지는 이유: 차원이 커지면 나무들이 더 다양한 방향으로 split이 가능하고, 나무들 간 상관성이 줄어든다. 이에 따라 전체 분산이 줄어들어 성능이 향상된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실험 3. 아주 좁은 영역에서만 효과가 있을 때&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;어떤 약은 특정 유전자 조합 한가지에서만 효과가 있다. 이건 일반적인 방법으로는 찾기 어렵다. 이 실험은 모델이 좁고 날카로운 효과 영역도 잘 잡아내는지를 보는 것이다. (일반적인 모델은 놓치기 쉬움) &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(double sample tree 사용)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;치료 효과 함수: $\varsigma(x)&amp;nbsp;=&amp;nbsp;\frac{2}{1&amp;nbsp;+&amp;nbsp;e^{-12(x&amp;nbsp;-&amp;nbsp;1/2)}}&amp;nbsp;\\ &lt;br /&gt;\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2)$&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm89EU/btsN5XtEsbs/iFuyekvAqbTp8vTZwte7U1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm89EU/btsN5XtEsbs/iFuyekvAqbTp8vTZwte7U1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm89EU/btsN5XtEsbs/iFuyekvAqbTp8vTZwte7U1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm89EU%2FbtsN5XtEsbs%2FiFuyekvAqbTp8vTZwte7U1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;314&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;CF는 d&amp;gt;2일때도 MSE가 0.02 수준으로 낮게 유지된다. 반면 NN계열은 d=8일때 MSE가 0.26까지 상승한다. (차원이 커질수록 부정확)&lt;br /&gt;coverage 관점에서 차원이 증가할수록 CF가 많이 감소했는데, 이는 bias가 증가했기 때문임 (원래 bias vs variance는 trade-off)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;차원이 증가할수록 bias가 증가하는 이유는 고차원의 경우 중요 변수 비율이 줄어들 수 밖에 없는데 이렇게 되면 중요하지 않은 변수로 split할 확률이 높아지고, 그에 따라 리프에 서로 비슷한 군이 모이지 않아서 정확한 비교가 되지 않았을 수 있음 (내 생각)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1109&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oqCGO/btsN5P3JN4J/GxIg4Oxw06iLVDBqzuYRt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oqCGO/btsN5P3JN4J/GxIg4Oxw06iLVDBqzuYRt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oqCGO/btsN5P3JN4J/GxIg4Oxw06iLVDBqzuYRt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoqCGO%2FbtsN5P3JN4J%2FGxIg4Oxw06iLVDBqzuYRt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;685&quot; height=&quot;418&quot; data-origin-width=&quot;1109&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;X축은 $x_1$, Y축은 $x_2$를 의미한다. 따라서 $x_1$, $x_2$ 관계에 따라 치료 효과의 값의 크기를 색의 강도로 표현한 그림이다. (색이 밝을 수록 값이 큼)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;식 $\varsigma(x)&amp;nbsp;=&amp;nbsp;\frac{2}{1&amp;nbsp;+&amp;nbsp;e^{-12(x&amp;nbsp;-&amp;nbsp;1/2)}}&amp;nbsp;\\&lt;br /&gt;\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2)$ 에서 $x_1$, $x_2$가 둘 다 클 때 치료 효과가 가장 크게 나오게 구성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;가장 왼쪽 컬럼이 GT이고, 가운데가 CF가 예측한 치료효과, 오른쪽이 K-nn이 예측한 치료효과이다. 결과적으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;d=6일때: CF는 전체적인 구조를 잘 잡는다. KNN도 나쁘지 않은데 경계가 조금 흐리다는 것을 알 수 있다.&lt;br /&gt;d=20일때: CF는 GT의 전체적인 구조를 잘 잡긴하나, 살짝 다른걸 볼 수 있음. 우상단 밝기가 다름 (bias증가), KNN이 매끄럽지 못하고 뭉뚝한걸 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;본 논문의 실험파트에서 마지막에 저자들은 그들이 실험에서 상황에 따라 Propensity Tree나 Double-sample Tree 중 더 좋아 보이는 걸 골라 썼다고 밝혔다. 즉, 아직까지는 모든 상황에서 자동으로 잘 작동하는 방법이 아니다는 뜻이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이어서, 논문에서는 향후 연구 과제로 이것을 자동화 할 수 있는 방법을 제안했다. 더불어, 논문에서 subsample s를 하이퍼파라미터로 정했는데, 이것 역시 데이터 특성에 맞게 자동으로 정해주는 원리가 필요하다고 밝힌다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Paper Review</category>
      <category>causal forest</category>
      <category>causal inference</category>
      <category>causal ml</category>
      <category>인과추론</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/53</guid>
      <comments>https://datascience0321.tistory.com/53#entry53comment</comments>
      <pubDate>Tue, 20 May 2025 12:39:19 +0900</pubDate>
    </item>
    <item>
      <title>[Review] Causal Transformer for Estimating Counterfactual Outcomes</title>
      <link>https://datascience0321.tistory.com/52</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAMgiR/btsNrXV9y75/3yS0pSTvP7ELZFCaOMZWaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAMgiR/btsNrXV9y75/3yS0pSTvP7ELZFCaOMZWaK/img.png&quot; data-alt=&quot;ICML 2022, 118회 인용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAMgiR/btsNrXV9y75/3yS0pSTvP7ELZFCaOMZWaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAMgiR%2FbtsNrXV9y75%2F3yS0pSTvP7ELZFCaOMZWaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;387&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ICML 2022, 118회 인용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;의료 의사결정은 서로 다른 치료를 적용한 후 시간에 따라 변화하는 개별 환자의 건강 결과에 대한 정확한 지식을 필요로한다. 이는 궁극적으로 치료 계획의 선택에 정보를 제공하며, 개별 환자에 맞춘 효과적인 치료 제공을 가능하게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;전통적으로, randomized controlled trials (RCT)가 치료 효과 추정의 gold standard이지만, 이는 비현실적이며, 비윤리적이다. 이를 해결하기 위해 EHR 데이터와 같은 observational data로부터 치료 효과를 추정하고자하는 관심이 늘어나고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;통계 모델이나 머신러닝의 경우 시간이 지남에 따라 변하는 교란 요인을 통제하지 못해 종종 예측에 일반화 오류가 있거나 편향이 존재한다. 이러한 지점을 공략하기 위해 최근에는 recurrent marginal structural networks (RMSNs), counterfactual recurrent network (CRN), G-Net 같은 방법론이 개발되었는데, 이러한 방법론의 근간 자체가 LSTM이다 보니, 복잡하고 긴 종속성을 해결하지 못한다는 문제를 지적한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;따라서 해당 연구는 Transformer를 기본으로 한 반사실적 결과 추정 모델인 Causal Transformer를 제안한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1701&quot; data-origin-height=&quot;961&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd7Edh/btsNtfIbiZ9/KGBK7x8wl9RoBwbyxaadD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd7Edh/btsNtfIbiZ9/KGBK7x8wl9RoBwbyxaadD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd7Edh/btsNtfIbiZ9/KGBK7x8wl9RoBwbyxaadD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd7Edh%2FbtsNtfIbiZ9%2FKGBK7x8wl9RoBwbyxaadD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;324&quot; data-origin-width=&quot;1701&quot; data-origin-height=&quot;961&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Problem Formulation&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$i$를 각 환자의 index라 했을 때 health trajectories는 time steps $t = 1, ...,T^(i)$에 걸쳐있다. 각 환자 $i$의 각 시간 $t$에는 $d_x$ 차원을 가진 시간에 따라 변하는 시계열(공변량) $X_t^(i) \in mathbb{R}^d_x$와 $d_a$차원을 가진 treatment 집합 $A_t^(i) \in &amp;nbsp;\left\{ a_1, ..., a_d_{a}\right\}$ 가 있다. (치료가 각 시간 별로 다차원 벡터로 존재 - 원핫인코딩 처럼) $d_y$차원을 가진 outcomes Y_t^(i) \in mathbb{R}^d_y$. $V^(i)$는 성별, 나이 같은 환자의 static 변수 . 이를 기반으로 학습을 위해 다음이 준비되어 있다고 생각&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciqIEm/btsNsD3mUjA/khGdppuJdqiKXf2cyrYYW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciqIEm/btsNsD3mUjA/khGdppuJdqiKXf2cyrYYW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciqIEm/btsNsD3mUjA/khGdppuJdqiKXf2cyrYYW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciqIEm%2FbtsNsD3mUjA%2FkhGdppuJdqiKXf2cyrYYW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;832&quot; height=&quot;272&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDu38D/btsNsM7AvKU/PZGK6k2oVGqZBXMz3KKKzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDu38D/btsNsM7AvKU/PZGK6k2oVGqZBXMz3KKKzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDu38D/btsNsM7AvKU/PZGK6k2oVGqZBXMz3KKKzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDu38D%2FbtsNsM7AvKU%2FPZGK6k2oVGqZBXMz3KKKzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;852&quot; height=&quot;249&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$\tau$가 예측 윈도우이고, t부터 미래 $\tau$까지의 treatment를 주면서 outcome인 Y를 예측하는 것에 관심이 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러나,&amp;nbsp; 구체적인 treatment intervention이 전형적으로 한 환자에 대해 관측되지않으며, 추정되어야함. formally하게 주어진 관측 데이터 D를 바탕으로 portential counterfactual potential outcome이 indentifiable하기 위해 다음의 가정이 만족되어야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(1) consistency, (2) sequential ignorability, (3) sequential overlap -&amp;gt; 해당 내용은 appendix A에 있음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1695&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9NMFI/btsNrzO82fW/TCMy8co3SqO4k0pKj7hLNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9NMFI/btsNrzO82fW/TCMy8co3SqO4k0pKj7hLNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9NMFI/btsNrzO82fW/TCMy8co3SqO4k0pKj7hLNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9NMFI%2FbtsNrzO82fW%2FTCMy8co3SqO4k0pKj7hLNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1695&quot; height=&quot;418&quot; data-origin-width=&quot;1695&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;b&gt;consistency&lt;/b&gt;의 경우 환자가 받은 치료와 같은 치료를 모델이 상상했다면 모델이 상상한 결과는 실제 환자의 결과와 같아야한다는 뜻. &amp;rarr; 당연히 지켜져야함. (그렇지 않으면 똑같은 치료를 받아도 결과가 다르다는 걸 의미)&amp;nbsp; 예를 들어, 실제로 항생제를 받은 환자가 WBC 수치 12로 나왔는데,&lt;br /&gt;모델은 &quot;이 환자가 항생제를 받았을 때 WBC는 8이었을 것&quot;이라고 한다면 &amp;rarr; Consistency가 &lt;b&gt;깨진 것&lt;/b&gt; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Sequential overlab&lt;/b&gt;의 경우 모든 환자 상태에 대해 어떤 치료든 받을 확률이 0보다 크고 1보다 작아야 한다는 뜻 &amp;rarr;&amp;nbsp; 환자기 실제로는 치료 A를 받았지만, 치료 B를 받았더라면 어땠을 까를 추정하고싶은데, 데이터에 치료 B를 받은 기록이없다면 추정 자체가 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Sequential Ignorability&lt;/b&gt;의 경우 지금 어떤 치료를 받을지는, 과거 기록만 보면 알 수 있고, 미래 결과와는 무관해야 한다는 뜻&amp;nbsp; &amp;rarr; 지금 의사가 치료를 선택할 때 미래에 어떤 결과가 나올지를 미리 알고있어서 결정하면 안되고, 오직 과거 기록만 보고 결정해야 함. 관찰되지 않은 요인(예: 의사의 직관)이 치료와 결과 모두에 영향을 준다면 confounding이 생기고, 정확한 인과 추론이 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;본 연구의 task는 다음과 같이 요약 가능:&lt;br /&gt;환자의 history $\overline{H}_t$가 주어졌을 때 treatment intervention $\overline{a}_{t:t+\tau -1}$을 적용한 counterfactual outcomes $Y_{t_\tau}$를 예측하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러나 정말 단순하게 $g(\tau, \overline{a}_{t:t+\tau-1}, \overline{H}_t)$를 예측하는 것은 편향을 유발할 수 있음 - (treatment interventions는 outcome 뿐 아니라, future covariate에도 영향을 미치기 때문)&amp;nbsp;&lt;br /&gt;예를들어 vasopressor라는 치료제는 future covariate인 MAP를 상승시킬 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Causal transformer는 이러한 지점을 고려한 맞춤화된 모델임&amp;nbsp;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Causal Transformer&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;CT는 3가지 분리된 transformer subnetwork를 결합하는 multi input architecture인데, 각 subnetwork는 input으로서 다양한 sequence를 입력 받는다. (1) past time-varying covariates $\overline{X}_t$ ; (2) past outcomes $\overline{Y}_t$; past treatment before intervention \overline{A}_{t-1} &lt;br /&gt;본 모델의 목표는 &quot;어떤 미래 치료를 했을 때 결과가 어떻게 나올까&quot;를 예측하는 것이기에, 반사실적 예측을 위해 future treatment assignment를 입력으로추가하고, 자기회귀방식으로 예측한 값을 입력으로 넣어줌. (모델이 한 스텝씩 예측한 값을 다시 입력으로 넣어줌)&lt;br /&gt;따라서, 저자는 두 treatment sequence 와 outcome sequecne를 concat한 $\overline{A}_{t-1} \cup \bar{a}_{t:t+\tau-1},\quad \overline{Y}_t \cup \hat{Y}_{t+1:t+\tau-1}$를 input을 만듦 (4) 정적 변수 V를 모든 subnetwork에 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FLiLu/btsNsk4SbDA/iEr8oOqNBOcc6NtbyJm3Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FLiLu/btsNsk4SbDA/iEr8oOqNBOcc6NtbyJm3Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FLiLu/btsNsk4SbDA/iEr8oOqNBOcc6NtbyJm3Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFLiLu%2FbtsNsk4SbDA%2FiEr8oOqNBOcc6NtbyJm3Vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;324&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;아키텍처&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;CT(Causal Transformer)는 치료에 영향을 받지 않는(균형 잡힌) 표현 시퀀스 $\bar{\Phi}_{t+\tau-1} = (\Phi_1, \ldots, \Phi_{t+\tau-1})$를 생성한다. 이를 위해 $B$개의 동일한 transformer 블록을 쌓는다. 첫 번째 transformer 블록은 세 개의 입력 시퀀스를 받는다. $B$번째 transformer 블록은 표현 시퀀스 $\bar{\Phi}_{t+\tau-1}$를 출력한다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;- Transformer block -&lt;/b&gt;&lt;br /&gt;$b = 1, \ldots, B$는 서로 다른 transformer 블록 인덱스. 각 transformer 블록은 세 개의 입력 시퀀스 각각에 대해 병렬적인 hidden state 시퀀스를 입력으로 받는다. 시간 $t$에서 각 입력 시퀀스에 대응하는 hidden state는 $A_t^b$ 또는 $a_t^b$, $Y_t^b$ 또는 $\hat{Y}_t^b$, $X_t^b$로 표기한다. hidden state의 차원은 $d_h$로 정의한다. 추가적으로 각 transformer 블록은 정적 공변량의 표현 벡터 $\tilde{V}$를 추가 입력으로 받는다. &lt;br /&gt;&lt;br /&gt;첫&amp;nbsp;번째&amp;nbsp;transformer&amp;nbsp;블록($b&amp;nbsp;=&amp;nbsp;1$)에서는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;선형&amp;nbsp;변환된&amp;nbsp;시계열을&amp;nbsp;입력으로&amp;nbsp;사용한다: &lt;br /&gt;&lt;br /&gt;$$A_t^0, a_t^0 = \text{Linear}_A(A_t, a_t), \quad &lt;br /&gt;X_t^0 = \text{Linear}_X(X_t),$$&lt;br /&gt;&lt;br /&gt;$$Y_t^0, \hat{Y}_t^0 = \text{Linear}_Y(Y_t, \hat{Y}_t), \quad &lt;br /&gt;\tilde{V} = \text{Linear}_V(V)$$&lt;br /&gt;&lt;br /&gt;fully-connected 선형 계층의 파라미터는 모든 시간 단계에 대해 공유된다. 모든 블록 $b \geq 2$는 이전 블록 $b - 1$의 출력 시퀀스를 입력으로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Transformer&amp;nbsp;블록&amp;nbsp;$b$&amp;nbsp;이후의&amp;nbsp;hidden&amp;nbsp;state&amp;nbsp;시퀀스는&amp;nbsp;다음의&amp;nbsp;세&amp;nbsp;텐서로&amp;nbsp;표현된다:&amp;nbsp;&amp;nbsp; &lt;br /&gt;$A^b&amp;nbsp;=&amp;nbsp;\left(&amp;nbsp;\bar{A}_{t-1}^b&amp;nbsp;\cup&amp;nbsp;\bar{a}_{t:t+\tau-1}^b&amp;nbsp;\right)^\top$,&amp;nbsp;&amp;nbsp; &lt;br /&gt;$X^b&amp;nbsp;=&amp;nbsp;(\bar{X}_t^b)^\top$,&amp;nbsp;&amp;nbsp; &lt;br /&gt;$Y^b&amp;nbsp;=&amp;nbsp;\left(&amp;nbsp;\bar{Y}_t^b&amp;nbsp;\cup&amp;nbsp;\hat{Y}_{t+1:t+\tau-1}^b&amp;nbsp;\right)^\top$이다. &lt;br /&gt;&lt;br /&gt;Dong&amp;nbsp;et&amp;nbsp;al.&amp;nbsp;(2021),&amp;nbsp;Lu&amp;nbsp;et&amp;nbsp;al.&amp;nbsp;(2021)의&amp;nbsp;방식을&amp;nbsp;따라,&amp;nbsp;각&amp;nbsp;transformer&amp;nbsp;블록은&amp;nbsp;다음&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;구성요소를&amp;nbsp;포함한다:&amp;nbsp;&amp;nbsp; &lt;br /&gt;(i)&amp;nbsp;multi-head&amp;nbsp;self-/cross-attention,&amp;nbsp;&amp;nbsp; &lt;br /&gt;(ii)&amp;nbsp;feed-forward&amp;nbsp;layer,&amp;nbsp;&amp;nbsp; &lt;br /&gt;(iii) layer normalization이다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;(i)&amp;nbsp;Multi-head&amp;nbsp;self-/cross-attention은&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;병렬&amp;nbsp;attention&amp;nbsp;head를&amp;nbsp;사용하는&amp;nbsp;scaled&amp;nbsp;dot-product&amp;nbsp;attention&amp;nbsp;기법이다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;각&amp;nbsp;attention&amp;nbsp;head는&amp;nbsp;key,&amp;nbsp;query,&amp;nbsp;value로&amp;nbsp;구성된&amp;nbsp;세&amp;nbsp;개의&amp;nbsp;입력&amp;nbsp;$K,&amp;nbsp;Q,&amp;nbsp;V&amp;nbsp;\in&amp;nbsp;\mathbb{R}^{T&amp;nbsp;\times&amp;nbsp;d_{qkv}}$를&amp;nbsp;요구한다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;이들은&amp;nbsp;hidden&amp;nbsp;state&amp;nbsp;시퀀스&amp;nbsp;$H^b&amp;nbsp;=&amp;nbsp;(h_1^b,&amp;nbsp;\ldots,&amp;nbsp;h_T^b)^\top&amp;nbsp;\in&amp;nbsp;\mathbb{R}^{T&amp;nbsp;\times&amp;nbsp;d_h}$에서&amp;nbsp;생성된다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;($H^b$는&amp;nbsp;$A^b$,&amp;nbsp;$X^b$,&amp;nbsp;또는&amp;nbsp;$Y^b$&amp;nbsp;중&amp;nbsp;하나이며&amp;nbsp;subnetwork에&amp;nbsp;따라&amp;nbsp;다르다.)&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;공식적으로 attention은 다음과 같이 계산된다:equation (3)&lt;br /&gt;\[ &lt;br /&gt;\text{Attn}^{(i)}(Q^{(i)},&amp;nbsp;K^{(i)},&amp;nbsp;V^{(i)})&amp;nbsp;=&amp;nbsp;\text{softmax}\left(&amp;nbsp;\frac{Q^{(i)}&amp;nbsp;(K^{(i)})^\top}{\sqrt{d_{qkv}}}&amp;nbsp;\right)&amp;nbsp;V^{(i)} &lt;br /&gt;\] &lt;br /&gt;&lt;br /&gt;key,&amp;nbsp;query,&amp;nbsp;value는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;정의된다: &lt;br /&gt;\[ &lt;br /&gt;Q^{(i)}&amp;nbsp;=&amp;nbsp;Q^{(i)}(H^b)&amp;nbsp;=&amp;nbsp;H^b&amp;nbsp;W_Q^{(i)}&amp;nbsp;+&amp;nbsp;\mathbf{1}&amp;nbsp;b_Q^{(i)\top} &lt;br /&gt;\] &lt;br /&gt;\[ &lt;br /&gt;K^{(i)}&amp;nbsp;=&amp;nbsp;K^{(i)}(H^b)&amp;nbsp;=&amp;nbsp;H^b&amp;nbsp;W_K^{(i)}&amp;nbsp;+&amp;nbsp;\mathbf{1}&amp;nbsp;b_K^{(i)\top} &lt;br /&gt;\] &lt;br /&gt;\[ &lt;br /&gt;V^{(i)}&amp;nbsp;=&amp;nbsp;V^{(i)}(H^b)&amp;nbsp;=&amp;nbsp;H^b&amp;nbsp;W_V^{(i)}&amp;nbsp;+&amp;nbsp;\mathbf{1}&amp;nbsp;b_V^{(i)\top} &lt;br /&gt;\] &lt;br /&gt;&lt;br /&gt;여기서&amp;nbsp;$W_Q^{(i)},&amp;nbsp;W_K^{(i)},&amp;nbsp;W_V^{(i)}&amp;nbsp;\in&amp;nbsp;\mathbb{R}^{d_h&amp;nbsp;\times&amp;nbsp;d_{qkv}}$,&amp;nbsp;&amp;nbsp; &lt;br /&gt;$b_Q^{(i)},&amp;nbsp;b_K^{(i)},&amp;nbsp;b_V^{(i)}&amp;nbsp;\in&amp;nbsp;\mathbb{R}^{d_{qkv}}$는&amp;nbsp;attention&amp;nbsp;head&amp;nbsp;$i$에&amp;nbsp;대한&amp;nbsp;학습&amp;nbsp;가능한&amp;nbsp;파라미터이다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;$\mathbf{1} \in \mathbb{R}^{d_{qkv}}$는 모든 원소가 1인 벡터이다.&amp;nbsp; (bias를 더해주려는 의도) softmax 연산은 행(row) 단위로 독립적으로 적용된다. query와 key의 차원 $d_{qkv}$는 $d_{qkv} = d_h / n_h$이며, 여기서&amp;nbsp;$n_h$는&amp;nbsp;attention&amp;nbsp;head의&amp;nbsp;개수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;저자는 Vaswani et al. (2017)의 원래 multi-head attention에서 마지막 출력 프로젝션 계층을 제거함으로써 overfitting의 위험을 줄이고 구조를 단순화하였다. &lt;br /&gt;&lt;br /&gt;CT에서는 self-attention이 동일한 transformer subnetwork의 hidden state 시퀀스를 사용하여 key, query, value를 추론한다. 반면 cross-attention은 나머지 두 개의 transformer subnetwork에서 얻은 hidden state 시퀀스를 key 및 value로 사용한다. 저자는 병렬적인 hidden state 사이의 정보를 교환하기 위해 여러 개의 cross-attention을 사용한다. 이러한 cross-attention은 self-attention layer 위에 배치된다 (세부 구조는 아키텍처 참조). 서로 다른 cross-attention 출력들을 pooling할 때, 정적 공변량의 표현 벡터 $\tilde{V}$를 추가한다. 또한 self-attention과 cross-attention에서의 마스킹을 위해 Eq. (3)의 attention logit을 $-\infty$로 설정하여, 정보가 현재 입력에서 미래의 hidden state로만 흐르도록 한다 (반대 방향은 허용되지 않음).&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/urOaz/btsNtk3ECFN/FlA43b1oAlI7kNq35uUkqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/urOaz/btsNtk3ECFN/FlA43b1oAlI7kNq35uUkqK/img.png&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;272&quot; data-is-animation=&quot;false&quot; style=&quot;width: 36.3623%; margin-right: 10px;&quot; data-widthpercent=&quot;37.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/urOaz/btsNtk3ECFN/FlA43b1oAlI7kNq35uUkqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FurOaz%2FbtsNtk3ECFN%2FFlA43b1oAlI7kNq35uUkqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J91ye/btsNsTenG7L/N7z2PRsNzOVkvsrewvBEIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J91ye/btsNsTenG7L/N7z2PRsNzOVkvsrewvBEIK/img.png&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;276&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.4453%; margin-right: 10px;&quot; data-widthpercent=&quot;32.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J91ye/btsNsTenG7L/N7z2PRsNzOVkvsrewvBEIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ91ye%2FbtsNsTenG7L%2FN7z2PRsNzOVkvsrewvBEIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;308&quot; height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drRzVQ/btsNrx4WzAz/kAGskN7V0TtKuP2JXOebg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drRzVQ/btsNrx4WzAz/kAGskN7V0TtKuP2JXOebg0/img.png&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;267&quot; data-is-animation=&quot;false&quot; style=&quot;width: 29.8668%;&quot; data-widthpercent=&quot;30.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drRzVQ/btsNrx4WzAz/kAGskN7V0TtKuP2JXOebg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrRzVQ%2FbtsNrx4WzAz%2FkAGskN7V0TtKuP2JXOebg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;283&quot; height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;약간 이런느낌?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cc2bvm/btsNr8btTjs/BI2igGvayNkcJ4NDFK2gq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cc2bvm/btsNr8btTjs/BI2igGvayNkcJ4NDFK2gq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cc2bvm/btsNr8btTjs/BI2igGvayNkcJ4NDFK2gq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcc2bvm%2FbtsNr8btTjs%2FBI2igGvayNkcJ4NDFK2gq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;521&quot; height=&quot;404&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;733&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;br /&gt;(ii)&amp;nbsp;Feed-forward&amp;nbsp;layer&amp;nbsp;(FF)는&amp;nbsp;ReLU&amp;nbsp;활성화&amp;nbsp;함수를&amp;nbsp;갖는&amp;nbsp;완전&amp;nbsp;연결&amp;nbsp;층으로&amp;nbsp;구성되며,&amp;nbsp;hidden&amp;nbsp;state&amp;nbsp;시퀀스에&amp;nbsp;대해&amp;nbsp;시간&amp;nbsp;축&amp;nbsp;기준으로&amp;nbsp;독립적으로&amp;nbsp;적용된다.&amp;nbsp;이는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;표현된다: &lt;br /&gt;\[ &lt;br /&gt;\text{FF}(h_t)&amp;nbsp;=&amp;nbsp;\text{Linear}&amp;nbsp;\left(&amp;nbsp;\text{ReLU}(\text{Linear}(h_t))&amp;nbsp;\right), &lt;br /&gt;\] &lt;br /&gt;여기서&amp;nbsp;선형&amp;nbsp;계층은&amp;nbsp;dropout을&amp;nbsp;뒤따른다. &lt;br /&gt;&lt;br /&gt;(iii)&amp;nbsp;Layer&amp;nbsp;normalization&amp;nbsp;(LN)은&amp;nbsp;Ba&amp;nbsp;et&amp;nbsp;al.&amp;nbsp;(2016)의&amp;nbsp;방법을&amp;nbsp;따른다.&amp;nbsp;각&amp;nbsp;self-attention과&amp;nbsp;cross-attention&amp;nbsp;이후에&amp;nbsp;residual&amp;nbsp;connection이&amp;nbsp;더해지고&amp;nbsp;layer&amp;nbsp;normalization이&amp;nbsp;적용된다.&amp;nbsp;layer&amp;nbsp;normalization은&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;계산된다: &lt;br /&gt;\[ &lt;br /&gt;\text{LN}(h_t)&amp;nbsp;=&amp;nbsp;\frac{\gamma}{\sigma}&amp;nbsp;\odot&amp;nbsp;(h_t&amp;nbsp;-&amp;nbsp;\mu)&amp;nbsp;+&amp;nbsp;\beta, &lt;br /&gt;\] &lt;br /&gt;\[ &lt;br /&gt;\mu&amp;nbsp;=&amp;nbsp;\frac{1}{d_h}&amp;nbsp;\sum_{j=1}^{d_h}&amp;nbsp;(h_t)_j,&amp;nbsp;\quad &lt;br /&gt;\sigma&amp;nbsp;=&amp;nbsp;\sqrt{&amp;nbsp;\frac{1}{d_h}&amp;nbsp;\sum_{j=1}^{d_h}&amp;nbsp;\left(&amp;nbsp;(h_t)_j&amp;nbsp;-&amp;nbsp;\mu&amp;nbsp;\right)^2&amp;nbsp;}, &lt;br /&gt;\] &lt;br /&gt;여기서&amp;nbsp;$\gamma,&amp;nbsp;\beta&amp;nbsp;\in&amp;nbsp;\mathbb{R}^{d_h}$는&amp;nbsp;scale&amp;nbsp;및&amp;nbsp;shift&amp;nbsp;파라미터이고,&amp;nbsp;$\odot$는&amp;nbsp;element-wise&amp;nbsp;곱을&amp;nbsp;의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;여기서 질문.... chatgpt 도와줘,,,!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Q. 왜 treatment, outcome, covariate을 따로 처리하고 cross attention으로 연결하나?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAgZMc/btsNrzPbpyq/td7cLqYtgivuQELxBwGFm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAgZMc/btsNrzPbpyq/td7cLqYtgivuQELxBwGFm1/img.png&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;426&quot; data-is-animation=&quot;false&quot; width=&quot;540&quot; height=&quot;309&quot; style=&quot;width: 52.9546%; margin-right: 10px;&quot; data-widthpercent=&quot;53.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAgZMc/btsNrzPbpyq/td7cLqYtgivuQELxBwGFm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAgZMc%2FbtsNrzPbpyq%2Ftd7cLqYtgivuQELxBwGFm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nG4Pi/btsNr0Ew1Ss/3Jswv321AQ88btr86S21sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nG4Pi/btsNr0Ew1Ss/3Jswv321AQ88btr86S21sk/img.png&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;491&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.8826%;&quot; data-widthpercent=&quot;46.42&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nG4Pi/btsNr0Ew1Ss/3Jswv321AQ88btr86S21sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnG4Pi%2FbtsNr0Ew1Ss%2F3Jswv321AQ88btr86S21sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;744&quot; height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kAe8n/btsNtcLygM1/UWvYrPYr3KqMmdEmXtMOmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kAe8n/btsNtcLygM1/UWvYrPYr3KqMmdEmXtMOmk/img.png&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;357&quot; data-is-animation=&quot;false&quot; style=&quot;width: 37.6069%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;38.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kAe8n/btsNtcLygM1/UWvYrPYr3KqMmdEmXtMOmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkAe8n%2FbtsNtcLygM1%2FUWvYrPYr3KqMmdEmXtMOmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp1OrV/btsNsTSYKiD/IVm9O3eux6feJksVklSzD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp1OrV/btsNsTSYKiD/IVm9O3eux6feJksVklSzD0/img.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;213&quot; data-is-animation=&quot;false&quot; style=&quot;width: 61.2303%; margin-top: 10px;&quot; data-widthpercent=&quot;61.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp1OrV/btsNsTSYKiD/IVm9O3eux6feJksVklSzD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp1OrV%2FbtsNsTSYKiD%2FIVm9O3eux6feJksVklSzD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;748&quot; height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이어서 ..&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;(balanced)&amp;nbsp;표현은&amp;nbsp;B번째&amp;nbsp;transformer&amp;nbsp;블록의&amp;nbsp;두&amp;nbsp;개&amp;nbsp;또는&amp;nbsp;세&amp;nbsp;개의&amp;nbsp;병렬&amp;nbsp;hidden&amp;nbsp;state에&amp;nbsp;대해&amp;nbsp;평균&amp;nbsp;풀링(average&amp;nbsp;pooling)을&amp;nbsp;수행하여&amp;nbsp;구성된다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;이때&amp;nbsp;fully-connected&amp;nbsp;linear&amp;nbsp;layer와&amp;nbsp;exponential&amp;nbsp;linear&amp;nbsp;unit&amp;nbsp;(ELU)&amp;nbsp;비선형&amp;nbsp;함수가&amp;nbsp;사용된다.&amp;nbsp;즉, &lt;br /&gt;&lt;br /&gt;\[ &lt;br /&gt;\tilde{\Phi}_i&amp;nbsp;=&amp;nbsp; &lt;br /&gt;\begin{cases} &lt;br /&gt;\frac{1}{3}&amp;nbsp;(A^B_{i-1}&amp;nbsp;+&amp;nbsp;X^B_i&amp;nbsp;+&amp;nbsp;Y^B_i),&amp;nbsp;&amp;amp;&amp;nbsp;i&amp;nbsp;\in&amp;nbsp;\{1,&amp;nbsp;\ldots,&amp;nbsp;t\},&amp;nbsp;\\ &lt;br /&gt;\frac{1}{2}&amp;nbsp;(a^B_{i-1}&amp;nbsp;+&amp;nbsp;\hat{Y}^B_i),&amp;nbsp;&amp;amp;&amp;nbsp;i&amp;nbsp;\in&amp;nbsp;\{t+1,&amp;nbsp;\ldots,&amp;nbsp;t+\tau-1\}, &lt;br /&gt;\end{cases} &lt;br /&gt;\] &lt;br /&gt;&lt;br /&gt;\[ &lt;br /&gt;\Phi_t&amp;nbsp;=&amp;nbsp;\text{ELU}(\text{Linear}(\tilde{\Phi}_t)) &lt;br /&gt;\] &lt;br /&gt;&lt;br /&gt;여기서 fully-connected linear layer는 dropout과 함께 사용된다. 최종 balanced representation인 $\Phi_t$는 $\mathbb{R}^{d_r}$ 차원의 벡터이며, $d_r$은 balanced representation의 차원을 나타낸다.&amp;nbsp;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Positional encoding -&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;hidden state 들의 순서에 대한 정보를 보존하기위해 postion encoding을 사용했다. 이는 우리가 Treatment A -&amp;gt; side effect S -&amp;gt; Treatment B를 Treatment A -&amp;gt; Treatment B -&amp;gt; side effect S와 구분할수 있게 해주기 때문에 임상 현장과 특히 관련이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Transformer는 기본저으로 위 두 시퀀스를 구분하지 못하기 때문에 시점 간 상대적인 순서를 넣어줌&lt;br /&gt;해당 논문에서는 Relative Positional Enoding을 사용한다. -&amp;gt; &quot;지금 i번째 시간인데, j번째 과거 정보와의 거리 = 몇 칸 차이냐?&quot;&lt;br /&gt;이런 정보를 직접 attention score 계산에 더해준다. (시간 i에서 attention을 계산할 때, 과거 j와의 거리 (j - i) 정보를 포함시키자.)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;\[ &lt;br /&gt;a_{ij}^V&amp;nbsp;=&amp;nbsp;w^V_{\text{clip}(j&amp;nbsp;-&amp;nbsp;i,&amp;nbsp;l_{\text{max}})},&amp;nbsp;\quad &lt;br /&gt;a_{ij}^K&amp;nbsp;=&amp;nbsp;w^K_{\text{clip}(j&amp;nbsp;-&amp;nbsp;i,&amp;nbsp;l_{\text{max}})}&lt;br /&gt;\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$j$: 과거 정보 인덱스 (과거 치료, 결과 등)&lt;br /&gt;$i$: 현재 시점&lt;br /&gt;$j-i$: 시점차 차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;clip은 너무 먼과거는 무시하기 위해 아래처럼 자른다&amp;nbsp; &amp;nbsp;&lt;br /&gt;\[&lt;br /&gt;\text{clip}(x,&amp;nbsp;l_{\text{max}})&amp;nbsp;=&amp;nbsp;\max(-l_{\text{max}},&amp;nbsp;\min(l_{\text{max}},&amp;nbsp;x)) &lt;br /&gt;\]&lt;br /&gt;즉, 너무 멀리 떨어진 과거는 &quot;그냥 먼 과거&quot;로 통일&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 인코딩 벡터는 attention score에 더해진다. 기존 attention socre는 $\alpha_{ij} = \frac{Q_i^\top K_j}{\sqrt{d_{qkv}}}$인데, 여기에 relative encoding을 추가하면 $\alpha_{ij} = \frac{Q_i^\top (K_j + a^K_{ij})}{\sqrt{d_{qkv}}}$이고, attention socre도 다음과 같이 보정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;\[&lt;br /&gt;\text{Attn}_i&amp;nbsp;=&amp;nbsp;\sum_{j=1}^t&amp;nbsp;\alpha_{ij}&amp;nbsp;\cdot&amp;nbsp;(V_j&amp;nbsp;+&amp;nbsp;a^V_{ij}) &lt;br /&gt;\]&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이렇게만 보니까 이해가 잘 안되서 chatgpt에 예제를 부탁했다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;892&quot; data-start=&quot;275&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;시간 t&amp;nbsp;&lt;/td&gt;
&lt;td&gt;A(treatment)&lt;/td&gt;
&lt;td&gt;X(covariate: 맥박)&lt;/td&gt;
&lt;td&gt;Y (Outcome: 백혈구 수)&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;499&quot; data-start=&quot;424&quot;&gt;
&lt;td data-end=&quot;436&quot; data-start=&quot;424&quot;&gt;1&lt;/td&gt;
&lt;td data-end=&quot;450&quot; data-start=&quot;436&quot;&gt;0 (미투여)&lt;/td&gt;
&lt;td data-end=&quot;473&quot; data-start=&quot;450&quot;&gt;95&lt;/td&gt;
&lt;td data-end=&quot;499&quot; data-start=&quot;473&quot;&gt;8.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;576&quot; data-start=&quot;500&quot;&gt;
&lt;td data-end=&quot;512&quot; data-start=&quot;500&quot;&gt;2&lt;/td&gt;
&lt;td data-end=&quot;527&quot; data-start=&quot;512&quot;&gt;1 (투여)&lt;/td&gt;
&lt;td data-end=&quot;550&quot; data-start=&quot;527&quot;&gt;97&lt;/td&gt;
&lt;td data-end=&quot;576&quot; data-start=&quot;550&quot;&gt;8.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;655&quot; data-start=&quot;577&quot;&gt;
&lt;td data-end=&quot;589&quot; data-start=&quot;577&quot;&gt;3&lt;/td&gt;
&lt;td data-end=&quot;606&quot; data-start=&quot;589&quot;&gt;1&lt;/td&gt;
&lt;td data-end=&quot;629&quot; data-start=&quot;606&quot;&gt;100&lt;/td&gt;
&lt;td data-end=&quot;655&quot; data-start=&quot;629&quot;&gt;8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;734&quot; data-start=&quot;656&quot;&gt;
&lt;td data-end=&quot;668&quot; data-start=&quot;656&quot;&gt;4&lt;/td&gt;
&lt;td data-end=&quot;685&quot; data-start=&quot;668&quot;&gt;0&lt;/td&gt;
&lt;td data-end=&quot;708&quot; data-start=&quot;685&quot;&gt;102&lt;/td&gt;
&lt;td data-end=&quot;734&quot; data-start=&quot;708&quot;&gt;9.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;813&quot; data-start=&quot;735&quot;&gt;
&lt;td data-end=&quot;747&quot; data-start=&quot;735&quot;&gt;5&lt;/td&gt;
&lt;td data-end=&quot;764&quot; data-start=&quot;747&quot;&gt;1&lt;/td&gt;
&lt;td data-end=&quot;787&quot; data-start=&quot;764&quot;&gt;105&lt;/td&gt;
&lt;td data-end=&quot;813&quot; data-start=&quot;787&quot;&gt;9.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;892&quot; data-start=&quot;814&quot;&gt;
&lt;td data-end=&quot;826&quot; data-start=&quot;814&quot;&gt;6&lt;/td&gt;
&lt;td data-end=&quot;843&quot; data-start=&quot;826&quot;&gt;?&lt;/td&gt;
&lt;td data-end=&quot;866&quot; data-start=&quot;843&quot;&gt;?&lt;/td&gt;
&lt;td data-end=&quot;892&quot; data-start=&quot;866&quot;&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;-&amp;gt; 현재 시점 t = 6에서 $a_6$을 했을 때 $Y_6$, $Y_7$, ...를 예측하고 싶은 상황&amp;nbsp;&lt;br /&gt;Transformer 내부에서는 self attention을 계산하는데, i = 6, j = 1,...5 인 상황이고, 문제는 $Y_5$와 $Y_1$을 보고 둘다 그냥 과거 outcome으로 인식하는 것임. 따라서얼마나 최근의 값인가에 대한 정보가 없음. -&amp;gt; $Y_1$의 영향을 $Y_5$보다 더 크게 볼 수도 있음 (임상적으로 말이 안됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;핵심 아이디어는 i = 6 시점에서 j = 1~5 까지의 과거 시점에 대해 거리 j-i를 계산하고, 이 거리를 인덱스로 한 서로 다른 학습 가능한 고정 벡터를 만든다. ($w_{-5}$, ..., $w_{-1}$)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 이걸 어떻게 활용하냐면&amp;nbsp;&lt;br /&gt;기존 &quot;$Q_i \cdot K_j$ :i 시점 쿼리와 j 시점 키의 내적&quot; 을 &quot;$Q_i \cdot (K_j+w_{j-i})$ :i 시점 쿼리와 j 시점 키의 내적에 i 번째시점에서 j번째 시점이 한칸 앞이다를 추가&quot; 하는 느낌이다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 139px;&quot; border=&quot;1&quot; data-end=&quot;2021&quot; data-start=&quot;1549&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;j&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;span&gt;&lt;span&gt;원래 $K_j$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;상대거리 j - i&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;더해주는 벡터 $w_{j-i}^K$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;span&gt;&lt;span&gt;최종 key&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 35px;&quot; data-end=&quot;1809&quot; data-start=&quot;1704&quot;&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1711&quot; data-start=&quot;1704&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1734&quot; data-start=&quot;1711&quot;&gt;&lt;span&gt;&lt;span&gt;[0.1,&amp;minus;0.2,...][0.1, -0.2, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1753&quot; data-start=&quot;1734&quot;&gt;-1&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1783&quot; data-start=&quot;1753&quot;&gt;&lt;span&gt;&lt;span&gt;[+0.05,&amp;minus;0.01,...][+0.05, -0.01, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.05&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;0.01&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1809&quot; data-start=&quot;1783&quot;&gt;&lt;span&gt;&lt;span&gt;[0.15,&amp;minus;0.21,...][0.15, -0.21, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.15&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;0.21&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 35px;&quot; data-end=&quot;1915&quot; data-start=&quot;1810&quot;&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1817&quot; data-start=&quot;1810&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1840&quot; data-start=&quot;1817&quot;&gt;&lt;span&gt;&lt;span&gt;[0.3,+0.0,...][0.3, +0.0, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1859&quot; data-start=&quot;1840&quot;&gt;-2&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1889&quot; data-start=&quot;1859&quot;&gt;&lt;span&gt;&lt;span&gt;[&amp;minus;0.02,+0.01,...][-0.02, +0.01, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;0.02&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.01&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1915&quot; data-start=&quot;1889&quot;&gt;&lt;span&gt;&lt;span&gt;[0.28,+0.01,...][0.28, +0.01, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.28&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.01&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 35px;&quot; data-end=&quot;2021&quot; data-start=&quot;1916&quot;&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1923&quot; data-start=&quot;1916&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1946&quot; data-start=&quot;1923&quot;&gt;&lt;span&gt;&lt;span&gt;[0.0,+0.4,...][0.0, +0.4, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.4&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1965&quot; data-start=&quot;1946&quot;&gt;-3&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1995&quot; data-start=&quot;1965&quot;&gt;&lt;span&gt;&lt;span&gt;[+0.10,&amp;minus;0.03,...][+0.10, -0.03, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;0.03&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;2021&quot; data-start=&quot;1995&quot;&gt;&lt;span&gt;&lt;span&gt;[0.10,+0.37,...][0.10, +0.37, ...]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0.10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;0.37&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이런식으로, '아, 얘가1시간 전이면 이 정도 가중치를더 줘야지', '얘는 너무 오래 전이라 좀 무시하자' 가 학습이 잘 되는 쪽으로 수행됨&lt;br /&gt;정리하자면, 여기서 말하는 position encoding이란, key 벡터에 더해지는 일종의 상대 거리를 반영한 bias임. (j-i)를 전체 시퀀스 길이에서 얼만큼 통제할 것인지가 $l_{max}$임&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 범위를 넘어가면 그냥 무시 -&amp;gt; 너무 먼 시점은 고려하지 않겠다. (최대 weight 생성 인덱스: 2*l_max +1)&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1389&quot; data-start=&quot;1199&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1389&quot; data-start=&quot;1227&quot;&gt;
&lt;tr data-end=&quot;1312&quot; data-start=&quot;1227&quot;&gt;
&lt;td data-end=&quot;1258&quot; data-start=&quot;1227&quot;&gt;&lt;span&gt;&lt;span&gt;$w_{j-i}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;의 범위&lt;/td&gt;
&lt;td data-end=&quot;1312&quot; data-start=&quot;1258&quot;&gt;&lt;span&gt;&lt;span&gt;$&amp;minus;l_{max}&amp;lt;=j&amp;minus;i&amp;lt;=l_{max}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1349&quot; data-start=&quot;1313&quot;&gt;
&lt;td data-end=&quot;1321&quot; data-start=&quot;1313&quot;&gt;벡터 개수&lt;/td&gt;
&lt;td data-end=&quot;1349&quot; data-start=&quot;1321&quot;&gt;&lt;span&gt;&lt;span&gt;$2l_{max}+1&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1389&quot; data-start=&quot;1350&quot;&gt;
&lt;td data-end=&quot;1360&quot; data-start=&quot;1350&quot;&gt;clip 이유&lt;/td&gt;
&lt;td data-end=&quot;1389&quot; data-start=&quot;1360&quot;&gt;파라미터 수 제한 + 먼 과거는 비슷하게 취급&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Training of our Causal Transformer -&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;본 연구에서 학습하려는 balanced representation은 두 가지 조건을 만족해야 한다.&lt;br /&gt;(1) 미래 결과를 잘 예측해야 한다.&lt;br /&gt;(2) 현재 치료가 무엇이었는지는 예측 못하게 해야한다.&lt;br /&gt;-&amp;gt; 즉, representation만 보고서는 항생제를 줬는지, 안줬는지 구분이 안되도록 만들어야하는데, 왜냐하면 treatment를 예측할 수 있으면 confounding bias가 여전히 들어 있는 것이기 때문&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;(2)번은 이게 뭔소리여 대체...&lt;br /&gt;&lt;/i&gt;ChatGPT와의 수 차례 대화를 통해 아래 결론을 얻었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;우리는 치료의 효과를 보고 싶음 - 어떤 치료를 했을 때 어떻게 Y가 변하는지?&amp;nbsp; &amp;nbsp;&lt;br /&gt;그런데, 종종 치료는 X를 보고서 의사의 판단에 의해 수행됨 (예: MAP가 65mmHg 이하니까, 승압제를 투여한다.)&lt;br /&gt;인과 추론에서 치료 효과를 추정하기 위한 gold standard가 RCT인 것을 감안하면, 치료 효과를 공정하게 추정하기 위해서는 의사는 랜덤하게 치료를 정해야하고, 이에 따른 결과로 효과를 추정하는 것이 공정하다. 하지만 현재 MAP를 보고 승압제를 주는 이런 경우 말 그대로 위에서 언급했던 representation 만 보고서 치료를 줬는지 안줬는지 알 수 있는 상황이다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이때의 인과 그래프&lt;br /&gt;X&amp;nbsp;─►&amp;nbsp;A&amp;nbsp;─►&amp;nbsp;Y &lt;br /&gt;│&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ▲ &lt;br /&gt;└───────┘&lt;br /&gt;&lt;br /&gt;즉 A-&amp;gt;Y 인과 영항을 보고 싶은데, A는 X의 영향을 받으므로, confounding bias가 생긴 것임 ( &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이때 인과 그래프는 X -&amp;gt; A -&amp;gt; Y)&lt;/span&gt;&lt;br /&gt;(&quot;모델이 A 때문에 Y가 변했다고 착각하게 되지만, 실제로는 X가 A도 결정하고, Y도 결정하는 상황&quot; -&amp;gt; &quot;치료 A가 회복 Y에 진짜 영향을 줬는가?&quot; &lt;b&gt;이걸 알고싶으면 X가 A에게 주는 영향을 제거하면서 동시에 X가 Y에 주는 정보는 남겨야 함&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;그래서 본 논문에서 유도하고 싶은 바람직한 인과 그래프는 A -&amp;gt; Y &amp;lt;- X 이다.&lt;br /&gt;따라서 Representation에서 현재 치료가 무엇이었는지는 예측 못하게 한다는 의미는 X -&amp;gt; A로의 인과 정보를 지워버리겠다는 의미이다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 131px;&quot; border=&quot;1&quot; data-end=&quot;510&quot; data-start=&quot;128&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;환자&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;X(나이)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;치료 여부 A&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;회복 여부 Y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;260&quot; data-start=&quot;216&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;223&quot; data-start=&quot;216&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;233&quot; data-start=&quot;223&quot;&gt;90&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;246&quot; data-start=&quot;233&quot;&gt;1 (치료함)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;260&quot; data-start=&quot;246&quot;&gt;0 (미회복)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;306&quot; data-start=&quot;261&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;268&quot; data-start=&quot;261&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;278&quot; data-start=&quot;268&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;291&quot; data-start=&quot;278&quot;&gt;0 (치료 안 함)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;306&quot; data-start=&quot;291&quot;&gt;1 (회복)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;357&quot; data-start=&quot;307&quot;&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;314&quot; data-start=&quot;307&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;324&quot; data-start=&quot;314&quot;&gt;85&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;340&quot; data-start=&quot;324&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;357&quot; data-start=&quot;340&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;408&quot; data-start=&quot;358&quot;&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;365&quot; data-start=&quot;358&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;375&quot; data-start=&quot;365&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;391&quot; data-start=&quot;375&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;408&quot; data-start=&quot;391&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;459&quot; data-start=&quot;409&quot;&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;416&quot; data-start=&quot;409&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;426&quot; data-start=&quot;416&quot;&gt;70&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;442&quot; data-start=&quot;426&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;459&quot; data-start=&quot;442&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;510&quot; data-start=&quot;460&quot;&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;467&quot; data-start=&quot;460&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;477&quot; data-start=&quot;467&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;493&quot; data-start=&quot;477&quot;&gt;?&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot; data-end=&quot;510&quot; data-start=&quot;493&quot;&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이&amp;nbsp; 경우 X만 보고도 A를 예측할 수 있음 (나이가 많은 환자는 항생제를 투여받는다)&lt;br /&gt;이 상태로 representation을 만들면 모델은 A가 무엇인지 대충 알고 있게되고, Y 예측 시 A의 영향이 개입된다. &lt;b&gt;이렇게 되면 치료를 해서 회복이 안되는 건지, 나이가 많아서 회복이 안되는 건지 구분을 못한다.&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;그래서 하는 것이 adversarial loss의 도입이고, 이놈이 하는 것이 representation은 Y를 예측하는데 유용한 정보인 X와 과거 Y를 남기고, A를 예측하는 데 필요한 신호인 X -&amp;gt; A의 경로를 지워버린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Adversarial balanced representations. -&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;목적을 다시 요약하자면 &lt;br /&gt;- Y 예측기 : representation $tilde{\Phi}_i$로부터 결과 $Y_{t+\tau}$를 잘 맞추게 만들기&lt;br /&gt;- A 예측기 : representation $tilde{\Phi}_i$로부터 결과 $A_{t}$를 맞추지 못하게 만들기&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;논문에서는 이를 위해 두 개의 feed-forward network (MLP)를 사용했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R9Vzz/btsNut0HkvB/6Oz6vFJ01K1zqrmYVSMVZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R9Vzz/btsNut0HkvB/6Oz6vFJ01K1zqrmYVSMVZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R9Vzz/btsNut0HkvB/6Oz6vFJ01K1zqrmYVSMVZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR9Vzz%2FbtsNut0HkvB%2F6Oz6vFJ01K1zqrmYVSMVZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;542&quot; height=&quot;277&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;outcome prediction network $G_Y$가 representation $tilde{\Phi}_i$와 현재 treatment $A_t$를 추가로 입력 받음&amp;nbsp;&lt;br /&gt;$G_A$는 representation 만 입력 받음 -&amp;gt; A 예측기&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Y를 잘 맞추게 하기 위한 objective function&lt;/b&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm7EuZ/btsNtMmGuSb/MsKFv0mAEwHJ624HiUtFq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm7EuZ/btsNtMmGuSb/MsKFv0mAEwHJ624HiUtFq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm7EuZ/btsNtMmGuSb/MsKFv0mAEwHJ624HiUtFq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm7EuZ%2FbtsNtMmGuSb%2FMsKFv0mAEwHJ624HiUtFq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;188&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;ldquo;Representation에서는 A를 예측 못 하게 만든다면서, 왜 Y 예측할 때는 A를 집어넣는가?&amp;rdquo;&amp;nbsp;&lt;br /&gt;-&amp;gt; 미래 시점 Y예측에 도움이 되니까. A가 실제로 Y에 영향을 주는 treatment이기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;br /&gt;representation에서 A를 없애고, treatment를 독립적으로 입력함으로써, Y예측에 confounding 정보로부터 독립적으로 들어와야 하게 만든 것임&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;전체 수식은 다음의 의미를 가지고 있음 : &quot;representation $tilde{\Phi}_i$가 과거 정보만 압축해 담고 있고, 현재 시점에 어떤 치료 $A_t$를 했는지 명시적으로 따로 알려준 상태에서 미래 Y_{t+1}을 예측하라&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;학습구조:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;X ───┐ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;▼ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;Phi;_t&amp;nbsp;(rep)&amp;nbsp;────►&amp;nbsp;G_Y&amp;nbsp;───►&amp;nbsp;Y_{t+1} &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ▲ &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;│ &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A_t &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;A를 못 맞추게 하기 위한 objective function&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;-&amp;gt; Representation이 Y는 예측 가능하지만, A는 예측하지 못하게 만드는 것이 목표&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IQp4d/btsNthHupVN/VzVBOD7xSWKwZiT5omHka0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IQp4d/btsNthHupVN/VzVBOD7xSWKwZiT5omHka0/img.png&quot; data-alt=&quot;treatment classifier $G_A$&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IQp4d/btsNthHupVN/VzVBOD7xSWKwZiT5omHka0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIQp4d%2FbtsNthHupVN%2FVzVBOD7xSWKwZiT5omHka0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;102&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;treatment classifier $G_A$&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 형태는 entropy 형태로 이를 minimize 하는 것은 A를 얼마나 잘 맞추는가를 의미함. 하지만 여기서는 잘 못맞추도록 하는 것이 목표&lt;br /&gt;그래서 domain confusion loss를 도입. 여기서 domain은 치료 종류 (class), confusion은 치료 클래스를 구별하지 못하게 만드는 것&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMjn0v/btsNuikQTiF/F5FoKLid7eqKEXAdvCj7rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMjn0v/btsNuikQTiF/F5FoKLid7eqKEXAdvCj7rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMjn0v/btsNuikQTiF/F5FoKLid7eqKEXAdvCj7rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMjn0v%2FbtsNuikQTiF%2FF5FoKLid7eqKEXAdvCj7rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;81&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 꼴은 사실 KL divergence (uniform | G_a) 임&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdK4mg/btsNtisV5jy/atEuOpU4K1Ljew6PVZUAsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdK4mg/btsNtisV5jy/atEuOpU4K1Ljew6PVZUAsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdK4mg/btsNtisV5jy/atEuOpU4K1Ljew6PVZUAsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdK4mg%2FbtsNtisV5jy%2FatEuOpU4K1Ljew6PVZUAsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;393&quot; height=&quot;185&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;Q &amp;ldquo;어차피 식 (17) 로 A 예측기 $G_A&lt;span aria-hidden=&quot;true&quot;&gt;​$&lt;/span&gt;를 망가뜨릴 건데, 식 (16)처럼 A를 잘 예측하게 만들 필요가 있나?&amp;rdquo;&lt;/span&gt;&lt;br /&gt;-&amp;gt; 일단 잘 맞추도록 만들어야 G_A가 높은 정확도를 가진 모델이되는데, 그래야 $tilde{\Phi}_i$가 식 17에 따라 G_A가 잘 못맞추도록 자기 자식의 weight $\theta$를 업데이트할거임. 애초에 G_A가 잘 못맞추는 모델이 되면, $tilde{\Phi}_i$ 굳이 자기 안에 있는 confounding을 제거할 필요가 없음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Overall adversarial objective&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xXPwJ/btsNtht1Uj5/EfrKRFR6p9e2pCzWFnCFR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xXPwJ/btsNtht1Uj5/EfrKRFR6p9e2pCzWFnCFR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xXPwJ/btsNtht1Uj5/EfrKRFR6p9e2pCzWFnCFR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxXPwJ%2FbtsNtht1Uj5%2FEfrKRFR6p9e2pCzWFnCFR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;157&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Experiments&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;counterfacture outcome 추론을 위한 benchmark task가 있는데, 이 절차에 따라 CT를 평가했다고 함. 실험에서는 (semi-)syntheric dataset을 기본적으로 사용한다. (real data는 counterfactual outcome의 ground truth가 없음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Baseline model 선정&lt;br /&gt;&lt;/b&gt;해당 연구 분야에서 제안된 state of the art model의 paper에서 사용한것과 동일한&amp;nbsp; baseline들을 사용 (MSMs, RMSNs, CRN, G-Net)&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Experiments with fully-synthetic data&lt;br /&gt;- data -&lt;br /&gt;&lt;/b&gt;본 연구에서는 폐암 치료의 효과를 시간에 따라 시뮬레이션 할 수 있는 수학적 모델을 평가 데이터로 사용했다. 이는 실제 환자의 데이터를 쓰는 것이 아니라, 환자가 어떤 치료를 받았을 때 종양이 어떻게 반응할지를 수학적으로 예측해주는 도구이다. ( Prediction of Treatment Response for Combined Chemo- and Radiation Therapy for Non-Small Cell Lung Cancer Patients Using a Bio-Mathematical Model 에서 제안됨)&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 모델은 약물의 체내 흡수와 제거 속도, 방사선의 영향, 종양의 세포 성장률 등을 수학적으로 모델링한 것. 본 연구에서는 실험에서 가짜 환자 데이터를 만들기 위해 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;본 연구에서는 이 모델을 바탕으로 다음 두 가지 실험을 수행한다.:&lt;br /&gt;1. Single sliding treatment: 한 환자가 한 가지 치료만 계속해서 받는 상황&lt;br /&gt;2. Random trajectories: 환자가 다양한 치료를 섞어서 받는 상황&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Result -&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4K3CW/btsNrtIhifj/M4Vb1K43A2YPSTUxKQd7q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4K3CW/btsNrtIhifj/M4Vb1K43A2YPSTUxKQd7q1/img.png&quot; data-alt=&quot;해당 실험에서 $\gamma$는 confounding을 얼마나 심하게 줄지에 대한 값으로, X가 A를 선택하는데 얼마나 많은 기여를 하는지를 의미한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4K3CW/btsNrtIhifj/M4Vb1K43A2YPSTUxKQd7q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4K3CW%2FbtsNrtIhifj%2FM4Vb1K43A2YPSTUxKQd7q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;751&quot; height=&quot;242&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;해당 실험에서 $\gamma$는 confounding을 얼마나 심하게 줄지에 대한 값으로, X가 A를 선택하는데 얼마나 많은 기여를 하는지를 의미한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;가상의 데이터이기 때문에 공변량이 치료 A 선택에 얼마나 영향을 줄지를 시뮬레이션 할 수 있음 (실제 데이터로는 불가능, 이미 데이터에 내제되어 있음)&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;1.&amp;nbsp;Z&amp;nbsp;생성:&amp;nbsp;환자의&amp;nbsp;나이,&amp;nbsp;체온,&amp;nbsp;산소포화도&amp;nbsp;등 &lt;br /&gt;2. T 결정: T = P(약 B | Z) = sigmoid( &lt;i&gt;$\gamma$&lt;/i&gt; * wᵀZ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr; $\gamma$로 confounding 정도 조절 &lt;br /&gt;3. &lt;i&gt;$\gamma$&lt;/i&gt; 생성: bio-math model 사용 (T와 Z 입력) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;예:&amp;nbsp;약물이&amp;nbsp;박테리아를&amp;nbsp;줄이는&amp;nbsp;ODE&amp;nbsp;기반&amp;nbsp;모델 &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;CT가 기존 최신 모델보다 성능이 좋았는데, 특히 confounding $\gamma$ 값이 클 수록, 예측해야 할 시간 간격이 클수록 그 차이가 더 크게 나타났다. CDC loss를 활성화하지 않은 파란색의 경우, 단기 예측엔 큰 영향이 없지만, 장기 예측에는 CDC loss가 중요했다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mB2Ah/btsNrt9eV9f/K6P4fiaT4UDTashYqrGC5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mB2Ah/btsNrt9eV9f/K6P4fiaT4UDTashYqrGC5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mB2Ah/btsNrt9eV9f/K6P4fiaT4UDTashYqrGC5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmB2Ah%2FbtsNrt9eV9f%2FK6P4fiaT4UDTashYqrGC5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;631&quot; height=&quot;292&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;697&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 plot은 balanced representation이 실제로 treatment를 예측하지 않고, outcome 예측만 잘 할 수 있는지를 보기 위한 plot. 좌측에 treatment 별 색상을 입혀보면, 무작위적인 모습을 볼 수 있으나, 우측 outcome에 대한 결과를 보면, 나름 패턴이 있음을 알 수 있음 -&amp;gt; &lt;i&gt;의도한대로 학습이 되었다&amp;nbsp;&lt;/i&gt; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Experiments with semi-synthetic data&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;해당 실험은 실제 환자 데이터를 기반으로 하되, 결과(Y)는 연구자가 알고 있는 방식으로 생성해서 정답 (counterfactual outcome)을 가진 데이터를 만들고자 함. 이러한 데이터를 semi-synthetic data라 부르며, 이 실험은 CT 모델이 실제 환경에서도 잘 작동하는지를 검증하기 위한 중간 단계 실험이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&lt;b&gt;Details on Experiments with Semi-Synthetic Data&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;사용된 데이터&lt;br /&gt;- MIMIC-extract (MIMIC-III): 데이터 전처리 파이프라인. MIMIC-III을 시간 단위로 정규화 및 보간처리 한 정제된 데이터셋&amp;nbsp;&amp;nbsp;&lt;br /&gt;- 선택된 변수: vital sign 25개, static 3개 (one hot encoding를 사용하여 벡터화) 등 총 44개 변수를 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;1. Untreated outcome $Z_{j, t}^(i)$ 생성&lt;/i&gt;&lt;br /&gt;z는 아직 치료가 적용되지 않았을 때의 결과 값임. 이 값은 아래 3개의 요소가 합쳐져서 만들어진다. (데이터 내에 치료를 수행하지 않은 환자는 outcome을 그대로 사용)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qRahr/btsNwpDIfqR/VwWUTTTEPGIzDqdyfZ0T8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qRahr/btsNwpDIfqR/VwWUTTTEPGIzDqdyfZ0T8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qRahr/btsNwpDIfqR/VwWUTTTEPGIzDqdyfZ0T8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqRahr%2FbtsNwpDIfqR%2FVwWUTTTEPGIzDqdyfZ0T8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;79&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 130px;&quot; border=&quot;1&quot; data-end=&quot;1436&quot; data-start=&quot;1089&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1436&quot; data-start=&quot;1117&quot;&gt;
&lt;tr style=&quot;height: 43px;&quot; data-end=&quot;1207&quot; data-start=&quot;1117&quot;&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;1135&quot; data-start=&quot;1117&quot;&gt;B-spline(t)&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;1207&quot; data-start=&quot;1135&quot;&gt;시간의 흐름에 따라 부드럽게 변하는 베이지안 기저함수. 어떤 변수는 시간이 지나며 자연적으로 변화할 수 있기 때문에 도입함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1296&quot; data-start=&quot;1208&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1227&quot; data-start=&quot;1208&quot;&gt;$g_j^{(i)}(t)$&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1296&quot; data-start=&quot;1227&quot;&gt;각 환자마다 고유하게 가지는 무작위적인 변화. Gaussian Process(GP) 기반으로 생성됨. &amp;rarr; 개인차 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 35px;&quot; data-end=&quot;1384&quot; data-start=&quot;1297&quot;&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1320&quot; data-start=&quot;1297&quot;&gt;$f_j^Z(X_t^{(i)})$&lt;/td&gt;
&lt;td style=&quot;height: 35px;&quot; data-end=&quot;1384&quot; data-start=&quot;1320&quot;&gt;시계열 공변량 $&lt;span&gt;&lt;span&gt;Xt(i)X_t^{(i)}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;X&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​$&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;에 비선형 함수를 적용해 만든 외생적 영향. RFF 기반 GP 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1436&quot; data-start=&quot;1385&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1395&quot; data-start=&quot;1385&quot;&gt;$&amp;epsilon;_t$&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1436&quot; data-start=&quot;1395&quot;&gt;잡음 (Gaussian noise, &amp;epsilon; ~ N(0, 0.005&amp;sup2;))&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;즉, 이 Z는 환자가 치료를 안했다면 원래 이렇게 진행되었을거야를 시뮬레이션한 베이스라인 trajectory&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;2. Treatment $A_{t}^(l)$ 생성&lt;/i&gt; &lt;br /&gt;환자는 n가지 binary treatment를 받을 수 있다. 각 treatment는 시계열 변수에 따라 다르게 할당되며, confounding을 의도적으로 삽입한다.&lt;br /&gt;아래 수식은 시점t에 대해 treatment l을 받을지 여부를 결정하는 확률 함&amp;nbsp;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDaxJh/btsNwcYVObV/Pt1k6ToriSkBSAKJpI80A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDaxJh/btsNwcYVObV/Pt1k6ToriSkBSAKJpI80A1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDaxJh/btsNwcYVObV/Pt1k6ToriSkBSAKJpI80A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDaxJh%2FbtsNwcYVObV%2FPt1k6ToriSkBSAKJpI80A1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;102&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2182&quot; data-start=&quot;1805&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr data-end=&quot;1909&quot; data-start=&quot;1833&quot;&gt;
&lt;td data-end=&quot;1855&quot; data-start=&quot;1833&quot;&gt;&lt;span&gt;&lt;span&gt;$\bar{A}_{T_{l}}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;1909&quot; data-start=&quot;1855&quot;&gt;지금까지 받은 해당 treatment의 이력 (e.g., 그동안 몇 번이나 약을 맞았는가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1982&quot; data-start=&quot;1910&quot;&gt;
&lt;td data-end=&quot;1929&quot; data-start=&quot;1910&quot;&gt;&lt;span&gt;&lt;span&gt;$f_{Y}^l(X_t)&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;1982&quot; data-start=&quot;1929&quot;&gt;현재 시점의 시계열 변수 X를 기반으로 한 비선형 함수 (treatment 선택 결정기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2055&quot; data-start=&quot;1983&quot;&gt;
&lt;td data-end=&quot;2010&quot; data-start=&quot;1983&quot;&gt;&lt;span&gt;&lt;span&gt;$\gamma_A, \gamma_X$&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2055&quot; data-start=&quot;2010&quot;&gt;각각 과거 치료 이력과 공변량 X가 treatment 결정에 미치는 영향력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2095&quot; data-start=&quot;2056&quot;&gt;
&lt;td data-end=&quot;2068&quot; data-start=&quot;2056&quot;&gt;&lt;span&gt;&lt;span&gt;$b_l$&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2095&quot; data-start=&quot;2068&quot;&gt;각 treatment별 편향값 (bias)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2131&quot; data-start=&quot;2096&quot;&gt;
&lt;td data-end=&quot;2111&quot; data-start=&quot;2096&quot;&gt;&lt;span&gt;&lt;span&gt;$\sigma&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2131&quot; data-start=&quot;2111&quot;&gt;시그모이드 함수로 확률로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;treatment 할당은 공변량에 따라, 과거 치료 이력에 따라 다르게 주어지므로, confounding을 의도적으로 삽입한 구성 (논문에서는 총 3가지 치료를 고려함 -&amp;gt; treatment 조합 총 8개)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;3. Treatment 효과 모델링 $E_{j}(t)$&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;치료를 받은 후에는 종속 변수 Y가 변화하게 된다. 여기서는 각 treatment가 특정 결과에 영향을 주며, 그 영향이 시간에 따라 감소한다고 가정한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4Zaq/btsNv8hIwTc/R59HZswsnkPjeAlx9owDQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4Zaq/btsNv8hIwTc/R59HZswsnkPjeAlx9owDQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4Zaq/btsNv8hIwTc/R59HZswsnkPjeAlx9owDQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4Zaq%2FbtsNv8hIwTc%2FR59HZswsnkPjeAlx9owDQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;113&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2860&quot; data-start=&quot;2551&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2860&quot; data-start=&quot;2579&quot;&gt;
&lt;tr data-end=&quot;2650&quot; data-start=&quot;2579&quot;&gt;
&lt;td data-end=&quot;2599&quot; data-start=&quot;2579&quot;&gt;&lt;span&gt;&lt;span&gt;$\beta_{l,j}$&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2650&quot; data-start=&quot;2599&quot;&gt;treatment l이 outcome j에 미치는 영향 정도 (양수 또는 음수 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2692&quot; data-start=&quot;2651&quot;&gt;
&lt;td data-end=&quot;2663&quot; data-start=&quot;2651&quot;&gt;&lt;span&gt;&lt;span&gt;$w_l$&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2692&quot; data-start=&quot;2663&quot;&gt;treatment 효과가 남아있는 시간 윈도우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2755&quot; data-start=&quot;2693&quot;&gt;
&lt;td data-end=&quot;2724&quot; data-start=&quot;2693&quot;&gt;&lt;span&gt;&lt;span&gt;$\mathbf{1}_{A_i^{l} = 1}$&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2755&quot; data-start=&quot;2724&quot;&gt;그 시점에 해당 treatment를 받았는지 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2796&quot; data-start=&quot;2756&quot;&gt;
&lt;td data-end=&quot;2773&quot; data-start=&quot;2756&quot;&gt;&lt;span&gt;&lt;span&gt;$p(A_i^l)$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2796&quot; data-start=&quot;2773&quot;&gt;앞서 계산된 treatment 확률&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2860&quot; data-start=&quot;2797&quot;&gt;
&lt;td data-end=&quot;2818&quot; data-start=&quot;2797&quot;&gt;&lt;span&gt;&lt;span&gt;$(w^{l} - i)^2$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-end=&quot;2860&quot; data-start=&quot;2818&quot;&gt;시간이 지날수록 효과가 &lt;b&gt;역제곱법칙&lt;/b&gt;으로 빠르게 감소하는 것 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;4. 최종 Outcome&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이제, 치료가주어진 후의 진짜 결과는 아래 처럼 계산됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;287&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj0Eve/btsNvwKzI4k/1FOgtVLLhTpSg4KKa268gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj0Eve/btsNvwKzI4k/1FOgtVLLhTpSg4KKa268gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj0Eve/btsNvwKzI4k/1FOgtVLLhTpSg4KKa268gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj0Eve%2FbtsNvwKzI4k%2F1FOgtVLLhTpSg4KKa268gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;221&quot; height=&quot;54&quot; data-origin-width=&quot;287&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;즉, Z는 원래 결과, E는 치료효과, Y는 실제 관측된 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;실험은 ICU 체류 시간이 20시간 이상인 1000명에 대해 20~100시간의 시퀀스를 가진 시계열 데이터를 Trn 60%, vld 20%, test 20%로 분할하여 수행했고, 예측 윈도우 $\tau$는 1부터 10까지 변화시키면서 수행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;또한, 각 시점마다 treatment 조합을 바꾸어 8개의 counterfactual를 생성했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;아무튼 이렇게 함으로, 각 환자에 대해 다양한 counterfacutal outcome을 만들어낼 수 있다. 현실 의료 데이터를 기반으로 결과만 시뮬레이션 했기 때문에 semi-synthetic data가 됨.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rtE9S/btsNvEVs5Jv/fLx3r8fEbdwG2lqH6tM4IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rtE9S/btsNvEVs5Jv/fLx3r8fEbdwG2lqH6tM4IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rtE9S/btsNvEVs5Jv/fLx3r8fEbdwG2lqH6tM4IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrtE9S%2FbtsNvEVs5Jv%2FfLx3r8fEbdwG2lqH6tM4IK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1706&quot; height=&quot;480&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjYiJd/btsNuYuz5d3/SjA0x4gP8z59wy5DGSG4gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjYiJd/btsNuYuz5d3/SjA0x4gP8z59wy5DGSG4gk/img.png&quot; data-alt=&quot;EDCT는 encoder decoder 구조의 CT&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjYiJd/btsNuYuz5d3/SjA0x4gP8z59wy5DGSG4gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjYiJd%2FbtsNuYuz5d3%2FSjA0x4gP8z59wy5DGSG4gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;331&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;938&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;EDCT는 encoder decoder 구조의 CT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Paper Review</category>
      <category>causal machine learning</category>
      <category>causal transformer</category>
      <category>인과추론</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/52</guid>
      <comments>https://datascience0321.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 23 Apr 2025 15:01:19 +0900</pubDate>
    </item>
    <item>
      <title>[연구 분야 조사] Causal machine learning for predicting treatment outcomes 1편</title>
      <link>https://datascience0321.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;본 포스팅은&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Feuerriegel, Stefan, et al. &quot;Causal machine learning for predicting treatment outcomes.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;Nature Medicine&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;30.4 (2024): 958-968.를 읽고 정리한 글임을 밝힙니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal ML in medicine은 치료로 인한 환자 결과의 변화와 같은 인과 관계를 예측하는 것을 목표로 한다. causal ML은 RCT(Randomized Controlled Trials)를 통해 얻은 실험 데이터와 임상 등록, 전자 건강 기록 및 기타 RWD(Real-World Data) 소스에서 얻은 관찰 데이터를 모두 사용하여 치료 효과를 추정하고 임상적 증거를 생성하는 데 사용될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal ML의 핵심 강점은 개별화된 치료 효과와 다양한 치료 시나리오에서 잠재적인 환자 결과 (예: 생존, 재입원, 삶의 질)에 대한 개인 맞춤형 예측을 가능하게 한다는 것이다. 이를 통해 치료가 효과적인지 또는 해로운지에 대한 세부적인 이해를 제공하여 환자 치료 의사 결정을 개별 환자 프로필에 맞게 개인화할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;그러나, causal inference는 검증할 수 없는 공식적인 가정에 기초하므로 신중하게 사용해야한다. 따라서 본 논문에서는 casual ML이 traditional ML과 어떤 부분이 다른지 설명하고, 임상에서 사용하기 위한 단계와 필수 구성요소를 논의한다. 또한 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;논문에서는 causal ML의 안정적인 사용과 임상으로의 효과적인 전환을 위한 권장사항을 제공한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Causal ML in medicine&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;의학 분야에서 causal ML은 데이터로부터 개별화된 치료 효과를 추정할 수 있는 여러 기회를 제공하며, 궁극적으로 더 나은 치료 개인화에 기여할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;첫째, 환자 수준에서 causal ML은 환자 공변량(변수)을 포함하는 고차원적이고 비정형화된 데이터를 처리하여 이미지, 텍스트, 시계열 데이터뿐만 아니라 유전 데이터까지 포함하는 다중 모드 데이터 세트로부터 치료 효과를 추정할 수 있다. 예를 들어, 컴퓨터 단층 촬영 스캔 또는 전체 전자의무기록으로부터 치료 효과를 추정할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;둘째, 결과 수준에서 causal ML은 하위 모집단에 대한 치료 효과를 개인별로 추정하거나 개별 환자의 결과를 예측하는 데 도움을 줄 수 있다. 예를 들어, 약물 대사의 개인차가 일부 환자에게는 심각한 부작용을 일으키지만 다른 환자에게는 생명을 구할 수도 있으므로, &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; ML 접근 방식은 이러한 차이를 학습하여 개인 맞춤형 치료 전략을 설계하는 데 도움을 줄 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;셋째, 치료 수준에서 &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; ML은 데이터 기반 방식으로 환자 간 치료 효과의 이질성을 추정하여 어떤 환자 하위 그룹에게 치료가 효과적인지 식별하는 데 효과적일 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgDpMu/btsNcHkOjZg/XNooFzv30MDt2DNgp9Cmwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgDpMu/btsNcHkOjZg/XNooFzv30MDt2DNgp9Cmwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgDpMu/btsNcHkOjZg/XNooFzv30MDt2DNgp9Cmwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgDpMu%2FbtsNcHkOjZg%2FXNooFzv30MDt2DNgp9Cmwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;440&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이러한 이점에도 불구하고, causal ML은 맞춤형 방법이 필요한 뚜렷한 과제를 안고 있다. 게다가 이 방법의 적절한 응용을 하기위해서는 causal ML이 traditional ML과 어떻게 다른지에 대한 이해가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;When should I use causal ML?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;치료 효과를 추정하기 위한 causal ML은 기존의 predictive ML과는 다르다. 직관적으로, 기존 ML은 결과 예측을 목표로 하는 반면, causal ML은 치료로 인한 결과 변화를 정량화하여 치료 효과를 추정할 수 있도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogngv/btsNaHUm7Fh/Gw58kRDumgtO1JIM06aNO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogngv/btsNaHUm7Fh/Gw58kRDumgtO1JIM06aNO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogngv/btsNaHUm7Fh/Gw58kRDumgtO1JIM06aNO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fogngv%2FbtsNaHUm7Fh%2FGw58kRDumgtO1JIM06aNO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1253&quot; height=&quot;563&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;tradition ML의 사용&lt;/b&gt; $\rightarrow$ &quot;어떤 치료 계획이 최고인지 제시하 않고 어떤 환자가 위험한지 이해하기 위해 당뇨병 발병 확률을 예측 하는 것&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;causal ML의 사용 $\rightarrow$ &quot;만약에&quot; 질문에 대한 해답을 찾는 것을 목표로 한다. 예를 들어, causal ML은 환자가 antidiabetic drug (항당뇨병제)를 투여 받을 경우 당뇨병 발병 위험이 어떻게 변화하는지 추정하여 해당 약물 투여 여부에 대한 결정을 내릴 수 있도록 한다. (다양한 치료법에 대한 반응으로 나타나는 잠재적인 환자 결과를 예측할 수 있음 $rightarrow$ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;의료 종사자들이 생존 가능성을 최대화하거나 생존 기간을 최장으로 늘릴 수 있는 치료 계획을 선택하는 데 도움을 줄 수 있음&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;치료의 효과를 밝히는 통계적 접근법 역시 존재해 왔다. casual ML도 이들의 목적과 동일한 목표를 두고 개발되었지만, 추정 전략에 차이가 있다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;기존 통계 방식은 환자의 특징과 결과사이의 연관성에 대해 선형 의존성과 같은 특정 형태를 가정하는 경우가 많다. 하지만 EHR과 같은 고차원 데이터에서는 이러한 가정을 충족하기 어렵고, 모델이 부정확해질 수 있다. causal ML은 이러한 엄격한 가정을 덜 요구하는 모델을 사용하여 복잡한 질병 역학 관계와 인간의 병태생리, 약리학적 특성을 더 잘 포착할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 causal ML은 일반적으로 더 큰 표본 크기를 필요로 한다는 단점이 있다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;The fundamental problem of causal inference&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;인과 추론은 단순히 상관관계를 파악하는 것을 넘어, 특정 원인이 결과에 미치는 영향을 정확히 파악하는 것을 목표로 한다. 하지만 실제 데이터에서는 모든 상황을 완벽하게 관찰할 수 없기 때문에 어려움이 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;근본적인 문제로는 개별 환자에 대한 치료 효과를 정확히 파악하는 것이 불가능 하다는 것이다. 왜냐하면 각 환자는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;실제로 받은 치료에 대한 결과 (factual outcome)만을 관찰할 수 있고, 만약 다른 치료를 받았더라면 나타났을 결과 (counterfactual outcoem)은 관찰할 수 없기&lt;/span&gt; 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;예를 들어, 어떤 환자가 A라는 치료를 받고 회복되었다면, A 치료를 받지 않았을 경우의 결과는 알 수 없다. 반대로 B라는 치료를 받지 않고 회복되지 않았다면 B라는 치료를 받았을 때의 결과를 알 수 없다. 이는 동시에 두 가지 상황을 모두 경험할 수 없기 때문에 발생하는 문제이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;이러한 이유로, 치료 효과를 추정하거나 다른 인과 관계를 파악하기 위해서는 &lt;b&gt;추가적인 방법과 가정&lt;/b&gt;이 필요하다. 관찰되지 않은 반사실적 결과를 추론해야 하므로, 전통적인 예측 모델과는 다른 접근 방식이 요구한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;추가적인 가정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;으로 많이 사용하는 것 $\rightarrow$ &quot;측정되지 않은 교란(&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;confounding&lt;/span&gt;) 요인이 없다&quot;. 즉, 치료 결정과 후속 환자 결과 모두에 영향을 미치는 관찰되지 않은 요인이 없어야 한다는 가정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;만약 측정되지않은 교란 변수 (confounding) 가 존재한다면, 추정된 치료 효과는 confounding bias로 인해 부정확할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #222222; text-align: left;&quot;&gt;잘 이해가 안되서 chatgpt 예시: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;특정&amp;nbsp;질병에&amp;nbsp;대한&amp;nbsp;치료&amp;nbsp;효과를&amp;nbsp;분석할&amp;nbsp;때,&amp;nbsp;환자의&amp;nbsp;'건강에&amp;nbsp;대한&amp;nbsp;동기'라는&amp;nbsp;요인을&amp;nbsp;고려하지&amp;nbsp;못하는&amp;nbsp;경우를&amp;nbsp;생각해볼&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;건강에&amp;nbsp;대한&amp;nbsp;동기가&amp;nbsp;높은&amp;nbsp;환자는&amp;nbsp;적극적으로&amp;nbsp;치료를&amp;nbsp;받고,&amp;nbsp;건강&amp;nbsp;관리에도&amp;nbsp;힘쓰기&amp;nbsp;때문에&amp;nbsp;치료&amp;nbsp;결과가&amp;nbsp;좋을&amp;nbsp;가능성이&amp;nbsp;높습니다.&lt;br /&gt;반면,&amp;nbsp;건강에&amp;nbsp;대한&amp;nbsp;동기가&amp;nbsp;낮은&amp;nbsp;환자는&amp;nbsp;치료를&amp;nbsp;소극적으로&amp;nbsp;받거나&amp;nbsp;건강&amp;nbsp;관리를&amp;nbsp;소홀히&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있어&amp;nbsp;치료&amp;nbsp;결과가&amp;nbsp;좋지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;이때,&amp;nbsp;'건강에&amp;nbsp;대한&amp;nbsp;동기'가&amp;nbsp;측정되지&amp;nbsp;않았다면,&amp;nbsp;치료&amp;nbsp;효과를&amp;nbsp;과대&amp;nbsp;또는&amp;nbsp;과소평가할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;즉,&amp;nbsp;실제로&amp;nbsp;치료가&amp;nbsp;효과가&amp;nbsp;없을&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;건강에&amp;nbsp;대한&amp;nbsp;동기가&amp;nbsp;높은&amp;nbsp;환자들이&amp;nbsp;자발적으로&amp;nbsp;치료를&amp;nbsp;잘&amp;nbsp;받아&amp;nbsp;효과가&amp;nbsp;있는&amp;nbsp;것처럼&amp;nbsp;보일&amp;nbsp;수&amp;nbsp;있습니다.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;span style=&quot;color: #222222; text-align: left;&quot;&gt;$\rightarrow$ &lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: left;&quot;&gt;꽤나 중요한데..?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;또한 치료 효과를 추정하기 위해서는 근본적인 인과 관계를 모델링하여 치료, 결과 및 환자 특성 간의 의존성 구조를 설명해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt; 예를 들어, 의사가 금연을 권고하고 당뇨병 위험을 예측해야 하는 고도 비만 환자를 생각해 보겠다. 기존 머신러닝 문헌에서는 금연 여부에 따른 당뇨병 위험을 예측하기 위해 체질량 지수와 흡연 습관을 모두 사용하도록 제안한다. 그러나 이러한 접근 방식은 금연이 환자의 체질량 지수 또한 변화시킬 수 있다는 점을 간과한다. 이 문제를 해결하려면 인과적 프레임워크에 머신러닝을 포함해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #222222; text-align: left;&quot;&gt;잘 이해가 안되서 ChatGPT한테 질문 : 그러니까, 기존에 알려진 인과 관계를 정리하고, 이를 치료 효과 추정에 반영해야 한다는건가요? 어떻게 하는건가요?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4akB4/btsNcm9mo7l/AkJtGRqqe9ijMH7K7Ec2p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4akB4/btsNcm9mo7l/AkJtGRqqe9ijMH7K7Ec2p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4akB4/btsNcm9mo7l/AkJtGRqqe9ijMH7K7Ec2p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4akB4%2FbtsNcm9mo7l%2FAkJtGRqqe9ijMH7K7Ec2p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1814&quot; height=&quot;728&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #222222; text-align: left;&quot;&gt;&amp;nbsp; $\rightarrow$ 너무 모호하다.... 그래프 ??&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;The causal ML workflow&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buJ7bK/btsNdlWKf8Y/FsKSKiBg3B9BGIvoZcHqtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buJ7bK/btsNdlWKf8Y/FsKSKiBg3B9BGIvoZcHqtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buJ7bK/btsNdlWKf8Y/FsKSKiBg3B9BGIvoZcHqtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuJ7bK%2FbtsNdlWKf8Y%2FFsKSKiBg3B9BGIvoZcHqtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;375&quot; height=&quot;558&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;1. Formulate the causal structure of the problem&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;치료의 효과성을 평가하기 위해 변수에 대한 정보가 필수적이다. 변수에 대한 정보로는 treatment of interest (분석하고자 하는 치료), 관측된 환자의 최종 결과, 환자의 특징(환자와 관련된 변수로, 나이, 성별, 의료 기록)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;예를들어, 암 치료의 경우, 분석하고자 하는 치료 = 화학 요법의 종류, 환자의 최종 결과 = 암 종양의 크기, 환자의 특징 = 이전 병력이 됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;일반적인 설정에서, 변수들은 아래 그림의 causal graph에서 보이는 것처럼 서로에게 영향을 줄 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgllNw/btsNc48W8KO/J3P2G9RdK2xctw2C5GbW30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgllNw/btsNc48W8KO/J3P2G9RdK2xctw2C5GbW30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgllNw/btsNc48W8KO/J3P2G9RdK2xctw2C5GbW30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgllNw%2FbtsNc48W8KO%2FJ3P2G9RdK2xctw2C5GbW30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1154&quot; height=&quot;287&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; 변수들의 경우 관측적으로 얻어진 데이터일 수도 있고, 실험적(무작위대조 시험 RCT) 으로 얻어진 데이터일 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;관측적으로 얻어진 데이터에는 EHR이 포함되고, 이 기록에 있는 treatment는 환자의 특징에 따라 알려지지 않은 절차를 통해 할당되어진다. 예를 들어, 매우 심각한 병이 있는환자는 공격적인 치료를 받는 경향이 있고, 이는 환자의 특징이 treatment groups마다 다르다는 것을 암시한다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 RCT의 경우 치료법이 무작위로 환자에게 할당되므로, 치료 그룹 간의 환자 특성이 유사하다. 이는 치료 효과를 더 객관적으로 평가할 수 있게한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;성향점수: 환자의 공변량(나이, 성별, 병력 등)이 주어졌을 때 특정 치료를 받을 확률. 즉, 환자의 특성을 고려했을 때 어떤 치료를 받을 가능성이 높은지를 나타내는 지표&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;EHR 데이터에서의 성향 점수:&amp;nbsp; 치료 할당이 환자 특성에 따라 결정되기 때문에 성향 점수는 알 수 없다. 따라서, 인과추론을 위해 성향 점수를 추정해야 한다. 성향 점수를 추정하는 것은 환자 모집단의 차이를 보정하는 데 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;무작위대조 시험에서의 성향 점수:&amp;nbsp; 치료가 무작위로 할당되기 때문에 성향 점수는 알려져 있다. 예를 들어, 두 개의 치료 그룹이 있고 각 그룹에 환자가 무작위로 50%씩 배정되었다면, 성향 점수는 50%이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;2. Select the causal quantity of interest&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;(원문 번역)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;치료 반응과 같은 causal quantity은 일반적으로 'potential outcomes framework'에 기반하여 공식화된다. 이 프레임워크는 특정 치료법이 투여되었을 경우 가상적으로 관찰될 환자의 결과인 잠재적 결과를 개념화한다. 그런 다음 실제 적용 분야에 따라 다양한 &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal quantity가&lt;/span&gt; 중요할 수 있다. 여기에는 다양한 치료법 하에서 두 잠재적 결과의 예상되는 차이를 정량화하는 치료 효과가 포함된다. 일반적인 치료 효과 선택은 두 가지 차원(그림 3b)을 따라 느슨하게 그룹화할 수 있다. 효과 이질성의 정도와 치료 유형이다. 특정 치료 효과를 선택함으로써 소위 추정량(estimand)을 정의하는데, 이는 인과 추론 ML 방법으로 예측해야 하는 &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;causal quantity이&lt;/span&gt;다.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;(쉬운 설명)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;[치료 효과는 '가정'을 기반으로 한다.]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;환자에게 어떤 치료를 했을 때 결과가 달라지는지 알고 싶은데, &quot;한 사람에게 두 가지 치료를 동시에 해볼 수는 없다&quot;는 점이 문제이다. 그래서 우리가 쓰는 개념이 바로 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;잠재적 결과 (potential outcomes)&lt;/span&gt; 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;$Y(1)$: A 치료를 받았을 때의 환자 결과 / $Y(0)$: 치료를 받지 않았을 때의 결과&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #222222; text-align: left;&quot;&gt;실제로는 둘 중 하나만 관측 가능하고, 나머지는 가상의 값&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cqm8b/btsNdVcr9ez/LajDtL4LwQspXzn9QWNSsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cqm8b/btsNdVcr9ez/LajDtL4LwQspXzn9QWNSsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cqm8b/btsNdVcr9ez/LajDtL4LwQspXzn9QWNSsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCqm8b%2FbtsNdVcr9ez%2FLajDtL4LwQspXzn9QWNSsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;664&quot; height=&quot;350&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&amp;nbsp;[상황에 따라 알고 싶은 &quot;치료 효과&quot;는 달라질 수 있다.]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;어떤 경우에는 전체 평균이 중요하고, 어떤 경우에는 개별 환자에 대한 맞춤형 예측이 중요하다.&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.6518%; height: 228px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;유형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;Average Treatment Effect (ATE)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;전체 평균 치료 효과&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;모든 환자에게 A 약이 효과가 있는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;Averge Treatment effect on Treated (ATT)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;실제로 받은 사람에게만&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;A 약을 받은 사람들에게 효과가 있었나&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;Conditional ATE (CATE)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;조건부 평균 $\rightarrow$ 개인화&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;고혈압 + 당뇨 환자에게만 A약이 효과가 있는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;Individual Treatment Effect (ITE)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;한 사람의 치료 효과&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;이 환자에게 A 약이 효과가 있을까?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;ATE는 집단 전체의 평균 효과만 보여주기 때문에, 어떤 사람에게는 효과가 없거나, 심지어 해로울 수도 있는데 이런 개인차는 ATE에 숨겨져 있을 수 있다. 그래서 &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;의료&lt;/b&gt;처럼 개별환자의 반응이 중요한 분야에서는 CATE/ITE 같은 세분화된 추정이 훨씬 더 중요&lt;/span&gt;하다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;CATE는 임상 의사결정에 직접적으로 연결된다. &quot;이 치료를 모든 사람에게 할지 말지&quot;가 아니라, &quot;이 환자에게 이 약이 필요할까?&quot; 라는 질문에 답하기 위해서는 CATE 추정이 필수이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;[이렇게 알고 싶은 'causal quantity'를 정하는 걸 estimand 라고 한다.]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Estimand는 '내가 추정하려는 인과적 목표&quot;이다. &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Causal ML은 이 estimand를 추정하는 데 쓰이는 머신러닝 도구&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;[Treatment type]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;여기서는 치료 변수의 유형을 이분형, 연속형으로 구분하고, 각 유형의 특징을 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이분형&amp;nbsp;치료&amp;nbsp;(Binary&amp;nbsp;Treatment)&lt;br /&gt;&lt;br /&gt;- 정의: 치료 변수가 두 가지 범주로만 나뉘는 경우를 의미. 예를 들어, 치료를 할지 안 할지와 같이 '예/아니오'로 답할 수 있는 질문에 해당&lt;br /&gt;- 예시: 특정 약물을 투여할지 여부, 특정 수술을 시행할지 여부 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;연속형&amp;nbsp;치료&amp;nbsp;(Continuous&amp;nbsp;Treatment)&lt;br /&gt;&lt;br /&gt;- 정의: 치료 변수가 특정 범위 내에서 다양한 값을 가질 수 있는 경우를 의미한다. 즉, 치료의 강도, 복용량, 노출 정도 등을 자유롭게 선택할 수 있다.&lt;br /&gt;&lt;br /&gt;- 예시: 방사선 치료에서 방사선량은 암의 종류와 환자의 특성에 따라 다양하게 결정될 수 있다.&lt;br /&gt;&lt;br /&gt;Dose-Response Curve: 연속형 치료에서는 치료 효과를 나타내는 지표로 Dose-Response Curve가 활용됨&lt;br /&gt;&lt;br /&gt;Dose-Response&amp;nbsp;Curve 은 치료 용량(dose)과 그에 따른 효과(response) 사이의 관계를 그래프로 나타낸 것이다. 이를 통해 특정 용량에서 최대 효과를 얻을 수 있는지, 또는 특정 용량 이상에서는 효과가 미미하거나 오히려 부작용이 증가하는지 등을 파악할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBqURn/btsNerBSQQy/NLzFKJPL3kYE4vkErBpGwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBqURn/btsNerBSQQy/NLzFKJPL3kYE4vkErBpGwk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBqURn/btsNerBSQQy/NLzFKJPL3kYE4vkErBpGwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBqURn%2FbtsNerBSQQy%2FNLzFKJPL3kYE4vkErBpGwk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;336&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;[Individual patient outcomes]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;치료 효과를 추정하는것과 환자별 결과 자체를 예측하는 것은 다르다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Treatment effect: &quot;A약을 먹으면 평균적으로 사망률이 5% 줄어듭니다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Potential outcome: &quot;A약을 먹으면 사망률이 15%, 안먹으면 20%입니다.&quot; $\rightarrow$ 의사는 더 구체적인 의사결정이 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Potential outcome은 두 값(factual, counterfactual)을 모두 예측 해야하기 때문에 모델이 더 복잡하다. 실무에서는 ATE나 CATE만으로도 충분하면 그것만 추정한다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;3. Assess the plausibility of assumptions for identifiability (중요)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;여기서는 치료 효과를 믿을 만하게 추정하려면 &lt;b&gt;어떤 가정을 전체로 해야하는가&lt;/b&gt;를 다루고 있다. &quot;관측된 데이터만으로 치료 효과를 추정할 수 있을까?&quot; 대부분의 경우, 그냥 관측 데이터만 가지고는 불가능하다. 왜냐하면, 인과추론은 &quot;내가 하지 않은 선택을 했을 때 결과가 어땠을까?&quot;를 추정하는 것이기 때문이다. 즉, 가상의 결과가 필요하다. 그런데 이건 관측되지 않는다. 그래서... 치료 효과를 신뢰할 수 있게 추정하려면, 몇 가지 중요한 가정 (assumption)이 필요하다.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;반드시 필요한 3가지 가정&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;가정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;뜻&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;왜 필요한가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;SUTVA (일관성 &amp;amp; 비간섭)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;'한 사람의 치료가 다른 사람의 결과에 영향을 주면 안됨'&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;혼선 없이 개별 효과를 구분하려면 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Positivitiy (양의 확률)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;'모든 유형의 사람에게 두 치료 모두 받을 가능성이 있어야 함'&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;두 집단을 비교하려면 둘 다 관측돼야 함&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Unconfoundedness (비교를 방해하는 숨은 요인이 없음)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;'관측된 변수만으로 치료 결정이 설명돼야 함'&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;숨은 요인이 있으면 결과가 왜곡됨&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-end=&quot;834&quot; data-start=&quot;804&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;834&quot; data-start=&quot;804&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;  1. SUTVA &amp;ndash; 일관성과 비간섭&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;899&quot; data-start=&quot;836&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;899&quot; data-start=&quot;838&quot; data-ke-size=&quot;size16&quot;&gt;이 환자가 A약을 먹었을 때의 결과는,&lt;br /&gt;다른 사람이 어떤 치료를 받았는지와는 상관없이 정해진다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 백신 맞은 사람이 주변 사람한테 면역력을 줘버리는 경우(스필오버) &amp;rarr; SUTVA 위반&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 병원마다 약의 질이 다르면 &amp;rarr; SUTVA 위반 가능&lt;/p&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;990&quot; data-ke-size=&quot;size14&quot;&gt;✅ 인과 추론에서는 &quot;한 사람 = 독립적인 실험 단위&quot;로 간주하기 때문에, &lt;b&gt;다른 사람의 상태에 영향을 받지 않아야&lt;/b&gt; 한다.&lt;/p&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;990&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1118&quot; data-start=&quot;1075&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;  2. Positivity &amp;ndash; 치료가 무조건 &quot;가능&quot;해야 함&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;1174&quot; data-start=&quot;1120&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;1174&quot; data-start=&quot;1122&quot; data-ke-size=&quot;size16&quot;&gt;어떤 환자 조건이든, 두 치료를 모두 받은 사람들이 데이터에 있어야 비교가 가능합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 나이가 80세 이상이면 무조건 약을 안 주는 병원이라면?&lt;br /&gt;&amp;rarr; 그 나이대에 대해서는 &lt;b&gt;치료 그룹과 비교 불가&lt;/b&gt;&lt;br /&gt;&amp;rarr; 치료 효과 추정 불가능!&lt;/p&gt;
&lt;p data-end=&quot;1324&quot; data-start=&quot;1267&quot; data-ke-size=&quot;size14&quot;&gt;✅ 그래서 인과 추론에서는 &amp;ldquo;치료도 받고 안 받은 사람 모두 있어야 한다&amp;rdquo;는 조건이 필요&lt;/p&gt;
&lt;p data-end=&quot;1324&quot; data-start=&quot;1267&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1385&quot; data-start=&quot;1331&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;  3. Unconfoundedness &amp;ndash; 숨겨진 변수의 영향이 없거나 잘 통제됨&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;1447&quot; data-start=&quot;1387&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;1447&quot; data-start=&quot;1389&quot; data-ke-size=&quot;size16&quot;&gt;환자가 어떤 치료를 받았는지는 관측된 변수(예: 나이, 병력 등)로 완벽히 설명될 수 있어야 함.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;돈 많은 사람만 좋은 치료를 받았고, &lt;b&gt;소득 정보는 데이터에 없다&lt;/b&gt;&lt;br /&gt;&amp;rarr; 소득이 &lt;b&gt;숨은 confounder&lt;/b&gt;가 되어 치료 효과 추정이 왜곡됨&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;✅ 그래서 &quot;모든 혼란 변수(confounder)를 관측해서 모델에 넣었는가?&quot;가 매우 중요하다.&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;관측 데이터 (EHR)을 사용할 때는 이 가정을 무조건 검토해야 함 (무작위실험에서는 자동으로 만족)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VCggf/btsNb9iUHzl/W726CxOLzs2X1aRpyElJVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VCggf/btsNb9iUHzl/W726CxOLzs2X1aRpyElJVk/img.png&quot; data-alt=&quot;가정이 안 지켜질 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VCggf/btsNb9iUHzl/W726CxOLzs2X1aRpyElJVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVCggf%2FbtsNb9iUHzl%2FW726CxOLzs2X1aRpyElJVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;268&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가정이 안 지켜질 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;4. Choose the fit the causal ML method&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;여기에서는 causal ML을 어떤 방식으로 선택하고 적용할 수 있는가에 대한 내용을 다룬다. causal ML method는 추정하고자 하는 estimand와 데이터 유형에 따라 달라지며, 주로 ATE나 CATE를 추정하기 위한 방법들이 발전해왔다.&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;1. 무엇을 추정할지 결정: ATE, CATE ,....&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;2. 어떤 방법을 쓸지 선택: 메타러너, causal tree, causal forest, 신경망 등&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;- 메타러너: 어떤 ML 모델이든 갖다 쓸 수 있음 (결정 트리, 신경망 등)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qRU9M/btsNb7emwbc/FM4dxF7DbdvAcnFWk1ijcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qRU9M/btsNb7emwbc/FM4dxF7DbdvAcnFWk1ijcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qRU9M/btsNb7emwbc/FM4dxF7DbdvAcnFWk1ijcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqRU9M%2FbtsNb7emwbc%2FFM4dxF7DbdvAcnFWk1ijcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;328&quot; height=&quot;214&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;- model-specific methods (특화된 구조): 기존 ML 모델을 인과 추정에 맞게 수정한 버전&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euFKuY/btsNdpd6uHk/OI2HxPSbIbZ1lNAvq6WYa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euFKuY/btsNdpd6uHk/OI2HxPSbIbZ1lNAvq6WYa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euFKuY/btsNdpd6uHk/OI2HxPSbIbZ1lNAvq6WYa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuFKuY%2FbtsNdpd6uHk%2FOI2HxPSbIbZ1lNAvq6WYa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;486&quot; height=&quot;203&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;3. 치료가 이산적 or 연속적?: 복용량처럼 연속적인 경우는 특별한 방법(dose-response curve) 필요&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;4. 불확실성(uncertainty)도 함께 추정하는가?: 의학 분야에서는 표준편차, 신뢰구간 등도 중요&lt;/p&gt;
&lt;p data-end=&quot;1594&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;- 의료에서는 단순히 &quot;효과 있음&quot;이 아니라, &quot;그 효과가 얼마나 확실한가&quot;도 중요&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m34xu/btsNcZT9atK/qroDl3lAZ25QhDVtjgBty0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m34xu/btsNcZT9atK/qroDl3lAZ25QhDVtjgBty0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m34xu/btsNcZT9atK/qroDl3lAZ25QhDVtjgBty0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm34xu%2FbtsNcZT9atK%2FqroDl3lAZ25QhDVtjgBty0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;165&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;다음 포스팅에서 이어서&lt;/p&gt;</description>
      <category>Research</category>
      <category>causal inference</category>
      <category>causal machine learning</category>
      <category>causal ml</category>
      <category>medicine</category>
      <category>의료</category>
      <category>의료 의사결정</category>
      <category>인과추론 의료</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/51</guid>
      <comments>https://datascience0321.tistory.com/51#entry51comment</comments>
      <pubDate>Tue, 8 Apr 2025 22:10:53 +0900</pubDate>
    </item>
    <item>
      <title>[연구 분야 조사] Causal Machine Learning</title>
      <link>https://datascience0321.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;a href=&quot;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1743993563060&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;The Causal Revolution in Machine Learning: Moving Beyond Correlation to Causation&quot; data-og-description=&quot;Causal Machine Learning (Causal ML) represents a fundamental shift in how we approach artificial intelligence, moving beyond simple pattern&amp;hellip;&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&quot; data-og-url=&quot;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/byQM36/hyYA4CLQyI/PowJW5MHy6fSNLcjOajxb0/img.png?width=1126&amp;amp;height=751&amp;amp;face=0_0_1126_751&quot;&gt;&lt;a href=&quot;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/@karanbhutani477/the-causal-revolution-in-machine-learning-moving-beyond-correlation-to-causation-07c4531c2cc0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/byQM36/hyYA4CLQyI/PowJW5MHy6fSNLcjOajxb0/img.png?width=1126&amp;amp;height=751&amp;amp;face=0_0_1126_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;The Causal Revolution in Machine Learning: Moving Beyond Correlation to Causation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Causal Machine Learning (Causal ML) represents a fundamental shift in how we approach artificial intelligence, moving beyond simple pattern&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;위 블로그를 읽고 정리한 글임을 밝힙니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQB0D0/btsNaL3c0xq/PV5BlSzWOwEYQh9msqV1C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQB0D0/btsNaL3c0xq/PV5BlSzWOwEYQh9msqV1C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQB0D0/btsNaL3c0xq/PV5BlSzWOwEYQh9msqV1C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQB0D0%2FbtsNaL3c0xq%2FPV5BlSzWOwEYQh9msqV1C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;404&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인과적 머신러닝의 이해&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;인과적 머신러닝은 단순히 통계적 패턴을 인식하는 것이 아니라, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;데이터 내에서 인과 관계를 식별&lt;/span&gt;하고 활용하는 데 중점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;전통적인 머신러닝은 상관 관계를 찾고 과거 데이터 패턴을 기반으로 예측하는 데 뛰어나다. 하지만 이러한 상관 관계가 진정한 인과 관계를 나타내는지 본질적으로 구별할 수 없다.(?)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;$\leftarrow$ 상관 관계와 인과 관계는 구별할 수 있지 않나?&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;a href=&quot;https://velog.io/@euisuk-chung/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84-vs-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@euisuk-chung/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84-vs-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1743994175477&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[개념정리] 상관관계 vs 인과관계&quot; data-og-description=&quot;문득 궁금해서 GPT에게 물어보았다.&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@euisuk-chung/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84-vs-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84&quot; data-og-url=&quot;https://velog.io/@euisuk-chung/개념정리-상관관계-vs-인과관계&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/n4ZFH/hyYCd6JXwd/vc0ipzu2FFcvp99uWz40Nk/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068,https://scrap.kakaocdn.net/dn/Akiqz/hyYCk5RDrf/OB0BYqA2kjF0TY8ww7BetK/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068,https://scrap.kakaocdn.net/dn/Ny27G/hyYyTWnXC6/1m2V8jWpBzeoHN1L6UuVZk/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068&quot;&gt;&lt;a href=&quot;https://velog.io/@euisuk-chung/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84-vs-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@euisuk-chung/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84-vs-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/n4ZFH/hyYCd6JXwd/vc0ipzu2FFcvp99uWz40Nk/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068,https://scrap.kakaocdn.net/dn/Akiqz/hyYCk5RDrf/OB0BYqA2kjF0TY8ww7BetK/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068,https://scrap.kakaocdn.net/dn/Ny27G/hyYyTWnXC6/1m2V8jWpBzeoHN1L6UuVZk/img.png?width=2032&amp;amp;height=1068&amp;amp;face=0_0_2032_1068');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[개념정리] 상관관계 vs 인과관계&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;문득 궁금해서 GPT에게 물어보았다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 블로그에 상관관계와 인과관계가 어떻게 구분될 수 있는지 쉽게 설명되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;상관 관계&lt;/span&gt; 예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&quot;공부 시간이 증가할수록 시험 점수가 향상되는 경향이 있다.&quot;&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt;&quot;적절한 수면 시간이 확보될수록 업무 생산성이 증가하는 경향이 있다.&quot;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;원인과 결과가 불명확하다., 양방향 설명 가능, 제 3의 요인의 영향이 있을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;가령 첫 번째 예시의 경우 공부 시간 증가라는 사건 이전에 대치동 학원에 등록했다는 사건이 있을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;인과 관계&lt;/span&gt; 예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&quot;물을 마시면 직접적으로 갈증이 해소된다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&quot;독감 예방 접종을 받으면 독감 감염 위험이 직접적으로 감소한다 .&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;원인과 결과가 명확하고, 단방향 설명 밖에 할 수 없음, 제 3요인의 영향 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이를 머신러닝에 확장하면 답할 수 있는 질문 유형에서 차이를 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;기존 Machine learning은 특정 약물을 복용하는 환자가 더 빨리 회복하는 경향이 있다고 말할 수 있지만, causal machine learning은 약물이 실제로 더 빠른 회복을 유발하는지 또는 다른 요인이 원인인지 확인하려고 한다,&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;이는 단순히 학문적인 것이 아니라, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;데이터 분석에 기반한 의사 결정을 내리는 방식&lt;/span&gt;에 심오한 의미를 갖는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;인과 관계 연구의 선구자인 주데아 펄(Judea Pearl)은 상관 관계에서 인과 관계로의 진행을 서령하는데 도움이 되는 &quot;인과관계 사다리 (ladder of causation)&quot;라는 개념적 프레임워크를 개발했다. 이 사다리에는 세 가지 수준이 있다.연관성(association, 패턴 보기), 개입(intervention, 실행), 반사실적(counterfactuals, 상상하기). 기존 ML은 주로 연관 수준에서 작동하지만, 인과적 ML은 개입과 반사실적 사실을 이해하기 위해 더 높은 수준으로 올라간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;연관성 수준에서는 치약을 사는 쇼핑객이 치실도 살 가능성이 더 높다는 것을 관찰할 수 있다. 개입 수준에서는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;치약 가격을 두 배로 올리면 어떻게 될지 묻는다.&lt;/span&gt; 반사실적 수준에서는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;환자가 다른 치료를 받았다면 어떻게 되었을지 고려한다.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;인과관계 ML은 인과 관계 그래프, 구조적 인과 모델, 반사실적 추론과 같은 기술을 통합하여 이러한 인과 관계를 표현하고 분석한다. 이러한 방법을 사용하면 기계가 인간의 사고방식과 더 유사한 방식으로 원인과 결과에 대해 추론하여 데이터에서 더 미묘하고 실행 가능한 통찰력을 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 기존 머신 러닝의 한계 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;전통적인 머신 러닝은 강력한 예측 능력을 통해 산업을 혁신했지만, 인과관계보다는 상관관계에 의존하기 때문에 잘못된 의사 결정으로 이어질 수 있는 상당한 한계가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;과거 데이터에서 머신러닝 모델은 온도가 더운 날에는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;토양 수분 수치가&lt;span&gt; &lt;/span&gt;&lt;/span&gt;지속적으로 높다는 것을 관찰했다. 이러한 상관 관계에 근거하여, 알고리즘은 더운 날씨에는 관개를 하지 말것을 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 농부들은 일반적으로 더운 날씨에 더 많이 관개하기 때문에 토양 수분 수치가 높다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;머신 러닝 모델은 이러한 인과 관계를 파악하지 않고 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;과거 데이터의 패턴에만 의존한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이러한 한계는 기존 machine learning이 상관 관계와 인과 관계를 구별하지 못하는 데서 비롯된다. 이러한 구별이 없다면 &quot;만약에&quot; 시나리오에 안정적으로 답할 수 없다. (&quot;새로운 치료 전략을 구현한다면?&quot;, &quot;가격 책정 전략을 변경한다면?&quot;)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인과적 ML이 데이터 분석을 어떻게 변화시키는가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal macine learning은 데이터 분석을 예측에서 결과의 원인을 이해하는 방향으로 전환하여 더 나은 의사 결정과 개입 전략을 수립할 수 있도록 해준다. 본질적으로, causal meachine learning은 causal inference method를 통해 연관성과 인과관계를 구별한다. 예를 들어, 의료 분야에서 causal machine learning은 단순히 어떤 환자가 합병증을 앓을지 예측하는 데 그치지 않고, 특정 환자 프로필에 대한 합병증을 예방할 치료법을 식별할 수있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 접근 방식의 핵심 기술은 변인 간의 관계를 명시적으로 매핑하는 구조적 인과 모델이다. (structural causal models, SCMs) 이를 통해 분석가는 다양한 시나리오를 시뮬레이션하고 기존 machine learning model 보다 더 정확하게 '가정' 질문에 답할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Counterfactual Reasoning: A Game-Changer&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Causal machine learning의 또 다른 혁신적인 측면은 반사실적 추론 (counterfactual reasoning)으로, 다른 조건에서 결과가 어떻게 변할지 시뮬레이션 한다. 의료 분야에서 이를 통해 제공자는 비용이 많이 들고 위험한 임상 시험 없이도 다른 치료 프로토콜이 환자 결과에 어떤 영향을 미칠지 추정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;또한 Causal machine learning은 도메인 지식을 통합하여 데이터 요구 사항을 줄인다. 방대한 데이터 세트에만 의존하는 대신, causal model은 변수 간의 관계에 대한 사전 지식을 활용하여 더 적은 데이터로 더 정확한 예측을 이룬다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Causal ML vs. Traditional ML: A Deeper Comparison&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Traditional ML Approach:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- Identifies patterns in historical data to flag customers at risk of leaving.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- Find correlations (e.g., fequent custormer service calls correlate with churn(이탈)).&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- Provides useful predictions but does not explain &lt;i&gt;&lt;b&gt;why&lt;/b&gt;&lt;/i&gt; custormers churn.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Causal ML Approach:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;- Determines which factors cause churn rather than just correlate with it.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;- Distinguishes between symptoms (e.g., customer compaints) and root causes (e.g., product issues).&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;- Helps business design interventions that directly impact retention (e.g., improving customer service or loyalty programs).&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;즉, 머신러닝은 상관 관계를 찾음으로서 예측에 큰 도움을 주지만, 원인을 찾지는 못하는 반면, 인과 ML은 고객 이탈을 유발하는 직접적인 요인을 찾아서, 기업이 고객 유지에 직접적으로 영향을 미치는 개입을 설계하는 데 도움을 준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Real-World Applications of Causal ML at Netflix&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;넷플릭스는 궁금했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&quot;작품 썸네일에 사람 얼굴이 들어가면, 그 작품을 더 많이 클릭하게 만드는 원인이 될까?&quot;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;- 과거 연구들은 &quot;사람 얼굴이 있으면 시선이 더 간다&quot;고 말하지만, 넷플릭스는 이게 진짜 인과 효과인지, 단순한 우연한 상관관계인지 구분하고 싶었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;인과 분석을 위한 5단계 접근&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;1. 성공 지표 정하기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- &quot;작품 클릭 비율 (Take Rate)&quot;을 성공 척도로 정함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 단, 유명한 작품일수록 클릭률이 높을 수 있으니, 인기도는 보정해서 공정하게 비교함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;2. 데이터 수집 &amp;amp; 전처리&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 넷플릭스는 AI 비전 모델을 사용해 썸네일 속에 얼굴이 있는지를 자동으로 분석 (정확도 92%)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 얼굴 외에도 배경 구성, 글자 위치, 폰트 크기, 색상 등 다양한 정보를 추출&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;3. 가설 수립&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- &quot;썸네일에 얼굴이 있으면, 클릭률(engagement)이 올라갈 것이다&quot;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 초기 분석에는 얼굴과 클릭률 사이에 상관 관계가 있었지만, 진짜 원인이 얼굴인지는 아직 확신할 수 없음 $\rightarrow$ 인과 분석 필요&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;4. 인과 분석 전제 조건 검토&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 넷플릭스는 인과 추론이 가능한지 아래 조건들을 점검했다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.8856%; height: 273px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px; text-align: center;&quot;&gt;조건 이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;Consistency&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;얼굴 탐지 모델이 정확하게 얼굴을 잡아내는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Positivity&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;썸네일마다 얼굴이 들어갈 확률이 다양한가? (한쪽에 쏠리지 않는가? $\rightarrow$ 라벨이 불균형 하면 안되는 건가 ?)&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SUTVA&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;한 썸네일의 성과가 다른 썸네일에 영향을 안 미치는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 24px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 24px;&quot;&gt;Conditional Exchangeability&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 24px;&quot;&gt;얼굴이 있는지 여부 외에 숨겨진 영향 요인 (confounder)가 없는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 이 조건이 충족되어야 얼굴의 &quot;인과적 영향&quot;을 제대로 분석할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;5. 인과 ML 모델 적용&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- Double Machine Learning (Double ML)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- Causal Forest&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- Causal Neural Networks&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lykdf/btsNcn7ASzp/vdQgNJOK600Fy8UedaQ5Pk/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lykdf/btsNcn7ASzp/vdQgNJOK600Fy8UedaQ5Pk/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lykdf/btsNcn7ASzp/vdQgNJOK600Fy8UedaQ5Pk/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flykdf%2FbtsNcn7ASzp%2FvdQgNJOK600Fy8UedaQ5Pk%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;615&quot; height=&quot;384&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;6. 결론 및 인사이트&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 썸네일에 사람의 얼굴이 포함되면 해당 콘텐츠의 선택 확률이 유의미하게 증가&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 특히, 콘텐츠의 분위기와 일치하는 표정이 품부한 얼굴이 있는 썸네일이 더 높은 참여를 유도했다. 예를 들어, 코미디 장르는 웃는 얼굴이, 스릴러 장르는 긴장된 표정이 효과적이었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 대부분의 장르에서 얼굴이 포함된 썸네일이 긍정적인 영향을 미쳤지만, 애니메이션이나 다큐멘터리와 같은 특정 장르에서는 그 효과가 상대적으로 약했다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Causal Machine Learning 구현의 과제 및 고려사항&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;1.가정이 틀리면 결론도 틀린다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 인과 모델은 '어떤 것이 원인이다'라고 가정을 세워서 분석하는데, 이 가정이 틀리면 결과도 완전히 틀어짐&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 예: 질병의 원인이라고 가정한 지표가 사실은 증상이었다면? 잘못된 치료가 이루어질 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;2. 데이터가 부족하거나 설계가 미비하면 인과 추론이 어렵다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 인과 추론에는 무작위 실험(RCT)이나 자연 실험 같은 특별한 데이터가 필요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 일반적인 관측 데이터로는 진짜 인과 관계를 알기 어렵고, 검증 불가능한 가정에 많이 의존하게 됨&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;3. 편향된 데이터는 인과 모델도 잘못되게 만듦&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 학습 데이터 자체에 역사적인 편향(특정 집간이 더 적게 치료를 추천받은 기록)이 있다면, 인과 모델도 그 편향을 따라가게 되고, 불평등을 더 강화할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;4. 전문 지식이 꼭 필요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 도메인 지식 + 인과 추론 기법에 대한 전문성 둘 다 필요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;5. 검증이 어렵다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 일반 ML 모델은 accuracy, loss 같은 지표로 성능을 쉽게 평가할 수 있지만, 인과 모델은 &quot;진짜로 원인이 맞는지&quot;를 확인하려면 실제로 개입(실험)을 해봐야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 예: A 기능이 클릭을 늘린다고 해도, &lt;span style=&quot;background-color: #ef5369; color: #ffffff;&quot;&gt;직접 실험하기 전엔 확신할 수 없음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;6. 연산량이 많다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 인과 모델은 특히 변수가 많거나 구조가 복잡하면 연산량이 폭발적으로 증가한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;7. 기존 ML 시스템과 호환이 안 됨&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 많은 조직이 기존에 전통적인 ML 파이프라인을 갖고 있음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp; &amp;nbsp;- 여기에 인과모델을 추가하려면 시스템 구조도 바꾸고, 팀도 변화해야 하므로 기술적/조직적 비용이 크다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;후기&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;인과 추론이 기존 머신 러닝이 할 수 없는 한계를 뛰어 넘을 수 있다는 것에는 큰 매력이 있다. 그럼에도, 데이터를 잘 구축해야한다는 점과, 필요한 전제 조건을 충족해야하고, 인과 머신러닝 기법을 통해 원인을 추론했다 하더라도, 그것을 검증하기 위해서는 자연 실험이나 기존 논문, 임상 지식과 비교를 해야한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;연구의 도구로써 인과 추론이 기여점을 가지려면, 희귀병 같이 잘 알려져 있지 않은 사례에 대해 밝혀내야 하지 않을까? 그렇지 않다면 이미 알려져 있는 원인을 수고스럽게 복잡한 모델링으로 찾는 꼴이다. 찾았다 하더라도 그 가치가 얼마나 있을지는 모르겠다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이러한 고민을 chatgpt에게 물어봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwol7P/btsNaCrSmYS/rp10ErZz3zDY8AfK0d65bK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwol7P/btsNaCrSmYS/rp10ErZz3zDY8AfK0d65bK/img.png&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;973&quot; data-is-animation=&quot;false&quot; width=&quot;433&quot; height=&quot;557&quot; style=&quot;width: 34.7587%; margin-right: 10px;&quot; data-widthpercent=&quot;35.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwol7P/btsNaCrSmYS/rp10ErZz3zDY8AfK0d65bK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwol7P%2FbtsNaCrSmYS%2Frp10ErZz3zDY8AfK0d65bK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;756&quot; height=&quot;973&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf9nsU/btsNbpSMCjS/NiOEK6ecFk84pFdebaEfQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf9nsU/btsNbpSMCjS/NiOEK6ecFk84pFdebaEfQk/img.png&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;525&quot; data-is-animation=&quot;false&quot; width=&quot;341&quot; height=&quot;238&quot; style=&quot;width: 64.0785%;&quot; data-widthpercent=&quot;64.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf9nsU/btsNbpSMCjS/NiOEK6ecFk84pFdebaEfQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf9nsU%2FbtsNbpSMCjS%2FNiOEK6ecFk84pFdebaEfQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;752&quot; height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;즉, 이미 알려진&amp;nbsp; 사실을 검증하고 계량화 하는 데에도 사용될 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 진짜 인과 추론이 가치를 가지려면, 경영 전략 수립 같은 중요한 의사 결정 문제에서 기존에 레퍼런스가 없는 것에 대해 원인을 밝히려 해야한다. 의료 분야에서는 이런 상황이 있나? 인과 추론을 방법론으로 선택할 만한 문제를 정의할 수 있나? 를 고민해보고 연구주제를 정해야 할 것 같다.&lt;/p&gt;</description>
      <category>Research</category>
      <category>causal inference</category>
      <category>causal ml</category>
      <category>causal reasoning</category>
      <category>doubleml</category>
      <category>machine learning</category>
      <category>netflix thumbnail</category>
      <category>상관 관계</category>
      <category>인과 관계</category>
      <category>인과추론</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/50</guid>
      <comments>https://datascience0321.tistory.com/50#entry50comment</comments>
      <pubDate>Mon, 7 Apr 2025 15:36:47 +0900</pubDate>
    </item>
    <item>
      <title>[Review] Recurrent Neural Networks for Multivariate Time Series With Missing Values</title>
      <link>https://datascience0321.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAI6zJ/btsJ5CM82CH/G4pyOXkW8WWKOGd3ZgKUtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAI6zJ/btsJ5CM82CH/G4pyOXkW8WWKOGd3ZgKUtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAI6zJ/btsJ5CM82CH/G4pyOXkW8WWKOGd3ZgKUtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAI6zJ%2FbtsJ5CM82CH%2FG4pyOXkW8WWKOGd3ZgKUtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;336&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번 포스팅에서는 다변량 시계열에서 존재하는 결측치를 처리할 수 있는 모델인 GRU-D에 대해 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt; &lt;b&gt;Irregularly Sampled Time Series&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 연구는 불규칙적으로 기록된 다변량 시계열을 잘 다루기 위한 것으로, 여기서 불규칙적으로 기록되었다는 것은 하나의 변수가 일정한 간격으로 수집되지 않으면서, 변수들 사이에서도 서로 다른 타이밍에 값이 수집되었다는 것을 의미합니다. 이러한 시계열을 irregularly sampled time series라고 합니다. 특히 EHR 데이터 베이스를 분석을 위해 다변량 시계열 형태로 만들면 irregularly sampled time series가 됩니다. 왜냐하면 각 측정 과목마다 측정 여부와 간격이 서로 다르기 때문입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s3OAz/btsJ31nlnWR/ekWnq307wq0626FKmUrmN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s3OAz/btsJ31nlnWR/ekWnq307wq0626FKmUrmN1/img.png&quot; data-alt=&quot;Wang,
Zhen, et al. &amp;quot;Uncovering Multivariate Structural Dependency for Analyzing
Irregularly Sampled Time Series.&amp;quot; Joint European Conference on Machine
Learning and Knowledge Discovery in Databases. Cham: Springer Nature
Switzerland, 2023.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s3OAz/btsJ31nlnWR/ekWnq307wq0626FKmUrmN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs3OAz%2FbtsJ31nlnWR%2FekWnq307wq0626FKmUrmN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;378&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Wang,
Zhen, et al. &quot;Uncovering Multivariate Structural Dependency for Analyzing
Irregularly Sampled Time Series.&quot; Joint European Conference on Machine
Learning and Knowledge Discovery in Databases. Cham: Springer Nature
Switzerland, 2023.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, Vital sign은 bedside에서 자동으로 측정되는 반면, Lab test는 하루에 1번 혹은 2번으로 매우 희소한 빈도로 측정됩니다. 이러한 특성은 시계열 데이터를 만들어 하나의 공통된 시간 축에 정렬할 때 데이터 내에 수 많은 결측치를 존재하게 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oV7O6/btsJ5o2MwIg/i729uU9PwKvJr615t1RSz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oV7O6/btsJ5o2MwIg/i729uU9PwKvJr615t1RSz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oV7O6/btsJ5o2MwIg/i729uU9PwKvJr615t1RSz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoV7O6%2FbtsJ5o2MwIg%2Fi729uU9PwKvJr615t1RSz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;224&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 논문에서는 결측치를 어떤 패턴으로 나타낼 수 있고, 그 패턴이 예측 목표와 상관관계가 높은 특성인 informative missingness를 가질 수 있다고 했습니다. Informative missingness란 데이터 내에 존재하는 missing value 들이 그 자체로 매우 유익한 정보를 가지는 경우로, 샘플을 얼만큼의 간격을 가지고 측정했는지, 어느 시점에 마지막으로 측정했는지에 대한 정보들이 우리가 예측하고자 하는 라벨과 관련이 있을 수 있음을 의미합니다.&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[1]에서는 실험실 측정의 경우, 검사를 요청한 시점이 실제 검사 결과 값 보다 3년 이내 사망률을 더 잘 예측한다는 것을 발견했고, 이것이 informative missingness의 중요성을 뒷받침 합니다. 본 논문에서는 실제로 real world EHR 데이터 베이스인 MIMIC-III 를 이용하여 missing pattern과 예측 라벨 간의 상관 관계를 조사했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbdCi2/btsJ3gevd5F/3978l3g8lKhtd2WNkkIuVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbdCi2/btsJ3gevd5F/3978l3g8lKhtd2WNkkIuVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbdCi2/btsJ3gevd5F/3978l3g8lKhtd2WNkkIuVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbdCi2%2FbtsJ3gevd5F%2F3978l3g8lKhtd2WNkkIuVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;566&quot; height=&quot;275&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;조사 결과 비교적 낮은 missing rate을 가지는 변수들이 예측 라벨과 음 또는 양 방향으로 상관 관계가 높았다고 말하면서, 이를 통해 missing pattern의 중요성을 강조했습니다. 따라서 본 연구에서는 이러한 missing pattern을 고려할 수 있는 RNN인 GRU-D를 제안했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GRU-D&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;본 논문의 저자는 시계열 내 결측치의 두가지 중요한 특성에 집중했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1. 만약 마지막 측정이 오래 전에 시행됬을 경우 missing value는 어떤 기본 값에 가까워지는 경향이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;2. 만약 변수가 한동안 결측인 경우 입력 변수의 영향은 시간이 지남에 따라 사라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;특히 1의 경우는 헬스케어 도메인에서 인체의 항상성 메커니즘과 일치하는 대목이라 언급하고 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이러한 특성들을 모델링하기 위해 decay rate 이라는 것을 정의했습니다. 이때 데이터 내에 missing pattern 들은 사전에 알 수 없고, 복잡하기 때문에 학습 가능하도록 $W$와 $b$를 파라미터로 두었으며, 변수 별로 독립적인 decay rate을 가질 수 있도록 $W$는 diagonal matrix로 제한했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn7akm/btsJ6fYOXZo/AanDDuF94i6kLJQrBVSBc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn7akm/btsJ6fYOXZo/AanDDuF94i6kLJQrBVSBc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn7akm/btsJ6fYOXZo/AanDDuF94i6kLJQrBVSBc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn7akm%2FbtsJ6fYOXZo%2FAanDDuF94i6kLJQrBVSBc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;187&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;GRU-D에서는 입력 값을 구성하기 위해서 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;다음 4가지 요소가&lt;span&gt; &lt;/span&gt;&lt;/span&gt;필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1. $X$: Input Time Series $\mathbb{R}^{T\times D}$, D개 변수, T 개 시퀀스&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;2. $M$:&amp;nbsp; 값이 있으면 1, 아니면 0&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;3. $s$: 값이 얻어진 때의 time stamp&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;4. $\Delta$: 변수 별 측정 간격&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUZ0MA/btsJ6iVrwzq/tM2OSSmBuAJdzs2bUkJjd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUZ0MA/btsJ6iVrwzq/tM2OSSmBuAJdzs2bUkJjd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUZ0MA/btsJ6iVrwzq/tM2OSSmBuAJdzs2bUkJjd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUZ0MA%2FbtsJ6iVrwzq%2FtM2OSSmBuAJdzs2bUkJjd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;249&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;위 그림은 변수가 2개인 결측치를 포함하고 있는 다변량 시계열의 모습입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 시계열에서 입력 값이 missing 일 경우 GRU에 들어가는 입력 값은 다음과 같이 수정됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rseYp/btsJ5nwlm6n/3gYfX2w4AxiyeU0KUEebZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rseYp/btsJ5nwlm6n/3gYfX2w4AxiyeU0KUEebZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rseYp/btsJ5nwlm6n/3gYfX2w4AxiyeU0KUEebZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrseYp%2FbtsJ5nwlm6n%2F3gYfX2w4AxiyeU0KUEebZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;205&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이때 $x_{t'}^d$는 t 시점 d 번째 변수의 마지막 측정 값을 나타내고, 여기에 decay rate을 곱해준 것을 볼 수 있습니다. 게다가, 여기에 해당 변수의 데이터 기반 평균이나 잘 알려진 defualt value를 반영하는 모습을 볼 수 있습니다. 이는 missing value의 1번째 특성을 반영하기 위한 장치로 볼 수 있습니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;GRU의 hidden state에도 decay rate을 넣어주었는데, 이는 입력 변수에 직접적으로 decay rate을 적용하는 것이 모든 missing information을 완전히포착할 수 없을 수 있기 때문이라 언급했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zourK/btsJ5fkS8ow/ccvASCGCqVUKhRD7pYU3B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zourK/btsJ5fkS8ow/ccvASCGCqVUKhRD7pYU3B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zourK/btsJ5fkS8ow/ccvASCGCqVUKhRD7pYU3B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzourK%2FbtsJ5fkS8ow%2FccvASCGCqVUKhRD7pYU3B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;325&quot; height=&quot;142&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;기존 GRU와 GRU-D는 다음과 같이 비교할 수 있으며, 크게 달라진 부분은 입력 값과 hidden state를 decay rate을 반영하여 수정한 것에 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1811&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAuBxC/btsJ4rfkzqQ/IsN8pGuB9HoZY8HTveaw6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAuBxC/btsJ4rfkzqQ/IsN8pGuB9HoZY8HTveaw6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAuBxC/btsJ4rfkzqQ/IsN8pGuB9HoZY8HTveaw6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAuBxC%2FbtsJ4rfkzqQ%2FIsN8pGuB9HoZY8HTveaw6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1811&quot; height=&quot;626&quot; data-origin-width=&quot;1811&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1cP2l/btsJ4NWvOSB/AqQ5XRRLtSzyZ9xxxcuDs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1cP2l/btsJ4NWvOSB/AqQ5XRRLtSzyZ9xxxcuDs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1cP2l/btsJ4NWvOSB/AqQ5XRRLtSzyZ9xxxcuDs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1cP2l%2FbtsJ4NWvOSB%2FAqQ5XRRLtSzyZ9xxxcuDs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;307&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Decay rate의 효과를 살펴보기 위해 decay rate과 hidden state의 값의 분포를 살펴본 실험에서 (a) 대부분의 변수 들이 일정한 decay rate을 가졌으나 일부 변수(pH, RR, Temp, Weight 등) 에서는 시간이 지남에 따라 decay rate이 감소했는데, 이는 이전 관측치에 덜 의존 한다는 것을 의미하며, 과거 정보를 끌어다 쓰는 것 보다, 현재 측정한 정보가 더 중요하다는 것을 알 수 있었습니다. (b) hidden state의 값의 분포는 missing rate이 상대적으로 낮은 변수들이 넓은 분포를 가지고 있었고, missing rate( missing patterns )에 따라 차별적인 학습을 하고 있음을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Experiment&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1707&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zxD2a/btsJ4LkgSPo/iktYEUvyw6VUyOikPuZYyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zxD2a/btsJ4LkgSPo/iktYEUvyw6VUyOikPuZYyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zxD2a/btsJ4LkgSPo/iktYEUvyw6VUyOikPuZYyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzxD2a%2FbtsJ4LkgSPo%2FiktYEUvyw6VUyOikPuZYyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1707&quot; height=&quot;531&quot; data-origin-width=&quot;1707&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 논문에서 수행했던 첫 번째 실험은 missing pattern이 prediction task에 유용했는지 검증하는 것입니다. 저자들은 합성 데이터를 구성하여 같은 missing rate에 대해 서로 다른 4가지 세팅으로 prediction label 과의 correlation에 대해 AUC 점수를 비교했습니다. X 축의 값은 missing rate과 prediction label간의 상관 관계를 나타냅니다.&amp;nbsp;실험 결과에서 missingness를 활용하지 않는 gru-mean, forward의 경우 correlation 이 증가하더라도 성능 변화가 거의 없음이 관찰되었습니다.&amp;nbsp; 반면 missingness 를 활용하는 gru-simple 과 gru-d 의 경우 상관관계가 증가할 수록 성능이 올라가는 양상을 보였는데요,&amp;nbsp; 이는 중요할 수 있는 missing pattern을 고려하는 것이 예측 성능을 올릴 수 있음을 의미합니다. gru-d와 다르게 simple은 correlation이 낮을 경우엔 성능이 낮은 것을 볼 수 있는데, &amp;nbsp;gru-d가 더 robust하며, missing pattern을 더 잘 잡는다는 것을 잘 보여주는 대목입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1845&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qkCI6/btsJ3YLh2Fe/4r53aYCnjOhfv8MQxUoW7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qkCI6/btsJ3YLh2Fe/4r53aYCnjOhfv8MQxUoW7k/img.png&quot; data-alt=&quot;GRU-D와 다른 모델 간의 성능 비교 (multiclass classification)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qkCI6/btsJ3YLh2Fe/4r53aYCnjOhfv8MQxUoW7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqkCI6%2FbtsJ3YLh2Fe%2F4r53aYCnjOhfv8MQxUoW7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1845&quot; height=&quot;608&quot; data-origin-width=&quot;1845&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GRU-D와 다른 모델 간의 성능 비교 (multiclass classification)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;[1] &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Agniel D, et.al. Biases in electronic healthrecord data due to processes within the healthcare system : retrospective observational study&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;[2] &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Che, Zhengping, et al. &quot;Recurrent neural networks for multivariate time series with missing values.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;Scientific reports&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;8.1 (2018): 6085.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;</description>
      <category>Paper Review</category>
      <category>ehr</category>
      <category>gru-d</category>
      <category>irregularly sampled time series</category>
      <category>missing value</category>
      <category>RNN</category>
      <category>Time Series</category>
      <category>결측치</category>
      <category>불규칙적 샘플링</category>
      <category>시계열</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/49</guid>
      <comments>https://datascience0321.tistory.com/49#entry49comment</comments>
      <pubDate>Mon, 14 Oct 2024 15:32:12 +0900</pubDate>
    </item>
    <item>
      <title>NCCL 버전 업그레이드 하다가 발생한 문제</title>
      <link>https://datascience0321.tistory.com/48</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;Multi GPU를 사용하는 학습 코드를 돌리던 와중에 잘 돌아가다가 갑자기 특정 epoch에서 코드가 멈추는 현상이 발생했다.(GPU에도 메모리가 멈췄다. watch -n 0.1 nvidia-smi로 보는데, 계속 멈춰있다) 그러다가 갑자기 혼자 중단하고서 하는말이&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;i&gt; First PG on this rank that detected no heartbeat of its watchdog. [rank1]:[E814 01:43:33.703972694 ProcessGroupNCCL.cpp:1413] [PG 0 (default_pg) Rank 1] Heartbeat monitor timed out! Process will be terminated after dumping debug info. workMetaList_.size()=1 964it [22:51, 1.42s/it][rank1]:[F814 01:53:33.705017387 ProcessGroupNCCL.cpp:1224] [PG 0 (default_pg) Rank 1] [PG 0 (default_pg) Rank 1] ProcessGroupNCCL's watchdog got stuck for 600 seconds without making progress in monitoring enqueued collectives. This typically indicates a NCCL/CUDA API hang blocking the watchdog, and could be triggered by another thread holding the GIL inside a CUDA api, or other deadlock-prone behaviors.If you suspect the watchdog is not actually stuck and a longer timeout would help, you can either increase the timeout (TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC) to a larger value or disable the heartbeat monitor (TORCH_NCCL_ENABLE_MONITORING=0).If either of aforementioned helps, feel free to file an issue to PyTorch about the short timeout or false positive abort; otherwise, please attempt to debug the hang. &lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;한숨이 나왔다. 일단 저기서 추천하는 heartbeat timeout sec나 torch nccl enable monitoring 설정의 경우 문제를 완전히 해결해주지는 않는다. 전자의 경우는 시간을 조금더 늘려(갑자기 멈추는 시간)서 그 시간이 지날때까지 에러가 발생하지 않도록 기다려주는거고, 두 번째는 잘 모르겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;찾아보니까 서버 GPU의 CUDA 버전이랑 NCCL(Nvidia collective communications library) 버전이 안맞아서 생길 수 있는 에러라고 한다.(수정: 결국 이게 원인은 아니었음. 진짜 원인은 맨 마지막에 공개)&amp;nbsp; 내 NCCL 버전은 &amp;nbsp;2.20.5였고, 이 버전과 호환되는 CUDA 버전은 12.4까지였으나, 내 CUDA 버전은 12.5였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bifbeg/btsI43zsrwM/VFrt6fSGqUnhkIpHQ5tO2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bifbeg/btsI43zsrwM/VFrt6fSGqUnhkIpHQ5tO2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bifbeg/btsI43zsrwM/VFrt6fSGqUnhkIpHQ5tO2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbifbeg%2FbtsI43zsrwM%2FVFrt6fSGqUnhkIpHQ5tO2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;597&quot; height=&quot;171&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 NCCL 버전을 CUDA 12.5와 호환되도록 2.22.3으로 업그레이드 하였다. 업그레이드를 하는 방법은 &lt;a href=&quot;https://developer.nvidia.com/nccl&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;에서 하면 된다. 일단 다운로드를 받고, 서버를 재부팅 했는데, 학습 코드 스크립트에 &quot;export NCCL_DEBUG=INFO&quot;를 통해 NCCL 버전을 확인한 결과, 업데이트가 반영되지 않은 것을 확인했다. (ㅠㅠ)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;혼자 삽질을 엄청하다가 정말 간단하게 해결할 수 있다는걸 깨닫고 나 같은 사람이 있을까봐 정리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;일단 나는 최신 버전을 깔면 기존 버전은 알아서 지워진다고 생각했다. 그런데 이 생각이 이 문제의 원인이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;서버 자체가 연구실 사람들이 공통으로 쓰는 서버여서 그런지는 모르겠지만 NCCL 관련 파일이 엄청 많았고, 내가 방금 설치한 NCCL 버전은 어디에 있는지 감조차 잡을 수 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;일단 팩트만 말하자면 NCCL을 새로 다운로드 받았다면 그 경로는 &quot; /usr/lib/x86_64-linux-gnu/ &quot; 여기이다. 일단, 이것이 잘 들어가 있는지&amp;nbsp; 확인을 해야한다.&lt;/p&gt;
&lt;pre id=&quot;code_1723712125973&quot; class=&quot;bash custom-cursor-default-hover&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dpkg -L libnccl2
dpkg -L libnccl-dev&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 코드를 차례로 실행하고 나서, libnccl.so 나 libnccl.so.2가 &quot; /usr/lib/x86_64-linux-gnu/ &quot; 이 경로에 있는지 확인해야 한다. (나의 경우엔 잘 들어가 있었다)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;자 그럼 내 코드는 왜 자꾸 이전 버전의 NCCL을 가져오는걸까? 그래서 내 코드가 어떤 NCCL을 가져오는지 확인했다.&lt;/p&gt;
&lt;pre id=&quot;code_1723712263500&quot; class=&quot;bash custom-cursor-default-hover&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(JE) DAHS2@user:~/Timellm/Replicate_for_P$ LD_DEBUG=libs python run_EHRTimeLLM_v2(&amp;lt;-코드 파일 이름).py 2&amp;gt;&amp;amp;1 | grep libnccl
    125260:     find library=libnccl.so.2 [0]; searching
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cublas/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cuda_cupti/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cuda_nvrtc/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cuda_runtime/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cudnn/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cufft/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/curand/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cusolver/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/cusparse/lib/libnccl.so.2
    125260:       trying file=/home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/nccl/lib/libnccl.so.2
    125260:     calling init: /home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/nccl/lib/libnccl.so.2
    125260:     calling fini: /home/DAHS2/anaconda3/envs/JE/lib/python3.9/site-packages/torch/lib/../../nvidia/nccl/lib/libnccl.so.2 [0]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그 결과 마지막에 calling fini 에 있는 경로에서 가져오는걸 확인할 수 있다. 대체 왜 내 가상환경에 저게 들어가 있었는지는 모르겠지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;저 파일들을 지우거나, 이름을 바꿔주어서 저 경로에서 가져오는걸 방지하면 문제가 해결된다&lt;/p&gt;
&lt;pre id=&quot;code_1723712334277&quot; class=&quot;bash custom-cursor-default-hover&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mv /home/DAHS2/anaconda3/envs/JE/bin/../lib/libnccl.so.2 /home/DAHS2/anaconda3/envs/JE/bin/../lib/libnccl.so.2.backup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;지우는건 쫄려서 이름을 바꾸었따.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이렇게 하고 나서 다시 학습 코드를 돌려보니, 아래와같이NCCL version이 최신 버전으로 나오는걸 확인했다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/27ysu/btsI4v35p48/9KaBtU3GtTV3JzT5WiTyx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/27ysu/btsI4v35p48/9KaBtU3GtTV3JzT5WiTyx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/27ysu/btsI4v35p48/9KaBtU3GtTV3JzT5WiTyx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F27ysu%2FbtsI4v35p48%2F9KaBtU3GtTV3JzT5WiTyx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;89&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;에러의 진짜 원인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;NCCL과 CUDA 버전이 서로 호환 가능하도록 맞춰주었음에도, 특정 epoch에서 학습이 멈추는 현상은 똑같았다. 그래서 학습 과정 Log 기록을 유심히 관찰했고, 원인이 될 수 있는 부분을 발견했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba55iN/btsI7khIObO/wqGwOtfhRITKQ1WbAi8UlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba55iN/btsI7khIObO/wqGwOtfhRITKQ1WbAi8UlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba55iN/btsI7khIObO/wqGwOtfhRITKQ1WbAi8UlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba55iN%2FbtsI7khIObO%2FwqGwOtfhRITKQ1WbAi8UlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;293&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;참고로 로그에서 &quot;you are going to heaven&quot; 은 best validation loss가 현재 epoch의 validation loss보다 클 경우 모델을 저장한다는 의미에서 나타내는 print 문이다. GPU는 2개를 multi로 작동하고 있었다. 일단 epoch 7에서 you are going to heaven이 2번 시간 간격을 두고 등장했고, 모델이 저장됬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러나 epoch 8에서는 early stoping count가 나왔는데, 바로 뒤에 you are going to heaven이 나왔다. 이 둘은 서로 베타적인 현상이고, 같은 시점에 일어나면 안된다.&lt;/p&gt;
&lt;pre id=&quot;code_1724066467804&quot; class=&quot;python custom-cursor-default-hover&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
````````````accelerator.print(&quot;Epoch: {} cost time: {}&quot;.format(epoch + 1, time.time() - epoch_time))
            train_loss = np.average(train_loss)
            vali_loss = vali(args, accelerator, model, vali_data, vali_loader, criterion)
            # test_loss = vali(args, accelerator, model, test_data, test_loader, criterion)
            accelerator.print(
                &quot;Epoch: {0} | Train Loss: {1:.7f} Vali Loss: {2:.7f} &quot;.format(
                    epoch + 1, train_loss, vali_loss))
            
            if vali_loss &amp;lt; best_loss:
                print('you are going to heaven')

                accelerator.wait_for_everyone() 
                if accelerator.is_local_main_process: 
                    model_to_save = accelerator.unwrap_model(model)
                    save_path = os.path.join(checkpoint_dir, f&quot;Best_model_epoch_{epoch + 1}_loss-{vali_loss}.pt&quot;)
                    torch.save({
                        'epoch': epoch + 1,
                        'model_state_dict': model_to_save.state_dict(),
                        'optimizer_state_dict': model_optim.state_dict(),
                        'loss': train_loss,
                    }, save_path)
                    best_loss = vali_loss
                    accelerator.print(f&quot;Model saved to {save_path}&quot;)
            early_stopping(vali_loss, model, path)
            gc.collect()
            torch.cuda.empty_cache()
            if early_stopping.early_stop:
                accelerator.print(&quot;Early stopping&quot;)
                break
                
...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;코드를 잘못짰는가? 그건 또 아니다. validation loss를 계산하고, 그 후에 best loss와 비교하고, 그 다음 if 조건문으로 early stopping인지 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;내 생각엔 multi gpu가 어떻게 동작하는지는 모르겠지만, 두 GPU가 일관되지 않은 연산을 하고 있다고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 vali loss와 best loss를 비교하는 부분을 아예 제거하고, early stopping class에서 그 부분을 넣었다. 사실 뭐가 문제였는지 정확하게 밝히지는 못했다.&lt;/p&gt;
&lt;pre id=&quot;code_1724066632077&quot; class=&quot;python custom-cursor-default-hover&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class EarlyStopping:
    def __init__(self, accelerator=None, patience=7, verbose=False, delta=0, save_mode=True):
        self.accelerator = accelerator
        self.patience = patience
        self.verbose = verbose
        self.counter = 0
        self.best_score = None
        self.early_stop = False
        self.val_loss_min = np.Inf
        self.delta = delta
        self.save_mode = save_mode

    def __call__(self, val_loss, model, path):
        score = -val_loss
        if self.best_score is None:
            self.best_score = score
            if self.save_mode:
                self.save_checkpoint(val_loss, model, path)
        elif score &amp;lt; self.best_score + self.delta:
            self.counter += 1
            if self.accelerator is None:
                print(f'EarlyStopping counter: {self.counter} out of {self.patience}')
            else:
                self.accelerator.print(f'EarlyStopping counter: {self.counter} out of {self.patience}')
            if self.counter &amp;gt;= self.patience:
                self.early_stop = True
        else:
            self.best_score = score
            if self.save_mode:
                self.save_checkpoint(val_loss, model, path)
            self.counter = 0

    def save_checkpoint(self, val_loss, model, path):
        if self.verbose:
            if self.accelerator is not None:
                self.accelerator.print(
                    f'Validation loss decreased ({self.val_loss_min:.6f} --&amp;gt; {val_loss:.6f}).  Saving model ...')
            else:
                print(
                    f'Validation loss decreased ({self.val_loss_min:.6f} --&amp;gt; {val_loss:.6f}).  Saving model ...')

        if self.accelerator is not None:
            model = self.accelerator.unwrap_model(model)
            torch.save(model.state_dict(), path + '/' + 'checkpoint')
        else:
            torch.save(model.state_dict(), path + '/' + 'checkpoint')
        self.val_loss_min = val_loss&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Multi GPU를 활용하여 코드를 작성하는 것이 이렇게 어려울 줄 몰랐다. 아무튼 valid loss와 best loss를 비교하고, 모델을 저장하는 코드를 main code에서 완전히 제거하고, early stop 판단 시에 하도록 코드를 수정했더니, 이젠 에러가 나지 않았다.&amp;nbsp; &amp;nbsp;&lt;/p&gt;</description>
      <category>Coding</category>
      <category>deep learning</category>
      <category>first pg on this rank that detected no heartbeat of its watchdog.</category>
      <category>multi gpu</category>
      <category>nccl 설치</category>
      <category>nccl 업그레이드</category>
      <category>nccl 업데이트</category>
      <category>분산 학습</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/48</guid>
      <comments>https://datascience0321.tistory.com/48#entry48comment</comments>
      <pubDate>Thu, 15 Aug 2024 18:00:41 +0900</pubDate>
    </item>
    <item>
      <title>[Review] Using machine learning for the early prediction of sepsis-associated ARDS in the ICU and identification of clinical phenotypes with differential responses to treatment</title>
      <link>https://datascience0321.tistory.com/47</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1217&quot; data-origin-height=&quot;931&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAVqiT/btsIaHEDQpW/2yZ1nBGB841RFNJUREEbb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAVqiT/btsIaHEDQpW/2yZ1nBGB841RFNJUREEbb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAVqiT/btsIaHEDQpW/2yZ1nBGB841RFNJUREEbb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAVqiT%2FbtsIaHEDQpW%2F2yZ1nBGB841RFNJUREEbb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;406&quot; data-origin-width=&quot;1217&quot; data-origin-height=&quot;931&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Motivation/Background&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;급성 호흡 곤란 증후군(&lt;b&gt;A&lt;/b&gt;cute&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;R&lt;/b&gt;espiratoty&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;D&lt;/b&gt;istress&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;S&lt;/b&gt;yndrom,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ARDS&lt;/b&gt;)는 급격히 진행되는 호흡 부전과 폐 부종, 미만성 폐포 손상, 감염 세포 침윤을 특징으로 하는 중환자실에서 가장흔한 호흡기 증후군이다.&amp;nbsp; 패혈증(Sepsis)는 ARDS의 흔한 위험 요소 중 하나이며, Sepsis associated ards는 매우 높은 사망률을 가지고 있으며 폐 손상으로부터 회복하기 쉽지 않기 때문에 non sepis ards보다 더 심각하다. 진단과 형태(Penotypic) 분류는 호흡기 중증 치료에서 주요 연구 방향으로 남아 있다. 특히, sepsis associated ARDS와 같은 높은 사망률 조건은 반드시 적극적으로 정밀 진단되어져야 한다. sepsis와 관련된 ARDS를 조기에 정확히 예측하는 것 뿐만 아니라 그것의 임상적 subgroup들 을 분류하는 것은 치료의 효율성을 위해 매우 중요하다.&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ru6fP/btsIb4Zv1OQ/XrE6GytGEm0DkIZDxSiK91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ru6fP/btsIb4Zv1OQ/XrE6GytGEm0DkIZDxSiK91/img.png&quot; data-alt=&quot;https ://creativemeddoses.com/topics-list/acute-respiratory-distress-syndrome-ards/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ru6fP/btsIb4Zv1OQ/XrE6GytGEm0DkIZDxSiK91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRu6fP%2FbtsIb4Zv1OQ%2FXrE6GytGEm0DkIZDxSiK91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;469&quot; height=&quot;335&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https ://creativemeddoses.com/topics-list/acute-respiratory-distress-syndrome-ards/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Literature Review&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Medical field에서 AI와 머신러닝을 이용하여 질병의 발병을조기에 예측하는 연구와 clustering을 통해 임상 의사 결정을 돕는 연구들이 많이 이루어져 왔으나, 머신러닝을 통해 sepsis associated ards를 진단하고 예측하는 연구와 그것의 clinical subtype을 연구하는 사례는 없었고, 단지 전체 ARDS 인구에 초점을 맞출 뿐이었다. 하지만 이러한 연구들은 robustness의 부족, 윤리적 우려, 부족한 모델의 해석력과 같은 문제들이 있었다. Seymour et al., 2019는 임상 결과와 반응 패턴들과 관련된 군집 분석을 통해 4가지 sepsis의 임상적 penotypes를 식별하였다. Calfee et al., 2014는 ARDS 환자를 일반적인 고감염성, 저감염성 type으로 분류하였으나 그것의 생리학적 penotypes 정의는 sTNFR-1과 Iinterleukin과같은 일상적으로 이용가능 하지 않거나 bedside에서 빠르게 정량화 할수없는 것들인 class-defining 변수들로써 plasma buomarker를 활용했다. 궁극적으로 이러한 분류 시스템은 임상 적용성에 한계가 있었다. Liu et al. 2021은 ARDS 환자를 3가지 clinical phenotypes로 분리하는 새로운 방법을 제안했다. 그들은&amp;nbsp; ARDS의 임상적 phenotype이 무작위 intervention들에 서로 다르게 반응하는 것과 관련있다고 결론지었다. 하지만 이 연구는 전체 ARDS 모집단에 대해 수행되었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;본 연구에서는 sepsis associated ards 환자들을 위한 조기 진단 모델 구축을 위해 sepsis 환자와 sepsis associated ards 환자들에게서&amp;nbsp; 빠르고, 쉽게 얻을 수있는 임상 지표를 사용하였다. 또한 이러한 환자 군에서 치료에 대한 서로 다른 반응과 임상적 예후가 다를 수 있음을 가정하고, 여러가지 phenotype을 식별하기 위해 subgroup classification(즉, clustering)을 수행했다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Method&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1483&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UqYwH/btsH9rBOAsR/102poIrKyPlsSKM2Yheh5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UqYwH/btsH9rBOAsR/102poIrKyPlsSKM2Yheh5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UqYwH/btsH9rBOAsR/102poIrKyPlsSKM2Yheh5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUqYwH%2FbtsH9rBOAsR%2F102poIrKyPlsSKM2Yheh5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1483&quot; height=&quot;880&quot; data-origin-width=&quot;1483&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Study design&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;본 연구는 eICU database를 이용하여 sepsis associated ARDS 조기 예측 모델을 구축하고, 동시에 이 환자군들을 clustering하여 subgroup을 식별하였다. 이때는, 조기 예측 모델의 주요한 예측 변수들만을 활용하였다.(이유는 제공하지 않았다.) clustering을 통해 phenotype을 식별한 후에는, 그 그룹 사이에 in-hospital mortality, 초기 PEEP level, Lab test result들에 차이가 있는지 분석을 진행하였다. 또한 이러한 결과들은 MIMIC-IV database를 통해 외부 검증이 수행되었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Patient population&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;ICD-9 code를 이용하여 sepsis, ARDS, sepsis associated ARDS 환자를 식별하였다. 그 과정에서 환자가 입원한 중환자실이 MICU(medical ICUs), MSICU(Medical-Surgical ICUs)인 경우만 분석에 포함시켰다. cardiothoracic과 cardio-surgical ICUs는 분석에서 제외했는데, 이는 sepsis의 뚜렷한 양상이 조금 다른 환자들이 포함되어 Bias가 될 수 있기 때문이다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;s&gt;MIMIC-IV에서 식별된 sepsis 환자는 sepsis-3 기준에 따라 진단되었고, eICU에 있는 sepsis 환자는 APACHE IV dataset에 기록된 입원 진단 정보에 따라 식별되었다.&lt;/s&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;1일 미만 체류한 환자 또는 입원 후 1일 이내에 ARDS가 온 환자는 분석에서 제외되었다. 또한 한명의 환자는 병원에 입원하면 중환자실에 입원하고 퇴원하는 과정을 여러번 거칠 수 있는데, 본 연구에서는 단 1번 ICU에 입원한 환자만을 분석에 포함시킴으로써 같은 환자에대해&amp;nbsp; 중복된 분석이 이루어지는 것을&amp;nbsp; 방지했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Predictor variables&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;본 연구에서는 데이터 이용가능성과 임상 지표들의 missing 여부를 평가하여 최종적으로 27가지의 변수를 선정하였다.: age, gender, body mass index(BMI), hypertension, diabetes, cancer, APACHEIV/APSIII, macimum and minimum values of albumin, bicarbonate(HCO3), lactate, bilirubin, creatinine, glucose, platelet, prothrombin time(PT), blood urea nitrogen (BUN), white blood cell count(WBC). 또한 모델의 예측 적시성을 반영하기 위해 입원 후 24시간 이내 lab 변수들의 최대 값, 최소 값을 포함하였다. APACHE-IV index는 MIMIC-IV에는 식별되지 않았기 때문에 APSIII 값이 대신 사용되었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Model training and testing&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;sepsis associated ARDS 진단모델 구축을 위해 eICU 내 환자들을 7:3으로 분할하여 training set, testing set으로 사용하였다. 또한 correlation algorithm(Logistic Regression과 같은)을 fitting한 후 추출된 weight를 사용하여 sepsis associated ARDS를 예측하는데 중요한 인자를 추출하여 clustering에 사용하였다. 저자들은 총 5가지 모델을&amp;nbsp; 사용하였다.: Naive Bayes, Logistic Regression, Gradient Boosted Trees, AdaBoost, Random Forest. Model performance는 AUROC, accuracy, sensicivity, specificity를 활용하였다. 가장 예측력이 좋은 모델을 선별하여 MIMIC-IV에 외부 검증을 하였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;sepsis associated ARDS환자들의 clinical grouping을 구성하는 단계에서, 저자들은 K-means 알고리즘을 위에서 선별한 중요 변수를 활용하여 구현하였다.(클러스터링을 더 잘되게 하려고 한 것인지?-&amp;gt; 노이즈 감소 효과가 있어 클러스터링이 잘 됨, 중요한 변수만 분석에 포함되어 군집 간 차이 해석이 매우 쉬워짐)&amp;nbsp; 최적의 phenotype들이 도출된 후에는, 각각의 clinical한 특징들과, outcome(입원 기간 중 사망률 및 초기 PEEP 설정수준 등)들을 분석하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvVfhm/btsIb4rnmiA/GBNej86LnRcmS7W0V4vmA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvVfhm/btsIb4rnmiA/GBNej86LnRcmS7W0V4vmA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvVfhm/btsIb4rnmiA/GBNej86LnRcmS7W0V4vmA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvVfhm%2FbtsIb4rnmiA%2FGBNej86LnRcmS7W0V4vmA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1486&quot; height=&quot;872&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Result&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Participants&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;총19,249명의 패혈증 환자가 eICU에 포함되었고, 5,497명의 sepsis associated ARDS 환자가 포함되었다. MIMIC-IV의경우 총 11,935명의 패혈증 환자가 포함되었고, 2,699명의 sepsis associated ARDS 환자가 포함되었다. 감염의 원천은 gastrointestinal, cutaneous/soft tissue, pulmonary, gynecologic, renal, urinary tract infection, abdominal infection과 알 수 없는 원인 등이 포함되었다. eICU에 대해서, 전체 패혈증 환자의 사망률과 LOS가 16.84%, 2.3일로 식별되었으며, sepsis associated ARDS 환자의 경우 각각 27.31%, 3.4일로 식별되었다. MIMIC-IV에 대해서 패혈증 환자의 사망률과 LOS는 16.51%, 2.1일, sepsis associated ARDS 환자에 대해서는 각각 22.05%, 2.9일로 식별되었다.(두 데이터 모두 sepsis associated ARDS 환자의 사망률과 LOS가 높고, 길었다.)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Establishment and verification of sepsis associated ARDS diagnostic model&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1494&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lFebm/btsIbvCKXP2/0KKBRhrRo4dohMcN0UXea1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lFebm/btsIbvCKXP2/0KKBRhrRo4dohMcN0UXea1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lFebm/btsIbvCKXP2/0KKBRhrRo4dohMcN0UXea1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlFebm%2FbtsIbvCKXP2%2F0KKBRhrRo4dohMcN0UXea1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1494&quot; height=&quot;340&quot; data-origin-width=&quot;1494&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;eICU 내부 검증 결과 Adaboost의 성능이 대체적으로 우수했기 때문에, 이를 최종 모델로 선정하였으며, MIMIC-IV에 대해 평가한결과 AUC가 0.804로, 매우 높은 수준의 일반화 성능을 보여주었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lXblX/btsH98uYwFc/QkzcWQRUewjGU5GBoDduTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lXblX/btsH98uYwFc/QkzcWQRUewjGU5GBoDduTK/img.png&quot; data-alt=&quot;Adaboost performance applied to MIMIC-IV&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lXblX/btsH98uYwFc/QkzcWQRUewjGU5GBoDduTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlXblX%2FbtsH98uYwFc%2FQkzcWQRUewjGU5GBoDduTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;256&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Adaboost performance applied to MIMIC-IV&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;- Derivation and validation of sepsis associated ARDS phenotypes&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Phenotypes 분석에는 sepsis associated ARDS 환자만이 포함되었다.(eICU: 5,947명, MIMIC-IV: 2,699명) clustering에 관하여 임상에서 빠르게 이용가능한 점, missing value의 빈도 등을 평가하여 주요 변수 8개를 선정하였다. (위에서 미리 선별한 14가지 주요 변수를 기반으로 다시 평가한 듯) 최적의 군집 갯수는 Gap statistics(&lt;a href=&quot;https://stackoverflow.com/questions/15376075/cluster-analysis-in-r-determine-the-optimal-number-of-clusters/15376462#15376462&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://stackoverflow.com/questions/15376075/cluster-analysis-in-r-determine-the-optimal-number-of-clusters/15376462#15376462&lt;/a&gt;, &lt;a href=&quot;https://towardsdatascience.com/k-means-clustering-and-the-gap-statistics-4c5d414acd29&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://towardsdatascience.com/k-means-clustering-and-the-gap-statistics-4c5d414acd29&lt;/a&gt;) 를 통해 3개로 추정되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;983&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cF2dXf/btsIaiqRwST/Abmac0TwiSoe2emjNCwLg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cF2dXf/btsIaiqRwST/Abmac0TwiSoe2emjNCwLg0/img.png&quot; data-alt=&quot;Centroid plot: A(eICU), B(MIMIC-IV)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cF2dXf/btsIaiqRwST/Abmac0TwiSoe2emjNCwLg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcF2dXf%2FbtsIaiqRwST%2FAbmac0TwiSoe2emjNCwLg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;715&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;983&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Centroid plot: A(eICU), B(MIMIC-IV)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTiYHd/btsH96cRUw0/cIb45vcM4vzK8QAvlBvRok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTiYHd/btsH96cRUw0/cIb45vcM4vzK8QAvlBvRok/img.png&quot; data-alt=&quot;Scatter plot: A(eICU), B(MIMIC-IV)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTiYHd/btsH96cRUw0/cIb45vcM4vzK8QAvlBvRok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTiYHd%2FbtsH96cRUw0%2FcIb45vcM4vzK8QAvlBvRok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;278&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Scatter plot: A(eICU), B(MIMIC-IV)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;(그렇게 잘 구분되지는 않는 듯)&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCo9iz/btsIahyH4N3/kAPLtyBRoMQhXHhSAC5i81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCo9iz/btsIahyH4N3/kAPLtyBRoMQhXHhSAC5i81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCo9iz/btsIahyH4N3/kAPLtyBRoMQhXHhSAC5i81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCo9iz%2FbtsIahyH4N3%2FkAPLtyBRoMQhXHhSAC5i81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;1137&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;사용한 변수들과 생성된 군집간 통계 값들이다. Cluster 0은 환자의 나이와 만성 질환 빈도가 Cluster 1과 2 사이에 있었다. 비 외상에 의한 감염이 주된 입원 원인이었으며, 주로 MICU에 입원하였다. Lab 측정값들은 Lactate, glucose, WBC에서 가장 낮은 수준을 보였고, 사망률이 제일 낮은 그룹이었다.(저 위험 군으로 라벨을 부여할 수 있음) Cluster 1은 가장 높은 나이의 환자들이 주로 포함되었고, Cluster 0과 마찬가지로 비 외상에 의한 감염이 주된 입원 원인이며 주로 MICU에 입원하였다. 또한 동반 만성 질환 비율과 위에서 언급한 Lab 측정 값과 사망률이 세 가지 군집 중 가장 높은 수준이었다. (고 위험 군으로 라벨을 부여할 수 있음) Cluster 2는 가장 낮은 동반 만성 질환 비율을 보였고, 특이하게 외상에 의한 감염이 주된 입원 원인이었으며,&amp;nbsp; SICU에 주로 입원을 하였다. 입원 기간은 가장 길었으며 그에 반해 사망률은 매우 낮은 그룹이었다. (위험 성이 0과 1 사이로 라벨을 부여할 수 있음)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wx8L5/btsIcoX6cFp/2mp8KWfNMypIqfs7KECqiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wx8L5/btsIcoX6cFp/2mp8KWfNMypIqfs7KECqiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wx8L5/btsIcoX6cFp/2mp8KWfNMypIqfs7KECqiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwx8L5%2FbtsIcoX6cFp%2F2mp8KWfNMypIqfs7KECqiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;386&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;507&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;논문에서는 군집간 임상적 특징에 대해 인사이트를 이 파트에서는 밝히지 않았기 때문에 Discussion으로 넘어간다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Discussion&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;이 논문의 Discussion에서는 주로 machine learning 모델들 중 왜 Adaboost가 가장 잘 나왔는지, 클러스터링에 활용한 주요 인자 8개는 어떤기준으로 설정하였는지, 임상적으로 정의된 ARDS의 type과 논문에서 도출된 cluster 간의 비교를 통해 공통점을 찾고, 동시에 각 군집에 따라 초기 PEEP 값 설정 방향에 대한 인사이트에 대해 설명하고 있었다. 그 중 가장 후자에 대해서 언급하자면, 우선 폐포 재개폐 가능성(Alveolar recruitability)에 대한 사전 지식이 필요하다. 쉽게 말해 폐포를 가스 교환 상태로 만드는 것으로, mild한 ARDS를 가진 환자들에게서는 폐포 재개폐 가능성이 매우 낮은 반면, moderate or sever ARDS 환자에게서는 매우 높다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;경증 ARDS 환자의 경우, 폐 조직 손상이 비교적 적기 때문에 이미 대부분의 폐포가 열려 있거나, 이미 기능을 유지하고 있다. 따라서, 기계적 환기나 다른 치료 방법을 통해 추가로 열 수 있는 폐포의 양이 적다. 반면에 중등도 및 중증 ARDS 환자에서는 폐 손상이 심하고 많은 폐포가 붕괴되어 있다. 따라서, 기계적 환기, 특히 고양압(PEEP, Positive End-Expiratory Pressure)과 같은 전략을 통해 더 많은 폐포를 다시 열 수 있는 잠재력이 높다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYNPha/btsIaTSE0vM/GFUHQfvkUgJUZvdG3XvZc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYNPha/btsIaTSE0vM/GFUHQfvkUgJUZvdG3XvZc0/img.png&quot; data-alt=&quot;https ://link.springer.com/article/10.1007/s00134-019-05734-7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYNPha/btsIaTSE0vM/GFUHQfvkUgJUZvdG3XvZc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYNPha%2FbtsIaTSE0vM%2FGFUHQfvkUgJUZvdG3XvZc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;418&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https ://link.springer.com/article/10.1007/s00134-019-05734-7&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;본 연구에서 sepsis associated ARDS 환자 subtype 중 cluster 0(저위험군) 환자들은 낮은 폐포 동원력을 가지고 있으며 이는 Calfee et al. 2014에서 제안한 저염증성 phenotype 분류와 일치했다. 이 그룹은 사망률이 매우 낮고, 낮은 PEEP 값을 가지고 있었다. Liu et al 2021의 Type 1 ARDS 분류에 따르면 낮은 PEEP 값을 가지는 환자들은 폐포 팽창을 유지하기에 충분하기 때문에 높은 PEEP를 가지는 환자들 보다 60일 이내 사망률이 낮은 것으로 보고되었다. 반면에, Cluster 1과 2에 해당하는 환자들은 고 염증성 ARDS 환자로, 더 중증도와 사망률이 Cluster 0보다 더 심각한 것으로 분석할 수 있다.&amp;nbsp; Writing group for the Alveolar Recruitment for ARDS Trial ART Investigators Laranjeira et al., 2017 또한 moderate 한 ARDS가 severe한 상태로 변화한 환자들에게서 높은 PEEP를 사용한 것이 산소 공급이 있었다는 것이지만 안타깝게도 사망률이 매우 높았다는 것에 주목했다. 저자들은 이러한 상황이 아마도 폐의 형태학을 잘못 분류했기 때문에 발생했다고(즉, ARDS의 phenotype) 생각했다. 따라서 moderate 한 ARDS와 severe한 ARDS의 더 구체적인 환자 분류 방식이 필요하다고 강조했다. 이에 저자들은 본인들의 Cluster 1과 2가 각각 severe, moderate한 환자로 분류되었다고 주장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;먼저, Cluster 2는 높은 폐의 재확장 가능성을 가지고, 적은 나이를 가진, 그리고 주된 입원 원인이 외상에 의한 감염으로,&amp;nbsp; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Cluster 0에 비해&lt;span&gt; 더&amp;nbsp;&lt;/span&gt;&lt;/span&gt;심각한 환자 군이었다. 따라서 이 환자 군에게는 높은 PEEP를 사용하는 것이 이점이 있다고 한다. 이는 그들의 임상 경험에 따른 것으로, 외상에 의한 감염으로부터 ARDS가 발생한 환자들에게는 더 나은 폐 재확장 능력을 가지고 있기 때문에 이러한 ARDS 환자들에게는 높은 PEEP을 선택하는 것이, 폐포의 주기적인 붕괴로 인한 전단력을 줄이고, 과도한 경폐압으로 인한 인공호흡기 관련 폐 손상을 방지할 수 있다고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Cluster 1의 환자들은 상태가 가장 심각하며, 매우 높은 사망률을 보인다. 이들은 높은 PEEP을 견디기 어려울 수 있으며, 높은 PEEP이 주는 부작용이 이점보다 크다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;따라서, sepsis associated ARDS 환자들을 분류한 결과, Cluster 0과 1에서는 낮은 PEEP이 더 유리하고, Cluster 2에서는 높은 PEEP이 더 좋다. 저자들은 이 연구를 소프트웨어와 기타 임상 도구로 전환하여, sepsis associated ARDS 환자들의 식별 및 군집화를 통합하여 의사들의 진단과 치료를 돕는 것을 고려한다고 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Personal opinions&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;개인적으로 이 연구를 통해 다음 연구주제에서 어떤 문제를 해결해야할지, 어떤 연구 결과가 의료진에게 도움이 될지 생각해보는 계기가 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;1) Missing value: 저자들은 본 연구의 한계로써, 중요할 수 있는&amp;nbsp; Laboratory paremeter들을 상당 부분 제거했다고 한다. 그 이유는 그 측정 값이 50% 이상 결측 값이었기 때문이다. 임상 현장에서 그 변수들을 측정하지 않은 것이 또 다른 정보가 될 수 있겠지만, 이러한 정보의 손실은 데이터 분석가 입장에서는 매우 난감한 문제이다. missing value를 처리할 수 있는 새로운 분석 프레임워크가 필요하다. 2) ethical concerns: 본 연구에서는 correlate model의 weight가 낮다는 이유로 gender를 cluster 분석에서 제외하였다. 이는 분석에 편향을 줄 수 있다. 3) 단순한 예측 과업이 아닌 Phenotyping: Fancy한 알고리즘(딥러닝 기반 등)을 통한 예측으로 좋은 성능을 내는 것은 임상의에게 큰 매력은 없는 것 같다. 대신에 그들이 공감하고, 납득할 수 있는 연구 결과를 도출하는 것이 그들의 구미를 당기게 하는 방법인 것 같다. 본 연구에서 도출한 phenotype들은 그 역할을 할 수 있었다. 어떤 군집에게는 PEEP 값을 낮게 설정하는 것이 좋고, 어떤 군집에게는 높게 설정하는 것이 좋았는데, 이는 모두 임상 지식과 일치했다. 여기에서 더 나아가 데이터를 통해 임상 지식에서는 발견되지 않은 새로운 인사이트를 발견한다면 아주 좋은 기여점이 될 것 같다. (PEEP와 같은 Intervention을 초점으로 Phenotype 별 어떤 치료를 하는 것이 좋은지 등, 일부러 어떤 환자의 기록에서 특정 Intervention을 임의로 바꾸었을&amp;nbsp; 때, 모델이 어떤 판단을 하는지 관찰해보는 것도 매우 흥미로울 것 같다. 예상되지 않은 결과를 모델이 도출했다면, 현재 모델이 어떤 편향을 갖고 있는지 분석할 수 있을 것이다.)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;[1] Bai, Yu, et al. &quot;Using machine learning for the early prediction of sepsis-associated ARDS in the ICU and identification of clinical phenotypes with differential responses to treatment.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;Frontiers in Physiology&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;13 (2022): 1050849.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;[2] 임채만. &quot;심포지움: 급성호흡부전; 급성호흡곤란증후군의 저산소증치료와 폐포모집.&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;대한내과학회 추계학술발표논문집&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;2001.2 (2001): 689-692.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Paper Review</category>
      <category>ARDS</category>
      <category>Clustering</category>
      <category>EICU</category>
      <category>mimic</category>
      <category>Peep</category>
      <category>Respiratory failure</category>
      <category>Sepsis</category>
      <category>의료정보</category>
      <category>패혈증</category>
      <category>패혈증 관련 급성 호흡곤란 증후군</category>
      <author>쩡을이</author>
      <guid isPermaLink="true">https://datascience0321.tistory.com/47</guid>
      <comments>https://datascience0321.tistory.com/47#entry47comment</comments>
      <pubDate>Tue, 25 Jun 2024 00:42:59 +0900</pubDate>
    </item>
  </channel>
</rss>