<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>QAQC 데이터 분석 부트캠프 5회차 박승환 LIT 블로그</title>
    <link>https://kodayi.tistory.com/</link>
    <description>kodayi 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Sat, 27 Jun 2026 21:50:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>kodayi</managingEditor>
    <image>
      <title>QAQC 데이터 분석 부트캠프 5회차 박승환 LIT 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/8581381/attach/ae5f861fc65b40b9ab77e43faa46b68b</url>
      <link>https://kodayi.tistory.com</link>
    </image>
    <item>
      <title>20260602 TIL</title>
      <link>https://kodayi.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 실전 프로젝트를 진행하면서 데이터 분석 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️데이터 인사이트 도출&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;오늘은&amp;nbsp;반도체&amp;nbsp;웨이퍼&amp;nbsp;공정&amp;nbsp;데이터(EV,&amp;nbsp;OES,&amp;nbsp;RFM)를&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;시작은&amp;nbsp;데이터&amp;nbsp;전처리였습니다.&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;센서&amp;nbsp;데이터는&amp;nbsp;각기&amp;nbsp;다른&amp;nbsp;특성을&amp;nbsp;가지고&amp;nbsp;있었는데,&amp;nbsp;EV는&amp;nbsp;웨이퍼당&amp;nbsp;100행,&amp;nbsp;OES는&amp;nbsp;38행,&amp;nbsp;RFM은&amp;nbsp;28행으로&amp;nbsp;행&amp;nbsp;수가&amp;nbsp;달랐습니다.&amp;nbsp;MPCA에&amp;nbsp;3D&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;IQR&amp;nbsp;k=3&amp;nbsp;기준&amp;nbsp;Winsorizing으로&amp;nbsp;처리했는데,&amp;nbsp;시계열&amp;nbsp;연속성을&amp;nbsp;깨지&amp;nbsp;않기&amp;nbsp;위해서입니다.&amp;nbsp;데이터&amp;nbsp;구조상&amp;nbsp;calibration이&amp;nbsp;84%,&amp;nbsp;fault가&amp;nbsp;16%의&amp;nbsp;심한&amp;nbsp;불균형이&amp;nbsp;있었고,&amp;nbsp;fault&amp;nbsp;유형별로&amp;nbsp;웨이퍼가&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;EDA와&amp;nbsp;통계&amp;nbsp;검정&amp;nbsp;단계에서는&amp;nbsp;예상치&amp;nbsp;못한&amp;nbsp;발견이&amp;nbsp;많았습니다.&amp;nbsp;가장&amp;nbsp;인상적이었던&amp;nbsp;것은&amp;nbsp;Cancellation&amp;nbsp;Effect였습니다.&amp;nbsp;Vat&amp;nbsp;Valve라는&amp;nbsp;변수&amp;nbsp;하나를&amp;nbsp;두고,&amp;nbsp;어떤&amp;nbsp;fault는&amp;nbsp;올리고&amp;nbsp;어떤&amp;nbsp;fault는&amp;nbsp;내리는&amp;nbsp;방향으로&amp;nbsp;작용하다&amp;nbsp;보니&amp;nbsp;전체를&amp;nbsp;풀링하면&amp;nbsp;평균&amp;nbsp;차이가&amp;nbsp;0에&amp;nbsp;수렴해&amp;nbsp;p값이&amp;nbsp;0.05를&amp;nbsp;넘어버렸습니다.&amp;nbsp;p가&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;자기상관(lag-1&amp;nbsp;&amp;rho;=0.96)으로&amp;nbsp;인해&amp;nbsp;독립&amp;nbsp;표본이&amp;nbsp;아니어서,&amp;nbsp;행&amp;nbsp;수(12,800)를&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;Kruskal-Wallis로&amp;nbsp;검증했는데,&amp;nbsp;W29&amp;middot;W31&amp;middot;W33의&amp;nbsp;calibration&amp;nbsp;분포가&amp;nbsp;Cohen's&amp;nbsp;d&amp;nbsp;기준으로&amp;nbsp;2에서&amp;nbsp;최대&amp;nbsp;37까지&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;&lt;br /&gt;MPCA를&amp;nbsp;직접&amp;nbsp;구현하면서&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;핵심&amp;nbsp;버그를&amp;nbsp;맞닥뜨렸습니다.&amp;nbsp;첫&amp;nbsp;번째는&amp;nbsp;SVD에서&amp;nbsp;Vt&amp;nbsp;대신&amp;nbsp;U를&amp;nbsp;써야&amp;nbsp;한다는&amp;nbsp;것이었습니다.&amp;nbsp;mode-n&amp;nbsp;unfolding&amp;nbsp;후&amp;nbsp;SVD를&amp;nbsp;하면&amp;nbsp;M&amp;nbsp;=&amp;nbsp;U&amp;middot;S&amp;middot;Vt가&amp;nbsp;나오는데,&amp;nbsp;시간&amp;nbsp;축의&amp;nbsp;투영&amp;nbsp;기저는&amp;nbsp;right&amp;nbsp;singular&amp;nbsp;vectors(Vt)가&amp;nbsp;아니라&amp;nbsp;left&amp;nbsp;singular&amp;nbsp;vectors(U)입니다.&amp;nbsp;두&amp;nbsp;번째는&amp;nbsp;역투영&amp;nbsp;방향의&amp;nbsp;실수였는데,&amp;nbsp;순방향&amp;nbsp;투영에서&amp;nbsp;moved&amp;nbsp;@&amp;nbsp;U.T를&amp;nbsp;쓴다면&amp;nbsp;재구성을&amp;nbsp;위한&amp;nbsp;역투영은&amp;nbsp;moved&amp;nbsp;@&amp;nbsp;U여야&amp;nbsp;합니다.&amp;nbsp;이&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;차이를&amp;nbsp;직접&amp;nbsp;shape&amp;nbsp;오류로&amp;nbsp;마주하고&amp;nbsp;수학적으로&amp;nbsp;추적해서&amp;nbsp;수정한&amp;nbsp;과정이&amp;nbsp;MPCA&amp;nbsp;알고리즘&amp;nbsp;자체를&amp;nbsp;깊게&amp;nbsp;이해하는&amp;nbsp;계기가&amp;nbsp;되었습니다. &lt;br /&gt;&lt;br /&gt;모델&amp;nbsp;비교에서는&amp;nbsp;PCA,&amp;nbsp;MPCA,&amp;nbsp;TLD(Tucker&amp;nbsp;분해),&amp;nbsp;PARAFAC&amp;nbsp;네&amp;nbsp;가지를&amp;nbsp;DS1~DS3&amp;nbsp;데이터셋&amp;nbsp;위에서&amp;nbsp;전역&amp;nbsp;모델&amp;nbsp;1개와&amp;nbsp;로컬&amp;nbsp;모델&amp;nbsp;3개(W29/W31/W33)&amp;nbsp;구조로&amp;nbsp;학습했습니다.&amp;nbsp;결과는&amp;nbsp;예측대로&amp;nbsp;로컬이&amp;nbsp;전역을&amp;nbsp;크게&amp;nbsp;앞섰습니다.&amp;nbsp;PCA&amp;nbsp;기준&amp;nbsp;전역&amp;nbsp;F1이&amp;nbsp;0.710이었는데&amp;nbsp;로컬&amp;nbsp;평균은&amp;nbsp;0.963으로&amp;nbsp;약&amp;nbsp;19%p&amp;nbsp;향상이었습니다.&amp;nbsp;알고리즘&amp;nbsp;간&amp;nbsp;특성도&amp;nbsp;뚜렷하게&amp;nbsp;갈렸는데,&amp;nbsp;PCA는&amp;nbsp;소표본에서&amp;nbsp;가장&amp;nbsp;안정적이었고,&amp;nbsp;MPCA는&amp;nbsp;Precision이&amp;nbsp;1.0으로&amp;nbsp;오탐이&amp;nbsp;없었지만&amp;nbsp;Recall이&amp;nbsp;낮았으며,&amp;nbsp;TLD는&amp;nbsp;전역&amp;nbsp;모델에서&amp;nbsp;FP가&amp;nbsp;63~69개로&amp;nbsp;폭증했고,&amp;nbsp;PARAFAC은&amp;nbsp;W31에서&amp;nbsp;F1=0으로&amp;nbsp;완전히&amp;nbsp;실패했습니다.&amp;nbsp;임계값&amp;nbsp;선택이&amp;nbsp;단순한&amp;nbsp;하이퍼파라미터&amp;nbsp;조정이&amp;nbsp;아니라&amp;nbsp;&quot;오탐&amp;nbsp;비용&amp;nbsp;대&amp;nbsp;미탐&amp;nbsp;비용&quot;의&amp;nbsp;비율이라는&amp;nbsp;도메인&amp;nbsp;판단임도&amp;nbsp;명확해졌습니다. &lt;br /&gt;&lt;br /&gt;마지막으로&amp;nbsp;미탐지&amp;nbsp;fault&amp;nbsp;원인&amp;nbsp;분석이&amp;nbsp;오늘의&amp;nbsp;가장&amp;nbsp;실무적인&amp;nbsp;내용이었습니다.&amp;nbsp;BCl3&amp;nbsp;-5,&amp;nbsp;He&amp;nbsp;Chuck,&amp;nbsp;TCP&amp;nbsp;+10이&amp;nbsp;대부분의&amp;nbsp;모델에서&amp;nbsp;탐지되지&amp;nbsp;않았는데,&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;원인이&amp;nbsp;모두&amp;nbsp;달랐습니다.&amp;nbsp;BCl3&amp;nbsp;-5는&amp;nbsp;RF&amp;nbsp;매칭&amp;nbsp;회로의&amp;nbsp;비대칭&amp;nbsp;반응&amp;nbsp;때문이었습니다.&amp;nbsp;같은&amp;nbsp;BCl3&amp;nbsp;계열인&amp;nbsp;+5는&amp;nbsp;z=14.2&amp;sigma;로&amp;nbsp;탐지되는데&amp;nbsp;-5는&amp;nbsp;z=1.3&amp;sigma;에&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;He&amp;nbsp;Chuck은&amp;nbsp;물리적&amp;nbsp;경로가&amp;nbsp;너무&amp;nbsp;길었습니다.&amp;nbsp;&quot;He&amp;nbsp;압력&amp;nbsp;이상&amp;nbsp;&amp;rarr;&amp;nbsp;냉각&amp;nbsp;불량&amp;nbsp;&amp;rarr;&amp;nbsp;온도&amp;nbsp;상승&amp;nbsp;&amp;rarr;&amp;nbsp;플라즈마&amp;nbsp;화학&amp;nbsp;변화&amp;nbsp;&amp;rarr;&amp;nbsp;RF&amp;nbsp;임피던스&amp;nbsp;변화&quot;라는&amp;nbsp;4단계를&amp;nbsp;거치면서&amp;nbsp;신호가&amp;nbsp;감쇠했습니다.&amp;nbsp;TCP&amp;nbsp;+10은&amp;nbsp;비선형&amp;nbsp;임계&amp;nbsp;효과였는데,&amp;nbsp;TCP&amp;nbsp;+30이&amp;nbsp;z=66.6&amp;sigma;인데&amp;nbsp;+10은&amp;nbsp;z=1.5&amp;sigma;로&amp;nbsp;파워&amp;nbsp;3배&amp;nbsp;차이에&amp;nbsp;신호가&amp;nbsp;45배&amp;nbsp;차이가&amp;nbsp;났습니다.&amp;nbsp;RF&amp;nbsp;매칭&amp;nbsp;회로가&amp;nbsp;&amp;plusmn;10W&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;OES&amp;nbsp;센서에서는&amp;nbsp;10~25%&amp;nbsp;수준의&amp;nbsp;명확한&amp;nbsp;신호가&amp;nbsp;확인됐습니다.&amp;nbsp;RFM&amp;nbsp;단독&amp;nbsp;모델의&amp;nbsp;구조적&amp;nbsp;한계이고,&amp;nbsp;OES를&amp;nbsp;통합한&amp;nbsp;DS5나&amp;nbsp;DS6&amp;nbsp;모델이&amp;nbsp;필요한&amp;nbsp;이유가&amp;nbsp;데이터로&amp;nbsp;증명된&amp;nbsp;셈입니다. &lt;br /&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;것으로는&amp;nbsp;부족하다는&amp;nbsp;점입니다.&amp;nbsp;왜&amp;nbsp;이&amp;nbsp;센서가&amp;nbsp;이&amp;nbsp;fault에&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;rarr;&amp;nbsp;통계&amp;nbsp;검정&amp;nbsp;&amp;rarr;&amp;nbsp;모델&amp;nbsp;설계&amp;nbsp;&amp;rarr;&amp;nbsp;구현&amp;nbsp;&amp;rarr;&amp;nbsp;성능&amp;nbsp;측정&amp;nbsp;&amp;rarr;&amp;nbsp;원인&amp;nbsp;진단이&amp;nbsp;하나의&amp;nbsp;논리적&amp;nbsp;흐름으로&amp;nbsp;연결된&amp;nbsp;하루였습니다.&lt;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/50</guid>
      <comments>https://kodayi.tistory.com/50#entry50comment</comments>
      <pubDate>Tue, 2 Jun 2026 20:00:18 +0900</pubDate>
    </item>
    <item>
      <title>20260601 TIL</title>
      <link>https://kodayi.tistory.com/49</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 실전 프로젝트를 진행하면서 데이터 분석 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️데이터 인사이트 도출&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반도체 제조 공정에서 발생하는 이상(Fault)을 식별하고 이해하기 위해 &lt;b&gt;EV(Etch Chamber Vision), RFM(Radio Frequency Match), OES(Optical Emission Spectroscopy)&lt;/b&gt; 세 가지 센서 데이터를 활용하여 분석을 수행하였다. 주요 분석 과정과 결과는 다음과 같다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 데이터 로드 및 기초 탐색&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV, RFM, OES 데이터셋을 불러온 후 데이터 구조와 특성을 확인하였다.&lt;/li&gt;
