<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>mosh0312 님의 블로그</title>
    <link>https://mosh0312.tistory.com/</link>
    <description>mosh0312 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Fri, 15 May 2026 09:03:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>mosh0312</managingEditor>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/14 TIL</title>
      <link>https://mosh0312.tistory.com/67</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 공모전 위주로 학습을 진행했다.&lt;/p&gt;
&lt;h1&gt;  현재 상황&lt;/h1&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;: 66.36% (09번 노트북)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;목표&lt;/b&gt;: 70%+ (현재 1등: 70.22%)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가 기준&lt;/b&gt;: R-Hit@1cm &amp;mdash; 예측과 실제 간 3D 거리 &amp;le; 10mm이면 적중&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  오늘 진행한 작업&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. GPU 환경 문제 해결 시도&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python 3.14에서 PyTorch CUDA 버전이 지원되지 않는 문제 발견&lt;/li&gt;
&lt;li&gt;cu121, cu124, nightly 버전 모두 설치 실패&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원인&lt;/b&gt;: PyTorch가 아직 Python 3.14를 공식 지원하지 않음&lt;/li&gt;
&lt;li&gt;CPU 버전(torch 2.11.0+cpu)은 설치 성공&lt;/li&gt;
&lt;li&gt;GPU: NVIDIA GeForce GTX 1650 (4GB VRAM), CUDA 12.4 확인&lt;/li&gt;
&lt;li&gt;결론: Python 3.12 설치가 필요하지만, 우선 CPU + 기존 GPU 환경 병행&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. LightGBM + XGBoost 앙상블 (06번)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 Hit@10mm&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;LightGBM v3&lt;/td&gt;
&lt;td&gt;61.96%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XGBoost&lt;/td&gt;
&lt;td&gt;61.57%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;앙상블&lt;/td&gt;
&lt;td&gt;62.10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LGB-XGB 상관계수 &lt;b&gt;0.99&lt;/b&gt; &amp;rarr; 거의 같은 모델이라 앙상블 효과 미미 (+0.14%p)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;교훈&lt;/b&gt;: 같은 피처/타겟에 유사 알고리즘을 쓰면 다양성이 없어서 앙상블 효과 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. DL 모델 + 3모델 앙상블 (07번) &amp;mdash; ★ 최초 큰 개선&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DL 구조&lt;/b&gt;: CNN + BiGRU + Attention (MosquitoNet)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력: 20채널 시퀀스 (원시/스무딩 좌표, 변위, 속도, 가속도)&lt;/li&gt;
&lt;li&gt;hidden=128, GRU 2-layer, Huber loss&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 Hit@10mm 대회 점수&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;DL 단독&lt;/td&gt;
&lt;td&gt;63.53%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LGB+XGB+DL 앙상블&lt;/td&gt;
&lt;td&gt;63.73%&lt;/td&gt;
&lt;td&gt;&lt;b&gt;65.76%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DL이 LGB(61.96%)보다 +1.57%p 높음&lt;/li&gt;
&lt;li&gt;LGB-DL 상관 0.97 &amp;rarr; 트리와 다른 패턴 포착&lt;/li&gt;
&lt;li&gt;OOF 대비 대회 점수가 ~2%p 높게 나오는 패턴 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. DL 멀티시드 (09번) &amp;mdash; ★★ 최고 점수 달성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MosquitoNet 동일 구조, 3시드(42, 123, 777) 평균&lt;/li&gt;
&lt;li&gt;Warmup 5 epoch 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 OOF Hit@10mm 대회 점수&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;DL 3시드 평균&lt;/td&gt;
&lt;td&gt;64.06%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LGB+DL 앙상블+후처리&lt;/td&gt;
&lt;td&gt;64.32%&lt;/td&gt;
&lt;td&gt;&lt;b&gt;66.36%&lt;/b&gt; &amp;larr; 최고&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 08번 (최종 max &amp;mdash; GPU) 시도&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DL 9모델 (3구조 &amp;times; 3시드) + LGB 앙상블&lt;/li&gt;
&lt;li&gt;OOF 63.64% &amp;rarr; 대회 &lt;b&gt;65.22%&lt;/b&gt; (오히려 하락)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원인&lt;/b&gt;: 약한 모델(경량화된 B, C)이 강한 모델(A)을 희석&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 10번 (ULTIMATE) 시도 &amp;mdash; 실패&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;데이터 증강 (3D 회전, 노이즈 주입)&lt;/li&gt;
&lt;li&gt;Transformer + CNN 하이브리드 모델&lt;/li&gt;
&lt;li&gt;축별 스케일 후처리&lt;/li&gt;
&lt;li&gt;24채널 시퀀스 (시간 인코딩 추가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과:&lt;/b&gt; OOF 63.43% &amp;rarr; 대회 &lt;b&gt;65.16%&lt;/b&gt; (더 하락!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;데이터 증강(3D 회전) &amp;rarr; Train 분포와 Test 분포가 안 맞음&lt;/li&gt;
&lt;li&gt;Transformer &amp;rarr; 10,000개 데이터로는 과적합&lt;/li&gt;
&lt;li&gt;축별 스케일 후처리 &amp;rarr; OOF에 과적합된 파라미터&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복잡할수록 좋은 게 아님&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 11번 (정제) &amp;mdash; 진행 중&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;09번(최고 점수) 구조 그대로 유지, 학습 하이퍼파라미터만 정제:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;lr: 1e-3 &amp;rarr; 5e-4&lt;/li&gt;
&lt;li&gt;epoch: 200 &amp;rarr; 300&lt;/li&gt;
&lt;li&gt;patience: 30 &amp;rarr; 40&lt;/li&gt;
&lt;li&gt;batch: 256 &amp;rarr; 128&lt;/li&gt;
&lt;li&gt;증강/Transformer/축별 스케일 전부 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  점수 변화 추이 (전체)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 주요 변경 OOF 대회 점수 방향&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;Linear 외삽&lt;/td&gt;
&lt;td&gt;기준&lt;/td&gt;
&lt;td&gt;57.88%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;03 LGB v1&lt;/td&gt;
&lt;td&gt;잔차 보정&lt;/td&gt;
&lt;td&gt;59.97%&lt;/td&gt;
&lt;td&gt;60.12%&lt;/td&gt;
&lt;td&gt;&amp;uarr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;04 LGB v2&lt;/td&gt;
&lt;td&gt;직접 예측&lt;/td&gt;
&lt;td&gt;57.36%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;&amp;darr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;05 LGB v3&lt;/td&gt;
&lt;td&gt;Huber + 피처 강화&lt;/td&gt;
&lt;td&gt;61.96%&lt;/td&gt;
&lt;td&gt;64.38%&lt;/td&gt;
&lt;td&gt;&amp;uarr;&amp;uarr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06 앙상블&lt;/td&gt;
&lt;td&gt;+XGBoost&lt;/td&gt;
&lt;td&gt;62.10%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;07 DL&lt;/td&gt;
&lt;td&gt;+CNN+GRU&lt;/td&gt;
&lt;td&gt;63.73%&lt;/td&gt;
&lt;td&gt;65.76%&lt;/td&gt;
&lt;td&gt;&amp;uarr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08 DL max&lt;/td&gt;
&lt;td&gt;9모델 경량&lt;/td&gt;
&lt;td&gt;63.64%&lt;/td&gt;
&lt;td&gt;65.22%&lt;/td&gt;
&lt;td&gt;&amp;darr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;09 DL 3시드&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;멀티시드&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;64.32%&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;66.36%&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&amp;uarr; ★&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 ULTIMATE&lt;/td&gt;
&lt;td&gt;증강+Transformer&lt;/td&gt;
&lt;td&gt;63.43%&lt;/td&gt;
&lt;td&gt;65.16%&lt;/td&gt;
&lt;td&gt;&amp;darr;&amp;darr;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11 정제&lt;/td&gt;
&lt;td&gt;학습 정제&lt;/td&gt;
&lt;td&gt;진행 중&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  핵심 인사이트 &amp;amp; 교훈&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 과적합의 함정&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복잡한 기법(증강, Transformer, 축별 스케일)이 OOF에서는 비슷하거나 약간 낮은데, 대회 점수에서는 확실히 나빠짐&lt;/li&gt;
&lt;li&gt;Train 10,000개는 복잡한 모델을 감당하기에 부족&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단순한 모델이 일반화가 더 좋다&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. OOF vs 대회 점수 갭&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일관되게 대회 점수가 OOF보다 ~2%p 높음&lt;/li&gt;
&lt;li&gt;Test가 Train보다 예측하기 약간 쉬운 분포&lt;/li&gt;
&lt;li&gt;하지만 과적합된 모델은 이 갭이 줄어들거나 역전됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 앙상블은 다양성이 핵심&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LGB-XGB 상관 0.99 &amp;rarr; 앙상블 무의미&lt;/li&gt;
&lt;li&gt;LGB-DL 상관 0.97 &amp;rarr; 약간의 효과&lt;/li&gt;
&lt;li&gt;상관을 낮추려면 &lt;b&gt;완전히 다른 접근&lt;/b&gt; 필요 (단순히 모델 늘리는 건 X)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 멀티시드의 안정성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;같은 모델을 다른 시드로 학습 &amp;rarr; 일관되게 +0.5%p 개선&lt;/li&gt;
&lt;li&gt;과적합 없이 안정적인 개선 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. &quot;정제 &amp;gt; 추가&quot; 원칙&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;09번이 최고인 이유: 검증된 구조 + 멀티시드라는 안전한 개선&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/67</guid>
      <comments>https://mosh0312.tistory.com/67#entry67comment</comments>
      <pubDate>Thu, 14 May 2026 20:40:02 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/13 TIL</title>
      <link>https://mosh0312.tistory.com/66</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 태블로 강의 3강과 라이브 세션을 듣고 개인적으로 진행하고 있는 공모전을 진행했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 데이터 필드 생성 및 활용 (챕터 3-1)&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;차원의 멤버를 사용자 기준으로 묶어 &lt;b&gt;새로운 범주&lt;/b&gt;를 만드는 기능&lt;/li&gt;
&lt;li&gt;원본 데이터는 변경되지 않고, 새로운 차원 필드가 생성됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실습 예시:&lt;/b&gt; 17개 시도를 6개 권역(강원, 경기, 경상, 전라, 충청, 제주)으로 그룹핑&lt;/li&gt;
&lt;li&gt;그룹은 계산식으로도 구현 가능 &amp;rarr; IF [시도] IN ('경기도','서울특별시','인천광역시') THEN '경기' ...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;집합 (Set)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;차원의 멤버를 조건에 따라 **포함(True) / 제외(False)**로 나누는 기능&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;b&gt;정적 집합:&lt;/b&gt; 멤버를 수동 선택&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동적 집합:&lt;/b&gt; 조건이나 상위 N 기준으로 자동 분류&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결합된 집합:&lt;/b&gt; 교집합 / 합집합 / 차집합 연산 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;드릴다운 분석 활용:&lt;/b&gt; 집합 동작(Set Action)과 계산식을 결합하여 클릭 시 하위 카테고리가 펼쳐지는 인터랙션 구현&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;연속형 데이터를 일정 간격(Bin Size)으로 나누어 분포를 파악&lt;/li&gt;
&lt;li&gt;&lt;b&gt;히스토그램:&lt;/b&gt; 구간 차원을 열에, 카운트를 행에 배치하여 데이터 분포 시각화&lt;/li&gt;
&lt;li&gt;막대차트(범주형 비교)와 히스토그램(연속형 분포)의 차이를 구분하는 것이 중요&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;측정값 이름 &amp;amp; 측정값&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;측정값 이름(Measure Names):&lt;/b&gt; 모든 측정값 필드의 이름을 모아둔 가상 차원&lt;/li&gt;
&lt;li&gt;&lt;b&gt;측정값(Measure Values):&lt;/b&gt; 선택된 측정값의 실제 값을 담는 가상 측정값&lt;/li&gt;
&lt;li&gt;여러 KPI(매출, 수익, 주문 수, 고객 수)를 한 뷰에 나란히 표시할 때 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 계산된 필드와 계산 수준 (챕터 3-2)&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;기존 데이터를 바탕으로 &lt;b&gt;사용자 정의 수식&lt;/b&gt;을 통해 새로운 필드를 생성&lt;/li&gt;
&lt;li&gt;만드는 방법: 행/열에 직접 입력(임시 계산) 또는 계산된 필드 편집기 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네이밍 컨벤션:&lt;/b&gt; 계산식은 C_, 매개변수는 P_, 필터는 FLTR_ 접두사 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;행 수준 계산 vs 집계 수준 계산 ⭐&lt;/h3&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;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;집계 &lt;b&gt;전&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;집계 &lt;b&gt;후&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기준 데이터&lt;/td&gt;
&lt;td&gt;개별 행(Row)&lt;/td&gt;
&lt;td&gt;집계된 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;td&gt;[수익]/[매출]&lt;/td&gt;
&lt;td&gt;SUM([수익])/SUM([매출])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;용도&lt;/td&gt;
&lt;td&gt;행별 파생 변수 생성&lt;/td&gt;
&lt;td&gt;비율, 평균 비교, KPI&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; 동일한 수익률 계산이라도 행 수준([수익]/[매출])과 집계 수준(SUM([수익])/SUM([매출]))의 결과가 다를 수 있다. 행 수준은 각 행의 수익률을 먼저 구한 뒤 집계하고, 집계 수준은 전체 수익과 매출의 합을 구한 뒤 나누기 때문이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 매개변수와 계산식 (챕터 3-3)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;매개변수(Parameter)란?&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;하는 변수&lt;/li&gt;
&lt;li&gt;대시보드에서 사용자가 선택/입력하면 계산식, 필터, 참조선 등에 반영되어 &lt;b&gt;뷰가 동적으로 변함&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;필터와 달리 &lt;b&gt;독립적&lt;/b&gt;이며, 별도로 계산식이나 필터와 연결해야 작동&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;매개변수 활용 실습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;차원 선택 매개변수 (P_차원 선택):&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;IF [P_차원 선택]=&quot;고객 세그먼트&quot; THEN [고객 세그먼트]
ELSEIF [P_차원 선택]=&quot;배송 방법&quot; THEN [배송 방법]
ELSEIF [P_차원 선택]=&quot;제품 대분류&quot; THEN [제품 대분류]
ELSEIF [P_차원 선택]=&quot;시도&quot; THEN [시도]
END
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;측정값 선택 매개변수 (P_측정값 선택)&lt;/b&gt; &amp;mdash; CASE문 활용:&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;CASE [P_측정값 선택]
  WHEN '매출' THEN SUM([매출])
  WHEN '수량' THEN AVG([수량])
  WHEN '수익' THEN MAX([수익])
  WHEN '할인율' THEN MIN([할인율])
END
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;증감비(전년비) 계산 ⭐&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;증감비 공식:&lt;/b&gt; (비교대상 - 기준) / 기준 &amp;times; 100&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;YoY (전년비):&lt;/b&gt; 올해 vs 작년 같은 기간 &amp;rarr; 계절성, 연간 성장 추세 파악&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MoM (전월비):&lt;/b&gt; 이번 달 vs 지난 달 &amp;rarr; 단기 추세 감지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WoW (전주비):&lt;/b&gt; 이번 주 vs 지난 주 &amp;rarr; 캠페인 효과 분석&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DoD (전일비):&lt;/b&gt; 오늘 vs 어제 &amp;rarr; 전일 대비 변동성 파악&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;KPI 전년비 계산식:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;// C_금년 매출
IF YEAR([주문 일자])=[P_년도] THEN [매출] END

// C_전년 매출
IF YEAR([주문 일자])=[P_년도]-1 THEN [매출] END

// C_매출 전년비
(SUM([C_금년 매출]) - SUM([C_전년 매출])) / SUM([C_전년 매출])
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;색상 분리 팁:&lt;/b&gt; 양수/음수를 별도 계산식으로 분리하여 KPI 카드에서 증가(초록)/감소(빨강) 색상을 적용&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 계산식 주요 함수 정리 (챕터 3-4)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 함수&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;+ (결합)&lt;/td&gt;
&lt;td&gt;문자열 합치기&lt;/td&gt;
&lt;td&gt;[시도]+&quot; &quot;+[시군구]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LEN()&lt;/td&gt;
&lt;td&gt;문자열 길이&lt;/td&gt;
&lt;td&gt;LEN([고객명])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LEFT() / RIGHT()&lt;/td&gt;
&lt;td&gt;앞/뒤에서 추출&lt;/td&gt;
&lt;td&gt;LEFT([고객번호],2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MID()&lt;/td&gt;
&lt;td&gt;중간 부분 추출&lt;/td&gt;
&lt;td&gt;MID([고객번호], 2, 3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONTAINS()&lt;/td&gt;
&lt;td&gt;특정 문자열 포함 여부&lt;/td&gt;
&lt;td&gt;CONTAINS([제품명], &quot;Samsung&quot;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SPLIT()&lt;/td&gt;
&lt;td&gt;구분자로 분리&lt;/td&gt;
&lt;td&gt;SPLIT([제품 코드], &quot;-&quot;, 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UPPER() / LOWER()&lt;/td&gt;
&lt;td&gt;대소문자 변환&lt;/td&gt;
&lt;td&gt;UPPER([제품명])&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;ABS() &amp;mdash; 절대값&lt;/li&gt;
&lt;li&gt;CEILING() &amp;mdash; 올림&lt;/li&gt;
&lt;li&gt;FLOOR() &amp;mdash; 버림&lt;/li&gt;
&lt;li&gt;ROUND() &amp;mdash; 반올림&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;DATEADD('year', 1, [주문 일자]) &amp;mdash; 날짜에 기간 더하기&lt;/li&gt;
&lt;li&gt;DATEDIFF('day', [주문 일자], [배송 일자]) &amp;mdash; 두 날짜 간 차이 계산&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;RANK() &amp;mdash; 동점 시 같은 순위, 다음 순위 건너뜀 (1, 2, 2, 4)&lt;/li&gt;
&lt;li&gt;RANK_DENSE() &amp;mdash; 동점 시 같은 순위, 연속 순위 유지 (1, 2, 2, 3)&lt;/li&gt;
&lt;li&gt;RANK_MODIFIED() &amp;mdash; 동점 시 마지막 인스턴스 순위 공유&lt;/li&gt;
&lt;li&gt;INDEX() &amp;mdash; 파티션 내 현재 행의 순번 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LOD 표현식 (Level of Detail) ⭐&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차트의 집계 수준과 &lt;b&gt;무관하게&lt;/b&gt; 특정 수준에서 계산할 수 있는 핵심 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;FIXED 구문:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;// 시도별 매출 (뷰의 세부 수준과 무관하게 시도 기준으로 집계)
{FIXED [시도] : SUM([매출])}

// 고객별 첫 구매 일자
{FIXED [고객명] : MIN([주문 일자])}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰에 시군구 레벨로 데이터가 표시되더라도, FIXED로 시도 레벨의 매출 합계를 함께 볼 수 있다는 점이 강력하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  대회 개요&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;: LiDAR 센서로 관측된 모기의 3D 좌표 시계열 &amp;rarr; 80ms 후 위치 예측&lt;/li&gt;
&lt;li&gt;&lt;b&gt;입력&lt;/b&gt;: 40ms 간격 11개 시점 (&amp;minus;400ms ~ 0ms)의 (x, y, z) 좌표&lt;/li&gt;
&lt;li&gt;&lt;b&gt;출력&lt;/b&gt;: +80ms 시점의 (x, y, z) 좌표&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: R-Hit@1cm &amp;mdash; 예측과 실제 간 3D 거리가 10mm 이내면 적중(1), 아니면 실패(0). 전체 평균 적중률이 점수&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터&lt;/b&gt;: train 10,000개 / test 10,000개 (각각 개별 CSV 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  EDA 핵심 발견&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;평균 속도 약 0.62 m/s, 대부분 0.1~1.0 m/s&lt;/li&gt;
&lt;li&gt;궤적 직선성 평균 0.895 &amp;rarr; &lt;b&gt;90%의 모기는 거의 직선 비행&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;방향 변화 평균 12.1&amp;deg;, 대부분 0~10&amp;deg; &amp;rarr; 급격한 방향 전환은 드묾&lt;/li&gt;
&lt;li&gt;축 간 상관 거의 0 &amp;rarr; x, y, z 독립 예측 가능&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;관측 노이즈 약 2.8mm (3차 다항식 잔차 기준)&lt;/li&gt;
&lt;li&gt;x축(3.2mm) &amp;gt; y축(3.0mm) &amp;gt; z축(2.1mm)&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;t=0 &amp;rarr; +80ms 이동 거리 중앙값 46.2mm&lt;/li&gt;
&lt;li&gt;108mm 근처 상한선 존재 (시뮬레이션 제한 추정)&lt;/li&gt;
&lt;li&gt;dx vs dy 산점도 원형 &amp;rarr; 이동 방향 편향 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;베이스라인 비교 (수학적 외삽)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법 Mean Error Hit@10mm&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;Static (움직임 없음)&lt;/td&gt;
&lt;td&gt;51.0mm&lt;/td&gt;
&lt;td&gt;0.49%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Linear 외삽&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;12.9mm&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;57.88%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linear + 가속도&lt;/td&gt;
&lt;td&gt;16.3mm&lt;/td&gt;
&lt;td&gt;51.31%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2차 다항식&lt;/td&gt;
&lt;td&gt;33.1mm&lt;/td&gt;
&lt;td&gt;21.23%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;b&gt;단순 선형 외삽이 가장 강력&lt;/b&gt;. 가속도/다항식은 노이즈 증폭으로 오히려 나빠짐&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;Easy (91.4%): 직선 비행, Linear 오차 &amp;lt; 30mm&lt;/li&gt;
&lt;li&gt;Hard (8.6%): 빠른 속도 + 큰 방향 변화, 오차 최대 98mm&lt;/li&gt;
&lt;li&gt;Hard 케이스의 공통점: &lt;b&gt;관측 구간 후반부에서 방향 전환&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Train vs Test&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;속도 분포 거의 동일 &amp;rarr; 운동 패턴은 환경 무관&lt;/li&gt;
&lt;li&gt;x축 좌표에서 Test가 약간 더 넓음 &amp;rarr; 절대좌표 의존 금지&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  모델링 과정&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Phase 1: LightGBM v1 (잔차 보정)&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;: Linear 외삽 예측값의 잔차를 LightGBM으로 보정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;피처&lt;/b&gt;: 상대좌표, 변위, 스무딩 가속도, 방향 변화 등 179개&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: Hit@10mm 59.97% (대회 점수 60.12%)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제&lt;/b&gt;: Early stopping이 21~61 라운드로 너무 빠름. 피처 중요도에서 &quot;마지막 변위&quot;에만 과도하게 의존. Easy 케이스 보정 0mm, Hard만 6.59mm 개선&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Phase 2: LightGBM v2 (직접 예측)&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;: 타겟을 잔차 &amp;rarr; 상대 변위 직접 예측으로 변경, 피처 강화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: Hit@10mm 57.36% &amp;larr; &lt;b&gt;오히려 악화!&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원인&lt;/b&gt;: Hard 개선(+9.08mm)했지만 Easy 악화(-0.77mm). Easy가 91.4%이므로 전체 성능 하락&lt;/li&gt;
&lt;li&gt;&lt;b&gt;교훈&lt;/b&gt;: Easy 케이스를 보호하는 잔차 보정 방식이 안전함&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Phase 3: LightGBM v3 (v1 방식 + v2 피처)&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;: v1의 잔차 보정 + v2의 강화 피처 + Huber loss&lt;/li&gt;
&lt;li&gt;&lt;b&gt;피처 강화&lt;/b&gt;: 다중 스무딩(window 3,5,7,9), 곡률, 다중 시간 스케일 속도, 물리 기반 힌트, 교차 피처&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하이퍼파라미터&lt;/b&gt;: num_leaves 127, lr 0.02, 5000 rounds&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: Hit@10mm 61.96% (대회 점수 &lt;b&gt;64.38%&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;Easy 8.42mm(+0.27mm 개선), Hard 49.80mm(+8.19mm 개선) &amp;mdash; 둘 다 개선 성공&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Phase 4: XGBoost + 앙상블&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;: LGB-XGB 상관 0.99로 거의 같은 모델 &amp;rarr; 앙상블 효과 미미 (+0.14%p)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;교훈&lt;/b&gt;: 같은 피처/타겟에 유사 알고리즘을 쓰면 다양성이 없어 앙상블 효과 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Phase 5: DL 모델 (CNN+GRU) + 3모델 앙상블&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;DL 구조&lt;/b&gt;: 1D-CNN &amp;rarr; Bidirectional GRU &amp;rarr; Attention &amp;rarr; 출력&lt;/li&gt;
&lt;li&gt;&lt;b&gt;입력&lt;/b&gt;: 20채널 시퀀스 (원시/스무딩 좌표, 변위, 속도, 가속도)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과&lt;/b&gt;: DL 단독 Hit@10mm 63.53% &amp;mdash; &lt;b&gt;LGB(61.96%)보다 +1.57%p 높음&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;LGB-DL 상관 0.97 &amp;rarr; 트리 대비 다른 패턴 포착&lt;/li&gt;
&lt;li&gt;&lt;b&gt;3모델 앙상블 (LGB+XGB+DL)&lt;/b&gt;: Hit@10mm 63.73% (대회 점수 &lt;b&gt;65.76%&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  점수 변화 추이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 OOF Hit@10mm 대회 점수&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;Linear 외삽 (기준)&lt;/td&gt;
&lt;td&gt;57.88%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LightGBM v1&lt;/td&gt;
&lt;td&gt;59.97%&lt;/td&gt;
&lt;td&gt;60.12%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LightGBM v2&lt;/td&gt;
&lt;td&gt;57.36%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LightGBM v3&lt;/td&gt;
&lt;td&gt;61.96%&lt;/td&gt;
&lt;td&gt;64.38%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LGB+XGB 앙상블&lt;/td&gt;
&lt;td&gt;62.10%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;LGB+XGB+DL 앙상블&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;63.73%&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;65.76%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  핵심 인사이트 &amp;amp; 교훈&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;: Linear 외삽이 57.88%로 이미 강력. 복잡한 방법(2차 다항식, 가속도 보정)이 오히려 나빴음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;노이즈 증폭 문제&lt;/b&gt;: 관측 노이즈 3mm가 미분 연산 시 증폭됨. Savitzky-Golay 스무딩으로 30.5% 노이즈 감소 달성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;잔차 보정 vs 직접 예측&lt;/b&gt;: 잔차 보정이 Easy 케이스를 보호하면서 안전한 개선 가능. 직접 예측은 공격적이지만 Easy 악화 위험&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Huber Loss의 효과&lt;/b&gt;: MAE에서 Huber로 변경 시 Hard 케이스 보정이 더 적극적으로 이루어짐&lt;/li&gt;
&lt;li&gt;&lt;b&gt;앙상블은 다양성이 핵심&lt;/b&gt;: LGB-XGB 상관 0.99 &amp;rarr; 효과 없음. LGB-DL 상관 0.97 &amp;rarr; 의미 있는 개선. 서로 다른 구조의 모델이 필요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OOF vs 실제 점수 갭&lt;/b&gt;: OOF보다 실제 점수가 약 2%p 높게 나옴. Test가 약간 더 예측하기 쉬운 분포&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/66</guid>
      <comments>https://mosh0312.tistory.com/66#entry66comment</comments>
      <pubDate>Wed, 13 May 2026 20:49:25 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/12 TIL</title>
      <link>https://mosh0312.tistory.com/65</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Tableau Desktop을 활용한 다양한 차트 시각화, 분석 기능, 이중축 활용, 대시보드 저장 및 공유 방법을 학습했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 다양한 차트 시각화 (챕터 2-1)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;태블로 시각화 3가지 방법&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;: 필드 특성에 맞는 차트를 자동 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;드래그 앤 드롭&lt;/b&gt;: 행, 열, 색상, 크기 등 선반에 자유롭게 배치하여 원하는 시각화 구현&lt;/li&gt;
&lt;li&gt;&lt;b&gt;표현 방식(Show Me)&lt;/b&gt;: 선택한 차원/측정값 조합에 따라 가능한 차트 유형을 보여주고 선택 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주요 차트 유형&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;막대차트&lt;/td&gt;
&lt;td&gt;범주별 값 비교&lt;/td&gt;
&lt;td&gt;열: 차원, 행: 측정값, 색상: 측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;라인차트&lt;/td&gt;
&lt;td&gt;시간에 따른 추이 확인&lt;/td&gt;
&lt;td&gt;열: 날짜(년/월), 행: 측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;맵 차트&lt;/td&gt;
&lt;td&gt;지역별 값 비교&lt;/td&gt;
&lt;td&gt;경도/위도 + 색상/크기에 측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파이차트&lt;/td&gt;
&lt;td&gt;전체 대비 구성비 확인&lt;/td&gt;
&lt;td&gt;색상/각도/크기에 측정값, 레이블에 차원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;트리맵&lt;/td&gt;
&lt;td&gt;계층적 데이터의 비중 비교&lt;/td&gt;
&lt;td&gt;크기/색상에 측정값, 레이블에 차원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;연속형 vs 불연속형&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;: 날짜를 구간별로 끊어서 헤더로 표시 &amp;rarr; 카테고리처럼 취급&lt;/li&gt;
&lt;li&gt;&lt;b&gt;연속형(초록색)&lt;/b&gt;: 날짜를 연속된 축으로 표시 &amp;rarr; 시간 흐름이 이어져 보임&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계층(Hierarchy)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계층 구조를 만들어 일반 데이터에서 특정 데이터로 드릴다운이 가능하다. 예를 들어 국가 &amp;gt; 시도 &amp;gt; 시군구 순서로 구성할 수 있으며, 필드를 겹쳐 드롭하면 계층 만들기 창이 나타난다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;퀵테이블 계산&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스에서 자주 사용하는 계산을 빠르게 적용하는 기능으로, 누계, 차이, 비율 차이, 구성 비율, 순위, 이동 평균, YTD 총계, 전년 대비 성장률 등이 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;KPI 시각화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KPI(핵심성과지표)는 SMART 원칙(구체적, 측정 가능, 달성 가능, 관련성, 시간 제한)에 따라 설정한다. Tableau에서는 레이블에 측정값을 배치하여 KPI 카드를 만들 수 있으며, 고유 카운트를 활용해 순수 주문 건수나 고객 수를 구할 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 분석을 위한 다양한 기능 활용 (챕터 2-2)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정렬 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;데이터 원본 순서&lt;/td&gt;
&lt;td&gt;원본에 입력된 순서대로 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사전순&lt;/td&gt;
&lt;td&gt;가나다/알파벳 순서로 정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;필드&lt;/td&gt;
&lt;td&gt;다른 필드 값 기준으로 정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;수동&lt;/td&gt;
&lt;td&gt;사용자가 직접 드래그해서 순서 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;중첩&lt;/td&gt;
&lt;td&gt;상위 차원 그룹 안에서 하위 차원을 다시 정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &quot;중구&quot;처럼 여러 시도에 속하는 시군구는 &lt;b&gt;중첩 정렬&lt;/b&gt;을 적용해야 각 시도 안에서 올바른 비교가 가능하다.&lt;/p&gt;
&lt;/blockquote&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;차원 필터 옵션&lt;/b&gt;: 일반, 와일드카드, 조건, 상위&lt;/li&gt;
&lt;li&gt;&lt;b&gt;측정값 필터(동적 필터)&lt;/b&gt;: 값 범위, 최소, 최대, 특수(null 처리)&lt;/li&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;rarr; &quot;이 데이터 원본을 사용하는 모든 항목&quot;을 선택한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;크로스탭(텍스트 테이블)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 숫자 값을 뷰에 표시할 때 사용하며, 열에 차원 1개, 행에 차원 1개, Abc 자리에 측정값 1개를 배치하여 만든다. 분석 패널로 행/열 총합계와 소계를 추가할 수 있다.&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;&lt;b&gt;테이블(옆으로)&lt;/b&gt;: 행 단위, 좌&amp;rarr;우 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테이블(아래로)&lt;/b&gt;: 열 단위, 위&amp;rarr;아래 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테이블&lt;/b&gt;: 전체 테이블 기준 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;패널(옆으로)&lt;/b&gt;: 특정 차원 그룹 내에서 행 방향 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;패널&lt;/b&gt;: 패널 전체 기준 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;특정 차원&lt;/b&gt;: 직접 지정한 차원 기준 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스캐터 차트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개 이상의 연속형 측정값 간의 관계를 시각화하며, 패턴/상관관계/이상치 탐색에 적합하다. 분석 패널에서 추세선, 클러스터링을 추가할 수 있고, 크기에 측정값을 배치하면 버블 차트로 확장 가능하다.&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;&lt;b&gt;요약&lt;/b&gt;: 상수 라인, 평균 라인, 사분위수/중앙값, 박스 플롯, 총계&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모델&lt;/b&gt;: 95% CI 평균/중앙값, 추세선(선형/로그/다항식/지수), 예측(지수 평활법), 클러스터(K-means)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용자 지정&lt;/b&gt;: 참조선, 참조 구간, 분포 구간, 박스 플롯&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 이중축을 활용한 시각화 (챕터 2-3)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이중축이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개의 축을 겹쳐서 하나의 뷰에 표시하는 기능으로, 서로 다른 단위의 데이터를 비교할 수 있다. 각 축에 서로 다른 차트 유형(라인 + 막대 등)을 적용할 수 있고, 색상과 마크 형태를 축별로 독립적으로 지정할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;도넛차트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이 차트의 변형으로 가운데가 뚫린 원형 차트다. 이중축을 활용하여 min(0) 두 개를 열에 배치하고, 마크 1은 파이차트, 마크 2는 흰색 원으로 설정한다. 가운데 공간에 총합이나 KPI 값을 표시할 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;Dummy Measure&lt;/b&gt;: 실제 데이터에 없는 가짜 측정값(예: min(0))을 만들어 시각화 레이아웃을 제어하는 기법&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버터플라이 차트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양쪽으로 마주 보는 형태의 막대차트로, 두 집단을 같은 기준에서 비교할 때 사용한다. 열에 합계(매출), min(0), 합계(수익)을 배치하고, 가운데 min(0)에는 텍스트(시도)를 레이블로 표시한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 대시보드 저장 및 공유 (챕터 2-4)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬 공유 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;.twb 저장&lt;/td&gt;
&lt;td&gt;Tableau 사용자&lt;/td&gt;
&lt;td&gt;워크시트 포함 단순 통합 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.twbx 저장&lt;/td&gt;
&lt;td&gt;Tableau 사용자&lt;/td&gt;
&lt;td&gt;데이터 + 이미지 + 통합 문서를 포함한 패키지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PPT 내보내기&lt;/td&gt;
&lt;td&gt;비사용자&lt;/td&gt;
&lt;td&gt;대시보드가 하나의 이미지로 PPT에 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;이미지 내보내기(PNG)&lt;/td&gt;
&lt;td&gt;비사용자&lt;/td&gt;
&lt;td&gt;대시보드/워크시트를 이미지로 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;크로스탭을 Excel로&lt;/td&gt;
&lt;td&gt;비사용자&lt;/td&gt;
&lt;td&gt;크로스탭 형태의 워크시트를 엑셀로 내보내기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  원본 데이터 접근 권한이 없는 사람과 공유할 때는 &lt;b&gt;.twbx&lt;/b&gt; 형태로 공유하는 것이 좋다.&lt;/p&gt;
&lt;/blockquote&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;Tableau Server / Cloud&lt;/b&gt;: 회사 내 서버에 게시하여 동료와 공유. 서버 주소와 ID/PW 필요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tableau Public&lt;/b&gt;: 세계 최대 시각화 리포지토리로, 무료로 대시보드를 게시하고 공유 가능. 게시 시 데이터 추출이 필요하며, 퍼블릭 URL을 노션에 임베딩하면 노션에서도 대시보드를 볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/65</guid>
      <comments>https://mosh0312.tistory.com/65#entry65comment</comments>
      <pubDate>Tue, 12 May 2026 20:54:29 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/11 TIL</title>
      <link>https://mosh0312.tistory.com/64</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 비즈니스 인텔리전스(BI)란?&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Visual Analytics&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;을 활용해 데이터를 표현하고 분석하는 과정&lt;/li&gt;
&lt;li&gt;감각 기억(0.2~0.5초)에서 색상&amp;middot;크기&amp;middot;모양 등 특징 있는 정보를 빠르게 인지 &amp;rarr; 단기 기억(7개 항목, 10~15초)으로 전환&lt;/li&gt;
&lt;li&gt;시각화를 통해 정보를 빠르고 효과적으로 전달 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BI 정의 &amp;amp; 핵심 프로세스&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; 비즈니스 데이터를 수집&amp;middot;분석&amp;middot;시각화하여 실행 가능한 통찰을 생성하는 기술&amp;middot;전략&amp;middot;프로세스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심:&lt;/b&gt; 데이터 시각화, 분석, 대시보드 생성, 데이터 소스 통합, 변환&amp;middot;모델링, 공유&amp;middot;협업, 실시간 모니터링&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BI 필요성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전 세계 데이터: 2024년 149ZB &amp;rarr; 2028년 394ZB 이상 예상&lt;/li&gt;
&lt;li&gt;기업 데이터의 &lt;b&gt;60~73%는 분석되지 않음&lt;/b&gt;, 직원 74%가 데이터 작업에 부담&lt;/li&gt;
&lt;li&gt;BI 시장 규모 2027년 약 393억 달러 예상 (CAGR 8.5%)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대표 BI 도구&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Power BI&lt;/td&gt;
&lt;td&gt;Microsoft&lt;/td&gt;
&lt;td&gt;36%&lt;/td&gt;
&lt;td&gt;Excel 수식 호환, MS 서비스 연동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tableau&lt;/td&gt;
&lt;td&gt;Salesforce&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;커뮤니티 활발, 풍부한 교육 자료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Looker Studio&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;BigQuery 연동, 드래그 앤 드롭&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Tableau 소개&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tableau란?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 시각화 &amp;amp; BI 도구, &lt;b&gt;코딩 없이 드래그 앤 드롭&lt;/b&gt;으로 분석 가능&lt;/li&gt;
&lt;li&gt;2003년 Stanford 출신 3인이 설립 &amp;rarr; 2019년 Salesforce 인수 &amp;rarr; 2023년 AI 기능 도입&lt;/li&gt;
&lt;li&gt;해외 400만+, 국내 10만+ 사용자&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제품군&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Tableau Prep&lt;/td&gt;
&lt;td&gt;데이터 결합&amp;middot;변형&amp;middot;정리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tableau Desktop&lt;/td&gt;
&lt;td&gt;데이터 탐색&amp;middot;시각화&amp;middot;분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tableau Server/Cloud&lt;/td&gt;
&lt;td&gt;협업&amp;middot;배포&amp;middot;거버넌스 관리&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;p data-ke-size=&quot;size16&quot;&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;Creator&lt;/td&gt;
&lt;td&gt;$75/월&lt;/td&gt;
&lt;td&gt;분석가, BI 개발자&lt;/td&gt;
&lt;td&gt;Desktop+Prep+Server 전체 권한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explorer&lt;/td&gt;
&lt;td&gt;$42/월&lt;/td&gt;
&lt;td&gt;비즈니스 사용자&lt;/td&gt;
&lt;td&gt;웹 기반 탐색&amp;middot;편집&amp;middot;저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Viewer&lt;/td&gt;
&lt;td&gt;$15/월&lt;/td&gt;
&lt;td&gt;경영진, 보고서 수요자&lt;/td&gt;
&lt;td&gt;보기 전용 + 기본 상호작용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tableau 장점&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;자유도 높은 시각화 (인터랙티브 대시보드, 스토리텔링)&lt;/li&gt;
&lt;li&gt;80개+ 내장 커넥터 (Excel, DB, 클라우드, API 등)&lt;/li&gt;
&lt;li&gt;AI 분석: Tableau Pulse(실시간 알림), Tableau GPT(자연어 질의)&lt;/li&gt;
&lt;li&gt;활발한 커뮤니티 &amp;amp; Tableau Public&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Tableau Desktop 설치 및 라이선스 활성화&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인증 흐름&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Tableau.com 계정 생성&lt;/li&gt;
&lt;li&gt;Tableau Cloud 로그인 (초대 이메일 &amp;rarr; Join Now &amp;rarr; 이름/비밀번호 설정)&lt;/li&gt;
&lt;li&gt;2차 인증 등록 (Salesforce Authenticator 또는 Google Authenticator)&lt;/li&gt;
&lt;li&gt;Tableau Desktop 사용 시작&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Desktop 설치 순서&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;tableau.com/ko-kr/support/releases 에서 최신 버전 다운로드&lt;/li&gt;
&lt;li&gt;설치 &amp;rarr; 등록양식 작성 &amp;rarr; &lt;b&gt;서버에 로그인하여 활성화&lt;/b&gt; &amp;rarr; Tableau Cloud 선택&lt;/li&gt;
&lt;li&gt;Cloud 이메일/비밀번호 입력 &amp;rarr; Authenticator 인증 &amp;rarr; 활성화 완료&lt;/li&gt;
&lt;li&gt;확인: 도움말 &amp;rarr; 제품 키 관리 &amp;rarr; Creator 키 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Public Edition vs Desktop&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분 Public Edition (무료) Desktop (유료)&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;Tableau Public만 (공개)&lt;/td&gt;
&lt;td&gt;로컬&amp;middot;Server&amp;middot;Cloud (비공개 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 연결&lt;/td&gt;
&lt;td&gt;Excel, CSV 등 제한적&lt;/td&gt;
&lt;td&gt;모든 DB&amp;middot;클라우드 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;용도&lt;/td&gt;
&lt;td&gt;학습&amp;middot;포트폴리오&lt;/td&gt;
&lt;td&gt;기업 분석&amp;middot;실무&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Tableau 기초&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습 데이터: Superstore Dataset&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상 소매점 판매 데이터 &amp;mdash; 주문&amp;middot;고객&amp;middot;제품&amp;middot;판매성과 정보 포함&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;파일에 연결 / 서버에 연결 / 저장된 데이터 원본에 연결&lt;/li&gt;
&lt;li&gt;방법: 데이터 패널에서 텍스트 파일 클릭 또는 csv를 드래그 앤 드롭&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tableau UI 핵심 영역&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; 필드(열) 표시 &amp;mdash; 차원/측정값을 끌어 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;분석 패널:&lt;/b&gt; 트렌드 라인, 평균선, 예측 등 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;행/열 선반:&lt;/b&gt; 시각화 축 결정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;카드 보기(선반):&lt;/b&gt; 필터&amp;middot;마크&amp;middot;색상&amp;middot;크기&amp;middot;레이블 세부 조정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시트/뷰 영역:&lt;/b&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;파란색(Abc)&lt;/b&gt; = 불연속형(Discrete)&lt;/li&gt;
&lt;li&gt;  &lt;b&gt;초록색(#)&lt;/b&gt; = 연속형(Continuous)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;=Abc&lt;/b&gt; = 계산된 필드 / 복사본&lt;/li&gt;
&lt;li&gt;&lt;b&gt;!&lt;/b&gt; = 유효하지 않은 필드&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;차원 vs 측정값&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;b&gt;차원(Dimension)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;데이터를 분류&amp;middot;그룹화하는 정성적 기준&lt;/td&gt;
&lt;td&gt;고객 세그먼트, 시도, 제품 대분류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;측정값(Measure)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;집계 가능한 정량적 수치&lt;/td&gt;
&lt;td&gt;매출, 수량, 수익, 할인율&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/64</guid>
      <comments>https://mosh0312.tistory.com/64#entry64comment</comments>
      <pubDate>Mon, 11 May 2026 19:30:06 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/08 TIL</title>
      <link>https://mosh0312.tistory.com/63</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 발표 자료 작성 및 대본을 마무리짓고 발표를 마무리했다.&lt;/p&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/63</guid>
      <comments>https://mosh0312.tistory.com/63#entry63comment</comments>
      <pubDate>Fri, 8 May 2026 20:20:13 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/07 TIL</title>
      <link>https://mosh0312.tistory.com/62</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 발표 보고서 및 발표 자료를 만들고 대본을 작성했다.&lt;/p&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/62</guid>
      <comments>https://mosh0312.tistory.com/62#entry62comment</comments>
      <pubDate>Thu, 7 May 2026 21:30:42 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/06 TIL</title>
      <link>https://mosh0312.tistory.com/61</link>
      <description>&lt;h1&gt;1. 오늘의 목표&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 모델(2차/3차) 문제점 분석 및 새 베이스라인 구축&lt;/li&gt;
&lt;li&gt;1차 모델 전체 파이프라인 구성 (DBSCAN + SMOTE + Optuna + Stacking)&lt;/li&gt;
&lt;li&gt;성능 개선을 위한 피처 엔지니어링 + 모델 확장&lt;/li&gt;
&lt;li&gt;2차 모델 (극단값 수동 제거 기반) 구축&lt;/li&gt;
&lt;li&gt;발표 자료(PPT) 초안 작성&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. 기존 모델 문제점 분석&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차 모델 (2차베이스모델_최지호_제조.ipynb)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;27개 변수 중 19개만 수동 선택 &amp;rarr; Log_X_Index, Log_Y_Index 등 주요 변수 누락&lt;/li&gt;
&lt;li&gt;XGBoost 파라미터 오타: n_estimator(&amp;rarr; n_estimators), sub_sample(&amp;rarr; subsample)&lt;/li&gt;
&lt;li&gt;존재하지 않는 파라미터 사용: num_boost_around&lt;/li&gt;
&lt;li&gt;F1-Weighted만 사용 &amp;rarr; 소수 클래스 성능 파악 불가&lt;/li&gt;
&lt;li&gt;파생변수 X_Range 변수명 혼동 (실제로는 Luminosity Range)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3차 모델 (3차베이스모델_최지호_제조.ipynb)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일부 오타 수정, DBSCAN/SMOTE 파이프라인 추가로 개선&lt;/li&gt;
&lt;li&gt;그러나 Optuna 튜닝 함수 내 n_estimator 오타 여전히 존재&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DBSCAN 탐색 시 테스트셋 F1으로 평가 &amp;rarr; Data Leakage 문제&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;셀 20에 베이스 모델 + 튜닝 + 앙상블이 모두 포함 &amp;rarr; 디버깅 어려움&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. 새 베이스라인 모델 구축&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;원본 27개 변수 전체 사용 (수동 선택 X)&lt;/li&gt;
&lt;li&gt;LabelEncoder로 문자열 레이블 &amp;rarr; 숫자 변환 (XGBoost 호환)&lt;/li&gt;
&lt;li&gt;F1-Macro를 주 평가지표로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;XGBoost ValueError 해결&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;XGBoost는 문자열 레이블을 직접 받지 못함&lt;/li&gt;
&lt;li&gt;LabelEncoder로 0~6 숫자 변환 필수&lt;/li&gt;
&lt;li&gt;Colab에서 셀 수정 후에는 &lt;b&gt;런타임 재시작&lt;/b&gt; 필요 (이전 메모리 변수 간섭 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;F1 Score vs 예측 신뢰도&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;F1 Score&lt;/b&gt;: 모델 전체의 분류 성능 (Precision &amp;times; Recall 조화 평균)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예측 신뢰도&lt;/b&gt;: 개별 샘플의 예측 확률 &amp;rarr; predict_proba() 사용&lt;/li&gt;
&lt;li&gt;F1-Macro: 모든 클래스를 동등하게 평가 &amp;rarr; 클래스 불균형 시 필수&lt;/li&gt;
&lt;li&gt;F1-Weighted: 샘플 수 비례 가중 &amp;rarr; 다수 클래스에 쏠림&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. 1차 모델 전체 파이프라인&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파이프라인 흐름&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;로우 데이터(27개) &amp;rarr; 피처 엔지니어링(+12개) &amp;rarr; RobustScaler
&amp;rarr; DBSCAN 이상치 제거(CV 기준) &amp;rarr; SMOTE 오버샘플링
&amp;rarr; Optuna 튜닝(5개 모델 &amp;times; 150 trials)
&amp;rarr; Soft Voting + Stacking 앙상블 &amp;rarr; 최종 평가
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주요 구성 요소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;피처 엔지니어링 (12개 파생변수)&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;기하학적: Width, Height, Area_Ratio, Aspect_Ratio, Perimeter_Area_Ratio&lt;/li&gt;
&lt;li&gt;밝기: Luminosity_Range, Mean_Luminosity&lt;/li&gt;
&lt;li&gt;위치: X_Center, Relative_X&lt;/li&gt;
&lt;li&gt;인덱스 조합: Edge_Square_Ratio, XY_Index_Product, Edge_XY_Sum&lt;/li&gt;
&lt;li&gt;다중공선성 제거: TypeOfSteel_A400, Y_Maximum 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;RobustScaler: 이상치에 강건 (중앙값/IQR 기반 스케일링)&lt;/li&gt;
&lt;li&gt;SMOTE: imblearn Pipeline 내 적용 &amp;rarr; CV 폴드마다 train에만 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모델 5종&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;RandomForest, ExtraTrees, XGBoost, LightGBM, GradientBoosting&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Stacking 앙상블&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;Base: 5개 모델 &amp;rarr; Meta: LightGBM (lr=0.05, n=200)&lt;/li&gt;
&lt;li&gt;단순 Voting보다 성능이 높은 경우가 많음&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. 극단값 분석 및 2차 모델&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;27개 원본 변수 + 12개 파생변수에 대해 박스플롯 시각화&lt;/li&gt;
&lt;li&gt;스케일이 다르므로 큰 스케일(12개) / 작은 스케일(13개) / 바이너리(2개) / 파생변수(12개)로 그룹 분리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IQR 일괄 제거의 문제점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IQR 1.5배 기준: 전체 33.3% 제거, &lt;b&gt;K_Scratch 84.7% 손실&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;IQR 3.0배 기준: 여전히 K_Scratch 대량 손실&lt;/li&gt;
&lt;li&gt;K_Scratch는 원래 대형 결함 &amp;rarr; 크기 변수에서 &quot;정상적으로 큰 값&quot;이 이상치로 분류됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결론: 통계적 일괄 제거 대신 수동 제거가 필요&lt;/b&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;행 391 (K_Scratch)&lt;/b&gt;: Pixels_Areas 152,655 / X_Perimeter 10,449 / Y_Perimeter 18,152
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;5개 변수에서 동시에 최극단값 (같은 샘플 1건)&lt;/li&gt;
&lt;li&gt;일반 결함(면적 중앙값 174)의 약 900배&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;행 1863 (Other_Faults)&lt;/b&gt;: Aspect_Ratio 83.25 (2위 37.06의 2배 이상)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;높이 3, 폭 333으로 비정상적 형태&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차 모델&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단 2건만 수동 제거 &amp;rarr; 1,939건으로 데이터셋 구성&lt;/li&gt;
&lt;li&gt;K_Scratch 390건 유지 (0.3% 손실), Other_Faults 672건 유지 (0.1% 손실)&lt;/li&gt;
&lt;li&gt;DBSCAN 자동 제거 대비 클래스 보존 효과 압도적&lt;/li&gt;
&lt;li&gt;나머지 파이프라인(피처 엔지니어링 &amp;rarr; RobustScaler &amp;rarr; SMOTE &amp;rarr; Optuna &amp;rarr; Stacking)은 동일 적용&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. 오분류 문제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pastry / Bumps / Other_Faults 오분류 원인&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;Pastry/Bumps: 둘 다 표면 돌출형 &amp;rarr; 크기/밝기 특성 유사&lt;/li&gt;
&lt;li&gt;Other_Faults: &quot;기타&quot;로 다양한 패턴 혼재 &amp;rarr; 경계 모호&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해결 방향&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;클래스별 샘플 가중치 세분화&lt;/li&gt;
&lt;li&gt;오분류 패턴 분석 후 타겟 피처 추가&lt;/li&gt;
&lt;li&gt;계층적 분류 (1단계 대분류 &amp;rarr; 2단계 세부 분류)&lt;/li&gt;
&lt;li&gt;임계치 최적화 (클래스별 threshold tuning)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 로컬 환경 이슈&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;!pip install 미작동&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;!pip은 Colab 전용 매직 커맨드&lt;/li&gt;
&lt;li&gt;VS Code / 로컬 Jupyter에서는 %pip install 또는 subprocess 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;# 방법 1
%pip install imbalanced-learn xgboost lightgbm optuna

# 방법 2
import subprocess, sys
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'imbalanced-learn'])
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;8. 발표 자료 (PPT) 작성&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;발표 구성 (10분, 과정 중심)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프로젝트 개요&lt;/li&gt;
&lt;li&gt;데이터 탐색 (EDA)&lt;/li&gt;
&lt;li&gt;1차 모델 (베이스라인 &amp;rarr; 파이프라인)&lt;/li&gt;
&lt;li&gt;1차 모델 한계점&lt;/li&gt;
&lt;li&gt;2차 모델 (이상치 수동 제거 기반)&lt;/li&gt;
&lt;li&gt;1차 vs 2차 비교&lt;/li&gt;
&lt;li&gt;결론 및 향후 계획&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 보고서 PPT 필수 항목 (템플릿 기준)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;01 프로젝트 개요 (주제, 선정 배경, 분석 목표)&lt;/li&gt;
&lt;li&gt;02 팀 구성 및 역할 (역할 분담 + 튜터 피드백)&lt;/li&gt;
&lt;li&gt;03 수행 절차 및 방법 (일정, 데이터 수집/전처리, 분석 도구)&lt;/li&gt;
&lt;li&gt;04 수행 경과 (핵심 섹션)&lt;/li&gt;
&lt;li&gt;05 자체 평가 의견 (완성도 + 느낀 점)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;04 수행 경과 세부 구성 (최종 v3)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;EDA (탐색적 데이터 분석)&lt;/li&gt;
&lt;li&gt;피처 엔지니어링&lt;/li&gt;
&lt;li&gt;이상치 처리&lt;/li&gt;
&lt;li&gt;데이터 분할 및 전처리&lt;/li&gt;
&lt;li&gt;단일 및 앙상블 모델 구축/튜닝&lt;/li&gt;
&lt;li&gt;계층 분류 (1차 대분류 &amp;rarr; 2차 세부 분류)&lt;/li&gt;
&lt;li&gt;임계치 최적화&lt;/li&gt;
&lt;li&gt;AUC-ROC 분석&lt;/li&gt;
&lt;li&gt;피드백 반영 및 트러블 슈팅&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pretendard 폰트 고정, 빨간색(#E8192C) 디자인 계열&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;9. 오늘 배운 핵심 개념 정리&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Data Leakage 방지&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DBSCAN 하이퍼파라미터 탐색 시 테스트셋으로 평가하면 과적합 위험&lt;/li&gt;
&lt;li&gt;반드시 Cross Validation으로만 평가&lt;/li&gt;
&lt;li&gt;SMOTE도 CV 폴드 내 train에만 적용 &amp;rarr; imblearn Pipeline 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IQR 이상치 제거 vs 수동 제거&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IQR 일괄 제거: 간편하지만 도메인 특성을 무시 &amp;rarr; 특정 클래스 대량 손실 가능&lt;/li&gt;
&lt;li&gt;수동 제거: 박스플롯으로 확인 후 극단적인 값만 선별 &amp;rarr; 클래스 보존에 유리&lt;/li&gt;
&lt;li&gt;이 데이터에서는 2건 수동 제거가 DBSCAN 자동 제거보다 압도적으로 효과적&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Stacking vs Voting&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Voting: 각 모델의 예측을 단순 평균/다수결&lt;/li&gt;
&lt;li&gt;Stacking: 각 모델의 예측을 새로운 피처로 사용하여 메타 모델이 추가 학습&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계층적 분류 (Hierarchical Classification)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유사한 결함 간 오분류를 줄이기 위해 2단계로 분류&lt;/li&gt;
&lt;li&gt;1차: 7개 &amp;rarr; 3그룹 (표면형/선형/오염형)&lt;/li&gt;
&lt;li&gt;2차: 그룹 내 세부 분류&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. 다음 할 일&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ ] 1차 모델 Colab 실행 및 결과 수치 확인&lt;/li&gt;
&lt;li&gt;[ ] 2차 모델 실행 및 1차 대비 성능 비교&lt;/li&gt;
&lt;li&gt;[ ] 계층 분류 코드 구현 및 실행&lt;/li&gt;
&lt;li&gt;[ ] 임계치 최적화 코드 구현&lt;/li&gt;
&lt;li&gt;[ ] AUC-ROC 커브 생성 코드 작성&lt;/li&gt;
&lt;li&gt;[ ] PPT에 결과 수치 및 이미지 삽입&lt;/li&gt;
&lt;li&gt;[ ] Classification Report / Confusion Matrix 결과 공유 후 추가 개선&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/61</guid>
      <comments>https://mosh0312.tistory.com/61#entry61comment</comments>
      <pubDate>Wed, 6 May 2026 20:21:35 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 05/04 TIL</title>
      <link>https://mosh0312.tistory.com/60</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 프로젝트 개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;철강 제조 공정에서 발생하는 7종 표면 결함(Pastry, Z_Scratch, K_Scratch, Stains, Dirtiness, Bumps, Other_Faults)을 예측하는 &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;데이터: 1,941개 샘플, 27개 공정 변수&lt;/li&gt;
&lt;li&gt;타겟: One-Hot 인코딩된 7개 결함 유형 &amp;rarr; idxmax()로 단일 레이블 변환&lt;/li&gt;
&lt;li&gt;클래스 불균형 존재: Other_Faults(34.7%) vs Dirtiness(2.8%)&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. 기존 모델(2차/3차) 문제점 분석&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차 모델 문제점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;27개 변수 중 19개만 &lt;b&gt;수동 선택&lt;/b&gt; &amp;rarr; Log_X_Index, Log_Y_Index 등 주요 변수 누락&lt;/li&gt;
&lt;li&gt;XGBoost 하이퍼파라미터 &lt;b&gt;오타&lt;/b&gt;: n_estimator &amp;rarr; n_estimators, sub_sample &amp;rarr; subsample&lt;/li&gt;
&lt;li&gt;존재하지 않는 파라미터 사용: num_boost_around&lt;/li&gt;
&lt;li&gt;평가지표로 &lt;b&gt;F1-Weighted만&lt;/b&gt; 사용 &amp;rarr; 소수 클래스 성능 파악 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3차 모델 개선점 및 잔존 문제&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일부 오타 수정, DBSCAN/SMOTE 파이프라인 추가 등 개선&lt;/li&gt;
&lt;li&gt;그러나 피처 수동 선택, Optuna 튜닝 함수 내 파라미터 오타 여전히 존재&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DBSCAN 탐색 시 테스트셋 F1으로 평가&lt;/b&gt; &amp;rarr; 정보 누출(data leakage) 위험&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. 새로운 베이스라인 모델 구축&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;&lt;b&gt;원본 27개 변수 전체 사용&lt;/b&gt; (수동 선택 X)&lt;/li&gt;
&lt;li&gt;LabelEncoder로 문자열 레이블 &amp;rarr; 숫자 변환 (XGBoost 호환)&lt;/li&gt;
&lt;li&gt;F1-Macro를 주 평가지표로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;베이스라인 모델 3종 비교&lt;/h3&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;RandomForest / XGBoost / LightGBM
&lt;/code&gt;&lt;/pre&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;XGBoost는 문자열 레이블을 직접 받지 못한다. LabelEncoder로 숫자 변환이 필수.&lt;/li&gt;
&lt;li&gt;Colab에서 셀 1의 변수를 수정한 후에는 &lt;b&gt;런타임 재시작&lt;/b&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;4. 전체 파이프라인 구성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 3차 모델의 구조를 유지하되 문제점을 수정하여 전체 파이프라인을 구성했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파이프라인 흐름&lt;/h3&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;데이터 로드 &amp;rarr; Train/Test 분할 &amp;rarr; 베이스라인 평가
&amp;rarr; DBSCAN 이상치 제거 (CV 기준 탐색) &amp;rarr; SMOTE 오버샘플링
&amp;rarr; 4개 모델 비교 (DT, RF, XGB, LGBM)
&amp;rarr; Optuna 하이퍼파라미터 튜닝 (100 trials)
&amp;rarr; Soft Voting 앙상블 &amp;rarr; 최종 테스트셋 평가
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주요 수정 사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항목 기존(3차) 수정 후&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;피처&lt;/td&gt;
&lt;td&gt;19개 수동 선택&lt;/td&gt;
&lt;td&gt;27개 전체 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파라미터 오타&lt;/td&gt;
&lt;td&gt;n_estimator, sub_sample 등&lt;/td&gt;
&lt;td&gt;n_estimators, subsample&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DBSCAN 평가&lt;/td&gt;
&lt;td&gt;Test F1 기준 (정보 누출)&lt;/td&gt;
&lt;td&gt;CV F1-Macro 기준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;평가지표&lt;/td&gt;
&lt;td&gt;F1-Weighted만&lt;/td&gt;
&lt;td&gt;F1-Macro + F1-Weighted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SMOTE&lt;/td&gt;
&lt;td&gt;별도 적용&lt;/td&gt;
&lt;td&gt;imblearn Pipeline 내 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 성능 개선 시도&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;F1-Macro 0.80~0.85 수준에서 추가 개선을 위해 3가지 방향을 종합 적용했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5-1. 피처 엔지니어링 (17개 파생변수 추가)&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;: Width, Height, Area_Ratio, Aspect_Ratio, Compactness&lt;/li&gt;
&lt;li&gt;&lt;b&gt;밝기 관련&lt;/b&gt;: Luminosity_Range, Mean_Luminosity, Luminosity_Std_Proxy&lt;/li&gt;
&lt;li&gt;&lt;b&gt;위치 관련&lt;/b&gt;: X_Center, Y_Center, Relative_X&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인덱스 조합&lt;/b&gt;: Edge_Square_Ratio, Log_Area_X_Ratio, XY_Index_Product, Edge_XY_Sum&lt;/li&gt;
&lt;li&gt;상관계수 1.0인 변수 제거: TypeOfSteel_A400, Y_Maximum&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5-2. 전처리 강화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;StandardScaler &amp;rarr; RobustScaler로 변경 (이상치에 강건)&lt;/li&gt;
&lt;li&gt;Mutual Information 기반 피처 중요도 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5-3. 모델 확장 + Stacking 앙상블&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모델 추가: ExtraTrees, GradientBoosting (총 5개)&lt;/li&gt;
&lt;li&gt;Optuna trials 100 &amp;rarr; 150으로 확대&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Soft Voting&lt;/b&gt; + &lt;b&gt;Stacking&lt;/b&gt;(메타 모델: LightGBM) 앙상블 구성&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. 오늘 배운 핵심 개념 정리&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;F1 Score vs 예측 신뢰도&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;F1 Score&lt;/b&gt;: 모델 전체의 분류 성능 (Precision &amp;times; Recall 조화 평균)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예측 신뢰도&lt;/b&gt;: 개별 샘플의 예측 확률 &amp;rarr; predict_proba() 사용&lt;/li&gt;
&lt;li&gt;F1-Macro: 모든 클래스를 동등하게 평가 &amp;rarr; &lt;b&gt;클래스 불균형 시 필수&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;F1-Weighted: 샘플 수 비례 가중 &amp;rarr; 다수 클래스에 쏠림&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Data Leakage 방지&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DBSCAN 하이퍼파라미터 탐색 시 테스트셋으로 평가하면 과적합 위험&lt;/li&gt;
&lt;li&gt;반드시 &lt;b&gt;Cross Validation으로만&lt;/b&gt; 평가해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SMOTE 적용 시 주의점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CV 폴드마다 train에만 적용해야 함 &amp;rarr; imblearn.pipeline.Pipeline 사용&lt;/li&gt;
&lt;li&gt;전체 데이터에 SMOTE 적용 후 분할하면 정보 누출 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Stacking vs Voting&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;Voting&lt;/b&gt;: 각 모델의 예측을 단순 평균/다수결&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stacking&lt;/b&gt;: 각 모델의 예측을 새로운 피처로 사용하여 메타 모델이 추가 학습 &amp;rarr; 일반적으로 더 높은 성능&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ ] 개선 파이프라인 Colab 실행 후 결과 확인&lt;/li&gt;
&lt;li&gt;[ ] 베이스라인 대비 성능 향상폭 비교&lt;/li&gt;
&lt;li&gt;[ ] 최종 베스트 모델 선정 및 결과 정리&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/60</guid>
      <comments>https://mosh0312.tistory.com/60#entry60comment</comments>
      <pubDate>Mon, 4 May 2026 21:00:42 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 04/23 TIL</title>
      <link>https://mosh0312.tistory.com/59</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 머신러닝과 라이브러리 이해 4챕터를 들었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 머신러닝 vs 딥러닝&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 데이터로부터 가중치를 학습하여 패턴을 인식하는 AI의 하위 분야라는 공통점이 있다. 차이점은 머신러닝이 데이터의 통계적 관계를 찾아 예측하는 방법이라면, 딥러닝은 인간의 신경세포 구조를 모방한 인공 신경망(Artificial Neural Networks)을 사용한다는 것이다. 딥러닝은 특히 자연어처리와 이미지 처리에서 뛰어난 성과를 보여왔다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 인공 신경망의 핵심 개념들&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼셉트론(Perceptron): 인공 신경망의 가장 작은 단위다. 선형회귀식 Y = w0 + w1X + b에서 입력(X)에 가중치(w)를 곱하고 편향(b)을 더해서 출력을 만드는 구조가 곧 하나의 퍼셉트론이다. 키-몸무게 예제로 보면, 몸무게(X)에 가중치 1을 곱하고 절편 100을 더해 키를 예측하는 것이 퍼셉트론의 동작 원리다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경사 하강법(Gradient Descent): 가중치를 어떻게 찾느냐의 문제를 해결하는 최적화 알고리즘이다. 늦은 밤 산에서 하산할 때 &quot;아래로 아래로&quot; 내려가면 되는 것처럼, 손실 함수(MSE 등)의 값이 줄어드는 방향으로 가중치를 반복 조정한다. 수식으로는 x(i+1) = x(i) - &amp;alpha; * &amp;nabla;f(x)이며, &amp;alpha;는 step size(학습률), &amp;nabla;f(x)는 기울기다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활성화 함수(Activation Function): 수치 예측(회귀)이 아닌 분류 문제를 풀려면 비선형 변환이 필요한데, 이를 위해 활성화 함수를 사용한다. 로지스틱 함수(Sigmoid)가 대표적이고, 그 외에도 tanh, ReLU, Leaky ReLU, ELU 등 다양한 종류가 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;히든 레이어(Hidden Layer): 입력층과 출력층 사이에 추가되는 숨은 층으로, 이를 통해 고차원적 특성(이미지, 자연어 등)을 학습할 수 있다. 다만 히든 레이어를 많이 쌓으면 역전파 과정에서 기울기가 점점 작아지는 기울기 소실(Vanishing Gradient) 문제가 발생한다. 이를 ReLU 같은 활성화 함수로 완화할 수 있게 되었다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신경망의 학습 과정: 입력 데이터가 각 층을 통과하여 출력을 만드는 과정이 순전파(Propagation), 오류를 역방향으로 전파하며 가중치를 조절하는 과정이 **역전파(Backpropagation)**다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Epoch, Batch, Iteration&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딥러닝에서 데이터를 한 번만 학습시키는 것이 아니라 여러 번 반복 학습시킨다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Epoch: 전체 데이터가 신경망을 한 번 통과하는 사이클. 1000 epoch이면 전체 데이터를 1000번 학습한다.&lt;/li&gt;
&lt;li&gt;Batch: 전체 데이터를 나눈 소그룹.&lt;/li&gt;
&lt;li&gt;Iteration: 한 epoch 안에서 배치가 학습되는 횟수.&lt;/li&gt;
&lt;li&gt;관계식: Epoch = batch &amp;times; iteration. 예를 들어 데이터 1000개, 배치 사이즈 100이면 1 epoch에 iteration 10번, 가중치 업데이트도 10번 발생한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. TensorFlow/Keras 실습 정리&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 딥러닝 프레임워크로 TensorFlow(Google)와 PyTorch(Meta)가 있으며, 실습에서는 접근이 쉬운 TensorFlow + Keras를 사용했다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Keras의 기본 흐름은 Sequential 모델을 만들고 model.add로 층을 추가한 뒤, model.compile로 optimizer(경사하강법 종류), loss(손실 함수), metrics(평가 지표)를 설정하고, model.fit으로 훈련시키는 것이다. 회귀 문제에서는 loss에 mean_squared_error, 분류 문제에서는 categorical_crossentropy를 사용한다. Dense 층이 완전 연결층이며, 첫 번째 층에만 input_shape로 입력 형태를 지정해주면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 딥러닝 최신 동향&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연어처리(NLP): 초기에는 Bag of Words처럼 단어 빈도 수 기반으로 데이터화했지만 문맥을 고려하지 못하는 한계가 있었다. 인공 신경망의 발전으로 Transformer 구조가 등장했고, 이를 기반으로 GPT-4(OpenAI), PaLM2(Google), LLaMA(Meta) 등의 LLM(Large Language Model)이 개발되어 ChatGPT 같은 서비스로 이어졌다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 처리: 이미지는 RGB 256 값으로 이루어진 3차원 데이터이므로, CNN(합성곱 신경망)을 통해 학습시킬 수 있다. 최근에는 텍스트, 이미지, 음성 등을 함께 다루는 Multimodal 시대가 열렸으며, Stable Diffusion(2022)이 대표적인 text-to-image 모델이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 데이터 직군별 ML/DL 활용&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;직군핵심 역할ML/DL 활용도
&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;Data Engineer&lt;/td&gt;
&lt;td&gt;데이터 ETL 및 파이프라인 관리&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ML Engineer&lt;/td&gt;
&lt;td&gt;모델 최적화, 배포, 유지보수&lt;/td&gt;
&lt;td&gt;필수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Researcher&lt;/td&gt;
&lt;td&gt;논문 기반 모델 구현 및 연구&lt;/td&gt;
&lt;td&gt;필수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Analyst&lt;/td&gt;
&lt;td&gt;데이터 분석, 인사이트 도출, 시각화&lt;/td&gt;
&lt;td&gt;중간 (클러스터링, 이탈 예측, 텍스트 분석 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/59</guid>
      <comments>https://mosh0312.tistory.com/59#entry59comment</comments>
      <pubDate>Thu, 23 Apr 2026 20:34:22 +0900</pubDate>
    </item>
    <item>
      <title>스파르타클럽 내일배움캠프 QA/QC 5기 04/22 TIL</title>
      <link>https://mosh0312.tistory.com/58</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 머신러닝과 라이브러리 심화 강의를 들었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지도학습 vs 비지도학습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지도학습은 문제(X)와 정답(Y)이 모두 주어진 상태에서 학습하는 방식이다. 반면 비지도 학습은 정답(Y) 없이 데이터 간의 유사성만으로 그룹을 만들어내는 방식이다. 정답이 없기 때문에 지도학습보다 어렵고, 분석가의 주관적 판단이 개입될 수밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비지도 학습의 대표적인 활용 예시로는 고객을 헤비유저/일반유저로 그룹화하거나, 구매 내역별로 데이터를 묶는 것이 있다. 본질적으로 데이터를 기반으로 레이블링하는 작업이라고 할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;K-Means Clustering&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 널리 사용되는 군집화 알고리즘이다. 수행 순서는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1단계: 원하는 군집 수 K를 설정한다. 2단계: 임의의 중심점 K개를 선정한다. 3단계: 각 데이터를 가장 가까운 중심점의 군집으로 할당한다. 4단계: 각 군집에 속한 데이터들의 평균 위치로 중심점을 이동한다. 5단계: 3~4단계를 중심점이 더 이상 변하지 않을 때까지 반복한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;붓꽃 데이터로 예를 들면, species 레이블 없이 sepal_length와 sepal_width만으로 산점도를 그렸을 때 눈으로는 구분이 어렵지만, K-Means를 적용하면 K개의 그룹으로 자동 분류해준다. 실제 종(species) 레이블과 비교해보면 꽤 유사한 결과가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점:&lt;/b&gt; 일반적이고 적용하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단점:&lt;/b&gt; 차원이 많아지면 정확도가 떨어지고, 반복 횟수가 많으면 느려지며, K값 선정이 주관적이고, 평균 기반이라 이상치에 취약하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python에서는 sklearn.cluster.KMeans를 사용하며, n_clusters로 군집 수, max_iter로 최대 반복 횟수를 지정한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;군집 평가 - 실루엣 계수(Silhouette Score)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비지도 학습은 정답이 없으니 평가가 까다롭다. 하지만 &quot;같은 군집 내 데이터는 가깝고, 다른 군집과는 멀어야 한다&quot;는 원칙으로 평가할 수 있다. 이를 정량화한 것이 실루엣 계수다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S(i) = (b(i) - a(i)) / max(a(i), b(i)) 로 계산하는데, a(i)는 같은 군집 내 다른 데이터들과의 평균 거리, b(i)는 가장 가까운 다른 군집까지의 평균 거리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;값이 1에 가까울수록 군집화가 잘 된 것이고, -1에 가까우면 잘못 군집화된 것이다. 좋은 군집화의 조건은 전체 실루엣 값이 높으면서, 개별 군집 간 평균값의 편차가 크지 않은 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 적용 - RFM 고객 세그멘테이션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비지도 학습이 가장 많이 활용되는 분야가 CRM(고객 관계 관리)이다. 그 중 RFM 분석은 고객을 세 가지 기준으로 분류한다: Recency(최근 구매일로부터의 경과 시간), Frequency(구매 횟수), Monetary(총 구매 금액).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UCI Online Retail 데이터셋을 활용한 실습에서는 원본 거래 데이터를 고객 단위로 R, F, M 값을 계산하여 집계한 뒤 StandardScaler로 표준화하고, K-Means를 적용하여 고객 군집을 나눴다. 이렇게 나눈 그룹별로 맞춤형 마케팅 전략을 세울 수 있다는 점이 실무적 가치다.&lt;/p&gt;</description>
      <category>내일배움캠프 TIL</category>
      <author>mosh0312</author>
      <guid isPermaLink="true">https://mosh0312.tistory.com/58</guid>
      <comments>https://mosh0312.tistory.com/58#entry58comment</comments>
      <pubDate>Wed, 22 Apr 2026 20:51:46 +0900</pubDate>
    </item>
  </channel>
</rss>