<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>anscodus 님의 블로그</title>
    <link>https://anscodus.tistory.com/</link>
    <description>anscodus 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 28 Jul 2026 03:17:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>anscodus</managingEditor>
    <item>
      <title>[내일배움캠프] 본캠프 7/27</title>
      <link>https://anscodus.tistory.com/104</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;대시보드 검토&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일은 n8n 복습해얃;&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/104</guid>
      <comments>https://anscodus.tistory.com/104#entry104comment</comments>
      <pubDate>Mon, 27 Jul 2026 21:02:56 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/24</title>
      <link>https://anscodus.tistory.com/103</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 한 일&lt;/p&gt;
&lt;h1&gt;개인 모델에 등급(상/중/하) 분류 적용해보기 &amp;mdash; 검토 보고서&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;0. 이 문서의 성격&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 보고서는 **개인적으로 손보던 모델(16번/17번 실험, LOT+캐비티+시간 lag 피처 기반 LightGBM 모델)**에, 팀원이 노션에 제안한 &lt;b&gt;&quot;등급(상/중/하) 분류&quot;라는 아이디어를 개인적으로 적용해본 결과&lt;/b&gt;를 정리한 것이다.&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;b&gt;개인 모델&lt;/b&gt; 기준이며, 팀원이 실제로 만든 등급 분류 모델이나 팀원의 실제 데이터를 사용한 것이 아니다.&lt;/li&gt;
&lt;li&gt;따라서 이 결과를 &quot;등급 분류 방식 자체가 틀렸다&quot;거나 &quot;팀원의 접근이 잘못됐다&quot;는 절대적 판정으로 읽으면 안 된다. 어디까지나 &lt;b&gt;개인 모델에 그 아이디어를 얹어보니 이런 패턴이 나오더라는 참고 자료&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;1. 배경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 모델로 LOT의 정확한 불량률(%)을 직접 맞히려는 시도는 R&amp;sup2;=-0.03으로 신뢰하기 어려운 수준이었다(이 부분은 팀원 쪽 실험에서 먼저 확인됨). 그래서 &quot;정확한 숫자&quot; 대신 &quot;상대적 등급(상/중/하)&quot;으로 목표를 낮추자는 아이디어가 나왔고, 팀원이 이에 대한 1차 결과와 함께 다음 체크리스트를 노션에 남겼다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3등분(tertile) 방식이 적절한가&lt;/li&gt;
&lt;li&gt;등급 개수가 3개로 충분한가&lt;/li&gt;
&lt;li&gt;경계선 근처 LOT의 처리 방식&lt;/li&gt;
&lt;li&gt;등급 기준의 갱신 주기&lt;/li&gt;
&lt;li&gt;설비별로 등급 기준을 따로 둘지&lt;/li&gt;
&lt;li&gt;위험한 방향 오판의 원인 추적&lt;/li&gt;
&lt;li&gt;경계 근처 LOT &quot;애매함 표시&quot;&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준 재검토&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;2. 검증 1 &amp;mdash; 등급 경계값을 어떻게 정할지 (test 자체분포 vs train 고정)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원 코드를 살펴보니, 등급 경계값(상/중/하를 가르는 기준)을 &lt;b&gt;test 데이터 자체의 분포&lt;/b&gt;로 매번 다시 나누고 있었다. 이 경우 시간이 지나며 불량률이 계속 오르는 drift 문제가 있어도, test 안에서는 항상 상/중/하가 억지로 균등하게 나뉘어버려 문제가 가려질 수 있다.&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;b&gt;방법 A&lt;/b&gt;: test 자체 분포로 등급 경계값을 매번 다시 계산 (팀원 코드 방식 재현)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;방법 B&lt;/b&gt;: train(안정적인 시기) 분포로 경계값을 한 번 고정한 뒤, 그 경계값을 그대로 test에 적용 (실제 배포 상황에 더 가까운 방식)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;등급분류_검증_시각자료(1).png&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;1298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IIOTH/dJMcabE0G4j/fvwvIPkToTyyPOrHpqsKF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IIOTH/dJMcabE0G4j/fvwvIPkToTyyPOrHpqsKF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IIOTH/dJMcabE0G4j/fvwvIPkToTyyPOrHpqsKF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIIOTH%2FdJMcabE0G4j%2FfvwvIPkToTyyPOrHpqsKF1%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;1590&quot; height=&quot;1298&quot; data-filename=&quot;등급분류_검증_시각자료(1).png&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;1298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(위 그림 ①②: 방법 A/B의 실제등급&amp;times;예측등급 교차표. ③: 통합 vs 설비별 3등분 비교. ④: 설비별 평균 불량률. ⑤⑥: 설비별&amp;middot;시기별 위험 오판 비율 &amp;mdash; 아래에서 이어서 설명)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: 방법 A는 일치율 48.3%가 나왔지만, 방법 B로 정직하게 보면 test 실제등급의 87%가 &quot;하&quot;로 쏠려버렸다. 이 상태에서는 &quot;무조건 하라고 찍기&quot;만 해도 87.4%가 맞는데, 개인 모델의 일치율은 79.7%로 오히려 이 무성의한 기준보다 낮았다. 등급으로 바꿔도 원래 있던 drift 문제(F1 착시)가 똑같이 숨어있었다는 뜻이다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 검증 2 &amp;mdash; 통합 기준 vs 설비별 기준&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크리스트의 &quot;설비별로 등급 기준을 따로 둘지&quot; 항목을 확인해봤다. 설비마다 원래 불량률 수준이 다르니(위 그림 ④, F02 0.648~E05 0.899) 설비별로 각자 3등분하면 더 나아지지 않을까 하는 가설이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: 오히려 살짝 나빠졌다(통합 48.3% vs 설비별 45.7%). 설비별로 나누면 설비당 LOT 수가 줄어 경계값 추정 자체가 불안정해지는 게 원인으로 보인다. 직관과는 다른 결과였다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 검증 3 &amp;mdash; 위험한 오판이 특정 설비&amp;middot;시기에 몰려있는가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;실제로는 불량이 많은데(하) 모델이 양호(상)라고 잘못 판단한&quot; 가장 위험한 오판 케이스를 설비별&amp;middot;시기별로 쪼개봤다(위 그림 ⑤⑥).&lt;/p&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;: E08(39.3%), E06(30.8%), F01(30.0%)에서 위험 오판이 잦았다. 의외로 그동안 계속 &quot;예측이 어려운 설비&quot;로 꼽히던 E07은 21.2%로 중간 수준이었다 &amp;mdash; &quot;전체적으로 맞히기 어려운 것&quot;과 &quot;위험한 방향으로 착각하는 것&quot;은 다른 문제일 수 있다는 뜻이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시기별&lt;/b&gt;: 다들 나빠지는 급등기(10.0%)보다, 오히려 상황이 애매하게 바뀌던 확대기(21.2%)와 진정기(26.6%)에서 위험 오판이 더 많았다.&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. 검증 4 &amp;mdash; 등급 개수를 2~5단계로 바꿔보면&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크리스트의 &quot;등급 개수가 3개로 충분한가&quot;를 확인하기 위해, train 고정 경계값 방식(방법 B와 동일한 방식)을 그대로 두고 등급 수만 2/3/4/5로 바꿔봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등급수 일치율 trivial baseline 차이&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;등급개수_비교_시각자료.png&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E2m8D/dJMcafHvT2X/BT0v7TH7pBkkNCUFMNVwkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E2m8D/dJMcafHvT2X/BT0v7TH7pBkkNCUFMNVwkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E2m8D/dJMcafHvT2X/BT0v7TH7pBkkNCUFMNVwkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE2m8D%2FdJMcafHvT2X%2FBT0v7TH7pBkkNCUFMNVwkk%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;1186&quot; height=&quot;736&quot; data-filename=&quot;등급개수_비교_시각자료.png&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;92.4%&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;-1.4%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;68.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;-13.5%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;59.3%&lt;/td&gt;
&lt;td&gt;78.2%&lt;/td&gt;
&lt;td&gt;-18.9%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: 등급 개수와 상관없이 전 구간에서 개인 모델이 trivial baseline보다 낮았고, 등급을 세분화할수록 격차가 더 벌어졌다. (참고: 등급 수가 늘수록 &quot;가장 위험한 오판&quot; 비율 자체는 줄어드는데, 이건 모델이 안전해진 게 아니라 등급이 많아지면 양 극단을 오갈 확률 자체가 통계적으로 낮아지기 때문이니 착각하면 안 된다.)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 검증 5 &amp;mdash; 등급 경계값을 어떤 시점 기준으로 잡을지&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크리스트의 &quot;등급 기준 갱신 주기&quot;를 확인하기 위해, 등급 수는 3(상/중/하)으로 고정하고 경계값을 잡는 시점 기준 4가지를 비교했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방식 일치율 trivial 차이&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;경계값_방식_비교_시각자료.png&quot; data-origin-width=&quot;2221&quot; data-origin-height=&quot;807&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WI8UL/dJMcaftTYAu/0PArKr9H1XMcSFAYNc0Ok0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WI8UL/dJMcaftTYAu/0PArKr9H1XMcSFAYNc0Ok0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WI8UL/dJMcaftTYAu/0PArKr9H1XMcSFAYNc0Ok0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWI8UL%2FdJMcaftTYAu%2F0PArKr9H1XMcSFAYNc0Ok0%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;2221&quot; height=&quot;807&quot; data-filename=&quot;경계값_방식_비교_시각자료.png&quot; data-origin-width=&quot;2221&quot; data-origin-height=&quot;807&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;① test 자체분포 (참고용, 실제 배포 불가능)&lt;/td&gt;
&lt;td&gt;48.3%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;+12.3%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② train 전체(7~12월) 고정&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ train 최근 8주만 고정&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;&lt;b&gt;-18.5%p (최악)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ rolling 정기갱신(2주마다)&lt;/td&gt;
&lt;td&gt;76.5%&lt;/td&gt;
&lt;td&gt;84.7%&lt;/td&gt;
&lt;td&gt;-8.2%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: 실제 배포 가능한 세 방식(②③④) 모두 trivial baseline을 못 이겼다. 특히 &quot;최근 데이터만 쓰면 더 낫지 않을까&quot;라는 직관과 반대로 ③번이 가장 나빴다(표본이 줄어 경계값이 불안정해진 것으로 추정). 자주 갱신하는 ④번도 ②번과 별 차이가 없었다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 종합 (개인적인 해석)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검증 1~5를 종합하면, 개인 모델 기준으로는 &lt;b&gt;&quot;경계값을 어느 시점 기준으로 잡을지&quot;나 &quot;등급을 몇 개로 나눌지&quot;를 조정하는 것만으로는 문제가 해결되지 않는다&lt;/b&gt;는 패턴이 계속 반복됐다. 등급 분류라는 방향 자체가 틀렸다기보다는, test 기간 자체의 분포가 과거 어느 시점을 기준으로 봐도 심하게 쏠려있다는 근본 문제(그동안 계속 확인해온 drift 문제)가 등급 분류에도 그대로 이어지는 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 어디까지나 &lt;b&gt;개인 모델의 현재 피처 구성과 평가 방식 안에서 나온 패턴&lt;/b&gt;이라, 팀원의 실제 모델이나 다른 피처 구성에서는 다르게 나올 수 있다. &quot;이 방향은 개인적으로 이렇게 해봤더니 이런 한계가 보이더라&quot; 정도로 팀 논의에 참고자료로 보태는 게 맞을 것 같다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;8. 한계 및 유의사항&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 결과는 개인 모델(LOT_plus_TIME_lag + LightGBM, 16_step3_train/test.csv)의 예측값 기준이며, 팀원의 실제 등급분류 모델/데이터로는 검증되지 않았다.&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준(5개)은 그대로 두고 진행했다 &amp;mdash; 이 기준 자체의 민감도는 아직 확인 전이다.&lt;/li&gt;
&lt;li&gt;일부 구간(예: 안정기 breakdown, n=10)은 표본이 작아 통계적으로 불안정할 수 있다.&lt;/li&gt;
&lt;li&gt;&quot;3등분 vs 절대 기준선(현업 품질 기준)&quot; 항목은 실제 공차/관리한계 정보가 없어 이번 검증에서 다루지 못했다.&lt;/li&gt;
&lt;/ul&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;지금까지 시도한 &quot;누적형&quot; rolling(train+지금까지의 test 전체)이 아니라, &lt;b&gt;고정폭으로 계속 옮겨가는 국지적 이동창&lt;/b&gt; 방식은 아직 안 해봤다.&lt;/li&gt;
&lt;li&gt;등급/수치 예측 계열은 한계가 반복 확인된 만큼, 팀원의 ARMA+CUSUM 조기경보 아이디어를 개인 모델에 결합해보는 방향도 고려해볼 만하다.&lt;/li&gt;
&lt;li&gt;&quot;왜 불량률이 그렇게 올랐는지&quot;(설비 재정비 여부 등)에 대한 근본 원인 확인이 여전히 남아있다 &amp;mdash; 이게 해결되지 않으면 어떤 모델링 방식을 쓰든 같은 벽에 부딪힐 가능성이 있다.
&lt;h1&gt;개인 모델에 등급(상/중/하) 분류 적용해보기 &amp;mdash; 검토 보고서&lt;/h1&gt;
0. 이 문서의 성격 (먼저 읽어주세요)몇 가지 분명히 해둘 점이 있다.
&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;li&gt;따라서 이 결과를 &quot;등급 분류 방식 자체가 틀렸다&quot;거나 &quot;팀원의 접근이 잘못됐다&quot;는 절대적 판정으로 읽으면 안 된다. 어디까지나 &lt;b&gt;개인 모델에 그 아이디어를 얹어보니 이런 패턴이 나오더라는 참고 자료&lt;/b&gt;다.&lt;/li&gt;
&lt;li&gt;목적은 팀 논의(특히 팀원이 정리한 체크리스트)에 참고할 만한 실험 결과를 보태는 것이지, 결론을 대신 내리는 것이 아니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;1. 배경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3등분(tertile) 방식이 적절한가&lt;/li&gt;
&lt;li&gt;등급 개수가 3개로 충분한가&lt;/li&gt;
&lt;li&gt;경계선 근처 LOT의 처리 방식&lt;/li&gt;
&lt;li&gt;등급 기준의 갱신 주기&lt;/li&gt;
&lt;li&gt;설비별로 등급 기준을 따로 둘지&lt;/li&gt;
&lt;li&gt;위험한 방향 오판의 원인 추적&lt;/li&gt;
&lt;li&gt;경계 근처 LOT &quot;애매함 표시&quot;&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준 재검토&lt;/li&gt;
&lt;/ul&gt;
이 체크리스트 중 개인 모델로 바로 실험해볼 수 있는 항목들을 하나씩 확인해봤다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;2. 검증 1 &amp;mdash; 등급 경계값을 어떻게 정할지 (test 자체분포 vs train 고정)그래서 개인 모델로 두 가지 방식을 비교해봤다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법 A&lt;/b&gt;: test 자체 분포로 등급 경계값을 매번 다시 계산 (팀원 코드 방식 재현)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;방법 B&lt;/b&gt;: train(안정적인 시기) 분포로 경계값을 한 번 고정한 뒤, 그 경계값을 그대로 test에 적용 (실제 배포 상황에 더 가까운 방식)&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1784893344007_0&quot; src=&quot;https://claude.ai/cowork/output/%EB%93%B1%EA%B8%89%EB%B6%84%EB%A5%98_%EA%B2%80%EC%A6%9D_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;3. 검증 2 &amp;mdash; 통합 기준 vs 설비별 기준&lt;b&gt;결과&lt;/b&gt;: 오히려 살짝 나빠졌다(통합 48.3% vs 설비별 45.7%). 설비별로 나누면 설비당 LOT 수가 줄어 경계값 추정 자체가 불안정해지는 게 원인으로 보인다. 직관과는 다른 결과였다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;4. 검증 3 &amp;mdash; 위험한 오판이 특정 설비&amp;middot;시기에 몰려있는가
&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;: E08(39.3%), E06(30.8%), F01(30.0%)에서 위험 오판이 잦았다. 의외로 그동안 계속 &quot;예측이 어려운 설비&quot;로 꼽히던 E07은 21.2%로 중간 수준이었다 &amp;mdash; &quot;전체적으로 맞히기 어려운 것&quot;과 &quot;위험한 방향으로 착각하는 것&quot;은 다른 문제일 수 있다는 뜻이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시기별&lt;/b&gt;: 다들 나빠지는 급등기(10.0%)보다, 오히려 상황이 애매하게 바뀌던 확대기(21.2%)와 진정기(26.6%)에서 위험 오판이 더 많았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;5. 검증 4 &amp;mdash; 등급 개수를 2~5단계로 바꿔보면&lt;img id=&quot;img_1784893344007_1&quot; src=&quot;https://claude.ai/cowork/output/%EB%93%B1%EA%B8%89%EA%B0%9C%EC%88%98_%EB%B9%84%EA%B5%90_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;등급수 일치율 trivial baseline 차이
&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;2&lt;/td&gt;
&lt;td&gt;92.4%&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;-1.4%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;68.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;-13.5%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;59.3%&lt;/td&gt;
&lt;td&gt;78.2%&lt;/td&gt;
&lt;td&gt;-18.9%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;결과&lt;/b&gt;: 등급 개수와 상관없이 전 구간에서 개인 모델이 trivial baseline보다 낮았고, 등급을 세분화할수록 격차가 더 벌어졌다. (참고: 등급 수가 늘수록 &quot;가장 위험한 오판&quot; 비율 자체는 줄어드는데, 이건 모델이 안전해진 게 아니라 등급이 많아지면 양 극단을 오갈 확률 자체가 통계적으로 낮아지기 때문이니 착각하면 안 된다.)&lt;hr data-ke-style=&quot;style1&quot; /&gt;6. 검증 5 &amp;mdash; 등급 경계값을 어떤 시점 기준으로 잡을지&lt;img id=&quot;img_1784893344009_2&quot; src=&quot;https://claude.ai/cowork/output/%EA%B2%BD%EA%B3%84%EA%B0%92_%EB%B0%A9%EC%8B%9D_%EB%B9%84%EA%B5%90_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;방식 일치율 trivial 차이
&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;① test 자체분포 (참고용, 실제 배포 불가능)&lt;/td&gt;
&lt;td&gt;48.3%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;+12.3%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② train 전체(7~12월) 고정&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ train 최근 8주만 고정&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;&lt;b&gt;-18.5%p (최악)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ rolling 정기갱신(2주마다)&lt;/td&gt;
&lt;td&gt;76.5%&lt;/td&gt;
&lt;td&gt;84.7%&lt;/td&gt;
&lt;td&gt;-8.2%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;결과&lt;/b&gt;: 실제 배포 가능한 세 방식(②③④) 모두 trivial baseline을 못 이겼다. 특히 &quot;최근 데이터만 쓰면 더 낫지 않을까&quot;라는 직관과 반대로 ③번이 가장 나빴다(표본이 줄어 경계값이 불안정해진 것으로 추정). 자주 갱신하는 ④번도 ②번과 별 차이가 없었다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;7. 종합 (개인적인 해석)이건 어디까지나 &lt;b&gt;개인 모델의 현재 피처 구성과 평가 방식 안에서 나온 패턴&lt;/b&gt;이라, 팀원의 실제 모델이나 다른 피처 구성에서는 다르게 나올 수 있다. &quot;이 방향은 개인적으로 이렇게 해봤더니 이런 한계가 보이더라&quot; 정도로 팀 논의에 참고자료로 보태는 게 맞을 것 같다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;8. 한계 및 유의사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 결과는 개인 모델(LOT_plus_TIME_lag + LightGBM, 16_step3_train/test.csv)의 예측값 기준이며, 팀원의 실제 등급분류 모델/데이터로는 검증되지 않았다.&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준(5개)은 그대로 두고 진행했다 &amp;mdash; 이 기준 자체의 민감도는 아직 확인 전이다.&lt;/li&gt;
&lt;li&gt;일부 구간(예: 안정기 breakdown, n=10)은 표본이 작아 통계적으로 불안정할 수 있다.&lt;/li&gt;
&lt;li&gt;&quot;3등분 vs 절대 기준선(현업 품질 기준)&quot; 항목은 실제 공차/관리한계 정보가 없어 이번 검증에서 다루지 못했다.&lt;/li&gt;
&lt;/ul&gt;
9. 다음으로 고려해볼 만한 것 (개인 의견)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금까지 시도한 &quot;누적형&quot; rolling(train+지금까지의 test 전체)이 아니라, &lt;b&gt;고정폭으로 계속 옮겨가는 국지적 이동창&lt;/b&gt; 방식은 아직 안 해봤다.&lt;/li&gt;
&lt;li&gt;등급/수치 예측 계열은 한계가 반복 확인된 만큼, 팀원의 ARMA+CUSUM 조기경보 아이디어를 개인 모델에 결합해보는 방향도 고려해볼 만하다.&lt;/li&gt;
&lt;li&gt;&quot;왜 불량률이 그렇게 올랐는지&quot;(설비 재정비 여부 등)에 대한 근본 원인 확인이 여전히 남아있다 &amp;mdash; 이게 해결되지 않으면 어떤 모델링 방식을 쓰든 같은 벽에 부딪힐 가능성이 있다.
&lt;h1&gt;개인 모델에 등급(상/중/하) 분류 적용해보기 &amp;mdash; 검토 보고서&lt;/h1&gt;
0. 이 문서의 성격 (먼저 읽어주세요)몇 가지 분명히 해둘 점이 있다.
&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;li&gt;따라서 이 결과를 &quot;등급 분류 방식 자체가 틀렸다&quot;거나 &quot;팀원의 접근이 잘못됐다&quot;는 절대적 판정으로 읽으면 안 된다. 어디까지나 &lt;b&gt;개인 모델에 그 아이디어를 얹어보니 이런 패턴이 나오더라는 참고 자료&lt;/b&gt;다.&lt;/li&gt;
&lt;li&gt;목적은 팀 논의(특히 팀원이 정리한 체크리스트)에 참고할 만한 실험 결과를 보태는 것이지, 결론을 대신 내리는 것이 아니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;1. 배경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3등분(tertile) 방식이 적절한가&lt;/li&gt;
&lt;li&gt;등급 개수가 3개로 충분한가&lt;/li&gt;
&lt;li&gt;경계선 근처 LOT의 처리 방식&lt;/li&gt;
&lt;li&gt;등급 기준의 갱신 주기&lt;/li&gt;
&lt;li&gt;설비별로 등급 기준을 따로 둘지&lt;/li&gt;
&lt;li&gt;위험한 방향 오판의 원인 추적&lt;/li&gt;
&lt;li&gt;경계 근처 LOT &quot;애매함 표시&quot;&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준 재검토&lt;/li&gt;
&lt;/ul&gt;
이 체크리스트 중 개인 모델로 바로 실험해볼 수 있는 항목들을 하나씩 확인해봤다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;2. 검증 1 &amp;mdash; 등급 경계값을 어떻게 정할지 (test 자체분포 vs train 고정)그래서 개인 모델로 두 가지 방식을 비교해봤다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법 A&lt;/b&gt;: test 자체 분포로 등급 경계값을 매번 다시 계산 (팀원 코드 방식 재현)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;방법 B&lt;/b&gt;: train(안정적인 시기) 분포로 경계값을 한 번 고정한 뒤, 그 경계값을 그대로 test에 적용 (실제 배포 상황에 더 가까운 방식)&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1784893344007_0&quot; src=&quot;https://claude.ai/cowork/output/%EB%93%B1%EA%B8%89%EB%B6%84%EB%A5%98_%EA%B2%80%EC%A6%9D_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;3. 검증 2 &amp;mdash; 통합 기준 vs 설비별 기준&lt;b&gt;결과&lt;/b&gt;: 오히려 살짝 나빠졌다(통합 48.3% vs 설비별 45.7%). 설비별로 나누면 설비당 LOT 수가 줄어 경계값 추정 자체가 불안정해지는 게 원인으로 보인다. 직관과는 다른 결과였다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;4. 검증 3 &amp;mdash; 위험한 오판이 특정 설비&amp;middot;시기에 몰려있는가
&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;: E08(39.3%), E06(30.8%), F01(30.0%)에서 위험 오판이 잦았다. 의외로 그동안 계속 &quot;예측이 어려운 설비&quot;로 꼽히던 E07은 21.2%로 중간 수준이었다 &amp;mdash; &quot;전체적으로 맞히기 어려운 것&quot;과 &quot;위험한 방향으로 착각하는 것&quot;은 다른 문제일 수 있다는 뜻이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시기별&lt;/b&gt;: 다들 나빠지는 급등기(10.0%)보다, 오히려 상황이 애매하게 바뀌던 확대기(21.2%)와 진정기(26.6%)에서 위험 오판이 더 많았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;5. 검증 4 &amp;mdash; 등급 개수를 2~5단계로 바꿔보면&lt;img id=&quot;img_1784893344007_1&quot; src=&quot;https://claude.ai/cowork/output/%EB%93%B1%EA%B8%89%EA%B0%9C%EC%88%98_%EB%B9%84%EA%B5%90_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;등급수 일치율 trivial baseline 차이
&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;2&lt;/td&gt;
&lt;td&gt;92.4%&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;-1.4%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;68.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;-13.5%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;59.3%&lt;/td&gt;
&lt;td&gt;78.2%&lt;/td&gt;
&lt;td&gt;-18.9%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;결과&lt;/b&gt;: 등급 개수와 상관없이 전 구간에서 개인 모델이 trivial baseline보다 낮았고, 등급을 세분화할수록 격차가 더 벌어졌다. (참고: 등급 수가 늘수록 &quot;가장 위험한 오판&quot; 비율 자체는 줄어드는데, 이건 모델이 안전해진 게 아니라 등급이 많아지면 양 극단을 오갈 확률 자체가 통계적으로 낮아지기 때문이니 착각하면 안 된다.)&lt;hr data-ke-style=&quot;style1&quot; /&gt;6. 검증 5 &amp;mdash; 등급 경계값을 어떤 시점 기준으로 잡을지&lt;img id=&quot;img_1784893344009_2&quot; src=&quot;https://claude.ai/cowork/output/%EA%B2%BD%EA%B3%84%EA%B0%92_%EB%B0%A9%EC%8B%9D_%EB%B9%84%EA%B5%90_%EC%8B%9C%EA%B0%81%EC%9E%90%EB%A3%8C.png&quot; /&gt;방식 일치율 trivial 차이
&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;① test 자체분포 (참고용, 실제 배포 불가능)&lt;/td&gt;
&lt;td&gt;48.3%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;+12.3%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② train 전체(7~12월) 고정&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;87.4%&lt;/td&gt;
&lt;td&gt;-7.7%p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ train 최근 8주만 고정&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;td&gt;82.1%&lt;/td&gt;
&lt;td&gt;&lt;b&gt;-18.5%p (최악)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ rolling 정기갱신(2주마다)&lt;/td&gt;
&lt;td&gt;76.5%&lt;/td&gt;
&lt;td&gt;84.7%&lt;/td&gt;
&lt;td&gt;-8.2%p&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;결과&lt;/b&gt;: 실제 배포 가능한 세 방식(②③④) 모두 trivial baseline을 못 이겼다. 특히 &quot;최근 데이터만 쓰면 더 낫지 않을까&quot;라는 직관과 반대로 ③번이 가장 나빴다(표본이 줄어 경계값이 불안정해진 것으로 추정). 자주 갱신하는 ④번도 ②번과 별 차이가 없었다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;7. 종합 (개인적인 해석)이건 어디까지나 &lt;b&gt;개인 모델의 현재 피처 구성과 평가 방식 안에서 나온 패턴&lt;/b&gt;이라, 팀원의 실제 모델이나 다른 피처 구성에서는 다르게 나올 수 있다. &quot;이 방향은 개인적으로 이렇게 해봤더니 이런 한계가 보이더라&quot; 정도로 팀 논의에 참고자료로 보태는 게 맞을 것 같다.&lt;hr data-ke-style=&quot;style1&quot; /&gt;8. 한계 및 유의사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 결과는 개인 모델(LOT_plus_TIME_lag + LightGBM, 16_step3_train/test.csv)의 예측값 기준이며, 팀원의 실제 등급분류 모델/데이터로는 검증되지 않았다.&lt;/li&gt;
&lt;li&gt;최소 LOT 샷수 기준(5개)은 그대로 두고 진행했다 &amp;mdash; 이 기준 자체의 민감도는 아직 확인 전이다.&lt;/li&gt;
&lt;li&gt;일부 구간(예: 안정기 breakdown, n=10)은 표본이 작아 통계적으로 불안정할 수 있다.&lt;/li&gt;
&lt;li&gt;&quot;3등분 vs 절대 기준선(현업 품질 기준)&quot; 항목은 실제 공차/관리한계 정보가 없어 이번 검증에서 다루지 못했다.&lt;/li&gt;
&lt;/ul&gt;
9. 다음으로 고려해볼 만한 것 (개인 의견)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금까지 시도한 &quot;누적형&quot; rolling(train+지금까지의 test 전체)이 아니라, &lt;b&gt;고정폭으로 계속 옮겨가는 국지적 이동창&lt;/b&gt; 방식은 아직 안 해봤다.&lt;/li&gt;
&lt;li&gt;등급/수치 예측 계열은 한계가 반복 확인된 만큼, 팀원의 ARMA+CUSUM 조기경보 아이디어를 개인 모델에 결합해보는 방향도 고려해볼 만하다.&lt;/li&gt;
&lt;li&gt;&quot;왜 불량률이 그렇게 올랐는지&quot;(설비 재정비 여부 등)에 대한 근본 원인 확인이 여전히 남아있다 &amp;mdash; 이게 해결되지 않으면 어떤 모델링 방식을 쓰든 같은 벽에 부딪힐 가능성이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검증 1~5를 종합하면, 개인 모델 기준으로는 &lt;b&gt;&quot;경계값을 어느 시점 기준으로 잡을지&quot;나 &quot;등급을 몇 개로 나눌지&quot;를 조정하는 것만으로는 문제가 해결되지 않는다&lt;/b&gt;는 패턴이 계속 반복됐다. 등급 분류라는 방향 자체가 틀렸다기보다는, test 기간 자체의 분포가 과거 어느 시점을 기준으로 봐도 심하게 쏠려있다는 근본 문제(그동안 계속 확인해온 drift 문제)가 등급 분류에도 그대로 이어지는 것으로 보인다.&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;등급 기준 갱신 주기&quot;를 확인하기 위해, 등급 수는 3(상/중/하)으로 고정하고 경계값을 잡는 시점 기준 4가지를 비교했다.&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;등급 개수가 3개로 충분한가&quot;를 확인하기 위해, train 고정 경계값 방식(방법 B와 동일한 방식)을 그대로 두고 등급 수만 2/3/4/5로 바꿔봤다.&lt;/li&gt;
&lt;li&gt;&quot;실제로는 불량이 많은데(하) 모델이 양호(상)라고 잘못 판단한&quot; 가장 위험한 오판 케이스를 설비별&amp;middot;시기별로 쪼개봤다(위 그림 ⑤⑥).&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;설비별로 등급 기준을 따로 둘지&quot; 항목을 확인해봤다. 설비마다 원래 불량률 수준이 다르니(위 그림 ④, F02 0.648~E05 0.899) 설비별로 각자 3등분하면 더 나아지지 않을까 하는 가설이었다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: 방법 A는 일치율 48.3%가 나왔지만, 방법 B로 정직하게 보면 test 실제등급의 87%가 &quot;하&quot;로 쏠려버렸다. 이 상태에서는 &quot;무조건 하라고 찍기&quot;만 해도 87.4%가 맞는데, 개인 모델의 일치율은 79.7%로 오히려 이 무성의한 기준보다 낮았다. 등급으로 바꿔도 원래 있던 drift 문제(F1 착시)가 똑같이 숨어있었다는 뜻이다.&lt;/li&gt;
&lt;li&gt;(위 그림 ①②: 방법 A/B의 실제등급&amp;times;예측등급 교차표. ③: 통합 vs 설비별 3등분 비교. ④: 설비별 평균 불량률. ⑤⑥: 설비별&amp;middot;시기별 위험 오판 비율 &amp;mdash; 아래에서 이어서 설명)&lt;/li&gt;
&lt;li&gt;팀원 코드를 살펴보니, 등급 경계값(상/중/하를 가르는 기준)을 &lt;b&gt;test 데이터 자체의 분포&lt;/b&gt;로 매번 다시 나누고 있었다. 이 경우 시간이 지나며 불량률이 계속 오르는 drift 문제가 있어도, test 안에서는 항상 상/중/하가 억지로 균등하게 나뉘어버려 문제가 가려질 수 있다.&lt;/li&gt;
&lt;li&gt;개인 모델로 LOT의 정확한 불량률(%)을 직접 맞히려는 시도는 R&amp;sup2;=-0.03으로 신뢰하기 어려운 수준이었다(이 부분은 팀원 쪽 실험에서 먼저 확인됨). 그래서 &quot;정확한 숫자&quot; 대신 &quot;상대적 등급(상/중/하)&quot;으로 목표를 낮추자는 아이디어가 나왔고, 팀원이 이에 대한 1차 결과와 함께 다음 체크리스트를 노션에 남겼다.&lt;/li&gt;
&lt;li&gt;이 보고서는 **개인적으로 손보던 모델(16번/17번 실험, LOT+캐비티+시간 lag 피처 기반 LightGBM 모델)**에, 팀원이 노션에 제안한 &lt;b&gt;&quot;등급(상/중/하) 분류&quot;라는 아이디어를 개인적으로 적용해본 결과&lt;/b&gt;를 정리한 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검증 1~5를 종합하면, 개인 모델 기준으로는 &lt;b&gt;&quot;경계값을 어느 시점 기준으로 잡을지&quot;나 &quot;등급을 몇 개로 나눌지&quot;를 조정하는 것만으로는 문제가 해결되지 않는다&lt;/b&gt;는 패턴이 계속 반복됐다. 등급 분류라는 방향 자체가 틀렸다기보다는, test 기간 자체의 분포가 과거 어느 시점을 기준으로 봐도 심하게 쏠려있다는 근본 문제(그동안 계속 확인해온 drift 문제)가 등급 분류에도 그대로 이어지는 것으로 보인다.&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;등급 기준 갱신 주기&quot;를 확인하기 위해, 등급 수는 3(상/중/하)으로 고정하고 경계값을 잡는 시점 기준 4가지를 비교했다.&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;등급 개수가 3개로 충분한가&quot;를 확인하기 위해, train 고정 경계값 방식(방법 B와 동일한 방식)을 그대로 두고 등급 수만 2/3/4/5로 바꿔봤다.&lt;/li&gt;
&lt;li&gt;&quot;실제로는 불량이 많은데(하) 모델이 양호(상)라고 잘못 판단한&quot; 가장 위험한 오판 케이스를 설비별&amp;middot;시기별로 쪼개봤다(위 그림 ⑤⑥).&lt;/li&gt;
&lt;li&gt;체크리스트의 &quot;설비별로 등급 기준을 따로 둘지&quot; 항목을 확인해봤다. 설비마다 원래 불량률 수준이 다르니(위 그림 ④, F02 0.648~E05 0.899) 설비별로 각자 3등분하면 더 나아지지 않을까 하는 가설이었다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: 방법 A는 일치율 48.3%가 나왔지만, 방법 B로 정직하게 보면 test 실제등급의 87%가 &quot;하&quot;로 쏠려버렸다. 이 상태에서는 &quot;무조건 하라고 찍기&quot;만 해도 87.4%가 맞는데, 개인 모델의 일치율은 79.7%로 오히려 이 무성의한 기준보다 낮았다. 등급으로 바꿔도 원래 있던 drift 문제(F1 착시)가 똑같이 숨어있었다는 뜻이다.&lt;/li&gt;
&lt;li&gt;(위 그림 ①②: 방법 A/B의 실제등급&amp;times;예측등급 교차표. ③: 통합 vs 설비별 3등분 비교. ④: 설비별 평균 불량률. ⑤⑥: 설비별&amp;middot;시기별 위험 오판 비율 &amp;mdash; 아래에서 이어서 설명)&lt;/li&gt;
&lt;li&gt;팀원 코드를 살펴보니, 등급 경계값(상/중/하를 가르는 기준)을 &lt;b&gt;test 데이터 자체의 분포&lt;/b&gt;로 매번 다시 나누고 있었다. 이 경우 시간이 지나며 불량률이 계속 오르는 drift 문제가 있어도, test 안에서는 항상 상/중/하가 억지로 균등하게 나뉘어버려 문제가 가려질 수 있다.&lt;/li&gt;
&lt;li&gt;개인 모델로 LOT의 정확한 불량률(%)을 직접 맞히려는 시도는 R&amp;sup2;=-0.03으로 신뢰하기 어려운 수준이었다(이 부분은 팀원 쪽 실험에서 먼저 확인됨). 그래서 &quot;정확한 숫자&quot; 대신 &quot;상대적 등급(상/중/하)&quot;으로 목표를 낮추자는 아이디어가 나왔고, 팀원이 이에 대한 1차 결과와 함께 다음 체크리스트를 노션에 남겼다.&lt;/li&gt;
&lt;li&gt;이 보고서는 **개인적으로 손보던 모델(16번/17번 실험, LOT+캐비티+시간 lag 피처 기반 LightGBM 모델)**에, 팀원이 노션에 제안한 &lt;b&gt;&quot;등급(상/중/하) 분류&quot;라는 아이디어를 개인적으로 적용해본 결과&lt;/b&gt;를 정리한 것이다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/103</guid>
      <comments>https://anscodus.tistory.com/103#entry103comment</comments>
      <pubDate>Fri, 24 Jul 2026 20:45:38 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/23</title>
      <link>https://anscodus.tistory.com/102</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 한 일&lt;/p&gt;