&lt;li&gt;각 데이터셋의 변수 구성과 기본 통계 정보를 검토하여 분석 방향을 설정하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. EV 데이터 분석 (웨이퍼별 및 정상/이상 비교)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웨이퍼별 정상(Calibration) 데이터 분석&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상 상태(calibration)의 EV 센서 데이터를 웨이퍼 29, 31, 33으로 구분하여 분석하였다.&lt;/li&gt;
&lt;li&gt;히스토그램과 시계열 그래프를 통해 주요 센서 변수들의 분포와 안정성을 확인하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웨이퍼 간 통계적 차이 검정&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Kruskal-Wallis H 검정&lt;/b&gt;을 수행한 결과, EV 변수 16개가 웨이퍼 29, 31, 33 사이에서 통계적으로 유의한 차이를 보였다.&lt;/li&gt;
&lt;li&gt;박스플롯(Box Plot)을 통해 각 웨이퍼가 서로 다른 공정 특성을 가진다는 점을 시각적으로 확인하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정상(Calibration)과 이상(Fault) 상태 비교&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기술통계량과 히스토그램을 비교한 결과, 이상 상태에서는 여러 EV 변수들이 정상 상태와 다른 분포를 보였다.&lt;/li&gt;
&lt;li&gt;예를 들어 &lt;b&gt;RF Btm Power, Cl₂ Flow, TCP Load&lt;/b&gt; 등의 평균값, 표준편차, 값의 범위가 변화하였다.&lt;/li&gt;
&lt;li&gt;시계열 분석을 통해 이상 발생 시 특정 변수들이 비정상적인 패턴을 보이는 것을 확인하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Isolation Forest를 활용한 EV 데이터 이상 탐지&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웨이퍼 간 유의미한 차이를 보인 EV 변수들을 선택하고 정규화한 후 &lt;b&gt;Isolation Forest&lt;/b&gt; 모델을 학습하였다.&lt;/li&gt;
&lt;li&gt;이상 점수(Anomaly Score) 분포를 확인한 결과 정상(calibration) 데이터와 이상(fault) 데이터가 비교적 잘 구분되었다.&lt;/li&gt;
&lt;li&gt;이는 EV 데이터만으로도 일정 수준의 이상 탐지가 가능함을 의미한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. OES 데이터 분석&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;히트맵 시각화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상 상태의 OES 데이터를 시간에 따른 파장별 강도로 표현한 히트맵을 생성하였다.&lt;/li&gt;
&lt;li&gt;이를 통해 플라즈마 상태 변화에 따른 스펙트럼 패턴을 확인할 수 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;평균 스펙트럼 비교&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상 상태와 이상 상태의 평균 OES 스펙트럼을 비교하였다.&lt;/li&gt;
&lt;li&gt;특정 파장에서 강도 변화가 나타났으며, 이는 공정 이상 시 플라즈마 내 화학종(Chemical Species)의 변화 가능성을 시사한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웨이퍼별 스펙트럼 비교&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 웨이퍼별 평균 스펙트럼을 비교한 결과, 웨이퍼마다 고유한 스펙트럼 특성과 이상 패턴이 존재하는 것으로 나타났다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 다중 센서 상관관계 분석&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV, RFM, OES 변수들을 통합하여 상관관계 히트맵을 생성하였다.&lt;/li&gt;
&lt;li&gt;센서 간 상호작용을 분석함으로써 한 센서의 변화가 다른 센서와 어떤 관계를 가지는지 확인하였다.&lt;/li&gt;
&lt;li&gt;이를 통해 공정 내 복합적인 원인-결과 관계를 이해할 수 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. PCA를 이용한 차원 축소 및 이상 심층 분석&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;통합 PCA 수행&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV, RFM, OES의 주요 수치형 변수들을 통합하여 &lt;b&gt;PCA(주성분분석)&lt;/b&gt; 를 수행하였다.&lt;/li&gt;
&lt;li&gt;첫 번째와 두 번째 주성분(PC1, PC2)을 이용한 2차원 시각화 결과 정상 데이터와 이상 데이터 간 일부 분리가 관찰되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이상 데이터 심층 분석&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PCA 공간에서 정상 데이터 중심(Centroid)으로부터 가장 멀리 떨어진 상위 5개의 이상 데이터를 선정하였다.&lt;/li&gt;
&lt;li&gt;이들의 원본 변수값을 정상 데이터 평균과 비교하여 어떤 변수들이 이상 발생에 가장 크게 기여했는지 분석하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 지도학습 기반 이상 분류 (MPCA Score 활용)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터 준비&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV, RFM, OES 데이터를 통합한 MPCA 점수를 입력 변수로 사용하였다.&lt;/li&gt;
&lt;li&gt;정상(calibration)은 0, 이상(fault)은 1로 인코딩하여 타깃 변수로 설정하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;모델 학습 및 평가&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Random Forest Classifier&lt;/b&gt;를 학습하였다.&lt;/li&gt;
&lt;li&gt;정확도(Accuracy)는 약 &lt;b&gt;0.91&lt;/b&gt;로 높게 나타났지만,&lt;/li&gt;
&lt;li&gt;이상(Fault) 클래스의 재현율(Recall)은 &lt;b&gt;0.48&lt;/b&gt;에 불과하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 실제 이상을 놓치는 경우(False Negative)가 많다는 의미이며, 모델 개선이 필요함을 보여준다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개선 방안&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SMOTE를 활용한 클래스 불균형 해소&lt;/li&gt;
&lt;li&gt;특징 공학(Feature Engineering)&lt;/li&gt;
&lt;li&gt;특징 선택(Feature Selection)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등의 방법이 제안되었다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;8. 이상치 처리 (RFM, EV, OES)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RFM, EV, OES 데이터의 이상치를 &lt;b&gt;IQR 방식(5%~95% 구간 기준)&lt;/b&gt; 으로 탐지하고 상한&amp;middot;하한값으로 제한(Capping)하였다.&lt;/li&gt;
&lt;li&gt;이를 통해 극단값이 분석 결과와 모델 성능에 과도한 영향을 주는 문제를 완화하였다.&lt;/li&gt;
&lt;li&gt;처리 전후의 통계량을 비교하여 데이터 정제 효과를 확인하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;9. 웨이퍼별 데이터 분리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정제된 EV, RFM, OES 데이터를 웨이퍼 29, 31, 33 기준으로 분리하였다.&lt;/li&gt;
&lt;li&gt;이후 각 웨이퍼에 대해 독립적인 분석을 수행할 수 있도록 준비하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;10. 다중 블록 MPCA(Multi-block PCA)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터 정렬&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV, RFM, OES 데이터의 행 수를 일치시켜 센서별 블록(Block) 형태로 구성하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;블록별 PCA 수행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 센서 블록에 대해 개별 PCA를 수행하였다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EV: 14개 주성분&lt;/li&gt;
&lt;li&gt;RFM: 5개 주성분&lt;/li&gt;
&lt;li&gt;OES: 9개 주성분&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 선택하면 전체 분산의 약 95%를 설명할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 로딩(Loading) 분석을 통해 각 주성분에 크게 기여하는 원본 변수를 파악하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MPCA 점수 생성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 블록의 주성분 점수를 결합하여 통합 MPCA Score를 생성하였다.&lt;/li&gt;
&lt;li&gt;이는 공정 상태를 종합적으로 나타내는 저차원 특징 벡터 역할을 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;11. MPCA 기반 이상 탐지&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비지도학습 (Isolation Forest)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MPCA Score를 입력으로 Isolation Forest를 학습하였다.&lt;/li&gt;
&lt;li&gt;그러나 정상 데이터와 이상 데이터의 이상 점수 분포가 상당 부분 겹쳤다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;F1-Score: 0.0520&lt;/li&gt;
&lt;li&gt;Recall: 0.0537&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;으로 매우 낮은 성능을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, MPCA Score만으로는 비지도 방식의 이상 탐지가 효과적이지 않았다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웨이퍼별 Isolation Forest&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웨이퍼별로 모델을 개별 학습한 결과:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Wafer F1-Score Recall&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;29&lt;/td&gt;
&lt;td&gt;0.1578&lt;/td&gt;
&lt;td&gt;0.1490&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;0.1934&lt;/td&gt;
&lt;td&gt;0.1963&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;0.1604&lt;/td&gt;
&lt;td&gt;0.1875&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 모델보다는 개선되었지만 여전히 실무 적용 수준에는 미치지 못하는 성능을 보였다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;최종 결론&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 연구는 EV, RFM, OES 센서 데이터를 활용하여 반도체 식각 공정의 정상 상태와 이상 상태를 다각도로 분석하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분석 결과,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웨이퍼별 공정 특성이 명확하게 존재함을 확인하였고,&lt;/li&gt;
&lt;li&gt;EV 및 OES 데이터에서 이상 상태를 구분할 수 있는 주요 변수와 패턴을 발견하였다.&lt;/li&gt;
&lt;li&gt;PCA와 MPCA를 통해 고차원 데이터를 효과적으로 축소하고 이상 원인을 해석할 수 있었다.&lt;/li&gt;
&lt;li&gt;비지도학습 기반 Isolation Forest는 이상 탐지 성능이 낮게 나타났다.&lt;/li&gt;
&lt;li&gt;반면, 특징 공학이 적용된 &lt;b&gt;Random Forest 지도학습 모델이 가장 우수한 성능(F1-Score 0.2959, Recall 0.2994)&lt;/b&gt; 을 보였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 향후에는 &lt;b&gt;웨이퍼별 맞춤형 모델 구축, 클래스 불균형 개선(SMOTE), 추가적인 특징 공학 및 센서 융합 기법 적용&lt;/b&gt;을 통해 이상 탐지 성능을 향상시킬 필요가 있다.&lt;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/49</guid>
      <comments>https://kodayi.tistory.com/49#entry49comment</comments>
      <pubDate>Mon, 1 Jun 2026 20:18:35 +0900</pubDate>
    </item>
    <item>
      <title>20260529 TIL</title>
      <link>https://kodayi.tistory.com/48</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️인사이트 도출&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;반도체 공정 데이터를 활용하여 공정 이상(Fault)을 탐지하고 분석하는 과정을 다각도로 수행했다. 주요 분석 단계와 결과는 다음과 같다. &lt;br /&gt;&lt;br /&gt;데이터&amp;nbsp;로딩&amp;nbsp;및&amp;nbsp;초기&amp;nbsp;탐색:&amp;nbsp;EV,&amp;nbsp;RFM,&amp;nbsp;OES&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;유형의&amp;nbsp;공정&amp;nbsp;데이터를&amp;nbsp;불러와&amp;nbsp;head()&amp;nbsp;함수를&amp;nbsp;통해&amp;nbsp;각&amp;nbsp;데이터셋의&amp;nbsp;기본&amp;nbsp;구조를&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;EV 데이터셋 정상 데이터 분석 (Wafer별): &lt;br /&gt;fault_name이&amp;nbsp;'calibration'인&amp;nbsp;정상&amp;nbsp;데이터를&amp;nbsp;웨이퍼별(29,&amp;nbsp;31,&amp;nbsp;33)로&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;/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;Kruskal-Wallis&amp;nbsp;H-검정:&amp;nbsp;각&amp;nbsp;웨이퍼&amp;nbsp;간&amp;nbsp;수치형&amp;nbsp;변수의&amp;nbsp;분포&amp;nbsp;차이를&amp;nbsp;통계적으로&amp;nbsp;검정하여&amp;nbsp;16개의&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;/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;Box&amp;nbsp;Plot&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;EV&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;/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;EV&amp;nbsp;데이터셋&amp;nbsp;정상&amp;nbsp;vs&amp;nbsp;이상&amp;nbsp;데이터&amp;nbsp;비교: &lt;br /&gt;calibration&amp;nbsp;데이터와&amp;nbsp;fault&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;/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;EV&amp;nbsp;변수(RF&amp;nbsp;Btm&amp;nbsp;Pwr,&amp;nbsp;Cl2&amp;nbsp;Flow,&amp;nbsp;TCP&amp;nbsp;Load)에&amp;nbsp;대해&amp;nbsp;정상&amp;nbsp;및&amp;nbsp;이상&amp;nbsp;데이터의&amp;nbsp;히스토그램을&amp;nbsp;비교하여&amp;nbsp;시각적인&amp;nbsp;분포&amp;nbsp;차이를&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;라인&amp;nbsp;플롯:&amp;nbsp;calibration&amp;nbsp;데이터와&amp;nbsp;fault&amp;nbsp;데이터의&amp;nbsp;주요&amp;nbsp;EV&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;/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;탐지&amp;nbsp;(Isolation&amp;nbsp;Forest): &lt;br /&gt;크루스칼-월리스&amp;nbsp;검정에서&amp;nbsp;유의미한&amp;nbsp;차이를&amp;nbsp;보인&amp;nbsp;변수들을&amp;nbsp;사용하여&amp;nbsp;RobustScaler로&amp;nbsp;스케일링한&amp;nbsp;후&amp;nbsp;Isolation&amp;nbsp;Forest&amp;nbsp;모델을&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;ev&amp;nbsp;데이터셋에&amp;nbsp;대한&amp;nbsp;이상치&amp;nbsp;스코어&amp;nbsp;분포를&amp;nbsp;시각화하여,&amp;nbsp;'calibration'&amp;nbsp;데이터와&amp;nbsp;'fault'&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;/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;OES&amp;nbsp;데이터&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;시각화:&amp;nbsp;calibration&amp;nbsp;OES&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;/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;스펙트럼&amp;nbsp;비교:&amp;nbsp;calibration과&amp;nbsp;fault&amp;nbsp;상태의&amp;nbsp;평균&amp;nbsp;OES&amp;nbsp;스펙트럼을&amp;nbsp;비교하여,&amp;nbsp;이상&amp;nbsp;상태에서&amp;nbsp;특정&amp;nbsp;파장의&amp;nbsp;강도가&amp;nbsp;변화하는&amp;nbsp;것을&amp;nbsp;확인했다.&amp;nbsp;이는&amp;nbsp;Fault&amp;nbsp;유형과&amp;nbsp;관련된&amp;nbsp;화학종&amp;nbsp;변화를&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;평균&amp;nbsp;스펙트럼&amp;nbsp;비교:&amp;nbsp;각&amp;nbsp;웨이퍼에&amp;nbsp;대해&amp;nbsp;calibration과&amp;nbsp;fault&amp;nbsp;상태의&amp;nbsp;평균&amp;nbsp;OES&amp;nbsp;스펙트럼을&amp;nbsp;비교하여&amp;nbsp;웨이퍼&amp;nbsp;고유의&amp;nbsp;특성&amp;nbsp;및&amp;nbsp;Fault&amp;nbsp;패턴의&amp;nbsp;일관성을&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;센서&amp;nbsp;데이터&amp;nbsp;간&amp;nbsp;상관관계&amp;nbsp;분석: &lt;br /&gt;EV,&amp;nbsp;RFM,&amp;nbsp;OES&amp;nbsp;데이터셋의&amp;nbsp;주요&amp;nbsp;수치형&amp;nbsp;변수들을&amp;nbsp;통합하여&amp;nbsp;데이터셋&amp;nbsp;간의&amp;nbsp;교차&amp;nbsp;상관관계를&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;시각화:&amp;nbsp;EV-RFM,&amp;nbsp;EV-OES,&amp;nbsp;RFM-OES&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;/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;PCA를&amp;nbsp;이용한&amp;nbsp;데이터&amp;nbsp;축소&amp;nbsp;및&amp;nbsp;심층&amp;nbsp;분석: &lt;br /&gt;EV,&amp;nbsp;RFM,&amp;nbsp;OES&amp;nbsp;데이터셋의&amp;nbsp;통합&amp;nbsp;수치형&amp;nbsp;변수들에&amp;nbsp;대해&amp;nbsp;PCA를&amp;nbsp;적용하여&amp;nbsp;2개의&amp;nbsp;주성분으로&amp;nbsp;데이터를&amp;nbsp;축소하고&amp;nbsp;2D&amp;nbsp;산점도로&amp;nbsp;시각화했다. &lt;br /&gt;PCA&amp;nbsp;산점도에서&amp;nbsp;'calibration'&amp;nbsp;데이터와&amp;nbsp;'fault'&amp;nbsp;데이터가&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;분리되는&amp;nbsp;경향을&amp;nbsp;확인했다. &lt;br /&gt;PCA&amp;nbsp;공간에서&amp;nbsp;'calibration'&amp;nbsp;중심으로부터&amp;nbsp;가장&amp;nbsp;멀리&amp;nbsp;떨어진&amp;nbsp;상위&amp;nbsp;5개&amp;nbsp;'fault'&amp;nbsp;데이터&amp;nbsp;포인트를&amp;nbsp;식별하고,&amp;nbsp;이들의&amp;nbsp;원본&amp;nbsp;특징&amp;nbsp;값을&amp;nbsp;'calibration'&amp;nbsp;평균과&amp;nbsp;비교하여&amp;nbsp;이상을&amp;nbsp;유발하는&amp;nbsp;핵심&amp;nbsp;변수를&amp;nbsp;심층&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;학습&amp;nbsp;모델&amp;nbsp;(RandomForestClassifier)&amp;nbsp;구현&amp;nbsp;및&amp;nbsp;평가: &lt;br /&gt;fault_name을&amp;nbsp;타겟&amp;nbsp;변수(0:&amp;nbsp;calibration,&amp;nbsp;1:&amp;nbsp;fault)로&amp;nbsp;인코딩하고,&amp;nbsp;RobustScaler와&amp;nbsp;SimpleImputer를&amp;nbsp;사용하여&amp;nbsp;데이터를&amp;nbsp;전처리한&amp;nbsp;후&amp;nbsp;훈련&amp;nbsp;세트와&amp;nbsp;테스트&amp;nbsp;세트로&amp;nbsp;분리했다. &lt;br /&gt;class_weight='balanced'를&amp;nbsp;설정한&amp;nbsp;RandomForestClassifier를&amp;nbsp;훈련하고&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;평가&amp;nbsp;결과:&amp;nbsp;정확도는&amp;nbsp;0.91로&amp;nbsp;높게&amp;nbsp;나타났으나,&amp;nbsp;'Fault&amp;nbsp;(1)'&amp;nbsp;클래스의&amp;nbsp;재현율이&amp;nbsp;0.48로&amp;nbsp;낮아&amp;nbsp;실제&amp;nbsp;이상&amp;nbsp;상황&amp;nbsp;중&amp;nbsp;약&amp;nbsp;절반만을&amp;nbsp;감지하는&amp;nbsp;한계를&amp;nbsp;보였다.&amp;nbsp;이는&amp;nbsp;False&amp;nbsp;Negative가&amp;nbsp;높음을&amp;nbsp;의미하며,&amp;nbsp;공정&amp;nbsp;이상&amp;nbsp;탐지의&amp;nbsp;중요한&amp;nbsp;개선점으로&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;F1-Score&amp;nbsp;개선&amp;nbsp;전략:&amp;nbsp;클래스&amp;nbsp;불균형&amp;nbsp;해소를&amp;nbsp;위한&amp;nbsp;SMOTE,&amp;nbsp;ADASYN&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;/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;이&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;성공했다.&amp;nbsp;향후&amp;nbsp;'Fault'&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;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/48</guid>
      <comments>https://kodayi.tistory.com/48#entry48comment</comments>
      <pubDate>Fri, 29 May 2026 20:04:44 +0900</pubDate>
    </item>
    <item>
      <title>20260527 TIL</title>
      <link>https://kodayi.tistory.com/47</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 실전 프로젝트를 진행하면서 데이터 분석 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️과제 기획서 작성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 제목&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;금속 에칭 데이터를 이용한 반도체 공정 데이터셋 이상탐지 AI 분석 프로젝트&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;팀 구성&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;팀명*:* First Class&lt;/li&gt;
&lt;li&gt;박승환, 김한이, 유지수, 이승재, 박정운 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 목표&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대시보드의 주요 기능 및 목표를 설정하세요.&lt;/li&gt;
&lt;li&gt;ev_data, oes_data, rfm_data 3종 데이터셋을 통합 분석하여 플라즈마 에칭 공정의 정상/이상 패턴을 머신러닝으로 분류하고, Tableau 기반 인터랙티브 FDC 대시보드로 실시간 모니터링 체계를 구축한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반도체 결함 분석 대시보드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주요 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3개 데이터셋(ev_data / oes_data / rfm_data) 통합 이상탐지 모니터링&lt;/li&gt;
&lt;li&gt;공정 변수별 실시간 이상 패턴 시각화 및 fault 유형 분석&lt;/li&gt;
&lt;li&gt;PCA 기반 차원 축소를 통한 정상/이상 군집 분리 시각화&lt;/li&gt;
&lt;li&gt;Isolation Forest, XGBoost, Random Forest 모델 성능 비교&lt;/li&gt;
&lt;li&gt;fault 유형별 민감 변수 및 탐지 난이도 분석&lt;/li&gt;
&lt;li&gt;Tableau 기반 인터랙티브 FDC(Fault Detection &amp;amp; Classification) 대시보드 구현&lt;/li&gt;
&lt;li&gt;주요 RF&amp;middot;Pressure&amp;middot;TCP 파라미터 시계열 추세 분석 및 이상 알람 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;목표
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3개 데이터셋(장비 센서 / OES 스펙트럼 / RF 매칭) 통합 EDA 및 이상 패턴 시각화&lt;/li&gt;
&lt;li&gt;PCA 기반 차원 축소 및 정상/이상 분리도 분석&lt;/li&gt;
&lt;li&gt;Isolation Forest, XGBoost 기반 이상탐지 모델 구현 및 성능 비교&lt;/li&gt;
&lt;li&gt;20종 fault 유형별 탐지 난이도 분류 및 핵심 민감 변수 도출&lt;/li&gt;
&lt;li&gt;Tableau 대시보드로 공정 이상 현황 실시간 모니터링 체계 제시&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SMART 목표 작성 가이드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;구체적(Specific)&lt;/b&gt;: 목표는 명확하고 구체적이어야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: &quot;지역별 매출 데이터를 분석하여 가장 낮은 매출 지역을 식별.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;측정 가능(Measurable)&lt;/b&gt;: 목표 달성 여부를 측정할 수 있어야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: &quot;5개 이상의 인사이트를 도출하여 보고서에 포함.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;달성 가능(Achievable)&lt;/b&gt;: 현실적으로 달성 가능한 목표이어야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: &quot;제공된 데이터셋을 활용하여 태블로에서 시각화 작업을 수행.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;관련성(Related)&lt;/b&gt;: 프로젝트의 전반적인 목표와 관련이 있어야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: &quot;마케팅 우선 지역 설정과 매출 증대 전략에 활용 가능.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 기반(Time-bound)&lt;/b&gt;: 명확한 마감 기한을 설정해야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: &quot;7일 이내에 대시보드를 완성하고 최종 발표.&quot; &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 정의&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;분석 및 시각화의 중점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트에서 해결하려는 &lt;b&gt;핵심 질문&lt;/b&gt;을 1~2문장으로 작성하세요:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플라즈마 에칭 공정에서 발생하는 복합 공정 이상(fault)을 다변량 데이터 기반으로 조기에 탐지하고, 정상 상태와 이상 상태를 효과적으로 구분할 수 있는 핵심 변수와 패턴을 도출하고자 한다.&lt;/li&gt;
&lt;li&gt;장비 센서(ev_data), OES 스펙트럼(oes_data), RF 매칭(rfm_data) 데이터를 통합 분석하여 기존 단변량 SPC 방식으로 탐지하기 어려운 공정 이상을 머신러닝 기반으로 식별하고 시각화한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제의 필요성 및 중요성&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플라즈마 에칭은 선폭&amp;middot;잔류막&amp;middot;식각 균일도를 결정하는 핵심 공정으로, 조건의 미세한 변화가 웨이퍼 전체 수율에 즉각 영향을 미침&lt;/li&gt;
&lt;li&gt;3종 데이터에 걸쳐 총 220개 이상의 다변량 변수가 동시 변화하므로 사람의 실시간 모니터링은 불가능하며, 머신러닝 자동화가 필수&lt;/li&gt;
&lt;li&gt;기존 단변량 SPC 관리도는 변수 간 복합 이상을 탐지하지 못하는 한계 존재 &amp;mdash; 다변량 FDC 체계 구축 필요&lt;/li&gt;
&lt;li&gt;이상 탐지 1건당 불량 웨이퍼 로트 손실(장당 수백만 원 이상)을 사전 방지할 수 있어 경제적 파급 효과가 큼 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터 활용 계획&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&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;데이터셋 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;플라즈마&amp;nbsp;에칭&amp;nbsp;공정&amp;nbsp;기반&amp;nbsp;FDC(Fault&amp;nbsp;Detection&amp;nbsp;&amp;amp;&amp;nbsp;Classification)&amp;nbsp;학습용&amp;nbsp;데이터 &lt;br /&gt;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;####&amp;nbsp;1.&amp;nbsp;ev_data&amp;nbsp;(Equipment&amp;nbsp;Variable&amp;nbsp;Data) &lt;br /&gt;&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;12,829&amp;nbsp;rows&amp;nbsp;&amp;times;&amp;nbsp;23&amp;nbsp;columns &lt;br /&gt;&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;특징: &lt;br /&gt;&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;데이터 &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;보유 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RF/TCP/Pressure&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; &lt;br /&gt;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`Time`&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`Step&amp;nbsp;Number`&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`BCl3&amp;nbsp;Flow`&amp;nbsp;:&amp;nbsp;BCl3&amp;nbsp;가스&amp;nbsp;유량 &lt;br /&gt;&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;`Cl2&amp;nbsp;Flow`&amp;nbsp;:&amp;nbsp;Cl2&amp;nbsp;가스&amp;nbsp;유량 &lt;br /&gt;&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;`Pressure`&amp;nbsp;:&amp;nbsp;Chamber&amp;nbsp;압력 &lt;br /&gt;&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;`RF&amp;nbsp;Pwr`&amp;nbsp;:&amp;nbsp;RF&amp;nbsp;Power &lt;br /&gt;&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;`RF&amp;nbsp;Tuner`&amp;nbsp;:&amp;nbsp;RF&amp;nbsp;Matching&amp;nbsp;조정값 &lt;br /&gt;&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;`RF&amp;nbsp;Load`&amp;nbsp;:&amp;nbsp;RF&amp;nbsp;Load&amp;nbsp;값 &lt;br /&gt;&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;`RF&amp;nbsp;Impedance`&amp;nbsp;:&amp;nbsp;RF&amp;nbsp;임피던스 &lt;br /&gt;&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;`TCP&amp;nbsp;Top&amp;nbsp;Pwr`&amp;nbsp;:&amp;nbsp;TCP&amp;nbsp;상부&amp;nbsp;전력 &lt;br /&gt;&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;`TCP&amp;nbsp;Impedance`&amp;nbsp;:&amp;nbsp;TCP&amp;nbsp;임피던스 &lt;br /&gt;&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;`He&amp;nbsp;Press`&amp;nbsp;:&amp;nbsp;Helium&amp;nbsp;Pressure &lt;br /&gt;&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;`Endpt&amp;nbsp;A`&amp;nbsp;:&amp;nbsp;Endpoint&amp;nbsp;Detection&amp;nbsp;신호 &lt;br /&gt;&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;2.&amp;nbsp;oes_data&amp;nbsp;(Optical&amp;nbsp;Emission&amp;nbsp;Spectroscopy&amp;nbsp;Data) &lt;br /&gt;&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;4,786&amp;nbsp;rows&amp;nbsp;&amp;times;&amp;nbsp;131&amp;nbsp;columns &lt;br /&gt;&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;특징: &lt;br /&gt;&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;데이터 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;파장(Wavelength)&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;Plasma&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; &lt;br /&gt;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`250.0`,&amp;nbsp;`261.8`,&amp;nbsp;`272.2`&amp;nbsp;등: &lt;br /&gt;&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;파장(nm)에서&amp;nbsp;측정된&amp;nbsp;광&amp;nbsp;방출&amp;nbsp;세기(Intensity) &lt;br /&gt;&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;PCA&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCP&amp;nbsp;Power&amp;nbsp;변화&amp;nbsp;및&amp;nbsp;Plasma&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.&amp;nbsp;rfm_data&amp;nbsp;(RF&amp;nbsp;Matching&amp;nbsp;Data) &lt;br /&gt;&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;3,519&amp;nbsp;rows&amp;nbsp;&amp;times;&amp;nbsp;73&amp;nbsp;columns &lt;br /&gt;&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;특징: &lt;br /&gt;&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;RF&amp;nbsp;Matching&amp;nbsp;회로&amp;nbsp;전압&amp;middot;전류&amp;middot;전력&amp;nbsp;데이터 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RF&amp;nbsp;안정성과&amp;nbsp;impedance&amp;nbsp;matching&amp;nbsp;상태&amp;nbsp;반영 &lt;br /&gt;&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;컬럼 &lt;br /&gt;&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;`TIME`&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`S1V1&amp;nbsp;~&amp;nbsp;S1V5`&amp;nbsp;:&amp;nbsp;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Voltage &lt;br /&gt;&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;`S1I1&amp;nbsp;~&amp;nbsp;S1I5`&amp;nbsp;:&amp;nbsp;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Current &lt;br /&gt;&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;`S1P1&amp;nbsp;~&amp;nbsp;S1P5`&amp;nbsp;:&amp;nbsp;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Power &lt;br /&gt;&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;`S2V1&amp;nbsp;~&amp;nbsp;S2V5`&amp;nbsp;:&amp;nbsp;Sensor&amp;nbsp;Group&amp;nbsp;2&amp;nbsp;Voltage &lt;br /&gt;&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;`S2I&amp;nbsp;계열`&amp;nbsp;:&amp;nbsp;Current&amp;nbsp;센서값 &lt;br /&gt;&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;`S2P&amp;nbsp;계열`&amp;nbsp;:&amp;nbsp;Power&amp;nbsp;센서값 &lt;br /&gt;&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;3.&amp;nbsp;rfm_data&amp;nbsp;(RF&amp;nbsp;Matching&amp;nbsp;Data) &lt;br /&gt;&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;3,519&amp;nbsp;rows&amp;nbsp;&amp;times;&amp;nbsp;73&amp;nbsp;columns &lt;br /&gt;&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;특징: &lt;br /&gt;&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;RF&amp;nbsp;Matching&amp;nbsp;회로&amp;nbsp;전압&amp;middot;전류&amp;middot;전력&amp;nbsp;데이터 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RF&amp;nbsp;안정성과&amp;nbsp;impedance&amp;nbsp;matching&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;Plasma&amp;nbsp;에너지&amp;nbsp;전달&amp;nbsp;효율&amp;nbsp;및&amp;nbsp;RF&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; &lt;br /&gt;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`TIME` &lt;br /&gt;&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;시간 &lt;br /&gt;&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;`STEP` &lt;br /&gt;&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;번호 &lt;br /&gt;&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;`S1V1&amp;nbsp;~&amp;nbsp;S1V5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Voltage &lt;br /&gt;&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;`S2V1&amp;nbsp;~&amp;nbsp;S2V5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;2&amp;nbsp;Voltage &lt;br /&gt;&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;`S1I1&amp;nbsp;~&amp;nbsp;S1I5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Current &lt;br /&gt;&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;`S2I1&amp;nbsp;~&amp;nbsp;S2I5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;2&amp;nbsp;Current &lt;br /&gt;&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;`S1P1&amp;nbsp;~&amp;nbsp;S1P5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;1&amp;nbsp;Power &lt;br /&gt;&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;`S2P1&amp;nbsp;~&amp;nbsp;S2P5` &lt;br /&gt;&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;Sensor&amp;nbsp;Group&amp;nbsp;2&amp;nbsp;Power &lt;br /&gt;&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;RF&amp;nbsp;Matching&amp;nbsp;관련&amp;nbsp;변수 &lt;br /&gt;&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;RF&amp;nbsp;임피던스&amp;nbsp;및&amp;nbsp;Matching&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; &lt;br /&gt;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RF&amp;nbsp;Matching&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Voltage&amp;middot;Current&amp;middot;Power&amp;nbsp;패턴&amp;nbsp;기반&amp;nbsp;fault&amp;nbsp;탐지 &lt;br /&gt;&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;PCA&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RF&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Arc&amp;middot;Power&amp;nbsp;Drift&amp;middot;Impedance&amp;nbsp;Mismatch&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; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;*데이터&amp;nbsp;전처리&amp;nbsp;계획* &lt;br /&gt;&lt;br /&gt;-&amp;nbsp;결측치&amp;nbsp;및&amp;nbsp;이상치&amp;nbsp;확인&amp;nbsp;후&amp;nbsp;제거&amp;nbsp;또는&amp;nbsp;보간&amp;nbsp;처리 &lt;br /&gt;-&amp;nbsp;StandardScaler&amp;nbsp;기반&amp;nbsp;데이터&amp;nbsp;표준화&amp;nbsp;수행 &lt;br /&gt;-&amp;nbsp;불필요&amp;nbsp;변수&amp;nbsp;및&amp;nbsp;상수형&amp;nbsp;변수&amp;nbsp;제거 &lt;br /&gt;-&amp;nbsp;fault&amp;nbsp;유형&amp;nbsp;라벨&amp;nbsp;정리&amp;nbsp;및&amp;nbsp;정상/이상&amp;nbsp;클래스&amp;nbsp;이진화 &lt;br /&gt;-&amp;nbsp;PCA&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;확인 &lt;br /&gt;-&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*대시보드&amp;nbsp;구성&amp;nbsp;계획* &lt;br /&gt;&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;PCA&amp;nbsp;산점도&amp;nbsp;&amp;mdash;&amp;nbsp;정상/이상&amp;nbsp;클러스터&amp;nbsp;분포&amp;nbsp;(PC1&amp;nbsp;vs&amp;nbsp;PC2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;히트맵&amp;nbsp;&amp;mdash;&amp;nbsp;fault&amp;nbsp;유형&amp;nbsp;&amp;times;&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;mdash;&amp;nbsp;데이터셋별&amp;nbsp;이상&amp;nbsp;탐지&amp;nbsp;성능&amp;nbsp;비교&amp;nbsp;(F1-score) &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;mdash;&amp;nbsp;시간(Step)&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;mdash;&amp;nbsp;fault&amp;nbsp;유형별&amp;nbsp;비율&amp;nbsp;분포 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;*주요&amp;nbsp;KPI&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;F1-score:&amp;nbsp;모델별&amp;nbsp;이상&amp;nbsp;클래스&amp;nbsp;F1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;fault별&amp;nbsp;PCA&amp;nbsp;분리도:&amp;nbsp;calibration&amp;nbsp;중심과의&amp;nbsp;Euclidean&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;표준편차 &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;CSV&amp;nbsp;내&amp;nbsp;fault&amp;nbsp;샘플&amp;nbsp;비중&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예상 결과물 및 기대 효과&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대시보드 주요 구성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최종적으로 제작할 대시보드의 구성을 간략히 설명하세요.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상단: 3개 데이터셋 이상 현황 요약 KPI 카드 (총 샘플, 이상률, 탐지 F1)&lt;/li&gt;
&lt;li&gt;중단 좌: PCA 2D 산점도 &amp;mdash; 정상(회색)/이상(빨강) 클러스터, fault 유형별 색상 구분&lt;/li&gt;
&lt;li&gt;중단 우: fault 유형별 PCA 분리도 막대 차트 &amp;mdash; TCP/Pr/RF 계열 탐지 용이성 비교&lt;/li&gt;
&lt;li&gt;하단 좌: ev_data 주요 센서(RF Tuner, RF Pwr, Pressure) 시계열 트렌드&lt;/li&gt;
&lt;li&gt;하단 우: 모델 성능 비교 테이블 (Isolation Forest vs XGBoost vs Random Forest)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기대 효과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트 완료 후 얻게 될 데이터 인사이트와 활용 가능성을 제시하세요.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;rfm_data가 PC1 기준 정상/이상 분리도 최대(0.22 vs -1.18)로 단독 모델 성능 가장 우수 예상 &amp;mdash; RF 매칭 센서 중점 모니터링 권고&lt;/li&gt;
&lt;li&gt;oes_data는 TCP 파워 계열(+30, +50) 이상에 특히 민감, OES 스펙트럼 기반 TCP 이상 조기 탐지 가능&lt;/li&gt;
&lt;li&gt;ev_data는 RF Tuner&amp;middot;Vat Valve 변수가 민감 변수로 확인 &amp;mdash; 장비 파라미터 기반 1차 알람 기준 설정에 활용&lt;/li&gt;
&lt;li&gt;3종 데이터 통합 모델은 개별 모델 대비 탐지 커버리지 확대 및 오탐률 감소 기대&lt;/li&gt;
&lt;li&gt;본 프로젝트 결과를 토대로 스파르타반도체 FDC 룰셋 업데이트 및 지능형 알람 임계값 설정에 직접 적용 가능 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 일정 계획&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;실전 프로젝트&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정 단계 주요&amp;nbsp;작업 담당&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;b&gt;Day&amp;nbsp;1&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;데이터&amp;nbsp;이해&amp;nbsp;및&amp;nbsp;문제&amp;nbsp;정의&lt;/td&gt;
&lt;td&gt;3개&amp;nbsp;CSV&amp;nbsp;구조&amp;nbsp;파악&amp;nbsp;/&amp;nbsp;fault&amp;nbsp;분포&amp;nbsp;분석&amp;nbsp;/&amp;nbsp;핵심&amp;nbsp;질문&amp;nbsp;설정&amp;nbsp;/&amp;nbsp;참고자료&amp;nbsp;조사&lt;/td&gt;
&lt;td&gt;유지수,&amp;nbsp;이승재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;2&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;EDA&amp;nbsp;및&amp;nbsp;기초&amp;nbsp;시각화&lt;/td&gt;
&lt;td&gt;기술통계&amp;nbsp;확인&amp;nbsp;/&amp;nbsp;변수&amp;nbsp;분포&amp;nbsp;히스토그램&amp;nbsp;/&amp;nbsp;이상률&amp;nbsp;시각화&amp;nbsp;/&amp;nbsp;상관관계&amp;nbsp;히트맵&lt;/td&gt;
&lt;td&gt;박승환,&amp;nbsp;김한이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;3~Day5&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;데이터&amp;nbsp;전처리&lt;/td&gt;
&lt;td&gt;StandardScaler&amp;nbsp;표준화&amp;nbsp;/&amp;nbsp;결측&amp;middot;이상치&amp;nbsp;처리&amp;nbsp;/&amp;nbsp;이진&amp;nbsp;레이블&amp;nbsp;생성&amp;nbsp;/&amp;nbsp;상수&amp;nbsp;변수&amp;nbsp;제거&lt;/td&gt;
&lt;td&gt;박승환,&amp;nbsp;박정운,&amp;nbsp;김한이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day 6&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;PCA&amp;nbsp;및&amp;nbsp;차원&amp;nbsp;축소&lt;/td&gt;
&lt;td&gt;PCA&amp;nbsp;적용&amp;nbsp;/&amp;nbsp;누적&amp;nbsp;설명&amp;nbsp;분산&amp;nbsp;분석&amp;nbsp;/&amp;nbsp;PC1~3&amp;nbsp;기반&amp;nbsp;정상&amp;middot;이상&amp;nbsp;분리도&amp;nbsp;도출&amp;nbsp;/&amp;nbsp;시각화&lt;/td&gt;
&lt;td&gt;박승환,&amp;nbsp;유지수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;7&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;변수&amp;nbsp;민감도&amp;nbsp;분석&lt;/td&gt;
&lt;td&gt;fault&amp;nbsp;유형별&amp;nbsp;민감&amp;nbsp;변수&amp;nbsp;선별&amp;nbsp;/&amp;nbsp;분리도&amp;nbsp;랭킹&amp;nbsp;/&amp;nbsp;ev&amp;middot;oes&amp;middot;rfm&amp;nbsp;비교&amp;nbsp;분석&lt;/td&gt;
&lt;td&gt;유지수,&amp;nbsp;이승재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;8&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Isolation&amp;nbsp;Forest&amp;nbsp;모델링&lt;/td&gt;
&lt;td&gt;비지도&amp;nbsp;이상탐지&amp;nbsp;모델&amp;nbsp;구현&amp;nbsp;/&amp;nbsp;contamination&amp;nbsp;파라미터&amp;nbsp;튜닝&amp;nbsp;/&amp;nbsp;성능&amp;nbsp;평가&lt;/td&gt;
&lt;td&gt;박승환,&amp;nbsp;유지수,&amp;nbsp;이승재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;9&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;XGBoost&amp;nbsp;/&amp;nbsp;RF&amp;nbsp;모델링&lt;/td&gt;
&lt;td&gt;지도학습&amp;nbsp;분류&amp;nbsp;모델&amp;nbsp;학습&amp;nbsp;/&amp;nbsp;F1&amp;middot;Precision&amp;middot;Recall&amp;nbsp;평가&amp;nbsp;/&amp;nbsp;Feature&amp;nbsp;Importance&amp;nbsp;도출&lt;/td&gt;
&lt;td&gt;박승환,&amp;nbsp;유지수,&amp;nbsp;이승재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;10&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;모델&amp;nbsp;성능&amp;nbsp;비교&amp;nbsp;및&amp;nbsp;해석&lt;/td&gt;
&lt;td&gt;3개&amp;nbsp;모델&amp;nbsp;성능&amp;nbsp;비교&amp;nbsp;테이블&amp;nbsp;/&amp;nbsp;오분류&amp;nbsp;분석&amp;nbsp;/&amp;nbsp;탐지&amp;nbsp;난이도별&amp;nbsp;분석&lt;/td&gt;
&lt;td&gt;전원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;11&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Tableau&amp;nbsp;대시보드&amp;nbsp;구성&lt;/td&gt;
&lt;td&gt;KPI&amp;nbsp;카드&amp;nbsp;/&amp;nbsp;PCA&amp;nbsp;산점도&amp;nbsp;/&amp;nbsp;센서&amp;nbsp;트렌드&amp;nbsp;/&amp;nbsp;fault&amp;nbsp;분포&amp;nbsp;/&amp;nbsp;모델&amp;nbsp;성능&amp;nbsp;시각화&lt;/td&gt;
&lt;td&gt;김한이,&amp;nbsp;박정운&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;12&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;대시보드&amp;nbsp;최적화&lt;/td&gt;
&lt;td&gt;인터랙션&amp;nbsp;필터&amp;nbsp;설정&amp;nbsp;/&amp;nbsp;시각화&amp;nbsp;정제&amp;nbsp;/&amp;nbsp;FDC&amp;nbsp;알람&amp;nbsp;임계값&amp;nbsp;시각화&lt;/td&gt;
&lt;td&gt;김한이,&amp;nbsp;박정운&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;13&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;최종&amp;nbsp;인사이트&amp;nbsp;정리&amp;nbsp;및&amp;nbsp;발표&amp;nbsp;자료&amp;nbsp;제작&lt;/td&gt;
&lt;td&gt;핵심&amp;nbsp;발견사항&amp;nbsp;정리&amp;nbsp;/&amp;nbsp;공정&amp;nbsp;개선&amp;nbsp;제안&amp;nbsp;/&amp;nbsp;발표&amp;nbsp;슬라이드&amp;nbsp;작성&lt;/td&gt;
&lt;td&gt;전원&amp;nbsp;참여&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Day&amp;nbsp;14&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;최종&amp;nbsp;발표&amp;nbsp;및&amp;nbsp;피드백&lt;/td&gt;
&lt;td&gt;최종&amp;nbsp;결과물&amp;nbsp;발표&amp;nbsp;/&amp;nbsp;질의응답&amp;nbsp;/&amp;nbsp;피드백&amp;nbsp;반영&amp;nbsp;및&amp;nbsp;문서&amp;nbsp;마무리&lt;/td&gt;
&lt;td&gt;전원&amp;nbsp;참여&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;역할 분담&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 전처리 및 EDA: 박승환, 김한이, 박정운&lt;/li&gt;
&lt;li&gt;탐색적 데이터 분석 및 문제 정의: 유지수, 이승재&lt;/li&gt;
&lt;li&gt;머신러닝 모델링 (이상탐지): 박승환, 유지수, 이승재&lt;/li&gt;
&lt;li&gt;대시보드 제작 및 디자인 (Tableau): 김한이, 박정운&lt;/li&gt;
&lt;li&gt;발표 자료 준비 및 문서 작성: 김한이 (전원 참여)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 별로 웨이퍼 수가 다르다.(129/126/126)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개별로 보면 제거x, 시계열 분석하면 데이터 갯수 통일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CL&amp;gt; 가스 유량을 바꾼거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 해야할 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fault name &amp;gt; 실제 결함이 아니라 레시피를 어떻게 바꿨나에 대한 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP를 바꿨을 떄 어떻게 바뀌나 RFM을 바꿨을 떄 어떻게 바뀌나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fault name 기준에서 두드러지는 바뀌는 값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 지식을 바탕으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OES 칼럼 131개 &amp;gt; 129개 행 이름이 파장 3세트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RFM 데이터에 대한 이해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;칼럼 명에 대한 이해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S 센서 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ev 데이터에서 확인해야하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CL_2 flow가 비례해서 증가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시계열 데이터를 통해 결함의 추이를 보는 게 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리 방향성 레시피 데이터를 기반해서 연동 되는 값들을 찾아내고 &amp;gt; 3가지 엑셀 시트에서 각각 수행하고 어떤 관측 데이터를 기반으로 했을 때 효과적으로 변동을 잡아 내는 것이 효과적인가. 레시피를 바꿨을 때 유의미하게 바뀌는 것을 보기 위해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fault name &amp;gt; 5~6개 변수를 바꿨을 때 뭐가 가장 많이 변하고 어떤 관측 장비를 썼을 때 효과적으로 변하는지&lt;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/47</guid>
      <comments>https://kodayi.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 27 May 2026 19:58:49 +0900</pubDate>
    </item>
    <item>
      <title>20260526 TIL</title>
      <link>https://kodayi.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 공부를 못했다... 내일부터 심기 일전해서 다시 시작!&lt;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/46</guid>
      <comments>https://kodayi.tistory.com/46#entry46comment</comments>
      <pubDate>Tue, 26 May 2026 21:02:32 +0900</pubDate>
    </item>
    <item>
      <title>20260522 TIL</title>
      <link>https://kodayi.tistory.com/45</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 품질 경영 기사를 공부하면서 품질 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 시계열 데이터를 공부하면서 시계열 데이터 분석 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 태블로 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&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;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 대시보드 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️ 시계열 강의 복습&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;⚡시계열 데이터란?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일정한 시간 간격으로 순차적으로 기록된 데이터&lt;/span&gt;&lt;br /&gt;&lt;/span&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 데이터 분석이 현상을 분석했다면 시계열 데이터는 맥락을 분&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;⚡시계열 데이터의 조건&lt;/span&gt;&lt;/b&gt;&lt;/h4&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>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/45</guid>
      <comments>https://kodayi.tistory.com/45#entry45comment</comments>
      <pubDate>Fri, 22 May 2026 20:45:30 +0900</pubDate>
    </item>
    <item>
      <title>20260519 TIL</title>
      <link>https://kodayi.tistory.com/44</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 품질 경영 기사를 공부하면서 품질 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 시계열 데이터를 공부하면서 시계열 데이터 분석 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 태블로 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&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;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 대시보드 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️ Tableau 강의&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️ Streamlit 강의&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lnaXu/dJMcahRY5iY/351Yx0zhikmUyZBhGPZ81k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lnaXu/dJMcahRY5iY/351Yx0zhikmUyZBhGPZ81k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lnaXu/dJMcahRY5iY/351Yx0zhikmUyZBhGPZ81k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlnaXu%2FdJMcahRY5iY%2F351Yx0zhikmUyZBhGPZ81k%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;522&quot; height=&quot;212&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1779185898641&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import streamlit as st