&lt;h1&gt;LOT/캐비티/설비 기반 불량 예측 모델 &amp;mdash; 팀 공유용 설명&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첨부 이미지 2개(16_17_성능요약_시각자료.png, 17_stepH_설비별_성능비교_시각자료.png)와 함께 보는 설명 문서입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;16_17_성능요약_시각자료.png&quot; data-origin-width=&quot;2363&quot; data-origin-height=&quot;1772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxjJBd/dJMcaasDbxV/MVndckCNMstPj1TMkB2ku0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxjJBd/dJMcaasDbxV/MVndckCNMstPj1TMkB2ku0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxjJBd/dJMcaasDbxV/MVndckCNMstPj1TMkB2ku0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxjJBd%2FdJMcaasDbxV%2FMVndckCNMstPj1TMkB2ku0%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;2363&quot; height=&quot;1772&quot; data-filename=&quot;16_17_성능요약_시각자료.png&quot; data-origin-width=&quot;2363&quot; data-origin-height=&quot;1772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;17_stepH_설비별_성능비교_시각자료.png&quot; data-origin-width=&quot;2373&quot; data-origin-height=&quot;1196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmng3I/dJMcafAGbHw/JDS9UwkZVNDKBy5Yc2t4lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmng3I/dJMcafAGbHw/JDS9UwkZVNDKBy5Yc2t4lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmng3I/dJMcafAGbHw/JDS9UwkZVNDKBy5Yc2t4lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmng3I%2FdJMcafAGbHw%2FJDS9UwkZVNDKBy5Yc2t4lk%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;2373&quot; height=&quot;1196&quot; data-filename=&quot;17_stepH_설비별_성능비교_시각자료.png&quot; data-origin-width=&quot;2373&quot; data-origin-height=&quot;1196&quot;/&gt;&lt;/span&gt;&lt;/figure&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;p data-ke-size=&quot;size16&quot;&gt;사출성형 공정에서 검사 결과(FAI)가 나오기까지 시간이 오래 걸려서, 그 전에 이미 알 수 있는 공정 조건값만으로 &quot;이번 배치(LOT)가 불량이 많이 나올 것 같다&quot;를 미리 예측하는 모델을 만드는 것이 목표입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 실험(shot 단위 baseline)에서는 F1 0.643 수준에서 성능이 정체돼 있었습니다. 이번 작업은 이 정체를 뚫기 위해 (1) 예측 단위를 바꾸고 (2) 캐비티&amp;middot;설비 정보를 구조적으로 반영하고 (3) 시간 흐름(drift) 문제를 다루는 세 방향으로 진행했습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 캐비티(cavity)를 어떻게 반영했는가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사출기 1대에는 캐비티(사출 노즐)가 4개 있고, 캐비티마다 불량 경향이 다릅니다. 이걸 모델에 반영한 방법은 다음과 같습니다.&lt;/p&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;: 제품 시리얼번호(SN, 예: DGMF28110991B+E05J3+B)를 +로 분리했을 때 두 번째 조각의 끝자리 숫자가 캐비티 번호입니다. 이 규칙으로 모든 shot에 캐비티 번호(1~4)를 붙였습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캐비티 키는 항상 &quot;설비+캐비티&quot; 조합으로 사용&lt;/b&gt;: 단순히 &quot;캐비티 1&quot;이라고만 하면 서로 다른 설비의 캐비티 1을 같은 것으로 취급하는 오류가 생기므로, 반드시 설비ID와 묶어서 하나의 캐비티로 취급했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캐비티별 정보를 두 종류의 피처로 반영&lt;/b&gt;:
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;LOT 단위로 집계할 때 캐비티별 불량률(cavity1~4_fail_rate)을 따로 계산&lt;/li&gt;
&lt;li&gt;&quot;직전 LOT의 캐비티별 불량률&quot;(prev_cavity1~4_fail_rate)과 &quot;최근 8시간 이내 같은 캐비티의 불량 현황&quot;(rolling_fail_rate_8h_..._cavity1~4) 같은 시간 기반 힌트도 캐비티별로 따로 만들었습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 캐비티 정보는 &quot;이 LOT이 어느 캐비티에서 나왔는지&quot; 자체를 넣은 게 아니라, &quot;그 캐비티가 최근에/직전에 얼마나 불량이 잦았는지&quot;라는 힌트로 녹여 넣은 것입니다. 이 힌트들이 실제로 feature importance 상위권을 계속 차지하는 것으로 확인됐습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 설비(MACH_ID)를 어떻게 반영했는가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;13개 설비(E05~E10, F01~F04, F06~F08)를 다루는 방식은 두 단계로 나뉩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;모델은 통합 1개로 운영&lt;/b&gt;: 설비별로 따로 모델을 만드는 방식(13개 모델)과 전체를 하나로 합친 통합 모델을 비교해봤는데, 통합 모델이 더 좋은 성능을 보였습니다(데이터가 적은 설비도 통합 학습의 이득을 봄). 그래서 최종적으로는 설비 구분 없이 하나의 모델을 씁니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가는 항상 설비별로 쪼개서 확인&lt;/b&gt;: 모델은 하나여도, &quot;그 모델이 설비마다 골고루 잘 맞는지&quot;는 반드시 따로따로 확인했습니다. 그 결과 설비 간 성능 편차가 매우 크다는 게 드러났고(잘 맞는 설비 AUROC 0.9+, 못 맞추는 설비 0.5 이하), 이 세부 내용이 두 번째 첨부 이미지의 핵심입니다.&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. Train/Test는 어떻게 나눴는가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 방식을 각각 실험했고, 둘 다 &lt;b&gt;랜덤으로 섞어서 나누지 않고 반드시 시간 순서를 지켜서&lt;/b&gt; 나눴습니다(미래 정보가 과거 예측에 섞이는 걸 막기 위함, 이를 &quot;leakage 방지&quot;라고 부릅니다).&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(1) 고정 분할 (기본 방식)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설비별로 LOT을 시간순 정렬한 뒤, 각 설비 안에서 앞의 70%를 학습(train), 다음 15%를 검증(val), 마지막 15%를 평가(test)로 나눴습니다. 설비마다 자기 자신의 타임라인 안에서 비율로 나누는 방식이라, 설비 간에 기간이 섞이지 않습니다. 이 방식으로 학습한 모델 하나를 계속 재사용해서 평가합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(2) Rolling 재학습 (추가 실험)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고정 분할과 별개로, &quot;실제 서비스에 적용했을 때&quot;를 흉내 내는 방식도 시도했습니다. 전체 기간(2025-07~2026-03)을 시간순으로 놓고,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최근 &lt;b&gt;8주치 데이터로 학습&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;그 바로 다음 &lt;b&gt;2주를 평가&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;그리고 학습/평가 구간을 통째로 &lt;b&gt;2주씩 뒤로 밀어서 반복&lt;/b&gt; (총 14회)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 &quot;지금까지 데이터로 학습해서 앞으로 몇 주를 예측하고, 시간이 지나면 최신 데이터를 더해 다시 학습&quot;하는 실제 운영 상황을 시뮬레이션하게 됩니다. 학습 구간끼리는 서로 겹치지만, 평가 구간은 항상 그 직전 학습 구간보다 미래 시점이라 규칙은 동일하게 지켜집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 방식 모두 &quot;불량이다/아니다&quot;를 가르는 기준선(threshold)은 고정 분할 실험에서 한 번 정한 값을 그대로 재사용해서, 나눌 때마다 기준이 바뀌는 일이 없도록 통제했습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 전체 진행 과정 (어떻게 여기까지 왔는가)&lt;/h2&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;: shot(개별 제품) 단위로 예측하니 F1 0.643에서 정체. 같은 조건에서도 절반은 양품/절반은 불량이 나오는 경우가 너무 많아 구조적 한계가 있었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;1차 개선&lt;/b&gt;: 예측 단위를 LOT(배치)으로 바꾸고, &quot;직전 LOT의 불량률&quot;이라는 힌트(lag 피처)를 추가 &amp;rarr; F1 0.756, AUROC 0.785로 개선.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2차 개선&lt;/b&gt;: &quot;직전 LOT&quot; 대신 &quot;같은 캐비티에서 최근 8시간 이내 있었던 일&quot;이라는 더 정교한 시간 기반 힌트를 추가 &amp;rarr; AUROC가 한 단계 더 개선.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제 발견&lt;/b&gt;: 그런데 성능 지표 중 F1을 자세히 보니, 이 기간 동안 불량률 자체가 계속 올라서(나중엔 90% 이상이 불량) &quot;무조건 불량이라 찍는&quot; 것과 점수 차이가 거의 없는 착시 현상을 발견했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원인 조사&lt;/b&gt;: 불량률 상승이 일직선이 아니라 &quot;잠잠한 시기 &amp;rarr; 서서히 불안정해지는 시기 &amp;rarr; 짧고 격렬한 급등기 &amp;rarr; 진정기&quot;의 4단계였고, 원인은 평균값 변화가 아니라 조건값의 변동성(산포) 확대였다는 걸 확인했습니다. (사내에서 들었다는 &quot;설비 재정비&quot; 얘기는 데이터로 교차 확인했지만 확정할 근거는 못 찾았습니다 &amp;mdash; 참고 정도로만 남겨뒀습니다.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중요한 경고 발견&lt;/b&gt;: &quot;잠잠한 시기 데이터로 학습한 모델을 격변기에 테스트하면 어떻게 되는가&quot;를 실제로 해봤더니 완전히 무너지는 것을 확인했습니다. 정교한 시간 분할이나 피처 추가만으로는 이 문제가 해결되지 않는다는 것도 확인했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대응&lt;/b&gt;: 레짐(4단계)별로 성능을 따로 보고하도록 평가 방식을 바꾸고, 위에서 설명한 rolling 재학습 방식을 도입해 비교했습니다. 또한 &quot;조기경보성 피처&quot;(값이 흔들리면 미리 알려주는 신호)도 시도했지만 전체적으로는 효과가 미미했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;설비별 세부 확인(Phase H)&lt;/b&gt;: 마지막으로 이 모든 결과를 설비별로 쪼개봤더니, 두 번째 첨부 이미지에 담긴 결과가 나왔습니다 &amp;mdash; 특정 설비(F02)는 rolling 재학습에서 오히려 1등으로 뒤집혔고, 특정 설비(E07)는 어떤 방식으로도 계속 약했으며, 조기경보 피처는 한 설비(F08)에서만 뚜렷한 효과가 있었습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 첨부 이미지 보는 법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;16_17_성능요약_시각자료.png&lt;/b&gt; (전체 요약, 4분할)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;① 피처 조합 &amp;times; 알고리즘별 AUROC 히트맵 &amp;mdash; 어떤 조합이 가장 좋았는지&lt;/li&gt;
&lt;li&gt;② 설비별 AUROC &amp;mdash; 설비 간 편차 확인&lt;/li&gt;
&lt;li&gt;③ 레짐(4단계)별 AUROC와 F1 착시 여부 &amp;mdash; 착시가 특정 시기만의 문제가 아니라는 것&lt;/li&gt;
&lt;li&gt;④ Rolling 재학습 AUROC 추이 &amp;mdash; 시간에 따라 성능이 어떻게 움직였는지, 레짐 전환 경계에서 급락하는 지점 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;17_stepH_설비별_성능비교_시각자료.png&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;① 고정 분할 vs Rolling 재학습 AUROC 비교 &amp;mdash; 파란 막대(고정) vs 빨간 막대(rolling), F02의 반전과 E07의 지속적 약세를 강조&lt;/li&gt;
&lt;li&gt;② 조기경보 피처의 설비별 순증 효과 &amp;mdash; F08만 확실히 도움이 됐다는 것&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. 정리 및 한계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AUROC 기준으로는 실질적인 개선(0.716 &amp;rarr; 0.785 &amp;rarr; 0.82 이상)이 있었습니다. 다만 F1은 데이터 자체의 시간적 편중 문제로 신뢰할 수 없어 별도로 걸러야 했고, 설비 간 성능 편차가 커서 &quot;전체적으로 다 잘 됐다&quot;고 말하기보다는 &quot;설비마다 사정이 다르고, 일부(E07 등)는 아직 못 풀었다&quot;는 게 정직한 결론입니다. &quot;설비 재정비&quot; 가설은 확정되지 않은 참고 정보로 남아있어, 실제 정비 이력을 확인하면 다음 단계 설계가 더 명확해질 것입니다.&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/102</guid>
      <comments>https://anscodus.tistory.com/102#entry102comment</comments>
      <pubDate>Thu, 23 Jul 2026 21:03:55 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/22</title>
      <link>https://anscodus.tistory.com/101</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 한 일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내배캠 ai 이력서 성능 생각보다 너무 좋아서 놀랏다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 결과물?같은거 pdf 주니까 프로젝트 내용을 굉장히 잘 정리해줌... 자기소개서 수정 방향도 제시해줘서 펀했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일은 피드백 바탕으로 자소서 고쳐서 한군데 더 지원해봐야겠다...&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/101</guid>
      <comments>https://anscodus.tistory.com/101#entry101comment</comments>
      <pubDate>Wed, 22 Jul 2026 21:08:37 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/21</title>
      <link>https://anscodus.tistory.com/100</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;자소서..........도 이제 슬슬 만능자소서? 대표 문항들 마다 대응되는 내용 대충 언제한번 싹 정리해야되는데 너무너무 귀찮다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기저기 난사한게 너무많음 ㅜㅜ&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/100</guid>
      <comments>https://anscodus.tistory.com/100#entry100comment</comments>
      <pubDate>Tue, 21 Jul 2026 21:04:41 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/20</title>
      <link>https://anscodus.tistory.com/99</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 한 일&lt;/p&gt;
&lt;h1&gt;로트별 수율(Yield) 사전 예측 &amp;mdash; 진행 정리&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 배경 및 목적&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사출 조건이 초 단위까지 완전히 동일한 shot들 사이에서도 FAI 합/불 판정이 갈리는 현상을 분석하는 과정에서, 캐비티 위치 효과 및 로트(LOT) 단위 정보가 조건 컬럼보다 fail 여부를 훨씬 잘 설명한다는 것을 확인함(로트 소속만 알아도 예측 AUC 0.798, 조건만 사용 시 0.616 &amp;mdash; ICC 기준 로트 효과 약 29%).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 결과를 바탕으로 팀 회의에서 &quot;shot 단위 합/불 예측&quot; 대신 &quot;로트 단위 수율(fail rate) 예측&quot;으로 방향을 전환하기로 결정함. 목표는 로트가 끝나기 전, 로트 초반 일부 shot 정보만으로 그 로트의 최종 수율을 미리 예측하는 것(사전 예측/조기경보형).&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 예측 정의&lt;/h2&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;: 로트별 최종 fail rate (연속값, 회귀)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예측 시점(cutoff)&lt;/b&gt;: 로트 전체 shot 중 앞부분 10% / 20% / 30% / 50%까지만 관측한 시점&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모델&lt;/b&gt;: LGBMRegressor&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가지표&lt;/b&gt;: R&amp;sup2;, MAE, Spearman 순위상관, Top-20% Lift
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;R&amp;sup2;/MAE보다 Spearman&amp;middot;Lift를 주요 지표로 채택한 이유: 타겟(수율) 자체의 노이즈가 커서 R&amp;sup2;가 대부분 구간에서 음수로 나오는 한계가 있었음. 실무적으로는 &quot;어느 로트가 상대적으로 더 위험한지 순위를 잘 매기는가&quot;가 더 중요하다고 판단.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 팀 기존 분석(09~15번 노트북) 반영 사항&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로트 모델을 설계하기 전, 팀에서 이미 확정한 결론들을 그대로 반영함.&lt;/p&gt;
&lt;p&gt;확정 사항 출처 반영 내용&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;FAI는 검사 시점(생산 후 평균 8.5시간 뒤)에 판정과 동시에 생성되는 lag-0 값 &amp;rarr; 데이터 누수&lt;/td&gt;
&lt;td&gt;12번&lt;/td&gt;
&lt;td&gt;FAI 원본값&amp;middot;NG 플래그를 피처에서 완전히 제외&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026년 1~2월 불량 급등은 조건의 평균 이동이 아니라 산포(분산) 확대 결과&lt;/td&gt;
&lt;td&gt;13번&lt;/td&gt;
&lt;td&gt;phase(안정기/확대기/급등기/진정기) 카테고리 피처로 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;산포 확대가 9일 앞서 불량 급등을 예고한다&quot;는 가설은 재현성 검증에서 기각(단일 사건 우연)&lt;/td&gt;
&lt;td&gt;15번&lt;/td&gt;
&lt;td&gt;고정 lead-time 가정 피처는 사용하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;재현성이 확인된 7개 컬럼(Cycle Time, 보압완료위치, 최소쿠션, 사출시간, 금형온도1/2, 충진시간)의 rolling z-score + 3일 연속 초과 플래그는 실제 성능 개선(AUC +0.0054)&lt;/td&gt;
&lt;td&gt;15번&lt;/td&gt;
&lt;td&gt;동일한 조기경보 피처를 로트 모델에도 그대로 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 클리닝 기준: 금형온도1 극단치(&amp;lt;45 또는 &amp;gt;95), Cycle Time&amp;gt;20초, 압력/쿠션 zero값 &amp;rarr; 총 8,703건(3.76%) 제거&lt;/td&gt;
&lt;td&gt;15번&lt;/td&gt;
&lt;td&gt;동일 기준으로 클리닝 (독립적으로 재계산해도 3.760%로 정확히 일치, 교차검증됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E09/E10은 금형온도1 센서가 고정값(70.9)으로 대치된 비율이 각각 85.3%/82.1%&lt;/td&gt;
&lt;td&gt;15번&lt;/td&gt;
&lt;td&gt;두 장비는 금형온도1 관련 rolling 피처 계산에서 제외&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 피처 설계&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사출조건 9개의 관측 구간(cutoff까지) 평균/표준편차&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캐비티 사용비율 + 과거기준 위험도&lt;/b&gt; (이번 분석에서 새로 설계): 로트 시작 이전에 이미 종료된 로트들의 장비&amp;times;캐비티별 fail율만 사용(expanding window)해, 해당 로트의 캐비티 구성과 곱해 위험도 점수화. Leakage 없이 캐비티 효과를 로트 모델에 반영하기 위한 핵심 피처.&lt;/li&gt;
&lt;li&gt;조기경보 rolling 피처(15번 검증 7개 컬럼의 z-score + sustained breach flag, 14일 trailing baseline, shift(1) 적용으로 look-ahead 방지)&lt;/li&gt;
&lt;li&gt;재가동 피처: gap_hour, restart_flag, segment_id, elapsed_since_restart&lt;/li&gt;
&lt;li&gt;MACH_ID, phase(안정기/확대기/급등기/진정기) &amp;mdash; categorical&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;제외한 피처&lt;/b&gt;: FAI 원본값&amp;middot;NG 플래그(누수), Unit_ID(누수 의심, 별도 검증 필요), SoftBin/Error_Message/Algo_Code/AlgoTime_Sta1~7(검사 단계 관련, 미검증).&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. Train/Val/Test 분할&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로트(LOTN_refined) 단위로 시간순 정렬 후 설비별 7:1:2로 분할(로트가 분할 경계에서 쪼개지지 않도록 보장). 클리닝 반영 후 로트 수는 8,413개 &amp;rarr; 8,358개(55개 로트 전량 제거).&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 실험 v1 &amp;mdash; FAI 포함, 클리닝 이전&lt;/h2&gt;
&lt;p&gt;cutoff 구분 R&amp;sup2; Spearman Lift(상위20%)&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;10%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.173 / -2.012&lt;/td&gt;
&lt;td&gt;0.335 / 0.287&lt;/td&gt;
&lt;td&gt;1.24x / 1.12x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.062 / -1.766&lt;/td&gt;
&lt;td&gt;0.417 / 0.333&lt;/td&gt;
&lt;td&gt;1.30x / 1.14x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.060 / -1.832&lt;/td&gt;
&lt;td&gt;0.435 / 0.361&lt;/td&gt;
&lt;td&gt;1.27x / 1.15x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;0.010 / -1.686&lt;/td&gt;
&lt;td&gt;0.458 / 0.383&lt;/td&gt;
&lt;td&gt;1.32x / 1.17x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cutoff가 늘어날수록 지표가 완만히 개선되는 합리적인 패턴을 보였으나, FAI 평균값을 로트 초반 shot에서 가져오는 것 자체가 그 shot들의 검사 결과를 미리 들여다보는 것과 다름없어 &quot;사전 예측&quot; 정의에 위배되는 데이터 누수로 판단, 제외를 결정함.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 실험 v2 &amp;mdash; FAI 제외 + 클리닝 + phase/조기경보 반영&lt;/h2&gt;
&lt;p&gt;cutoff 구분 R&amp;sup2; Spearman Lift(상위20%)&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;10%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.426 / -2.571&lt;/td&gt;
&lt;td&gt;0.104 / 0.110&lt;/td&gt;
&lt;td&gt;1.12x / 1.07x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.481 / -2.543&lt;/td&gt;
&lt;td&gt;0.063 / 0.105&lt;/td&gt;
&lt;td&gt;1.08x / 1.06x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.591 / -2.488&lt;/td&gt;
&lt;td&gt;0.037 / 0.103&lt;/td&gt;
&lt;td&gt;1.13x / 1.03x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;val / test&lt;/td&gt;
&lt;td&gt;-0.598 / -2.544&lt;/td&gt;
&lt;td&gt;0.036 / 0.088&lt;/td&gt;
&lt;td&gt;1.04x / 1.04x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 풀링 기준 Spearman이 0.04~0.11 수준으로 급락함. v1에서 FAI가 제공하던 신호가 대부분 데이터 누수였음을 재확인한 결과이며, 동시에 &quot;조건만으로는 shot 단위 AUC 0.45~0.56이 현실적 천장&quot;이라는 팀의 기존 결론과도 일치함.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;8. 핵심 발견 &amp;mdash; Phase(공정 레짐)별 성능 분해&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 풀링 지표 급락의 원인을 진단하기 위해 cutoff=30% 모델을 test 내 phase별로 재평가함.&lt;/p&gt;
&lt;p&gt;phase n(test) 실제 fail율 평균 R&amp;sup2; Spearman&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;/td&gt;
&lt;td&gt;111&lt;/td&gt;
&lt;td&gt;54.1%&lt;/td&gt;
&lt;td&gt;-0.462&lt;/td&gt;
&lt;td&gt;0.450&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확대기&lt;/td&gt;
&lt;td&gt;477&lt;/td&gt;
&lt;td&gt;71.0%&lt;/td&gt;
&lt;td&gt;-1.500&lt;/td&gt;
&lt;td&gt;0.154&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;급등기&lt;/td&gt;
&lt;td&gt;624&lt;/td&gt;
&lt;td&gt;85.7%&lt;/td&gt;
&lt;td&gt;-5.379&lt;/td&gt;
&lt;td&gt;0.030&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;진정기&lt;/td&gt;
&lt;td&gt;473&lt;/td&gt;
&lt;td&gt;78.4%&lt;/td&gt;
&lt;td&gt;-3.400&lt;/td&gt;
&lt;td&gt;-0.001&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 해석&lt;/b&gt;: test 로트의 93%(1,574/1,685)가 train이 한 번도 겪지 않은 레짐(확대기~진정기)에 속해 있었음. 전체 풀링 지표가 낮게 나온 것은 피처가 무의미해서가 아니라, 대부분의 test가 훈련 레짐 밖에 있었기 때문임. &lt;b&gt;train과 동일한 레짐(안정기)에 속한 로트에서는 Spearman 0.450으로 유의미한 순위 예측력이 확인됨.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Feature importance 확인 결과, 조기경보 z-score 피처들, MACH_ID, 재가동 피처, 그리고 새로 설계한 cavity_hist_risk가 모두 유의미하게 사용되고 있어 &amp;mdash; 피처 자체가 죽은 신호가 아니라 레짐이 유사할 때는 실질적으로 기능하는 신호임이 뒷받침됨.&lt;/p&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;FAI를 제외하고 캐비티&amp;middot;재가동&amp;middot;조기경보 피처만으로 로트 수율을 사전 예측하는 모델은, 훈련 시점과 유사한 공정 레짐(안정기)에서는 실질적인 순위 예측력(Spearman 0.45)을 보임.&lt;/li&gt;
&lt;li&gt;훈련 데이터가 한 번도 경험하지 못한 새로운 레짐(확대기~진정기)으로의 외삽은 현재 모델로는 불가능함 &amp;mdash; 모델 설계의 결함이 아니라, 유사 사례가 데이터에 없는 상태에서 근본적으로 어려운 문제.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&quot;평상시 수율 예측&quot;과 &quot;공정 레짐 전환 자체의 조기 감지&quot;는 서로 다른 문제.&lt;/b&gt; 현재 피처로는 전자에서 실질적 가치가 확인되지만, 후자는 별도 접근이 필요함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;10. 다음 단계 제안&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Val set에서도 phase별 성능 분해를 재현해, 안정기 Spearman 0.450이 우연이 아닌지 교차 검증&lt;/li&gt;
&lt;li&gt;&quot;평상시 수율 예측&quot; vs &quot;레짐 전환 조기 감지&quot;를 팀 내에서 별개 과제로 명확히 구분해 커뮤니케이션&lt;/li&gt;
&lt;li&gt;E09/E10 금형온도1 센서 고정값 대치, 표본 부족 설비 등 데이터 품질 이슈 개선 검토&lt;/li&gt;
&lt;li&gt;장비&amp;middot;금형별로 문제 캐비티가 다르다는 점을 설비/금형 담당 부서에 공유, 캐비티별 실측 센서&amp;middot;금형 인서트 마모/정비 이력 확보 가능성 문의&lt;/li&gt;
&lt;li&gt;풀링된 전체 지표만으로 모델을 평가하지 않고, 항상 phase(레짐)별로 분리한 지표를 함께 보고하는 것을 팀 표준 관행으로 삼음&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/99</guid>
      <comments>https://anscodus.tistory.com/99#entry99comment</comments>
      <pubDate>Mon, 20 Jul 2026 21:01:15 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/16</title>
      <link>https://anscodus.tistory.com/98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;어떻게 해야 성능을 올릴 수 있을지....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일 자기소개서 최초치치ㅚ최최종 마무리 ㅜㅜ해야됨&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/98</guid>
      <comments>https://anscodus.tistory.com/98#entry98comment</comments>
      <pubDate>Thu, 16 Jul 2026 20:54:13 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/15</title>
      <link>https://anscodus.tistory.com/97</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;장비별 캐비티별 fail률&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/97</guid>
      <comments>https://anscodus.tistory.com/97#entry97comment</comments>
      <pubDate>Wed, 15 Jul 2026 21:03:20 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/14</title>
      <link>https://anscodus.tistory.com/96</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;자소서 쓰기 ㅜ&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/96</guid>
      <comments>https://anscodus.tistory.com/96#entry96comment</comments>
      <pubDate>Tue, 14 Jul 2026 21:08:05 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프] 본캠프 7/13</title>
      <link>https://anscodus.tistory.com/95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;모델 준비하는데 좀만 뭐 하면 과적합이고 데이터 누수고 아니면 성능이 바닥쳐서 어렵다&lt;/p&gt;</description>
      <category>내일배움캠프(본캠프)</category>
      <author>anscodus</author>
      <guid isPermaLink="true">https://anscodus.tistory.com/95</guid>
      <comments>https://anscodus.tistory.com/95#entry95comment</comments>
      <pubDate>Mon, 13 Jul 2026 21:12:28 +0900</pubDate>
    </item>
  </channel>
</rss>