import pandas as pd

# 문자열 &amp;rarr; 텍스트
st.write(&quot;외경 측정값을 표시합니다.&quot;)

# 숫자 &amp;rarr; 그대로
st.write(50.012)

# 마크다운 &amp;rarr; 자동 렌더링
st.write(&quot;**굵게** 와 *기울임* 도 됩니다.&quot;)

# 딕셔너리 &amp;rarr; JSON 형태
st.write({&quot;line&quot;: &quot;A&quot;, &quot;lot&quot;: &quot;L-2026-001&quot;, &quot;cpk&quot;: 1.42})

# 데이터프레임 &amp;rarr; 인터랙티브 테이블
df = pd.DataFrame({
    &quot;측정번호&quot;: [1, 2, 3],
    &quot;외경(mm)&quot;: [50.01, 49.97, 50.18],
})
st.write(df)

# 여러 개를 한 번에 &amp;mdash; 매개변수 여러 개 넘기기
st.write(&quot;라인:&quot;, &quot;A&quot;, &quot;/ 로트:&quot;, &quot;L-2026-001&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수마크다운 해석LaTeX데이터프레임 자동 표 추천 용도&lt;/p&gt;
&lt;table id=&quot;4d79b864-ac57-4588-82ad-fb5baad76276&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;ebcccca9-d671-4c89-aa11-0265db04fbd1&quot;&gt;
&lt;td id=&quot;I|aL&quot;&gt;st.write&lt;/td&gt;
&lt;td id=&quot;:}@@&quot;&gt;✅&lt;/td&gt;
&lt;td id=&quot;UyIs&quot;&gt;✅&lt;/td&gt;
&lt;td id=&quot;WHTb&quot;&gt;✅&lt;/td&gt;
&lt;td id=&quot;ibm&amp;#96;&quot;&gt;&quot;고민하기 싫을 때&quot; &amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;가장 일반적으로 사용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;15e0dd15-da7c-4808-9310-b4c3371fce19&quot;&gt;
&lt;td id=&quot;I|aL&quot;&gt;st.markdown&lt;/td&gt;
&lt;td id=&quot;:}@@&quot;&gt;✅&lt;/td&gt;
&lt;td id=&quot;UyIs&quot;&gt;✅ ($...$)&lt;/td&gt;
&lt;td id=&quot;WHTb&quot;&gt;❌&lt;/td&gt;
&lt;td id=&quot;ibm&amp;#96;&quot;&gt;의도적으로 마크다운만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;70a1b449-54b1-47d1-b6ff-c8545e0faeb4&quot;&gt;
&lt;td id=&quot;I|aL&quot;&gt;st.text&lt;/td&gt;
&lt;td id=&quot;:}@@&quot;&gt;❌ (그대로)&lt;/td&gt;
&lt;td id=&quot;UyIs&quot;&gt;❌&lt;/td&gt;
&lt;td id=&quot;WHTb&quot;&gt;❌&lt;/td&gt;
&lt;td id=&quot;ibm&amp;#96;&quot;&gt;고정폭 평문 (코드 출력 같은 것)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/44</guid>
      <comments>https://kodayi.tistory.com/44#entry44comment</comments>
      <pubDate>Tue, 19 May 2026 20:39:24 +0900</pubDate>
    </item>
    <item>
      <title>20260518 TIL</title>
      <link>https://kodayi.tistory.com/43</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 품질 경영 기사를 공부하면서 품질 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #000000;&quot;&gt; 시계열 데이터를 공부하면서 시계열 데이터 분석 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #000000;&quot;&gt; 태블로 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt; &lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 대시보드 강의를 수강하면서 데이터 시각화 역량을 기른다.&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️ Tableau 강의&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZsT0C/dJMcahYKHu8/6eICkNYgPiAuOb6kvsoJDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZsT0C/dJMcahYKHu8/6eICkNYgPiAuOb6kvsoJDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZsT0C/dJMcahYKHu8/6eICkNYgPiAuOb6kvsoJDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZsT0C%2FdJMcahYKHu8%2F6eICkNYgPiAuOb6kvsoJDk%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;387&quot; height=&quot;254&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Tabpy&lt;/b&gt;&lt;/span&gt;는 Tableau 환경에서 python 코드를 사용할 수 있도록 해주는 것&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;span data-token-index=&quot;1&quot;&gt;Python 스크립트(머신러닝&amp;middot;통계&amp;middot;데이터 전처리 등)&lt;/span&gt; 를 직접 실행할 수 있게 해주는 &lt;span data-token-index=&quot;3&quot;&gt;외부 서비스 게이트웨이&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;925&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tPh73/dJMcahxH48a/ySca4dhgkEZ2KFT3NeRNsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tPh73/dJMcahxH48a/ySca4dhgkEZ2KFT3NeRNsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tPh73/dJMcahxH48a/ySca4dhgkEZ2KFT3NeRNsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtPh73%2FdJMcahxH48a%2FySca4dhgkEZ2KFT3NeRNsK%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;273&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tableau 계산식(SCRIPT_REAL, SCRIPT_INT, SCRIPT_STR, SCRIPT_BOOL) 안에서 &lt;span data-token-index=&quot;1&quot;&gt;Python 코드&lt;/span&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;ex)&lt;/p&gt;
&lt;pre id=&quot;code_1779088029571&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SCRIPT_REAL(
&quot;import numpy as np
return np.mean(_arg1)&quot;
, SUM([Sales])
)&lt;/code&gt;&lt;/pre&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;rarr; Tableau의 [Sales] 데이터를 Python으로 보내서 numpy.mean()으로 평균&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;2. Send Code to TabPy and Run it&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tableau는 사용자가 작성한 Python 코드를 &lt;b&gt;TabPy 서버&lt;/b&gt;로 전송&lt;/li&gt;
&lt;li&gt;TabPy는 Python이 설치된 환경에서 코드를 실행&lt;/li&gt;
&lt;li&gt;이때 Python의 다양한 라이브러리(numpy, pandas, scikit-learn 등)를 활용할 수 있음&lt;/li&gt;
&lt;li&gt;&amp;rarr; 즉, &lt;b&gt;머신러닝 모델 훈련, 예측, 통계 분석&lt;/b&gt; 등을 Tableau 안에서 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Return a List back to Tableau&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python이 실행 결과를 &lt;b&gt;리스트 형태로 Tableau에 반환&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;예를 들어 Python이 계산한 예측값이나 통계 결과를 Tableau로 다시 보내면,&lt;/li&gt;
&lt;li&gt;Tableau는 그 값을 &lt;b&gt;시트 또는 차트에 시각화&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Tableau Table Calc&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환된 값은 Tableau에서 &lt;b&gt;일반 계산식처럼 사용&lt;/b&gt;할 수 있음&lt;/li&gt;
&lt;li&gt;&amp;rarr; 즉, Tableau의 다른 필드들과 조합해서 그래프, KPI, 예측 차트 등을 만들 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1687&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9UyG4/dJMcaciN4z4/Md8LTbNXDmyRsT9mWYZznk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9UyG4/dJMcaciN4z4/Md8LTbNXDmyRsT9mWYZznk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9UyG4/dJMcaciN4z4/Md8LTbNXDmyRsT9mWYZznk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9UyG4%2FdJMcaciN4z4%2FMd8LTbNXDmyRsT9mWYZznk%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;578&quot; height=&quot;270&quot; data-origin-width=&quot;1687&quot; data-origin-height=&quot;789&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SCRIPT_REAL(&quot; ... &quot;) &amp;rarr;  &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;의미&lt;/b&gt; : Tableau가 TabPy 서버를 통해 Python 코드를 실행하도록 하는 &lt;b&gt;Script 함수&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;REAL은 &lt;b&gt;숫자형(float)&lt;/b&gt;&lt;/span&gt;&lt;/u&gt; 결과를 반환할 때 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SCRIPT_REAL() &amp;rarr; 숫자형 결과&lt;/li&gt;
&lt;li&gt;SCRIPT_INT() &amp;rarr; 정수형 결과&lt;/li&gt;
&lt;li&gt;SCRIPT_STR() &amp;rarr; 문자열 결과&lt;/li&gt;
&lt;li&gt;SCRIPT_BOOL() &amp;rarr; True/False 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;② text = _arg1 &amp;rarr;  &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;의미&lt;/b&gt; : Tableau에서 넘겨준 첫 번째 인수(_arg1)를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;Python 변수 text&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;에 저장하는 부분&lt;/li&gt;
&lt;li&gt;_arg1, _arg2, _arg3 &amp;hellip; 은 Tableau가 전달하는 입력값으로, SCRIPT 함수 뒤에 쉼표(,)로 구분해 전달&lt;/li&gt;
&lt;li&gt;이 예시에서는 _arg1이 ATTR([Comment])로부터 넘어온 텍스트 목록(댓글 데이터)이 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;③, ATTR([Comment]) &amp;rarr;  &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;의미&lt;/b&gt; : Tableau 필드 [Comment]를 Python 코드의 _arg1로 전달하는 부분&lt;/li&gt;
&lt;li&gt;즉, Tableau 시트의 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;댓글(Comment) 데이터 열&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;이 Python 코드의 입력값으로 사용&lt;/li&gt;
&lt;/ul&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;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOPIIu/dJMcagr0Tof/pPQZdUb3oFKQ36CAqrAHt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOPIIu/dJMcagr0Tof/pPQZdUb3oFKQ36CAqrAHt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOPIIu/dJMcagr0Tof/pPQZdUb3oFKQ36CAqrAHt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOPIIu%2FdJMcagr0Tof%2FpPQZdUb3oFKQ36CAqrAHt0%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;438&quot; height=&quot;339&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;710&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실습&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Tabpy 설치&lt;/b&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;1. CMD창을 통해 명령 프롬프트 열기&lt;/b&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;2. 설치 전 pip 업데이트&lt;/p&gt;
&lt;pre id=&quot;code_1779090035689&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;python -m pip install --upgrade pip
# python3 -m pip install --upgrade pip&lt;/code&gt;&lt;/pre&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;3.Tabpy 패키지 설치&lt;/p&gt;
&lt;pre style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot;&gt;&lt;code&gt;pip install tabpy
&lt;/code&gt;&lt;/pre&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;4. 설치된 Tabpy를 실행&lt;/p&gt;
&lt;pre id=&quot;code_1779090035690&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;tabpy

# Do you wish to proceed without authentication? (y/N): 뜨면 y 엔터&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이때 Do you wish to proceed without authentication는 권한 없이 실행할 것인지 물어보는 것으로 우리는 로컬 서버에서 사용하므로 사용할 필요 x&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pkk39/dJMcagyLzlh/lf7WOSYXWWwSLs3FqahGdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pkk39/dJMcagyLzlh/lf7WOSYXWWwSLs3FqahGdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pkk39/dJMcagyLzlh/lf7WOSYXWWwSLs3FqahGdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPkk39%2FdJMcagyLzlh%2Flf7WOSYXWWwSLs3FqahGdK%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;487&quot; height=&quot;244&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;856&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;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://localhost:9004/&quot; data-token-index=&quot;1&quot;&gt;&lt;span&gt;http://localhost:9004&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;접속 &amp;rarr; TabPy REST API 페이지가 뜨면 OK&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2559&quot; data-origin-height=&quot;1325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btdJxZ/dJMcadvdQgz/ePnPYlbK42m8lpCo6Vy9Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btdJxZ/dJMcadvdQgz/ePnPYlbK42m8lpCo6Vy9Sk/img.png&quot; data-alt=&quot;성공적으로 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btdJxZ/dJMcadvdQgz/ePnPYlbK42m8lpCo6Vy9Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtdJxZ%2FdJMcadvdQgz%2FePnPYlbK42m8lpCo6Vy9Sk%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;616&quot; height=&quot;319&quot; data-origin-width=&quot;2559&quot; data-origin-height=&quot;1325&quot;/&gt;&lt;/span&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;1084&quot; data-origin-height=&quot;824&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yOtPf/dJMb99M9SW4/ZIBeo3HijmvtPMV6zBbFdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yOtPf/dJMb99M9SW4/ZIBeo3HijmvtPMV6zBbFdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yOtPf/dJMb99M9SW4/ZIBeo3HijmvtPMV6zBbFdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyOtPf%2FdJMb99M9SW4%2FZIBeo3HijmvtPMV6zBbFdK%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;539&quot; height=&quot;410&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;824&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트 이름&amp;nbsp;: localhost ( Tabpy가 설치된 IP)&lt;/li&gt;
&lt;li&gt;포트 : 9004 (Default&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt; Tabpy를 활용한 클러스터링&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;3-1. K-Means&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;K-Means&lt;/b&gt;는 가장 대표적인 &lt;b&gt;비지도 학습(unsupervised learning)&lt;/b&gt; 알고리즘 중 하나로, 데이터를 K개의 그룹(클러스터)으로 나누는 방법&lt;/li&gt;
&lt;li&gt;즉, 비슷한 데이터끼리 묶어 &lt;b&gt;패턴&lt;/b&gt;이나 &lt;b&gt;구조&lt;/b&gt;를 찾는 데 쓰임&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;**K 선택 :**사용자가 만들고 싶은 클러스터 개수 K를 정함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;초기 중심점(centroid) 설정 :&lt;/b&gt; 임의로 K개의 점을 데이터 공간 안에 초기 중심으로 둠 (랜덤 선택)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;할당 단계 (Assignment Step) :&lt;/b&gt; 각 데이터를 가장 가까운 중심점에 할당합니다. &amp;rarr; 클러스터 형성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;업데이트 단계 (Update Step) :&lt;/b&gt; 각 클러스터의 데이터를 평균 내서 &lt;b&gt;새로운 중심점&lt;/b&gt;으로 갱신합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;반복 :&lt;/b&gt; 중심점이 더 이상 크게 변하지 않거나, 수렴 조건에 도달할 때까지 3~4단계를 반복합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt; 3-2. Mini-Batch KMeans&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Mini-Batch KMeans&lt;/b&gt;는 일반적인 &lt;b&gt;K-Means 알고리즘&lt;/b&gt;을 대규모 데이터셋에 더 효율적으로 적용할 수 있도록 개선한 방식&lt;/li&gt;
&lt;li&gt;기존 K-Means는 모든 데이터를 반복(iteration)마다 클러스터 중심(centroid)에 대해 계산해야 하기 때문에 &lt;b&gt;대용량 데이터&lt;/b&gt;에서는 연산량과 메모리 사용량이 매우 커짐&lt;/li&gt;
&lt;li&gt;Mini-Batch KMeans는 이를 해결하기 위해 &lt;b&gt;전체 데이터를 한 번에 쓰지 않고, 작은 배치(mini-batch) 단위로 무작위 샘플링하여 클러스터링&lt;/b&gt;을 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초기화&lt;/b&gt;: 일반 K-Means처럼 k개의 클러스터 중심(centroid)을 무작위로 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;미니배치 샘플링&lt;/b&gt;: 전체 데이터에서 일부(예: 100~1000개 정도)를 랜덤하게 뽑아 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;할당(Assignment)&lt;/b&gt;: 샘플 데이터 각각을 가장 가까운 중심점(centroid)에 할당&lt;/li&gt;
&lt;li&gt;&lt;b&gt;업데이트(Update)&lt;/b&gt;: 선택된 샘플을 기준으로 중심점을 조금씩 업데이트 (확률적 경사하강법과 유사)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;반복&lt;/b&gt;: 여러 배치를 반복하면서 전체 데이터 분포에 맞는 중심점으로 수렴&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&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;832&quot; data-origin-height=&quot;979&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tvmQ2/dJMcahRYcnq/jKKzDMt1E0606zCTN47dbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tvmQ2/dJMcahRYcnq/jKKzDMt1E0606zCTN47dbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tvmQ2/dJMcahRYcnq/jKKzDMt1E0606zCTN47dbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtvmQ2%2FdJMcahRYcnq%2FjKKzDMt1E0606zCTN47dbK%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;479&quot; height=&quot;564&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;979&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;858&quot; data-origin-height=&quot;949&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlkag3/dJMcagZOWPN/aA7qEZ3SHKLaW7KC8yF5KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlkag3/dJMcagZOWPN/aA7qEZ3SHKLaW7KC8yF5KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlkag3/dJMcagZOWPN/aA7qEZ3SHKLaW7KC8yF5KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdlkag3%2FdJMcagZOWPN%2FaA7qEZ3SHKLaW7KC8yF5KK%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;622&quot; height=&quot;688&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;949&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;1160&quot; data-origin-height=&quot;931&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYtE0v/dJMcadWkKrS/WdjOvYLKrQBdHRqslcboT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYtE0v/dJMcadWkKrS/WdjOvYLKrQBdHRqslcboT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYtE0v/dJMcadWkKrS/WdjOvYLKrQBdHRqslcboT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYtE0v%2FdJMcadWkKrS%2FWdjOvYLKrQBdHRqslcboT0%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;714&quot; height=&quot;573&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;931&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779091695526&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SCRIPT_INT(&quot;
import numpy as np
from sklearn.cluster import KMeans, MiniBatchKMeans

x1 = np.asarray(_arg1, dtype=np.float32)
x2 = np.asarray(_arg2, dtype=np.float32)
algo = _arg3[0]; k = int(_arg4[0])

X = np.column_stack((x1, x2))
n = X.shape[0]; k = max(1, min(k, n))

if algo == 'KMeans':
    labels = KMeans(n_clusters=k, n_init=5, random_state=59).fit_predict(X)
else:
    labels = MiniBatchKMeans(n_clusters=k, batch_size=20, random_state=59).fit_predict(X)

return labels.tolist()
&quot;,
SUM([매출]),   
SUM([수익]),   
[P_Cluster Algorithm],
[P_Cluster Numbers]
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&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;1093&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXbLQa/dJMb990LI3z/X5knwAqC0W7CtxEBdRbTGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXbLQa/dJMb990LI3z/X5knwAqC0W7CtxEBdRbTGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXbLQa/dJMb990LI3z/X5knwAqC0W7CtxEBdRbTGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXbLQa%2FdJMb990LI3z%2FX5knwAqC0W7CtxEBdRbTGk%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;675&quot; height=&quot;568&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 색깔이 안나오는 문제 발생 했는데 매개변수 표시하고 CLuster를 7개로 맞춰줬더니 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;행 : 합계(매출)&lt;/li&gt;
&lt;li&gt;열 : 합계(수익)&lt;/li&gt;
&lt;li&gt;색상 : C_Cluster (계산 대상 : 제품명)&lt;/li&gt;
&lt;li&gt;세부정보 : 제품명&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4-1. &lt;b&gt;Prophet&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Prophet&lt;/b&gt;은 페이스북이 2017년에 공개한 &lt;b&gt;시계열 데이터 예측용 오픈소스 라이브러리&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python과 R에서 사용 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;일별, 주별, 월별 시계열 데이터&lt;/b&gt;에 특히 강함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;계절성(Seasonality), 추세(Trend), 휴일 효과(Holiday effects)&lt;/b&gt; 등을 자동으로 고려&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &amp;ldquo;비전문가도 쉽게 시계열 예측을 할 수 있도록 만든 라이브러리&amp;rdquo;라고 볼 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Prophet의 모델 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Prophet은 시계열을 다음과 같이 분해함:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;529&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZECsb/dJMcajvu2ye/gkEkmmCHCc07e2KjPB2lS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZECsb/dJMcajvu2ye/gkEkmmCHCc07e2KjPB2lS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZECsb/dJMcajvu2ye/gkEkmmCHCc07e2KjPB2lS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZECsb%2FdJMcajvu2ye%2FgkEkmmCHCc07e2KjPB2lS1%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;219&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;219&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;pre id=&quot;code_1779092026527&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SCRIPT_REAL(&quot;
import pandas as pd
import numpy as np
from prophet import Prophet

# 1) 스캐폴드(뷰의 전체 날짜)
scaf = pd.DataFrame({'ds': _arg1})
scaf['ds'] = pd.to_datetime(scaf['ds'], errors='coerce')
scaf = scaf.dropna().sort_values('ds')

# 2) 히스토리(실데이터) 구성
hist = pd.DataFrame({'ds': _arg1, 'y': _arg2})
hist['ds'] = pd.to_datetime(hist['ds'], errors='coerce')
hist = hist.dropna(subset=['ds','y']).sort_values('ds')
hist = hist.groupby('ds', as_index=False)['y'].sum()

if len(hist) &amp;lt; 2:
    return [float('nan')] * len(scaf)

# 3) 예측 기간 = 파라미터만 사용
try:
    periods = int(_arg3[0])
except:
    periods = 0
periods = max(0, periods)

# 4) 모델 학습 &amp;amp; 예측
m = Prophet(yearly_seasonality=True,
            weekly_seasonality=True,
            daily_seasonality=False,
            seasonality_mode='multiplicative')
m.fit(hist)

future = m.make_future_dataframe(periods=periods, freq='D')
fcst = m.predict(future)[['ds','yhat']]

# 5) 스캐폴드와 정합 &amp;rarr; 뷰 길이에 맞춰 반환
out = scaf.merge(fcst, on='ds', how='left')['yhat'].tolist()
return out
&quot;,
ATTR([Date]),   // 스캐폴드 날짜
SUM([매출]),                               // 히스토리 값
[P_Periods to Forecast]                    // 슬라이더: 예측 일수
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;777&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eHvVFA/dJMcahxH9qi/Ost6lKImjHdhZnQsHvhwN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eHvVFA/dJMcahxH9qi/Ost6lKImjHdhZnQsHvhwN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eHvVFA/dJMcahxH9qi/Ost6lKImjHdhZnQsHvhwN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeHvVFA%2FdJMcahxH9qi%2FOst6lKImjHdhZnQsHvhwN0%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;563&quot; height=&quot;522&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;777&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;1507&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDyqwO/dJMcabjZedc/IT1zUd41VvFQTHzbhLQWik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDyqwO/dJMcabjZedc/IT1zUd41VvFQTHzbhLQWik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDyqwO/dJMcabjZedc/IT1zUd41VvFQTHzbhLQWik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDyqwO%2FdJMcabjZedc%2FIT1zUd41VvFQTHzbhLQWik%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;1507&quot; height=&quot;1108&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C_Time Series Forecasting 실행할 떄&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-18 172354.png&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deBIgG/dJMcahdo3qd/jrf1XBVAhOWmrLJUmlD5Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deBIgG/dJMcahdo3qd/jrf1XBVAhOWmrLJUmlD5Nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deBIgG/dJMcahdo3qd/jrf1XBVAhOWmrLJUmlD5Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeBIgG%2FdJMcahdo3qd%2Fjrf1XBVAhOWmrLJUmlD5Nk%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;505&quot; height=&quot;328&quot; data-filename=&quot;스크린샷 2026-05-18 172354.png&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그래서 CMD를 확인한 결과 &lt;span data-token-index=&quot;1&quot;&gt;Prophet가 설치가 안되어 있어서&lt;/span&gt;&lt;span data-token-index=&quot;1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779094502081&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install prophet&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 통해 prophet을 설치하니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;1101&quot; data-origin-height=&quot;906&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deAUqI/dJMcacJXyqs/ZuFCUzza3rDYIsd60AWKb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deAUqI/dJMcacJXyqs/ZuFCUzza3rDYIsd60AWKb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deAUqI/dJMcacJXyqs/ZuFCUzza3rDYIsd60AWKb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeAUqI%2FdJMcacJXyqs%2FZuFCUzza3rDYIsd60AWKb1%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;624&quot; height=&quot;513&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;906&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 작동됨!&lt;/p&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/43</guid>
      <comments>https://kodayi.tistory.com/43#entry43comment</comments>
      <pubDate>Mon, 18 May 2026 12:09:56 +0900</pubDate>
    </item>
    <item>
      <title>20260511 TIL</title>
      <link>https://kodayi.tistory.com/42</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 코드카타를 하면서 기본적인 코딩 역량을 키운다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 품질 경영 기사를 공부하면서 품질 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️코드 카타&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/42</guid>
      <comments>https://kodayi.tistory.com/42#entry42comment</comments>
      <pubDate>Mon, 11 May 2026 21:00:24 +0900</pubDate>
    </item>
    <item>
      <title>20260504 TIL</title>
      <link>https://kodayi.tistory.com/41</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;오늘의 목표&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 코드카타를 하면서 기본적인 코딩 역량을 키운다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 심화 프로젝트를 진행하면서 실무 역량을 키운다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;  TIL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️코드 카타&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❇️심화 프로젝트&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>TIL</category>
      <author>kodayi</author>
      <guid isPermaLink="true">https://kodayi.tistory.com/41</guid>
      <comments>https://kodayi.tistory.com/41#entry41comment</comments>
      <pubDate>Mon, 4 May 2026 10:02:40 +0900</pubDate>
    </item>
  </channel>
</rss>