<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>dudgus4943 님의 블로그</title>
    <link>https://dudgus4943.tistory.com/</link>
    <description>dudgus4943 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 1 Jul 2026 02:35:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>dudgus4943</managingEditor>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/30</title>
      <link>https://dudgus4943.tistory.com/35</link>
      <description>&lt;div id=&quot;model-response-message-contentr_3b378badd49ca0a9&quot;&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 왜 '실리콘'이며, 어떤 '결정면'이 중요할까?&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;웨이퍼 표면에 원자가 어떻게 배열되어 있는지(결정면)에 따라 반도체의 전기적 특성이 크게 좌우됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;왜 수많은 물질 중 실리콘(Si)일까?&lt;/b&gt; 지구상에서 가장 풍부한 자원(모래) 중 하나라 가격이 저렴하고, 고온에서도 특성이 안정적입니다. 특히 절연막 역할을 하는 고품질의 산화막(SiO2)을 쉽게 형성할 수 있다는 것이 가장 큰 장점입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;물질을-구성하는-기본-입자인-원자-내부-전자는-불연속적.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czbt5U/dJMcaftBj7k/5JDHk99mtZEqQK1PoAP960/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czbt5U/dJMcaftBj7k/5JDHk99mtZEqQK1PoAP960/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czbt5U/dJMcaftBj7k/5JDHk99mtZEqQK1PoAP960/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczbt5U%2FdJMcaftBj7k%2F5JDHk99mtZEqQK1PoAP960%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;720&quot; height=&quot;450&quot; data-filename=&quot;물질을-구성하는-기본-입자인-원자-내부-전자는-불연속적.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;실리콘은 1.1eV의 적절한 에너지 밴드의 값을 가짐&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;어떤 방향의 결정면을 선호할까?&lt;/b&gt; 일반적으로 현대의 집적회로(CMOS) 제조에는 &lt;b data-index-in-node=&quot;44&quot; data-path-to-node=&quot;6,1,0&quot;&gt;(100) 면&lt;/b&gt;을 가진 실리콘 웨이퍼를 가장 많이 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-30 164355.png&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/71nvx/dJMcaiw7Qsv/LqrMkvAWSHYyWjL8irMUGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/71nvx/dJMcaiw7Qsv/LqrMkvAWSHYyWjL8irMUGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/71nvx/dJMcaiw7Qsv/LqrMkvAWSHYyWjL8irMUGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F71nvx%2FdJMcaiw7Qsv%2FLqrMkvAWSHYyWjL8irMUGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;486&quot; height=&quot;265&quot; data-filename=&quot;스크린샷 2026-06-30 164355.png&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (100)면의 경우 산화막이 형성되면 산소 원자와 결합이 아주 잘 맞아 떨어지기에 (110) (111)면들에 비해 계면 결함이 적다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;. 따라서 산화막이 형성된 후의 최종 계면 결함은 (100)면이 압도적으로 적기에 전자가 방해물 없이 원활하게 흐를 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_ia6bdiia6bdiia6b.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cORMSB/dJMcagsweek/NNEnJ8ITeF1XH1kScoCE20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cORMSB/dJMcagsweek/NNEnJ8ITeF1XH1kScoCE20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cORMSB/dJMcagsweek/NNEnJ8ITeF1XH1kScoCE20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcORMSB%2FdJMcagsweek%2FNNEnJ8ITeF1XH1kScoCE20%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;2816&quot; height=&quot;1536&quot; data-filename=&quot;Gemini_Generated_Image_ia6bdiia6bdiia6b.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;2. 실리콘 잉곳(Ingot) 만들기: 초크랄스키(Cz) 법&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;웨이퍼를 만들기 위해서는 먼저 커다란 둥근 기둥 모양의 실리콘 잉곳(Ingot)을 만들어야 합니다. 이때 가장 대표적으로 사용되는 방법이 &lt;b data-index-in-node=&quot;77&quot; data-path-to-node=&quot;9&quot;&gt;초크랄스키(Czochralski) 결정 성장법&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;고순도의 다결정 실리콘 원재료를 고온으로 가열하여 용융(Melt) 시킵니다.&lt;/li&gt;
&lt;li&gt;용융된 실리콘 용액에 원하는 결정 방향을 가진 시드(Seed, 종자 결정)를 담급니다.&lt;/li&gt;
&lt;li&gt;시드를 천천히 회전시키며 위로 끌어 올립니다.&lt;/li&gt;
&lt;li&gt;용액 상태의 실리콘이 시드의 결정 구조를 그대로 따라가며 고체화되어 거대한 단결정 잉곳이 완성됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;3. 잉곳에서 웨이퍼로! 가공 및 연마 공정&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;완성된 잉곳을 우리가 아는 얇고 둥근 웨이퍼로 만들기 위해서는 정밀한 가공 과정이 필요합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;1단계: 절단 (Sawing)&lt;/b&gt; 다이아몬드 톱날 등을 이용해 잉곳을 얇은 웨이퍼 형태로 썰어냅니다. 하지만 물리적으로 썰어냈기 때문에 표면이 거칠고 결함이 많은 상태입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;2단계: 화학적 기계적 연마 (CMP, Chemical Mechanical Polishing)&lt;/b&gt; 거친 표면을 거울처럼 매끄럽게 만드는 공정입니다. 나노 입자로 구성된 연마제(Slurry)와 화학 성분을 섞어 웨이퍼 표면에 원을 그리듯 문질러 연마합니다. 이 과정을 거치면 결정면이 평탄하고 광택이 우수한 웨이퍼가 탄생하며, 잉곳이 가지고 있던 고유의 결정면을 그대로 유지하게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;4. 무결점을 향해! 웨이퍼 검사 및 평가&lt;/h3&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;반도체 공정에 투입되기 전, 웨이퍼는 &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;17&quot;&gt;표면에 아무런 결함이나 불순물이 없는 무결점 상태&lt;/b&gt;여야 합니다. 이를 확인하기 위해 정밀한 검사를 진행합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;레이저 산란법 (Laser Scattering):&lt;/b&gt; 웨이퍼 표면에 레이저를 쏜 뒤, 반사되거나 산란되는 빛을 측정합니다. 이를 통해 표면의 미세한 요철이나 스크래치, 파티클(결함) 등을 찾아냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;4점 측정법 (4-Point Probe):&lt;/b&gt; 웨이퍼 표면에 4개의 탐침을 접촉시켜 전류를 가하고, 일정한 거리에서의 전압 차이를 측정합니다. 이를 통해 웨이퍼의 전기 전도도(저항)를 측정하며, 이 값을 바탕으로 웨이퍼 내의 &lt;b data-index-in-node=&quot;124&quot; data-path-to-node=&quot;18,1,0&quot;&gt;도핑 농도&lt;/b&gt;를 정확하게 산출할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;5. 웨이퍼의 발전 트렌드: &quot;더 크게, 더 많이!&quot;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;과거부터 현재까지 실리콘 웨이퍼의 직경은 꾸준히 커져 왔습니다. (100mm ➔ 300mm ➔ 450mm 연구 등)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0&quot;&gt;직경이 커지는 이유:&lt;/b&gt; 웨이퍼의 크기가 커질수록 한 번의 공정으로 만들어낼 수 있는 &lt;b data-index-in-node=&quot;46&quot; data-path-to-node=&quot;22,0,0&quot;&gt;반도체 칩의 수가 기하급수적으로 증가&lt;/b&gt;하기 때문입니다. 이는 곧 버려지는 테두리 면적을 줄이고 생산성을 극대화하여 원가를 절감하는 핵심 경쟁력이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/35</guid>
      <comments>https://dudgus4943.tistory.com/35#entry35comment</comments>
      <pubDate>Tue, 30 Jun 2026 17:07:36 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/29</title>
      <link>https://dudgus4943.tistory.com/34</link>
      <description>&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! 오늘은 반도체 집적회로(IC) 칩 제작에서 &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;4&quot;&gt;가장 중요하고 핵심적인 기술&lt;/b&gt;, 바로 포토리소그래피(Photolithography)에 대해 알아보겠습니다. 반도체의 미세화를 이끄는&amp;nbsp; 기술을 지금부터 자세히 파헤쳐 보겠습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;1. 포토리소그래피(Photolithography)란?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;포토리소그래피는 빛(Photo)을 이용해 웨이퍼 위에 미세한 회로 패턴(Lithography)을 그려 넣는 공정입니다. 우리가 흔히 아는 사진관에서 필름을 인화하는 원리와 매우 비슷합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;핵심 역할:&lt;/b&gt; 기판 위에 필름을 증착하고, 그 위에 빛에 반응하는 감광제(Photoresist, PR)를 바른 뒤, 마스크(설계도)를 대고 특정 부분에만 빛을 쏘아(노광) 패턴을 만듭니다. 이후 불필요한 감광제를 식각/제거하여 원하는 회로를 완성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;중요성:&lt;/b&gt; 0.1 마이크로미터(&lt;span data-index-in-node=&quot;16&quot; data-math=&quot;\mu m&quot;&gt;$\mu m$&lt;/span&gt;) 이하의 초미세 패터닝이 가능하며, 현대의 CMOS 기반 트랜지스터 회로 집적도를 높이기 위한 &lt;b data-index-in-node=&quot;75&quot; data-path-to-node=&quot;7,1,0&quot;&gt;가장 핵심적인 기술&lt;/b&gt;입니다. 반도체 회사의 기술력은 이 '초미세 패터닝'을 얼마나 잘하느냐에 달려있다고 해도 과언이 아닙니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;2. 포토리소그래피 공정의 주요 평가 요소&lt;/h2&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;공정이 얼마나 잘 설계되었는지 평가하는 5가지 주요 지표가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;분해능(Resolution):&lt;/b&gt; 얼마나 작고 미세한 패턴을 선명하게 구현해 낼 수 있는가?&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;노출 면적(Exposure Area):&lt;/b&gt; 한 번의 노광으로 패턴을 만들어 낼 수 있는 전체 면적&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0&quot;&gt;얼라인먼트 정확도(Alignment Accuracy):&lt;/b&gt; 반도체는 여러 층(Layer)을 겹겹이 쌓아 올리는 반복 공정입니다. 따라서 하부 층과 상부 층의 패턴이 오차 없이 정확히 맞물리는지가 매우 중요합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0&quot;&gt;생산성(Throughput):&lt;/b&gt; 제한된 시간 안에 얼마나 많은 웨이퍼 면적을 처리할 수 있는가?&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0&quot;&gt;결함 밀도(Defect Density):&lt;/b&gt; 오염이나 파티클로 인한 결함이 얼마나 적은가? (결함이 많으면 칩의 수율이 떨어져 사용이 불가합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size26&quot;&gt;3. 광원과 노광 시스템의 발전&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;  광원의 진화: 더 짧은 파장으로!&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;포토리소그래피 기술이 발전함에 따라, 더 미세한 패턴을 그리기 위해 점점 더 짧은 파장의 자외선(UV)을 사용하고 있습니다. 파장이 짧을수록 붓끝이 뾰족해지는 것과 같아서 더 정교한 그림을 그릴 수 있기 때문입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;최근에는 &lt;b data-index-in-node=&quot;126&quot; data-path-to-node=&quot;15&quot;&gt;극자외선(EUV, Extreme Ultraviolet)&lt;/b&gt; 장비가 도입되면서 나노 단위의 굉장히 작은 초미세 트랜지스터 제작이 가능해졌습니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;  노광 시스템(Exposure System)의 종류&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;Contact Printing (접촉식):&lt;/b&gt; 점광원에서 나온 자외선이 마스크를 통과해 웨이퍼에 직접 닿는 방식입니다. 마스크와 포토레지스트(웨이퍼) 간의 간격이 거의 없어 해상도가 좋지만, 마스크가 웨이퍼와 닿아 오염되거나 손상될 위험이 큽니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,1,0,0&quot;&gt;참고:&lt;/i&gt; 마스크와 웨이퍼 사이에 약간의 간격을 띄우면 Proximity Printing (근접식)이라고 부릅니다. 손상 위험은 줄지만 해상도는 다소 떨어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;Projection Printing (투영식):&lt;/b&gt; 현재 가장 많이 쓰이는 방식입니다. 점광원의 빛이 마스크를 통과한 후, 렌즈를 통해 다시 초점을 맞춰 웨이퍼의 일부 면적만 축소 투영하여 노광시킵니다. 마스크 손상이 없고 정밀한 제어가 가능합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size26&quot;&gt;4. 포토레지스트(PR)와 DNQ의 비밀&lt;/h2&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;포토레지스트(감광제)는 빛에 반응하여 화학적 성질이 변하는 고분자 물질입니다. 주로 3가지 성분으로 구성됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;비활성 레진 (Resin):&lt;/b&gt; 포토레지스트 용액의 뼈대(베이스) 역할을 하는 고분자 물질입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;광반응성 화합물 (PAC, Photo Active Compound):&lt;/b&gt; 빛(자외선)을 받으면 화학적 결합이 분해되거나 반응하는 핵심 물질입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;용매 (Solvent):&lt;/b&gt; PR을 액체 상태로 만들어주며, 점도를 조절하여 스핀 코팅 시 PR의 두께를 결정합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-path-to-node=&quot;22&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;22,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0&quot;&gt;❓ 여기서 잠깐! DNQ란 무엇일까요?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22,0&quot; data-ke-size=&quot;size16&quot;&gt;**DNQ(Diazonaphthoquinone)**는 대표적인 &lt;b data-index-in-node=&quot;57&quot; data-path-to-node=&quot;22,0&quot;&gt;광반응성 화합물(PAC)&lt;/b&gt; 중 하나로, 주로 **포지티브 포토레지스트(Positive PR)**에 사용됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;22,0&quot; data-ke-size=&quot;size16&quot;&gt;빛을 받기 전에는 레진이 현상액(Developer)에 녹는 것을 방해하는 '용해 억제제' 역할을 합니다. 하지만 자외선(빛)을 받게 되면 화학 구조가 변하면서 산(Acid)으로 바뀌고, 결과적으로 빛을 받은 부분만 현상액에 아주 잘 녹게 만들어 줍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size26&quot;&gt;5. 포토리소그래피 공정 순서 (Step-by-Step)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;포토 공정은 마치 잘 짜인 요리 레시피처럼 엄격한 순서대로 진행됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;Surface Cleaning (표면 세척):&lt;/b&gt; 공정의 첫 단추! 웨이퍼 표면의 유기물, 먼지 등 불순물을 깨끗하게 제거합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;HMDS 도포:&lt;/b&gt; 웨이퍼 표면은 보통 친수성인데, PR은 소수성입니다. 물과 기름처럼 섞이지 않는 둘 사이의 접착력을 높이기 위해 표면을 소수성으로 바꿔주는 HMDS 물질을 바릅니다. &lt;i data-index-in-node=&quot;102&quot; data-path-to-node=&quot;26,1,0&quot;&gt;(노트의 HDMS는 HMDS의 오타이므로 정정했습니다!)&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;포토레지스트 도포 (PR Coating):&lt;/b&gt; 웨이퍼를 빠르게 회전시키는 '스핀 코팅(Spin Coating)' 방식을 이용해 PR을 얇고 균일하게 발라줍니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,3,0&quot;&gt;소프트 베이크 (Soft Bake):&lt;/b&gt; 약 90~100&amp;deg;C의 열을 가해 PR 내부에 남아있는 솔벤트(용매)를 증발시킵니다. 이를 통해 PR이 웨이퍼에 단단히 고정됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,4,0&quot;&gt;노광 공정 (Exposure):&lt;/b&gt; 포토마스크를 대고 설계된 패턴에만 선택적으로 자외선을 조사합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,5,0&quot;&gt;포스트 노광 베이크 (PEB, Post-Exposure Bake):&lt;/b&gt; (선택 혹은 필수) 노광 후 다시 한번 열을 가해 빛을 받은 PR 내부의 화학 반응을 촉진시키고, 빛의 간섭으로 인해 생기는 물결무늬(Standing Wave)를 매끄럽게 펴줍니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,6,0&quot;&gt;현상 (Development):&lt;/b&gt; 현상액(Developer)을 뿌려 패턴을 형상화합니다. 포지티브 PR의 경우 빛을 받은 부분의 포토레지스트가 녹아서 제거됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,7,0&quot;&gt;하드 베이크 / 포스트 베이크 (Hard/Post Bake):&lt;/b&gt; 마지막으로 고온에서 굽는 과정입니다. 남아있는 PR을 더욱 단단하게 굳혀 접착성과 이후 진행될 식각(Etching) 공정에 대한 내성을 극대화합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28&quot;&gt;마치며&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 반도체의 밑그림을 그리는 포토리소그래피 기술에 대해 알아보았습니다. 트랜지스터가 나노 단위로 작아질수록 이 포토 공정의 난이도와 중요성은 더욱 커지고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-29 203336.png&quot; data-origin-width=&quot;1349&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blo9Sv/dJMcageYBCe/c2lb4tParJqUpmZkQCR03K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blo9Sv/dJMcageYBCe/c2lb4tParJqUpmZkQCR03K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blo9Sv/dJMcageYBCe/c2lb4tParJqUpmZkQCR03K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblo9Sv%2FdJMcageYBCe%2Fc2lb4tParJqUpmZkQCR03K%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;1349&quot; height=&quot;746&quot; data-filename=&quot;스크린샷 2026-06-29 203336.png&quot; data-origin-width=&quot;1349&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/34</guid>
      <comments>https://dudgus4943.tistory.com/34#entry34comment</comments>
      <pubDate>Mon, 29 Jun 2026 20:33:49 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/23</title>
      <link>https://dudgus4943.tistory.com/30</link>
      <description>&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;[라이브 세션] 머신러닝 심화 2회차&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  01. 지도학습 vs 비지도학습(클러스터링)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;7&quot; 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-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;지도학습 (Supervised)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;비지도학습 (Unsupervised)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0,0&quot;&gt;입력 데이터&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;(x,y)입력 + 정답&lt;/td&gt;
&lt;td&gt;x만 (정답 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0,0&quot;&gt;핵심 목표&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;새로운 데이터의 정답을 예측&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,2,0&quot;&gt;데이터의 숨겨진 구조와 패턴 발견&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0,0&quot;&gt;대표 예시&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;스편 메일 분류, 불량품 판정&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,2,0&quot;&gt;고객 행동별 그룹 묶기, 토픽 모델링&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,4,0,0&quot;&gt;평가 방법&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,1,0&quot;&gt;정확도(Accuracy), F1-Score 등&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,2,0&quot;&gt;군집 품질 지표 (실루엣 스코어 등)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;  02. 클러스터링(Clustering)이란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;11,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0&quot;&gt;&quot;기준을 가지고 데이터의 숨은 구조를 발견해 이름표 달아주기&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;클러스터링은 &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;12&quot;&gt;정답이 없어도 데이터끼리의 거리를 측정해서 자동으로 비슷한 것들끼리 그룹(군집)을 만드는 방법론&lt;/b&gt;입니다. 마치 마구잡이로 섞여 있는 구슬들을 색상이나 크기 같은 특성을 보고 끼리끼리 모아두는 것과 같습니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;  좋은 군집을 나누는 수학적 기준&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터가 군집을 잘 나눴는지 판단할 때는 두 가지 거리를 계산합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;Intra-cluster (군집 내 거리):&lt;/b&gt; 같은 그룹 안에 있는 데이터들끼리의 거리는 &lt;b data-index-in-node=&quot;49&quot; data-path-to-node=&quot;15,0,0&quot;&gt;가까울수록&lt;/b&gt; 좋습니다. (응집도 높음)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;Inter-cluster (군집 간 거리):&lt;/b&gt; 서로 다른 그룹과 그룹 사이의 거리는 &lt;b data-index-in-node=&quot;46&quot; data-path-to-node=&quot;15,1,0&quot;&gt;멀수록&lt;/b&gt; 좋습니다. (분리도 높음)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 03. 프로세스 관점으로 보는 클러스터링 (QA/QC 적용 예시)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;실무에서 클러스터링 프로젝트를 진행할 때는 다음과 같은 4단계 파이프라인을 거칩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;1단계: 문제 정의&lt;/b&gt; ➡️ &lt;i data-index-in-node=&quot;14&quot; data-path-to-node=&quot;20,0,0&quot;&gt;무엇을 묶고 싶은가?&lt;/i&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(예시) 생산 공정 데이터 기반으로 발생하는 불량 유형들을 그룹화하고 싶다!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;2단계: 특징 추출&lt;/b&gt; ➡️ &lt;i data-index-in-node=&quot;14&quot; data-path-to-node=&quot;20,1,0&quot;&gt;어떤 데이터로 비교할까?&lt;/i&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 지식을 기반으로 필요한 변수를 고르고, 스케일링 및 차원 축소를 진행합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0&quot;&gt;3단계: 군집 수행&lt;/b&gt; ➡️ &lt;i data-index-in-node=&quot;14&quot; data-path-to-node=&quot;20,2,0&quot;&gt;적절한 알고리즘 적용&lt;/i&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 특성에 맞춰 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;20,2,1,0,0&quot;&gt;K-Means&lt;/b&gt;, &lt;b data-index-in-node=&quot;20&quot; data-path-to-node=&quot;20,2,1,0,0&quot;&gt;DBSCAN&lt;/b&gt; 등의 알고리즘을 선택해 실행합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,3,0&quot;&gt;4단계: 결과 해석  &lt;/b&gt; ➡️ &lt;i data-index-in-node=&quot;17&quot; data-path-to-node=&quot;20,3,0&quot;&gt;묶인 것들에 비즈니스 의미 부여&lt;/i&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;아하! 자동으로 묶인 1번 그룹 데이터들을 보니 '고온 환경에서 발생하는 불량'들이구나!&quot; 하고 해석합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size26&quot;&gt;  04. 클러스터링은 언제, 어떻게 활용되나요?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;현업에서 클러스터링이 강력한 무기가 되는 대표적인 3가지 관점입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;① 데이터 요약 및 시각화 (Summarization)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;방대한 양의 데이터를 몇 개의 핵심 그룹으로 묶어 전체적인 판세를 파악합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;예시:&lt;/b&gt; 1년간의 뉴스 데이터를 클러스터링하여 올해의 주요 핫이슈 트렌드 토픽 찾기&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;예시:&lt;/b&gt; 위&amp;middot;경도 데이터를 바탕으로 트위터(X) 유저들이 응원하는 야구팀 분포 시각화&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size23&quot;&gt;② 데이터에 대한 깊은 이해 (Understanding)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;레이블이 없는 데이터의 순수한 분포와 패턴을 발견합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,0&quot;&gt;예시:&lt;/b&gt; 스포티파이(Spotify)에서 1년간 재생된 음악들의 특성을 분석해 음악 장르/무드 파악&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,0&quot;&gt;예시:&lt;/b&gt; 신용카드 사용 패턴을 분석해 고객 세그먼트 분류 및 유전자 발현 패턴으로 질병 유형 분류&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size23&quot;&gt;③ 실제 행동을 위한 전략 수립 (Strategy Planning)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;분석 결과로부터 비즈니스 액션 아이템을 도출합니다. 현업에서 가장 가치 있게 쓰이는 영역입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,0&quot;&gt;이상 탐지 (Anomaly Detection):&lt;/b&gt; 정상 데이터 군집의 중심에서 &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;32,0,0&quot;&gt;말도 안 되게 멀리 떨어진 데이터&lt;/b&gt;를 찾아내 고장이나 사기 거래(FDS) 징후로 포착합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,1,0&quot;&gt;타겟 마케팅:&lt;/b&gt; 고객을 VIP 군집, 가격 민감 군집, 트렌드 추종 군집 등으로 세분화하여 그룹별 맞춤형 할인 쿠폰이나 마케팅 캠페인을 설계합니다.&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;Gemini_Generated_Image_ubmx4wubmx4wubmx.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU2MSf/dJMcabY2Fmt/rtPNJmhRDG60vSpYx4BmJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU2MSf/dJMcabY2Fmt/rtPNJmhRDG60vSpYx4BmJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU2MSf/dJMcabY2Fmt/rtPNJmhRDG60vSpYx4BmJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU2MSf%2FdJMcabY2Fmt%2FrtPNJmhRDG60vSpYx4BmJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1380&quot; height=&quot;752&quot; data-filename=&quot;Gemini_Generated_Image_ubmx4wubmx4wubmx.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;  1. 기하학적 거리 (공간 중심)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;우리가 흔히 생각하는 공간상의 좌표를 기준으로 거리를 재는 가장 기본적이고 직관적인 방법들입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;① 유클리디안 거리 (Euclidean Distance)   &quot;가장 빠른 직선거리&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;개념:&lt;/b&gt; 두 점을 자로 대고 직선으로 이은 길이입니다. 학창 시절 배운 '피타고라스 정리'와 똑같습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0&quot;&gt;특징:&lt;/b&gt; 가장 대중적이고 K-means 알고리즘의 기본값입니다. 다만, &lt;b data-index-in-node=&quot;39&quot; data-path-to-node=&quot;8,2,0&quot;&gt;이상치(Outlier)가 있으면 거리가 왜곡되기 쉽다는 단점&lt;/b&gt;이 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0&quot;&gt;추천 상황:&lt;/b&gt; 변수들의 스케일(단위)이 비슷하고 연속적인 수치 데이터일 때 (예: 키, 몸무게 기반 고객 세분화)&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;스크린샷 2026-06-25 175121.png&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clWXbo/dJMcacwQG32/qSoX8Zb4IdQKSEgtRdkJU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clWXbo/dJMcacwQG32/qSoX8Zb4IdQKSEgtRdkJU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clWXbo/dJMcacwQG32/qSoX8Zb4IdQKSEgtRdkJU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclWXbo%2FdJMcacwQG32%2FqSoX8Zb4IdQKSEgtRdkJU0%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;314&quot; height=&quot;37&quot; data-filename=&quot;스크린샷 2026-06-25 175121.png&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;② 맨하탄 거리 (Manhattan Distance)   &quot;빌딩을 피해 가는 바둑판 거리&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;개념:&lt;/b&gt; 뉴욕 맨하탄의 바둑판 모양 도로처럼 대각선 돌파가 불가능할 때, 가로 축 차이와 세로 축 차이의 절댓값을 더한 거리입니다. (Taxicab Distance라고도 부릅니다.)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;특징:&lt;/b&gt; 제곱을 하지 않기 때문에 유클리디안보다 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;10,2,0&quot;&gt;이상치에 훨씬 덜 민감&lt;/b&gt;하며, 고차원 데이터에서 효과적입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0&quot;&gt;추천 상황:&lt;/b&gt; GPS 위치 기반 배달 구역 설정, 격자형 공간 분석&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;스크린샷 2026-06-25 175212.png&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bubXUg/dJMcahLFJhO/NfMGNpspexM3wEvWlUHEwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bubXUg/dJMcahLFJhO/NfMGNpspexM3wEvWlUHEwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bubXUg/dJMcahLFJhO/NfMGNpspexM3wEvWlUHEwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbubXUg%2FdJMcahLFJhO%2FNfMGNpspexM3wEvWlUHEwK%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;266&quot; height=&quot;39&quot; data-filename=&quot;스크린샷 2026-06-25 175212.png&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;③ 민코프스키 거리 (Minkowski Distance)   &quot;거리 계의 카멜레온&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;개념:&lt;/b&gt; 유클리디안과 맨하탄 거리를 &lt;span data-index-in-node=&quot;19&quot; data-math=&quot;p&quot;&gt;$p$&lt;/span&gt;라는 값 하나로 조절할 수 있도록 일반화한 범용 공식입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;특징:&lt;/b&gt; &lt;b data-index-in-node=&quot;4&quot; data-path-to-node=&quot;12,2,0&quot;&gt;&lt;span data-index-in-node=&quot;4&quot; data-math=&quot;p=1&quot;&gt;p=1&lt;/span&gt;이면 맨하탄 거리&lt;/b&gt;, &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;12,2,0&quot;&gt;&lt;span data-index-in-node=&quot;18&quot; data-math=&quot;p=2&quot;&gt;p=2&lt;/span&gt;이면 유클리디안 거리&lt;/b&gt;로 변신합니다.&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;스크린샷 2026-06-25 175230.png&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQZCQa/dJMcafNVHgr/8Lq5XACDwLfte5CBryyONk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQZCQa/dJMcafNVHgr/8Lq5XACDwLfte5CBryyONk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQZCQa/dJMcafNVHgr/8Lq5XACDwLfte5CBryyONk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQZCQa%2FdJMcafNVHgr%2F8Lq5XACDwLfte5CBryyONk%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;266&quot; height=&quot;41&quot; data-filename=&quot;스크린샷 2026-06-25 175230.png&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;  2. 방향과 패턴 중심 거리&lt;/h2&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;값의 절대적인 크기(Scale)보다 '데이터가 향하는 방향이나 패턴'이 중요할 때 사용합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;① 코사인 거리 (Cosine Distance)   &quot;크기는 상관없어, 방향만 봐!&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;개념:&lt;/b&gt; 두 벡터 사이의 '각도'를 이용해 유사도를 측정합니다. 두 데이터의 수치적 크기가 달라도 변화 추이나 패턴이 비슷하면 가깝다고 판정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;특징:&lt;/b&gt; 0~2 사이의 값을 가집니다. (&lt;span data-index-in-node=&quot;22&quot; data-math=&quot;1 - \text{코사인 유사도}&quot;&gt;1 - 코사인 유사도&lt;/span&gt;)
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;theta;&amp;nbsp;=&amp;nbsp;0&amp;deg;&amp;nbsp;는&amp;nbsp;두&amp;nbsp;값의&amp;nbsp;방향이&amp;nbsp;동일하므로&amp;nbsp;cosine_similarity&amp;nbsp;=&amp;nbsp;1&lt;/li&gt;
&lt;li&gt;&amp;theta; = 90&amp;deg;` 는 두 값의 방향이 직교하므로 `cosine_similarity = 0&lt;/li&gt;
&lt;li&gt;&amp;theta; = 180&amp;deg;` 는 두 값의 방향이 반대이므로`cosine_similarity = -1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;추천 상황:&lt;/b&gt; 고차원 텍스트 문서 유사도 분석, 추천 시스템, 센서 데이터의 변화 추이 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;② 자카드 거리 (Jaccard Distance)   &quot;공통 원소의 비율&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;개념:&lt;/b&gt; 두 집합이 얼마나 겹치는지(교집합/합집합 비율)를 기반으로 잰 자카드 유사도의 반대(보수) 개념입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;특징:&lt;/b&gt; 0과 1 사이의 값을 가지며, 범주형 데이터나 One-Hot 인코딩된 데이터에 매우 강력합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,0&quot;&gt;추천 상황:&lt;/b&gt; 고객 구매 상품 바구니 유사도 분석, 유전자 서열 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size26&quot;&gt;  3. 통계적 / 특수 목적 거리&lt;/h2&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 분포 형태나 특수한 비즈니스 규칙을 반영해야 할 때 꺼내 드는 마스터 키입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size23&quot;&gt;① 마할라노비스 거리 (Mahalanobis Distance)   &quot;데이터 분포 고려하기&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;개념:&lt;/b&gt; 단순히 두 점 사이의 거리만 보지 않고, 데이터의 전체적인 분포 형태(공분산)를 고려합니다. &quot;이 데이터가 전체 군집 뭉치 안에서 실제로 일어날 법한 위치에 있는가?&quot;를 따집니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;추천 상황:&lt;/b&gt; 변수 간 상관관계가 깊을 때, &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;24,1,0&quot;&gt;이상치 탐지(Anomaly Detection)&lt;/b&gt; 및 불량 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;② 체비셰프 거리 (Chebychev Distance)   &quot;단 하나라도 어긋나면 불량!&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;개념:&lt;/b&gt; 여러 차원의 차이 값 중 '가장 차이가 큰 단 하나의 최댓값'만을 거리로 봅니다. 체스판의 킹이 사방으로 움직일 때 드는 최소 턴 수와 같습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;수식:&lt;/b&gt; &lt;span data-index-in-node=&quot;4&quot; data-math=&quot;d = \max(|x_1 - x_2|, |y_1 - y_2|)&quot;&gt;$d = \max(|x_1 - x_2|, |y_1 - y_2|)$&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;추천 상황:&lt;/b&gt; 단 하나의 기준이라도 한계치를 초과하면 안 되는 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;26,2,0&quot;&gt;엄격한 품질 검사(QC)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size23&quot;&gt;③ 리벤슈테인 거리 (Levenshtein Distance)   &quot;글자 편집 거리&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;28&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,0,0&quot;&gt;개념:&lt;/b&gt; 수치가 아닌 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;28,0,0&quot;&gt;'문자열'&lt;/b&gt; 사이의 거리를 측정합니다. 한 단어를 다른 단어로 바꾸기 위해 몇 번의 수정(삽입, 삭제, 교체)이 필요한지 횟수를 잰 것입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,0&quot;&gt;추천 상황:&lt;/b&gt; 제품 일련번호/모델명 오타 분석, 공정 단계 코드의 유사성 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size26&quot;&gt;  [한눈에 보는] 목적별 거리 추천 치트키 리스트&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;31&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&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;td&gt;&lt;b&gt;한 줄 채택 이유&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,1,0,0&quot;&gt;일반적인 숫자 데이터 (키, 몸무게 등)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,1,1,0&quot;&gt;유클리디안&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,1,2,0&quot;&gt;가장 직관적이며 K-means의 기본 패러다임&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,2,0,0&quot;&gt;이상치(노이즈)의 영향을 줄이고 싶을 때&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,2,1,0&quot;&gt;맨하탄&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,2,2,0&quot;&gt;절댓값 기반 합산으로 극단값 왜곡에 강함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,3,0,0&quot;&gt;변수 간 상관관계 분석, &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;31,3,0,0&quot;&gt;이상치 탐지&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,3,1,0&quot;&gt;마할라노비스&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,3,2,0&quot;&gt;데이터의 분포(공분산) 형태까지 똑똑하게 반영&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,4,0,0&quot;&gt;단 하나라도 기준치를 초과하면 불량&lt;/b&gt; 처리할 때&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,4,1,0&quot;&gt;체비셰프&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,4,2,0&quot;&gt;차원 중 가장 큰 오차 하나만 골라내는 엄격함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,5,0,0&quot;&gt;문자열 오타 검사, 공정 코드 비교&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,5,1,0&quot;&gt;리벤슈테인&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,5,2,0&quot;&gt;편집 횟수(삽입/삭제) 기반의 문자열 전용 거리&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,6,0,0&quot;&gt;데이터 크기보다 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;31,6,0,0&quot;&gt;변화 패턴/추이&lt;/b&gt;가 중요할 때&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,6,1,0&quot;&gt;코사인&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,6,2,0&quot;&gt;벡터의 크기 스케일을 무시하고 오직 '방향'만 비교&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,7,0,0&quot;&gt;구매 품목 리스트, 카테고리 집합 비교&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,7,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,7,1,0&quot;&gt;자카드&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;31,7,2,0&quot;&gt;교집합과 합집합 비율을 이용한 이진 데이터 최적화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_psj9v1psj9v1psj9.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjgbgi/dJMcabLxBNM/bIeCjDLDLkAW0eMTBRIOBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjgbgi/dJMcabLxBNM/bIeCjDLDLkAW0eMTBRIOBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjgbgi/dJMcabLxBNM/bIeCjDLDLkAW0eMTBRIOBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjgbgi%2FdJMcabLxBNM%2FbIeCjDLDLkAW0eMTBRIOBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1380&quot; height=&quot;752&quot; data-filename=&quot;Gemini_Generated_Image_psj9v1psj9v1psj9.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  클러스터링 문제해결 6단계 가이드북&lt;/h2&gt;
&lt;p data-path-to-node=&quot;7&quot; 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-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&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;td&gt;&lt;b&gt;⚠️ 반드시 체크해야 할 주의사항&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0,0&quot;&gt;1. 문제 정의&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,1,0&quot;&gt;&quot;왜 이 군집을 찾으려 하는가?&quot;에 대한 비즈니스 목표를 명확히 세웁니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,2,0&quot;&gt;&quot;군집을 몇 개로 나눌까?&quot;라는 기술적 수치보다 &lt;b data-index-in-node=&quot;27&quot; data-path-to-node=&quot;8,1,2,0&quot;&gt;분석의 목적&lt;/b&gt;이 언제나 먼저여야 합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0,0&quot;&gt;2. 데이터 전처리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;수집된 데이터의 결측치를 처리하고, 범위를 맞추는 스케일링(Scaling)을 수행합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,2,0&quot;&gt;클러스터링은 '거리' 기반 알고리즘이기 때문에 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;8,2,2,0&quot;&gt;데이터의 스케일에 매우 민감&lt;/b&gt;합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0,0&quot;&gt;3. 알고리즘 선택&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;데이터의 모양(원형인지, 밀집 형태인지), 크기, 목적에 맞는 최적의 알고리즘을 선택합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,2,0&quot;&gt;데이터의 분포 특성에 따라 K-Means, DBSCAN 등 궁합이 맞는 알고리즘이 다릅니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,4,0,0&quot;&gt;4. 학습 &amp;amp; K 결정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,1,0&quot;&gt;선택한 모델을 학습시키고, 최적의 군집 수(&lt;span data-index-in-node=&quot;26&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;)를 탐색합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,2,0&quot;&gt;엘보우 방법(Elbow Method)이나 &lt;b data-index-in-node=&quot;27&quot; data-path-to-node=&quot;8,4,2,0&quot;&gt;실루엣 분석(Silhouette)&lt;/b&gt; 같은 시각적&amp;middot;통계적 도구를 활용합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,5,0,0&quot;&gt;5. 군집 평가&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,1,0&quot;&gt;나뉜 군집들이 통계적으로 의미 있게 잘 분리되었는지 품질을 검증합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,2,0&quot;&gt;지도학습과 달리 정답 시험지가 없으므로, 군집 내부 응집도와 군집 간 분리도를 &lt;b data-index-in-node=&quot;44&quot; data-path-to-node=&quot;8,5,2,0&quot;&gt;상대적으로 비교&lt;/b&gt;해야 합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,6,0,0&quot;&gt;6. 해석 및 활용  &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,1,0&quot;&gt;완성된 각 군집의 특성을 분석하여 비즈니스에 적용할 액션 아이템(Action Item)을 도출합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,2,0&quot;&gt;여기에 &lt;b data-index-in-node=&quot;4&quot; data-path-to-node=&quot;8,6,2,0&quot;&gt;현업의 도메인 지식&lt;/b&gt;이 결합되어야 비로소 인공지능 기술이 진짜 돈이 되는 가치를 발휘합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  01. 계층적 군집화(Hierarchical Clustering)란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;가장 비슷한 것 두 개를 묶고, 또 비슷한 것끼리 묶고&amp;hellip; 이 과정을 나무처럼 기록하자.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;계층적 군집화는 데이터 간의 거리를 계산하여 나무 모양의 계층 구조(Dendrogram)를 만들어가는 방식입니다. 처음부터 &quot;3개로 쪼개줘!&quot;라고 요구하는 것이 아니라, 데이터를 밑바닥부터 혹은 꼭대기부터 차근차근 연결해 나가며 전체적인 지도를 그리는 방법론입니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;  02. 계층적 군집화의 치트키, '덴드로그램(Dendrogram)'&lt;/h2&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;계층적 군집화 결과물을 시각화한 나무 모양의 도표를 '덴드로그램'이라고 부릅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;사후에 &lt;span data-index-in-node=&quot;4&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;를 결정하는 유일한 구조 ✂️:&lt;/b&gt; 덴드로그램의 가장 강력한 장점입니다. 처음엔 군집 개수를 몰랐더라도, 완성된 나무 그림을 본 뒤 &quot;어떤 높이(거리)에서 가로로 자르느냐&quot;에 따라 최종 군집 개수를 분석가가 나중에 자유롭게 결정할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 03. 계층적 군집화의 2가지 방향 (동작 과정)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;데이터를 묶어나가는 방향에 따라 크게 두 가지 방식으로 나뉩니다. 실무에서는 보통 밑바닥부터 합쳐 나가는 &lt;b data-index-in-node=&quot;59&quot; data-path-to-node=&quot;15&quot;&gt;상향식(Bottom-up) 방식&lt;/b&gt;이 가장 널리 쓰입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;① 통합 계층 군집화 (Agglomerative, 상향식) ⭐&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;Step 1 (맨 아래):&lt;/b&gt; 모든 데이터 포인트가 각자 &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;17,0,0&quot;&gt;1개짜리 독립된 군집&lt;/b&gt;으로 시작합니다. (데이터가 100개면 군집도 100개)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;Step 2:&lt;/b&gt; 가장 거리가 가까운(비슷한) 두 군집을 찾아서 하나로 병합합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;Step 3:&lt;/b&gt; 모든 데이터가 거대한 하나의 군집(맨 위)으로 뭉칠 때까지 이 과정을 반복하며 연결된 높이(거리)를 기록합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,3,0&quot;&gt;Step 4:&lt;/b&gt; 분석가가 원하는 군집 수가 되는 최적의 높이에서 싹둑 잘라 최종 그룹을 얻습니다.&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;스크린샷 2026-06-25 181728.png&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dowVB0/dJMcajo5JFe/zIlJWG5HMSDktvuKL6AwS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dowVB0/dJMcajo5JFe/zIlJWG5HMSDktvuKL6AwS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dowVB0/dJMcajo5JFe/zIlJWG5HMSDktvuKL6AwS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdowVB0%2FdJMcajo5JFe%2FzIlJWG5HMSDktvuKL6AwS0%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;331&quot; height=&quot;588&quot; data-filename=&quot;스크린샷 2026-06-25 181728.png&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;② 분할 계층 군집화 (Divisive, 하향식)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;개념:&lt;/b&gt; 통합 계층과 정확히 반대로 작동합니다. 처음에는 전체 데이터를 하나의 커다란 군집(맨 위)으로 파악한 뒤, 아래로 내려가며 가장 이질적인 데이터들을 쪼개어 결국 개별 포인트(맨 아래)로 끝이 납니다.&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;스크린샷 2026-06-25 181743.png&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/laSYB/dJMcaijwfzB/sW9d5UkNGaM9ksZlQfCL01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/laSYB/dJMcaijwfzB/sW9d5UkNGaM9ksZlQfCL01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/laSYB/dJMcaijwfzB/sW9d5UkNGaM9ksZlQfCL01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlaSYB%2FdJMcaijwfzB%2FsW9d5UkNGaM9ksZlQfCL01%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;323&quot; height=&quot;559&quot; data-filename=&quot;스크린샷 2026-06-25 181743.png&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size26&quot;&gt;  04. 군집을 묶는 4가지 주요 연&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size26&quot;&gt;결 방식 (Linkage)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;계층적 군집화에서는 점과 점 사이의 거리뿐만 아니라, &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;22&quot;&gt;'이미 만들어진 군집과 군집 사이의 거리'를 어떻게 측정하느냐&lt;/b&gt;에 따라 나무의 모양과 결과가 완전히 달라집니다. 대표적인 4가지 연결 방식이 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;단일 연결법 (Single Linkage):&lt;/b&gt; 두 군집의 멤버 중 &lt;b data-index-in-node=&quot;36&quot; data-path-to-node=&quot;23,0,0&quot;&gt;가장 가까운 점들 사이의 거리&lt;/b&gt;를 기준으로 병합 (사슬 모양으로 길게 늘어지는 경향이 있음)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;완전 연결법 (Complete Linkage):&lt;/b&gt; 두 군집의 멤버 중 &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;23,1,0&quot;&gt;가장 먼 점들 사이의 거리&lt;/b&gt;를 기준으로 병합 (둥글고 촘촘한 군집이 형성됨)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0&quot;&gt;평균 연결법 (Average Linkage):&lt;/b&gt; 두 군집 내의 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;23,2,0&quot;&gt;모든 점 사이의 거리 평균&lt;/b&gt;을 기준으로 병합 (이상치에 비교적 강건함)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,3,0&quot;&gt;와드 연결법 (Ward's Linkage):&lt;/b&gt; 군집을 합쳤을 때 &lt;b data-index-in-node=&quot;35&quot; data-path-to-node=&quot;23,3,0&quot;&gt;군집 내부의 오차 제곱합(Variance)이 가장 최소가 되는 방향&lt;/b&gt;으로 병합 (크기가 균등한 군집을 만드는 데 탁월하여 실무에서 선호)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_rdf5rdrdf5rdrdf5.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwhEr7/dJMcahrqhDj/60bkix4AmW2iS6eSsygh5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwhEr7/dJMcahrqhDj/60bkix4AmW2iS6eSsygh5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwhEr7/dJMcahrqhDj/60bkix4AmW2iS6eSsygh5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwhEr7%2FdJMcahrqhDj%2F60bkix4AmW2iS6eSsygh5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1380&quot; height=&quot;752&quot; data-filename=&quot;Gemini_Generated_Image_rdf5rdrdf5rdrdf5.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  01. K-means 알고리즘이란?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;K-means는 데이터를 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;7&quot;&gt;중심점(Centroid)과의 평균 거리를 기반으로 K개의 군집으로 나누는 대표적인 분리형 군집화 방법&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;철저한 분리형:&lt;/b&gt; 어떤 데이터 포인트도 두 개 이상의 클러스터에 동시에 속할 수 없습니다. (무조건 한 팀에만 소속)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;인간의 개입(K):&lt;/b&gt; 몇 개의 그룹으로 나눌지 뜻하는 &lt;b data-index-in-node=&quot;29&quot; data-path-to-node=&quot;8,1,0&quot;&gt;&lt;span data-index-in-node=&quot;29&quot; data-math=&quot;K&quot;&gt;$K$&lt;/span&gt;는 사용자가 직접 지정&lt;/b&gt;해 주어야 하는 하이퍼파라미터입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0&quot;&gt;알고리즘의 목적:&lt;/b&gt; 최적의 중심점(Centroid) 위치를 찾고, 각 데이터를 가장 알맞은 군집에 할당(Membership 최적화)하는 것입니다.&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_KrcZK0xYgTa4qFrVr0fO2w.gif&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW3McI/dJMcadifa8W/wWLfmZPHptj8xvy1Xnu9Z0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW3McI/dJMcadifa8W/wWLfmZPHptj8xvy1Xnu9Z0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW3McI/dJMcadifa8W/wWLfmZPHptj8xvy1Xnu9Z0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bW3McI/dJMcadifa8W/wWLfmZPHptj8xvy1Xnu9Z0/img.gif&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;480&quot; height=&quot;480&quot; data-filename=&quot;1_KrcZK0xYgTa4qFrVr0fO2w.gif&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 02. K-means 작동 원리 5단계&lt;/h2&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;작동 방식을 초등학교 '운동회 팀 나누기'에 비유해 보면 아주 쉽습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;Step 1: 군집 개수(&lt;span data-index-in-node=&quot;14&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;) 설정&lt;/b&gt; ➡️ 데이터를 몇 개로 쪼갤지 결정합니다. (예: &lt;span data-index-in-node=&quot;48&quot; data-math=&quot;K=3&quot;&gt;$K=3$&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;Step 2: 초기 중심점(Centroid) 설정&lt;/b&gt; ➡️ 공간 상에 무작위 혹은 수동으로 &lt;span data-index-in-node=&quot;49&quot; data-math=&quot;K&quot;&gt;$K$&lt;/span&gt;개의 임의의 중심점을 뿌립니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0&quot;&gt;Step 3: 데이터를 군집에 할당&lt;/b&gt; ➡️ 모든 데이터 포인트는 자신과 &lt;b data-index-in-node=&quot;39&quot; data-path-to-node=&quot;13,2,0&quot;&gt;가장 가까운 거리(유클리디안 거리 기준)에 있는 중심점&lt;/b&gt;의 군집으로 소속됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0&quot;&gt;Step 4: 중심점 재설정(갱신)&lt;/b&gt; ➡️ 소속이 완료되면, 각 군집에 모인 데이터들의 평균값(무게중심)을 계산해 중심점을 그 위치로 새로 이동시킵니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,0&quot;&gt;Step 5: 수렴할 때까지 반복&lt;/b&gt; ➡️ 데이터의 소속이 바뀌지 않고, 중심점의 이동이 멈출 때까지 &lt;b data-index-in-node=&quot;55&quot; data-path-to-node=&quot;13,4,0&quot;&gt;Step 3과 Step 4를 끊임없이 반복&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;  03. 최적의 군집 개수(K)를 찾는 2가지 치트키&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;K-means를 쓸 때 가장 고심하게 되는 &quot;&lt;span data-index-in-node=&quot;25&quot; data-math=&quot;K&quot;&gt;$K$&lt;/span&gt;를 몇으로 해야 하지?&quot;라는 질문은 아래 두 가지 수학적 도구로 명쾌하게 해결할 수 있습니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;① 엘보우 방법 (Elbow Method)   &quot;꺾이는 팔꿈치를 찾아라&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;원리:&lt;/b&gt; &lt;span data-index-in-node=&quot;4&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;를 1부터 차례대로 늘려가며 군집 내 거리 제곱합(Inertia 또는 WCSS)을 측정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;해석:&lt;/b&gt; &lt;span data-index-in-node=&quot;4&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;가 커질수록 오차는 당연히 줄어들지만, 어느 순간부터는 &lt;span data-index-in-node=&quot;36&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;를 늘려도 오차가 별로 안 줄어드는 급격한 꺾임 지점(팔꿈치 모양)이 나타납니다. 그 지점이 가장 효율적인 최적의 &lt;span data-index-in-node=&quot;101&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;② 실루엣 분석 (Silhouette Score)   &quot;얼마나 군집끼리 잘 떨어져 있나&quot;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;원리:&lt;/b&gt; 내가 속한 군집 안의 데이터들과는 얼마나 가깝고, 이웃한 다른 군집의 데이터들과는 얼마나 멀리 떨어져 있는지를 수치화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;해석:&lt;/b&gt; -1에서 1 사이의 값을 가지며, &lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;20,1,0&quot;&gt;1에 가까울수록 군집화가 완벽하게 잘 분리&lt;/b&gt;되었다는 뜻입니다. 실루엣 점수가 가장 높은 &lt;span data-index-in-node=&quot;71&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;를 선택합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size26&quot;&gt;⚖️ K-means 알고리즘의 장점과 한계&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size23&quot;&gt;  확실한 장점 (왜 실무에서 가장 먼저 쓸까?)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;압도적인 속도와 효율성:&lt;/b&gt; 계산 비용(시간과 메모리)이 적게 들어 대용량 데이터나 고차원 데이터도 순식간에 클러스터링합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;단순함:&lt;/b&gt; 구조가 아주 직관적이고 간단하여 빠르게 구현하고 결과를 해석하기에 좋습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;  명확한 한계 (이럴 땐 쓰면 안 돼요!)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;사전 K 지정의 한계:&lt;/b&gt; 데이터 특성을 모르면 적절한 &lt;span data-index-in-node=&quot;29&quot; data-math=&quot;K&quot;&gt;$K$&lt;/span&gt;값을 잡기 어렵습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;초기 값에 대한 민감도:&lt;/b&gt; 처음에 주장을 무작위로 어디에 세우느냐에 따라 최종 클러스터링 결과가 판이하게 달라질 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;형태의 제약:&lt;/b&gt; 유클리디안 거리(직선거리) 기반으로 균등하게 동그라미를 그리며 묶기 때문에, &lt;b data-index-in-node=&quot;51&quot; data-path-to-node=&quot;26,2,0&quot;&gt;데이터가 길쭉하거나, 초승달 모양이거나, 군집별 밀도가 다르면&lt;/b&gt; 엉망으로 묶어버립니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,3,0&quot;&gt;이상치(Outlier)에 취약:&lt;/b&gt; 평균값을 기반으로 중심을 이동하므로, 저 멀리 뜬금없는 외딴섬 데이터(이상치) 하나 때문에 중심점이 엉뚱한 곳으로 끌려갈 수 있습니다.&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;스크린샷 2026-06-25 183331.png&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byPpha/dJMcac4EmNb/rhrEjEKo5FhrWPKm0gwpG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byPpha/dJMcac4EmNb/rhrEjEKo5FhrWPKm0gwpG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byPpha/dJMcac4EmNb/rhrEjEKo5FhrWPKm0gwpG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyPpha%2FdJMcac4EmNb%2FrhrEjEKo5FhrWPKm0gwpG0%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;1360&quot; height=&quot;753&quot; data-filename=&quot;스크린샷 2026-06-25 183331.png&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;⚡ 01. DBSCAN이란?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;DBSCAN은 &lt;b data-index-in-node=&quot;8&quot; data-path-to-node=&quot;8&quot;&gt;데이터 포인트가 밀집된 영역을 감지하여 클러스터로 정의&lt;/b&gt;하는 알고리즘입니다. 즉, 데이터가 가깝게 모여 있는 빽빽한 지역은 하나의 그룹으로 묶고, 텅 빈 지역에 외롭게 떨어져 있는 점들은 과감하게 '노이즈(소음/쓰레기 데이터)'로 분류해 버립니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;  K-means vs DBSCAN 한눈에 비교하기&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;10&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;특성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;K-means&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;DBSCAN&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0,0&quot;&gt;클러스터 개수 (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;K&quot;&gt;K&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,1,0&quot;&gt;사람이 미리 지정해야 함&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,2,0&quot;&gt;데이터 밀도에 따라 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;10,1,2,0&quot;&gt;자동으로 결정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0,0&quot;&gt;클러스터 형태&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,1,0&quot;&gt;구형(동그라미)만 가능&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,2,0&quot;&gt;임의의 기하학적 형태&lt;/b&gt; 모두 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0,0&quot;&gt;노이즈(이상치) 처리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,1,0&quot;&gt;불가능 (중심점이 노이즈에 끌려감)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,2,0&quot;&gt;탁월함&lt;/b&gt; (노이즈는 그룹에서 아예 배제)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,4,0,0&quot;&gt;하이퍼파라미터&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,1,0&quot;&gt;군집 개수(&lt;span data-index-in-node=&quot;6&quot; data-math=&quot;k&quot;&gt;k&lt;/span&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,2,0&quot;&gt;반지름(eps), 최소 이웃 수(min_samples)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 02. DBSCAN의 핵심 뼈대: 2대 파라미터와 3대 포인트&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;DBSCAN을 돌리기 위해 인간이 지정해 주어야 하는 핵심 설정값(하이퍼파라미터)은 딱 두 가지입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;eps (Epsilon):&lt;/b&gt; &quot;내 주변을 반지름 몇 m 안까지 탐색할까?&quot; ➡️ 이 반경 안에 들어와야 이웃으로 인정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;min_samples:&lt;/b&gt; &quot;이웃이 최소 몇 명 이상 모여 있어야 '우리 무리(군집)'로 인정할까?&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 두 가지 기준을 가지고 컴퓨터는 데이터 공간 내의 모든 점을 &lt;b data-index-in-node=&quot;36&quot; data-path-to-node=&quot;15&quot;&gt;딱 3가지 신분&lt;/b&gt;으로 분류합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;코어 포인트 (Core Point)&amp;nbsp;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내 주변(반지름 eps 안)에 이웃 데이터가 min_samples 개수 이상으로 빽빽하게 찬 완벽한 중심점입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;보더 포인트 (Border Point)&amp;nbsp;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내 주변에는 이웃이 기준치만큼 많지는 않지만, 내 이웃 중에 코어 포인트가 살고 있어서 슬쩍 같은 그룹으로 인정받는 언저리 점입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;노이즈 포인트 (Noise Point)&amp;nbsp;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코어 포인트도 아니고, 그렇다고 주변에 코어 포인트가 살지도 않아서 어떤 군집에도 속하지 못하고 혼자 덩그러니 남겨진 이상치입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size26&quot;&gt;  03. DBSCAN은 어떻게 작동할까요? (진행 과정)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;공간 내에서 임의의 데이터 포인트를 하나 콕 집습니다.&lt;/li&gt;
&lt;li&gt;그 점을 중심으로 반지름 eps 만큼 원을 그려 이웃이 몇 개인지 셉니다.&lt;/li&gt;
&lt;li&gt;만약 이웃 수가 min_samples 이상이면 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;19,2,0&quot;&gt;그 점을 '코어 포인트'로 승격시키고 첫 번째 클러스터를 생성&lt;/b&gt;합니다. (만약 기준 미달이면 일단 노이즈 포인트로 둡니다.)&lt;/li&gt;
&lt;li&gt;새로 만든 클러스터에 포함된 이웃 점들을 방문해 똑같이 원을 그립니다. 거기서 또 코어 포인트가 발견되면 &lt;b data-index-in-node=&quot;59&quot; data-path-to-node=&quot;19,3,0&quot;&gt;그 이웃들의 무리까지 전부 하나의 거대한 클러스터로 강제 통합&lt;/b&gt;(릴레이 확장)합니다.&lt;/li&gt;
&lt;li&gt;이 군집의 확장이 끝날 때까지 2~4번 과정을 계속 반복하며 촉수를 뻗어나갑니다.&lt;/li&gt;
&lt;li&gt;모든 데이터 포인트가 코어, 보더, 노이즈 중 하나의 신분을 얻을 때까지 이 전체 과정을 반복합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_kUBlldisxX6hGFEJpCisMQ.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMjv8L/dJMcabkrLVd/BZAA5ky8C1q85pWghlfCEK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMjv8L/dJMcabkrLVd/BZAA5ky8C1q85pWghlfCEK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMjv8L/dJMcabkrLVd/BZAA5ky8C1q85pWghlfCEK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bMjv8L/dJMcabkrLVd/BZAA5ky8C1q85pWghlfCEK/img.gif&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;640&quot; height=&quot;480&quot; data-filename=&quot;1_kUBlldisxX6hGFEJpCisMQ.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size26&quot;&gt;⚖️ DBSCAN의 명확한 장점과 한계&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;  이럴 때 쓰면 치트키입니다&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;클러스터 개수를 전혀 감 잡을 수 없을 때&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;데이터가 초승달 모양이나 둥근 고리 모양 등 &lt;b data-index-in-node=&quot;25&quot; data-path-to-node=&quot;23,1,0&quot;&gt;불규칙하고 복잡한 기하학적 형태&lt;/b&gt;를 띨 때&lt;/li&gt;
&lt;li&gt;데이터에 &lt;b data-index-in-node=&quot;5&quot; data-path-to-node=&quot;23,2,0&quot;&gt;이상치나 결측치, 노이즈가 유난히 많아&lt;/b&gt; 정제가 피곤할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;  이런 데이터에선 힘을 못 씁니다&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0&quot;&gt;밀도가 들쭉날쭉한 데이터:&lt;/b&gt; 어떤 군집은 엄청 조밀하고, 어떤 군집은 엄청 느슨하게 퍼져 있다면 eps 단 하나로 두 군집을 동시에 잡아낼 수 없어 성능이 처참해집니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0&quot;&gt;파라미터 설정의 늪:&lt;/b&gt; eps 값을 너무 작게 주면 온 세상 점이 다 노이즈가 되고, 너무 크게 주면 모든 데이터가 거대한 하나의 덩어리로 묶입니다. 적정 수준을 찾는 데 시행착오와 도메인 지식이 꽤 필요합니다.&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;스크린샷 2026-06-25 185053.png&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fc08J/dJMcajbznus/lFDsKO6mFypc5c9AFkkZHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fc08J/dJMcajbznus/lFDsKO6mFypc5c9AFkkZHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fc08J/dJMcajbznus/lFDsKO6mFypc5c9AFkkZHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFc08J%2FdJMcajbznus%2FlFDsKO6mFypc5c9AFkkZHk%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;890&quot; height=&quot;503&quot; data-filename=&quot;스크린샷 2026-06-25 185053.png&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/30</guid>
      <comments>https://dudgus4943.tistory.com/30#entry30comment</comments>
      <pubDate>Tue, 23 Jun 2026 20:29:32 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/22</title>
      <link>https://dudgus4943.tistory.com/29</link>
      <description>&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;✏️ 01. 학습 (Training): 모델이 '정답'을 찾아가는 과정&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;학습의 핵심은 '내가 얼마나 틀렸는가'를 스스로 아는 것부터 시작합니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;① 손실 함수 (Loss Function) : &quot;현재 모델이 얼마나 틀렸나?&quot;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;모델이 예측한 값과 실제 정답 사이의 차이(오차)를 수치화하는 함수입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;공정 비유:&lt;/b&gt; 제품 설계 치수와 실제 생산된 치수 사이의 '오차'와 같습니다. 당연히 이 오차 값이 0에 가까울수록 모델의 성능이 좋다는 뜻이겠죠? (대표적인 지표: RMSE, MAE 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;② 경사 하강법 (Gradient Descent) : &quot;오차를 줄이려면 어느 방향으로 가야 하나?&quot;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;손실 함수의 값을 최소화(오차를 최소화)하기 위해 모델의 내부 파라미터(가중치)를 조금씩 업데이트하는 알고리즘입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;등산 비유:&lt;/b&gt; 마치 안개가 자욱한 산속에서 가장 낮은 골짜기(오차가 0인 지점)를 찾기 위해, 발밑의 경사(Gradient)를 확인하며 한 걸음씩 조심스럽게 내려가는 과정과 같습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;  02. 특성 공학 (Feature Engineering): 데이터에 생명력 불어넣기&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;16&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;16,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0&quot;&gt;&quot;Raw Data를 그대로 모델에 넣는 것은, 요리하지 않은 생쌀을 먹으라고 하는 것과 같습니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;① 스케일링 (Scaling) : 수치 범위 맞추기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 단위와 범위를 일정하게 맞춰주는 작업입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;왜 하나요?&lt;/b&gt; 온도(20~30&amp;deg;C)와 압력(1000~2000Pa)처럼 단위 차이가 크면, 모델은 숫자가 큰 압력 데이터가 훨씬 중요하다고 착각합니다. 학습이 한쪽으로 치우치는 것을 막기 위해 단위를 통일해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;방법:&lt;/b&gt; 0과 1 사이로 맞추는 &lt;b data-index-in-node=&quot;17&quot; data-path-to-node=&quot;19,1,0&quot;&gt;Min-Max Scaling&lt;/b&gt;, 평균 0과 표준편차 1로 만드는 &lt;b data-index-in-node=&quot;52&quot; data-path-to-node=&quot;19,1,0&quot;&gt;Standardization(표준화)&lt;/b&gt; 등이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;② 특성 생성 및 선택 (Creation &amp;amp; Selection)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;특성 생성 (Creation):&lt;/b&gt; 기존 데이터를 조합해 새로운 결정적 단서를 만듭니다. 예를 들어, '가공 온도'와 '가공 시간'을 곱해 '총 투입 열량'이라는 새로운 지표를 만드는 것이죠. 이 새로운 데이터가 불량 예측에 더 결정적인 역할을 하기도 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;특성 선택 (Selection):&lt;/b&gt; 불량 예측과 전혀 상관없는 데이터(예: 작업자의 사번 등)는 과감히 삭제하여 모델이 혼란스럽지 않게 만듭니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size26&quot;&gt; ️ 03. 튜닝 (Tuning): 모델의 '체질'을 개선하는 과정&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;24&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;24,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0&quot;&gt;&quot;모델이 공부(학습)를 잘할 수 있도록 최적의 환경을 설정해 주는 단계입니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;학습을 본격적으로 시작하기 전, 우리는 '파라미터'와 '하이퍼파라미터'의 차이를 알아야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;파라미터 (Parameter):&lt;/b&gt; 모델이 데이터를 공부하면서 &lt;b data-index-in-node=&quot;33&quot; data-path-to-node=&quot;26,0,0&quot;&gt;스스로&lt;/b&gt; 찾아내는 최적의 값 (예: 가중치, 편향)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;하이퍼파라미터 (Hyperparameter):&lt;/b&gt; 모델이 학습하기 전에 사람(사용자)이 직접 지정해 주는 설정값 (예: 학습률, 배치 사이즈, 트리의 최대 깊이 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjdltrYjp2VAxUAAAAAHQAAAAAQoAQ&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;# 랜덤 포레스트 하이퍼파라미터 설정 예시
RandomForestClassifier(
    n_estimators=100,      # 숲에 만들 트리 개수
    max_depth=10,          # 각 트리의 최대 깊이
    min_samples_split=2,   # 분할하기 위한 최소 샘플 수
    max_features='sqrt'    # 분할 시 고려할 특성(Feature) 수
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size23&quot;&gt;  그리드 서치 (Grid Search) : &quot;최적의 레시피 조합 찾기&quot;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;사람이 지정해야 하는 하이퍼파라미터 후보군들을 격자(Grid) 형태로 미리 정해두고, 하나씩 전부 대입해 보며 최상의 결과를 찾는 방식입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0&quot;&gt;공정 비유:&lt;/b&gt; 현장에서 최적의 열처리 조건인 [온도(100도, 110도, 120도)] x [압력(10, 20, 30기압)] 조합을 모두 실험해 보고 가장 불량률이 낮은 조건을 찾아내는 '노가다(?)' 과정과 똑같습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;32&quot; data-ke-size=&quot;size26&quot;&gt;  04. 평가 (Evaluation): 모델의 '실전 실력' 검증&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;33&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;33,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0&quot;&gt;&quot;공부를 마친 모델이 새로운 시험지에서도 문제를 잘 푸는지 확인하는 단계입니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;34&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;34,0,0&quot;&gt;검증의 핵심 ⚠️:&lt;/b&gt; 반드시 &lt;b data-index-in-node=&quot;15&quot; data-path-to-node=&quot;34,0,0&quot;&gt;학습(공부)에 사용하지 않은 '테스트 데이터(Test Data)'를 사용&lt;/b&gt;해야 합니다. 기출문제를 달달 외워서 백점을 맞은 건지, 진짜 원리를 이해해서 응용문제를 잘 푸는 건지 확인해야 하기 때문입니다.&lt;/li&gt;
&lt;li&gt;단순히 정답을 맞힌 개수(정확도)만 보는 것이 아니라, 앞서 언급한 &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;34,1,0&quot;&gt;손실 함수(Loss) 값이 충분히 낮아졌는지&lt;/b&gt;, 그리드 서치로 찾은 설정값이 &lt;b data-index-in-node=&quot;80&quot; data-path-to-node=&quot;34,1,0&quot;&gt;다른 새로운 데이터에서도 일관된 성능을 내는지&lt;/b&gt; 종합적으로 판단하여 최종 모델을 배포하게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  01. 과적합(Overfitting)이란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;우리 공장 샘플 데이터는 100% 맞히는데, 옆 공장 데이터나 내일 생산 데이터는 하나도 못 맞히는 상황&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;과적합은 모델이 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;8&quot;&gt;학습 데이터에만 너무 과하게(Over) 맞춰져서(Fitting)&lt;/b&gt;, 실제 현장에서 새로운 데이터를 만났을 때(Generalization) 엉터리 대답을 하는 현상을 말합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;⚠️ 과적합이 발생하는 3가지 핵심 이유&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;학습 데이터의 부족 및 다양성 결여&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터가 너무 적으면 다양한 패턴을 배우지 못합니다.&lt;/li&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,1,1,0&quot;&gt;예시:&lt;/i&gt; 고양이의 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;10,0,1,1,0&quot;&gt;정면 사진&lt;/b&gt;만 보고 학습한 모델은, 고양이의 &lt;b data-index-in-node=&quot;33&quot; data-path-to-node=&quot;10,0,1,1,0&quot;&gt;옆모습 사진&lt;/b&gt;을 보면 고양이인지 판단하지 못합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;모델의 복잡도가 너무 높을 때&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;너무 강력하고 복잡한 모델을 사용하면, 데이터의 본질적인 흐름을 읽는 게 아니라 아주 미세한 노이즈(잔볏)까지 전부 반영하려고 구불구불한 복잡한 공식을 만들어 냅니다. 학습 데이터는 완벽히 설명할지 몰라도 조금만 데이터가 달라지면 에러를 뿜어냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;학습을 너무 오래 했을 때 (원리 이해가 아닌 단순 암기)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모델이 지나치게 오랫동안 학습을 반복하면 데이터의 규칙을 이해하는 게 아니라 &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;10,2,1,0,0&quot;&gt;데이터 자체를 통째로 외워버리는 상태&lt;/b&gt;가 됩니다. 시험공부를 할 때 기출문제의 '원리'를 파악하지 않고 '답'만 외워서 시험장에 들어가는 것과 유사합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt; ️ 02. 과적합 방지(Preventing Overfitting): 암기 과목 탈피하기&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;인공지능이 융통성 없이 '단순 암기'에 빠지지 않도록 체질을 개선하는 대표적인 기법 3가지를 소개합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;① 규제 (Regularization: L1, L2)   모델 가중치에 벌칙 주기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;모델이 특정 데이터에 너무 과하게 몰입하지 않도록, 내부 가중치(Weights)가 너무 커지면 벌금(패널티)을 부과하는 방법입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;L1 규제 (Lasso):&lt;/b&gt; 중요하지 않은 특성의 가중치를 아예 0으로 만들어 버립니다. 모델의 뼈대만 남기는 '다이어트' 효과가 있어 핵심 변수만 보게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;L2 규제 (Ridge):&lt;/b&gt; 가중치들을 전체적으로 골고루 작게 만듭니다. 특정 데이터에 너무 민감하게 널뛰지 않도록 모델의 선을 '부드럽게' 깎아줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;② 교차 검증 (Cross-Validation)   시험지 돌려막기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;데이터를 처음에 딱 한 번만 나누어 학습하면 특정 데이터 조각에만 강한 편식 모델이 될 수 있습니다. 이를 막기 위해 데이터를 여러 번 쪼개어 번갈아 가며 검증합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;K-Fold 교차 검증:&lt;/b&gt; 데이터를 동일한 크기의 K개 조각으로 나눈 뒤, 1번부터 K번 조각까지 돌아가면서 차례대로 '시험지(Validation Set)' 역할을 맡깁니다. 편법이 통하지 않도록 시험지를 계속 바꾸는 셈이죠.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;③ 드롭아웃 (Dropout)   일부러 몇 명 재우기 (딥러닝의 경우)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;원리:&lt;/b&gt; 신경망을 학습시킬 때, 매 단계마다 &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;23,0,0&quot;&gt;일부 뉴런(신경망 노드)을 무작위로 쉬게(끄게)&lt;/b&gt; 만드는 기법입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;효과:&lt;/b&gt; 특정 에이스 뉴런(경로)에만 의존하지 않고, 남은 뉴런들이 각자 똑똑해지도록 강제하기 때문에 모델 전체의 자생력과 협동 능력이 커집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  00. 왜 머신러닝(ML)을 배워야 할까요?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;복잡한 패턴의 발견:&lt;/b&gt; 기존 규칙 기반(Rule-based) 방식은 &quot;온도가 80도를 넘으면 불량&quot;이라는 단순한 조건만 봅니다. 반면 머신러닝은 &quot;온도가 75도여도 습도가 90%이고 압력이 낮아지는 '특정 조합'이 발생하면 불량이다&quot;라는 데이터 중심(Data-driven)의 복합적 패턴을 찾아냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;사전 예방(예지 보전):&lt;/b&gt; 장비의 미세한 진동을 감지해 고장 전 정비 신호를 보내거나, 공정 중간 데이터로 최종 합격 여부를 미리 예측해 비용을 아낍니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0&quot;&gt;비정형 데이터 활용:&lt;/b&gt; 비전(Vision) 검사를 통해 숙련공이 눈으로 보던 제품 표면의 결함을 AI가 24시간 일정한 기준으로 정확하게 찾아냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;  Step 1. 문제 정의 및 목표 설정 (Problem Definition)&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;10&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;10,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0&quot;&gt;&quot;어떤 요리를 만들지(한식? 양식?) 결정하고, 손님에게 '맛있다'는 소리를 듣는 성공 지표를 세우는 단계&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트의 성공 기준을 설정하는 가장 중요한 단계입니다. 단순히 &quot;모델 성능을 높이겠다&quot;가 아니라, &lt;b data-index-in-node=&quot;56&quot; data-path-to-node=&quot;11&quot;&gt;명확한 비즈니스 목표와 평가지표&lt;/b&gt;를 일치시켜야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;예시:&lt;/i&gt; &quot;사출 공정에서 발생하는 미성형 불량률을 현재 5%에서 2%로 낮추겠다.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;  Step 2. 데이터 수집 및 전처리 (Data Acquisition &amp;amp; Preprocessing)&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;15&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;15,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0&quot;&gt;&quot;Garbage In, Garbage Out (쓰레기가 들어가면 쓰레기가 나온다)&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 품질이 곧 모델의 성능을 결정합니다. 센서(IoT), DB, API, 웹 크롤링 등으로 수집한 원본 데이터(Raw Data)는 '생쌀'과 같아서 반드시 가공(요리)해야 합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;① 데이터 정제 (Cleaning)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;누락값(결측치) 처리:&lt;/b&gt; 평균, 중간값, 최빈값으로 채우거나 해당 행을 제거합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;중복 데이터 제거:&lt;/b&gt; 분석 결과의 왜곡을 막기 위해 중복 원인을 파악하고 지웁니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,2,0&quot;&gt;이상치(Outlier) 처리:&lt;/b&gt; 다른 데이터와 크게 벗어난 값을 식별해 제거하거나 보정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;② 데이터 변환 (Transformation)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;피처 스케일링(Scaling):&lt;/b&gt; 온도(20~30)와 압력(1000~2000)처럼 단위 차이가 크면 모델이 혼란스러워하므로, 범위를 맞추는 작업입니다. (&lt;b data-index-in-node=&quot;85&quot; data-path-to-node=&quot;20,0,0&quot;&gt;0~1로 맞추는 정규화&lt;/b&gt; 또는 &lt;b data-index-in-node=&quot;101&quot; data-path-to-node=&quot;20,0,0&quot;&gt;평균 0, 분산 1로 만드는 표준화&lt;/b&gt; 사용)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;인코딩(Encoding):&lt;/b&gt; '남성/여성' 같은 범주형 데이터를 머신러닝이 이해할 수 있도록 숫자(0, 1)나 &lt;b data-index-in-node=&quot;61&quot; data-path-to-node=&quot;20,1,0&quot;&gt;원-핫 인코딩(One-Hot Encoding)&lt;/b&gt; 형태로 변환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size26&quot;&gt;  Step 3. 탐색적 데이터 분석 (EDA)&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;23&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;23,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0&quot;&gt;&quot;냉장고 재료를 꺼내 상한 곳은 없는지, 서로 궁합은 좋은지 뜯어보는 과정&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;단순히 통계 수치를 보는 것을 넘어, 데이터 속에서 [Fact 도출] ➡️ [의미 파악(Insight)] ➡️ [모델링 액션(Action)]을 찾아내는 과정입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;25&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;EDA에서 발견한 사실 (Fact)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도출된 인사이트 (Insight)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;모델링을 위한 액션 (Action)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,0,0&quot;&gt;습도가 70% 이상일 때 불량률 급증&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,1,0&quot;&gt;&quot;습도가 제품 내구성에 결정적인 변수구나!&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,2,0&quot;&gt;습도 데이터를 핵심 피처로 포함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,0,0&quot;&gt;특정 작업자 A가 근무할 때만 데이터 누락&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,1,0&quot;&gt;&quot;결측치가 무작위가 아니라 특정 환경 탓이군.&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,2,0&quot;&gt;단순히 평균값으로 채우지 않고 별도 처리&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,0,0&quot;&gt;온도가 오르면 불량이 늘다가 특정 온도에선 줄어듦&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,1,0&quot;&gt;&quot;온도와 불량률은 직선이 아닌 비선형 관계구나.&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,2,0&quot;&gt;선형 회귀 대신 복잡한 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;25,3,2,0&quot;&gt;결정 트리 계열 모델&lt;/b&gt; 선택&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size26&quot;&gt; ️ Step 4. 모델 유형 선택 및 학습 (Model Training)&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size23&quot;&gt;① 모델 유형 및 데이터 분할&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예측하려는 문제가 분류(Classification)인지 회귀(Regression)인지에 따라 알고리즘을 선택합니다.&lt;/li&gt;
&lt;li&gt;데이터를 학습 데이터(70~80%)와 테스트 데이터(20~30%)로 분할하여 학습을 시작합니다.&lt;/li&gt;
&lt;li&gt;내부 파라미터(가중치와 편향)의 시작점을 정해주는 &lt;b data-index-in-node=&quot;28&quot; data-path-to-node=&quot;29,2,0&quot;&gt;'초기화'&lt;/b&gt; 과정을 거친 뒤, 오차를 줄여나가는 &lt;b data-index-in-node=&quot;54&quot; data-path-to-node=&quot;29,2,0&quot;&gt;경사하강법&lt;/b&gt;을 통해 반복 학습(에포크)을 진행합니다. 과적합 조짐이 보이면 조기 종료(Early Stopping)를 적용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size23&quot;&gt;②   핵심 중의 핵심: 베이스라인(Baseline) 모델 만들기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;처음부터 100점짜리 복잡한 딥러닝 모델을 만들려고 하면 안 됩니다. 가장 단순한 알고리즘으로 60점짜리 기준점(Baseline)을 빠르게 구해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,0&quot;&gt;이유:&lt;/b&gt; 전체 파이프라인이 잘 도달하는지 확인하고, 나중에 복잡한 모델을 도입했을 때 &quot;기본 모델보다 성능이 얼마나 좋아졌는가?&quot;를 증명하는 강력한 커뮤니케이션 도구가 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;34&quot; data-ke-size=&quot;size26&quot;&gt;  Step 5. 모델 평가 방법 (Evaluation)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;손님에게 요리를 내놓기 전 최종 맛검사를 하듯 학습에 쓰이지 않은 시험지(테스트 데이터)로 성능을 평가합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;36&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,0,0&quot;&gt;회귀 문제 지표:&lt;/b&gt; MSE(오차 제곱 평균), MAE(오차 절대값 평균), &lt;span data-index-in-node=&quot;41&quot; data-math=&quot;R^2&quot;&gt;$R^2$&lt;/span&gt;(결정계수, 설명력)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,1,0&quot;&gt;분류 문제 지표:&lt;/b&gt; 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1-Score(정밀도와 재현율의 조화평균), ROC-AUC&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;38&quot; data-ke-size=&quot;size26&quot;&gt; ️ Step 6. 하이퍼파라미터 튜닝 (Hyperparameter Tuning)&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;39&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;39,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;39,0&quot;&gt;&quot;음식의 맛을 극대화하기 위해 마지막에 명란 한 스푼, 레몬즙 킥을 넣는 미세 조정&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;40&quot; data-ke-size=&quot;size16&quot;&gt;사람이 직접 설정해야 하는 모델의 최적 설정값(트리 개수, 학습률 등)을 찾는 과정입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;41&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;41,0,0&quot;&gt;그리드 서치 (Grid Search):&lt;/b&gt; 모든 후보 조합을 격자 형태로 다 대입하는 정석적인 방법 (시간이 오래 걸림).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;41,1,0&quot;&gt;랜덤 서치 (Random Search):&lt;/b&gt; 무작위로 조합을 뽑아 평가 (그리드 서치보다 효율적).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;41,2,0&quot;&gt;베이지안 최적화 (Bayesian Optimization):&lt;/b&gt; 이전 결과를 바탕으로 다음번 튜닝값을 똑똑하게 찾아가는 방법 (가장 효율적).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;43&quot; data-ke-size=&quot;size26&quot;&gt;  Step 7. 모델 배포 및 유지 보수 (Deployment &amp;amp; Monitoring)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;44&quot; data-ke-size=&quot;size16&quot;&gt;정성껏 만든 요리를 드디어 손님 식탁에 올리고 피드백을 받는 최종 단계입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;45&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;45,0,0&quot;&gt;환경 설정 &amp;amp; 패키징:&lt;/b&gt; 모델이 돌아갈 서버 환경을 구축하고, 어디서든 똑같이 실행되도록 라이브러리와 모델을 하나로 묶어 컨테이너화(Docker 등)합니다. (밀키트 포장)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;45,1,0&quot;&gt;API 개발:&lt;/b&gt; 외부 시스템이 모델에게 데이터를 보내면 바로 답변을 받을 수 있도록 통로(RESTful API)를 뚫어줍니다. (주문 키오스크 설치)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;45,2,0&quot;&gt;테스트 &amp;amp; 실전 배포:&lt;/b&gt; 시식회(최종 테스트)를 거쳐 실전 서버에 올립니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;45,3,0&quot;&gt;모니터링 및 재학습:&lt;/b&gt; 배포 후에도 시간이 지나며 공정 환경이 변하면 모델의 성능이 떨어집니다. 지속적으로 모니터링을 하며 데이터를 모아 주기적으로 모델을 다시 학습(Retraining)시키는 유지 보수가 필수적입니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/29</guid>
      <comments>https://dudgus4943.tistory.com/29#entry29comment</comments>
      <pubDate>Mon, 22 Jun 2026 20:57:23 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/19</title>
      <link>https://dudgus4943.tistory.com/28</link>
      <description>&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! 오늘은 머신러닝에서 예측 성능을 끌어올릴 때 절대 빠지지 않고 등장하는 핵심 개념, '앙상블 모델(Ensemble Model)'에 대해 쉽고 깔끔하게 정리해 보려고 합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;중요한 결정을 내릴 때 여러 전문가의 의견을 모으듯, 머신러닝에서도 여러 개의 모델을 합치면 훨씬 강력한 힘을 발휘하는데요. 앙상블의 기본 개념부터 대표적인 두 가지 줄기인 배깅(Bagging)과 부스팅(Boosting)까지 핵심만 쏙쏙 뽑아 전해드립니다!&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  01. 앙상블 모델이란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;여러 명의 전문가가 모여 의견을 내는 것이, 한 명의 전문가보다 더 나은 결과를 낸다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;앙상블 모델은 한 마디로 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;8&quot;&gt;'집단지성'을 활용한 머신러닝 기법&lt;/b&gt;입니다. 마치 중요한 수술을 앞두고 여러 의사의 소견을 종합해 최종 결정을 내리는 것처럼, &lt;b data-index-in-node=&quot;84&quot; data-path-to-node=&quot;8&quot;&gt;여러 개의 기초 모델(Weak Learner)의 예측을 결합하여 더 정확하고 안정적인 최종 예측을 도출하는 방법&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;  02. 복원 추출로 독립적인 학습을! '배깅 (Bagging)'&lt;/h2&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;배깅(Bootstrap AGGregatING)은 원래 데이터셋에서 무작위로 여러 번 샘플링(복원 추출)하여 다양한 데이터셋을 만들고, &lt;b data-index-in-node=&quot;75&quot; data-path-to-node=&quot;11&quot;&gt;각각의 데이터셋에 대해 모델을 '독립적'으로 학습&lt;/b&gt;시키는 방식입니다. 여러 의사가 각자 다른 임상 경험을 바탕으로 독립적으로 진단을 내리는 것과 유사합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;  대표 주자: 랜덤 포레스트 (Random Forest)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;독립적 학습:&lt;/b&gt; 여러 개의 결정 트리(Decision Tree)를 독립적으로 학습시킵니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;다양성 확보:&lt;/b&gt; 각 트리가 서로 다른 데이터와 특성(Feature) 조합을 사용하므로, 서로의 약점을 잘 보완해 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;  03. 오답을 오답노트처럼 보완한다! '부스팅 (Boosting)'&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;부스팅(Boosting)은 배깅처럼 독립적으로 학습하지 않고, &lt;b data-index-in-node=&quot;35&quot; data-path-to-node=&quot;16&quot;&gt;'순차적'으로 모델을 개선&lt;/b&gt;해 나가는 방식입니다. 이전 모델이 잘못 예측한 데이터에 더 많은 가중치(오답 노트)를 두어 다음 모델이 이를 집중적으로 학습하게 만듭니다. 마치 의사가 이전의 잘못된 진단 케이스를 공부하며 진단 능력을 업그레이드하는 과정과 비슷합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;⚡ 대표 주자: XGBoost, LightGBM (LGBM)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;오차 보완:&lt;/b&gt; 앞선 모델의 실수를 만회하는 방향으로 끊임없이 진화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;실무 압도적 활용:&lt;/b&gt; 높은 예측 성능을 자랑하기 때문에, 데이터 분석 대회(Kaggle 등)나 실무에서 가장 널리 사용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size26&quot;&gt;  앙상블 모델의 장단점 한눈에 보기&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;21&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&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;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;장점  &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,1,1,0&quot;&gt;안정성과 강건함:&lt;/b&gt; 여러 모델의 의견을 모으므로 예측이 흔들리지 않습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,1,1,2&quot;&gt;과적합 방지:&lt;/b&gt; 모델이 과도하게 한쪽으로 치우치는(Overfitting) 위험을 줄여줍니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,1,1,4&quot;&gt;압도적 성능:&lt;/b&gt; 단일 모델보다 훨씬 높은 예측 성능을 보여줍니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0,0&quot;&gt;단점  &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,2,1,0&quot;&gt;리소스 소모:&lt;/b&gt; 학습과 예측에 더 많은 시간과 컴퓨터 자원이 필요합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,2,1,2&quot;&gt;해석의 어려움:&lt;/b&gt; 모델이 복잡해져 내부 구조를 한눈에 파악하기 어렵습니다 (Black Box).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;21,2,1,4&quot;&gt;튜닝의 까다로움:&lt;/b&gt; 적절한 방법 선정과 하이퍼파라미터 튜닝이 필수적입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-22 202806.png&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0YXzL/dJMcacjdclF/HMroCdBdtwcKKHyIxLahBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0YXzL/dJMcacjdclF/HMroCdBdtwcKKHyIxLahBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0YXzL/dJMcacjdclF/HMroCdBdtwcKKHyIxLahBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0YXzL%2FdJMcacjdclF%2FHMroCdBdtwcKKHyIxLahBK%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;1022&quot; height=&quot;555&quot; data-filename=&quot;스크린샷 2026-06-22 202806.png&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  02. 결정 트리(Decision Tree)란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;머신러닝으로 즐기는 스무고개 게임!&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;결정 트리는 의사결정 규칙을 &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;8&quot;&gt;나무(Tree) 형태로 도표화&lt;/b&gt;하여 데이터를 분류하거나 예측하는 모델입니다. 우리가 일상생활에서 선택을 고민할 때 &quot;예/아니오&quot;라는 질문을 던지며 답을 찾아가는 과정과 매우 유사합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;순차적 데이터 분할:&lt;/b&gt; 특정 기준에 따라 데이터를 연속적으로 쪼개며 최종 결론에 도달합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;노드(Node)의 역할:&lt;/b&gt; 각 내부 노드는 데이터의 &lt;b data-index-in-node=&quot;28&quot; data-path-to-node=&quot;9,1,0&quot;&gt;특성(Feature)에 대한 조건&lt;/b&gt;을 나타내며, 이 조건의 만족 여부에 따라 데이터가 왼쪽 혹은 오른쪽 가지(Branch)로 분리됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0&quot;&gt;언제까지 자랄까?:&lt;/b&gt; 트리는 미리 지정한 특정 종료 조건(최대 깊이, 노드 최소 샘플 수 등)에 도달할 때까지 반복해서 성장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;  02-1. 핵심 개념: 트리의 선택 기준, '불순도(Impurity)'&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;결정 트리가 똑똑한 질문을 던지려면 '어떤 특성'을 기준으로 데이터를 나눌지 결정해야 합니다. 이때 사용하는 기준이 바로 '불순도'입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;불순도란?&lt;/b&gt; 각 노드에서 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;13,0,0&quot;&gt;데이터가 얼마나 서로 섞여 있는가&lt;/b&gt;를 측정하는 지표입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;불순도 = 0 (순수함):&lt;/b&gt; 해당 노드에 완전히 단일 클래스(예: 오직 '사과'만)의 데이터만 남은 상태입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0&quot;&gt;불순도 = 최대 (혼란함):&lt;/b&gt; 모든 클래스가 반반씩 균등하게 섞여 있어 구분이 안 되는 상태입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;  대표적인 지표: 지니 계수 (Gini Index) &amp;amp; 엔트로피 (Entropy)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;결정 트리는 이 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;15&quot;&gt;불순도가 가장 크게 감소하는 방향&lt;/b&gt;(데이터가 가장 잘 깨끗하게 분류되는 방향)으로 특성과 분할 기준을 선택하며 성장합니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size26&quot;&gt;⚖️ 결정 트리의 장점과 단점&lt;/h2&gt;
&lt;p data-path-to-node=&quot;18&quot; 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-path-to-node=&quot;19&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&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;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;19,1,0,0&quot;&gt;뛰어난 해석력:&lt;/b&gt; 의사결정 과정을 시각적으로 표현할 수 있어 비전문가도 쉽게 이해할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;19,1,0,2&quot;&gt;높은 유연성:&lt;/b&gt; 분류(Classification)와 회귀(Regression) 문제 모두에 사용할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;19,1,0,4&quot;&gt;데이터 전처리 최소화:&lt;/b&gt; 수치형 데이터와 범주형 변수를 변환 없이 자연스럽게 처리합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;19,1,1,0&quot;&gt;과적합(Overfitting) 위험:&lt;/b&gt; 트리가 너무 깊어지면 학습 데이터에만 과도하게 맞춰져 새로운 데이터 예측 능력이 떨어집니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;  &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;19,1,1,3&quot;&gt;해결 방법: 가지치기(Pruning)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;트리의 최대 깊이를 제한하거나 불필요한 가지를 잘라내어 과적합을 방지합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-22 205429.png&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAnzoP/dJMb99NxZ3h/ikflECv9MGgfUpxlP7lpj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAnzoP/dJMb99NxZ3h/ikflECv9MGgfUpxlP7lpj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAnzoP/dJMb99NxZ3h/ikflECv9MGgfUpxlP7lpj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAnzoP%2FdJMb99NxZ3h%2FikflECv9MGgfUpxlP7lpj0%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;1266&quot; height=&quot;701&quot; data-filename=&quot;스크린샷 2026-06-22 205429.png&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;701&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;  03. 랜덤 포레스트(Random Forest)란?&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0&quot;&gt;&quot;다양한 시각을 가진 전문가들의 100% 투표 시스템&quot;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;랜덤 포레스트는 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;8&quot;&gt;여러 개의 결정 트리(Decision Tree)를 만들고, 이들의 예측을 종합&lt;/b&gt;하여 최종 결론을 내리는 대표적인 &lt;b data-index-in-node=&quot;71&quot; data-path-to-node=&quot;8&quot;&gt;배깅(Bagging)&lt;/b&gt; 방식의 앙상블 모델입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;만약 10,000개의 데이터가 있을 때, 이를 가지고 &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;9&quot;&gt;각기 다른 데이터와 특성을 학습한 10개, 100개의 독립적인 나무&lt;/b&gt;를 만듭니다. 각 나무가 무작위성(Random)을 바탕으로 서로 다른 관점에서 문제를 바라보기 때문에, 집단지성의 효과를 극대화할 수 있습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 03-1. 랜덤 포레스트의 핵심 작동 원리&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;랜덤 포레스트가 '무작위성'을 확보하는 비밀은 크게 두 가지 샘플링 과정에 있습니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;① 복원 추출, '부트스트랩 샘플링 (Bootstrap Sampling)'&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;원본 데이터에서 중복을 허용하여 무작위로 여러 개의 학습 데이터셋을 만듭니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;예시:&lt;/b&gt; 10,000명의 대출 데이터가 있다면, 각 트리는 무작위로 추출된 5,000개의 샘플로 학습합니다. 어떤 데이터는 여러 번 뽑히고, 어떤 데이터는 한 번도 안 뽑힐 수 있어 트리의 다양성이 확보됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;② 특성의 무작위 선택 (Random Feature Selection)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;데이터뿐만 아니라 &lt;b data-index-in-node=&quot;10&quot; data-path-to-node=&quot;17&quot;&gt;'질문 거리(특성)'도 무작위로 제한&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;예시:&lt;/b&gt; 대출 심사에 필요한 특성이 총 20개(소득, 나이, 신용점수 등)라면, 분기점마다 무작위로 5개만 골라 그중 최적의 질문을 찾습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;③개별 트리의&amp;nbsp; 학습&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;각 트리는 서로 다른 데이터와 특성으로 학습되므로, 다음과 같이 다양한 기준으로 판단할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;18,1,1&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;18,1,1&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;18,1,1,0,0&quot; data-index-in-node=&quot;0&quot;&gt;트리 1:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;소득과 DTI(총부채상환비율)를 중심적으로 평가&lt;/li&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;18,1,1,1,0&quot; data-index-in-node=&quot;0&quot;&gt;트리 2:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;연체 이력과 LTV(주택담보대출비율)를 중심적으로 평가&lt;/li&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;18,1,1,2,0&quot; data-index-in-node=&quot;0&quot;&gt;트리 3:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;신용점수와 직장 안정성을 주로 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;④&lt;/span&gt; &amp;nbsp;앙상블 예측 (Ensemble Prediction)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;각 나무가 독립적으로 열심히 학습을 마치면, 드디어 최종 투표를 진행합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;분류 (Classification)   다수결 투표:&lt;/b&gt; 100개의 트리 중 65개가 '상환 가능'이라고 하면 최종 결과는 &lt;b data-index-in-node=&quot;68&quot; data-path-to-node=&quot;21,0,0&quot;&gt;[상환 가능]&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;회귀 (Regression)   평균값:&lt;/b&gt; 각 트리가 예측한 값을 모두 더해 [평균 확률 65%]로 최종 결정&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size26&quot;&gt;⚖️ 랜덤 포레스트의 장점과 단점&lt;/h2&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;실무에서 치트키처럼 쓰이는 모델이지만, 금융권 등 특정 도메인에서는 치명적인 약점도 존재합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;  강력한 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;낮은 과적합 위험 &amp;amp; 안정성:&lt;/b&gt; 수많은 트리의 오답과 정답을 평균 내기 때문에 개별 트리의 오류가 상쇄되어 &lt;b data-index-in-node=&quot;59&quot; data-path-to-node=&quot;26,0,0&quot;&gt;일반화 성능&lt;/b&gt;이 아주 뛰어납니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;특성 중요도 제공:&lt;/b&gt; 어떤 변수(예: 소득 vs 나이)가 예측에 가장 큰 영향을 미쳤는지 수치로 쉽게 확인할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;이상치(Outlier)에 강함:&lt;/b&gt; 숲 전체의 의견을 듣기 때문에 몇 개의 노이즈 데이터에 쉽게 흔들리지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,3,0&quot;&gt;대규모 데이터 최적화:&lt;/b&gt; 대용량 데이터에서도 안정적이며, 여러 트리를 동시에 만드는 병렬 처리(Parallel Processing)가 가능해 학습 효율이 좋습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size23&quot;&gt;  주의해야 할 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;28&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,0,0&quot;&gt;막대한 계산 비용:&lt;/b&gt; 트리를 수백 개씩 굴려야 하므로 단일 트리에 비해 &lt;b data-index-in-node=&quot;39&quot; data-path-to-node=&quot;28,0,0&quot;&gt;메모리와 처리 시간이 훨씬 많이 필요&lt;/b&gt;합니다. (트리가 100개면 자원도 100배!)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,0&quot;&gt;해석의 어려움 (Black Box):&lt;/b&gt; &quot;여러 요인을 종합적으로 고려했습니다&quot; 외에 구체적인 이유를 설명하기 어렵습니다. 예를 들어 대출이 거절된 고객에게 정확한 사유를 논리적으로 설명해야 하는 &lt;b data-index-in-node=&quot;108&quot; data-path-to-node=&quot;28,1,0&quot;&gt;금융 규제 환경에서는 치명적인 단점&lt;/b&gt;이 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,2,0&quot;&gt;하이퍼파라미터 튜닝의 복잡:&lt;/b&gt; 최적의 성능을 내기 위해 트리 개수, 최대 깊이 등을 조절해야 하는데, 트리 개수를 100개에서 1,000개로 늘려가며 최적점을 찾는 과정은 꽤 많은 실험 시간(일명 노가다...)을 필요로 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;⚡ 01. 부스팅(Boosting)이란?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;부스팅은 '강화하다', '밀어 올리다'라는 뜻을 가집니다. 머신러닝에서는 &lt;b data-index-in-node=&quot;41&quot; data-path-to-node=&quot;7&quot;&gt;맞추기 힘든 어려운 데이터에 집중하여, 약한 학습기(Weak Learner)들을 순차적으로 학습시켜 하나의 강력한 학습기(Strong Learner)를 만드는 방법&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;  반도체 공정으로 이해하는 약한 학습기 vs 강한 학습기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;약한 학습기 (단순한 모델):&lt;/b&gt; &quot;전압이 기준치를 벗어나면 불량!&quot;처럼 하나의 간단한 기준만 체크하는 단순 검사입니다. 완벽하지는 않지만, 완전히 찍는 것보다는 나은 수준입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;강한 학습기 (강력한 모델):&lt;/b&gt; 전압, 전류, 온도, 습도, 외관 등을 &lt;b data-index-in-node=&quot;39&quot; data-path-to-node=&quot;9,1,0&quot;&gt;종합적으로 판단&lt;/b&gt;하여 불량품을 매우 정확하게 찾아내는 전문가 집단 인터뷰 같은 모델입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 02. 부스팅의 핵심 원리: '순차적 학습 (Sequential)'&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;부스팅은 모든 모델이 동시에 학습하지 않고, &lt;b data-index-in-node=&quot;25&quot; data-path-to-node=&quot;12&quot;&gt;앞선 모델의 결과를 보고 뒤선 모델이 이어받는 '릴레이' 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;첫 번째 검사:&lt;/b&gt; 전압 테스트를 통해 불량품을 1차로 걸러냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;두 번째 검사:&lt;/b&gt; 1차 검사를 통과한 제품(이전 모델이 놓친 데이터) 중 '온도 문제'가 있는 제품에 집중합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0&quot;&gt;세 번째 검사:&lt;/b&gt; 앞선 검사들을 다 통과한 제품 중 '크기 불량'을 집중적으로 잡아냅니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-path-to-node=&quot;14&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;14,0&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;14,0&quot;&gt;즉, 첫 번째 모델이 틀린 오답(실수)에 가중치를 두어 다음 모델이 이를 집중 학습하게 만드는 방식입니다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt; ️ 03. 부스팅 모델 종류 총정리&lt;/h2&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;부스팅은 발전을 거듭하며 머신러닝 생태계를 지배하게 되었는데요. 대표적인 4가지 모델을 순서대로 알아보겠습니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;① AdaBoost (Adaptive Boosting)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;개념:&lt;/b&gt; 부스팅의 조상님 격인 알고리즘입니다. &lt;b data-index-in-node=&quot;25&quot; data-path-to-node=&quot;19,0,0&quot;&gt;틀린 데이터에 직접적으로 가중치&lt;/b&gt;를 부여합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;원리:&lt;/b&gt; * 실수한 데이터는 가중치를 높이고, 맞춘 데이터는 가중치를 낮춥니다. (어려운 오답노트 무한 반복)
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최종 결합 시에는 성적이 더 좋았던(예측 성능이 높은) 모델의 의견에 더 큰 비중을 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;② GBM (Gradient Boosting Machine)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;개념:&lt;/b&gt; AdaBoost를 발전시켜 가중치 대신 경사하강법(Gradient Descent)을 도입한 모델입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;원리:&lt;/b&gt; 다음 모델이 가중치를 다루는 게 아니라, 이전 모델이 만든 &lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;21,1,0&quot;&gt;'오차(잔차, Residual)' 자체를 직접 학습&lt;/b&gt;합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,1,0,0&quot;&gt;예시:&lt;/i&gt; 실제 데이터가 5인데 예측이 4라면, 오차인 1을 다음 모델이 학습하여 점차 오차를 0에 가깝게 줄여나갑니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;특징:&lt;/b&gt; 비선형 관계를 매우 잘 포착하지만, 순차 학습 특성상 속도가 느리다는 단점이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;③ XGBoost (eXtreme Gradient Boosting)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;개념:&lt;/b&gt; &lt;b data-index-in-node=&quot;4&quot; data-path-to-node=&quot;23,0,0&quot;&gt;&quot;GBM의 느린 속도와 과적합 문제를 해결한 혁신작!&quot;&lt;/b&gt; 실무와 데이터 대회(Kaggle)의 치트키입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;장점:&lt;/b&gt; * &lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;23,1,0&quot;&gt;정규화(Regularization) 도입:&lt;/b&gt; 릿지, 라쏘처럼 패널티를 주어 과적합을 방지합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,1,0,0&quot;&gt;병렬 처리:&lt;/b&gt; CPU를 효율적으로 써서 학습 속도가 대폭 향상되었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,1,1,0&quot;&gt;자동 결측치 처리 &amp;amp; 가지치기(Pruning)&lt;/b&gt; 적용.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;④ LightGBM (LGBM)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0&quot;&gt;개념:&lt;/b&gt; XGBoost보다 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;25,0,0&quot;&gt;더 가볍고(Light) 빠른 속도&lt;/b&gt;를 자랑하는 최신 트렌드 모델입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0&quot;&gt;핵심 차이 (리프 중심 분할):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,1,0,0&quot;&gt;기존 GBM/XGBoost:&lt;/b&gt; 균형 트리 분할(Level-wise) 방식을 써서 안정적이지만 불필요한 노드까지 자랍니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,1,1,0&quot;&gt;LightGBM:&lt;/b&gt; &lt;b data-index-in-node=&quot;10&quot; data-path-to-node=&quot;25,1,1,1,0&quot;&gt;리프 중심 트리 분할(Leaf-wise)&lt;/b&gt; 방식을 사용하여 손실(오차)이 가장 크게 감소하는 노드만 골라 깊게 파고듭니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0&quot;&gt;특징:&lt;/b&gt; 메모리를 적게 먹고 압도적으로 빠르지만, &lt;b data-index-in-node=&quot;27&quot; data-path-to-node=&quot;25,2,0&quot;&gt;데이터 수가 적을 경우 과적합(Overfitting)되기 쉽다&lt;/b&gt;는 주의점이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size26&quot;&gt;  부스팅 모델 한눈에 비교하기&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 101.163%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.7887%;&quot;&gt;&lt;b&gt;모델명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.5834%;&quot;&gt;&lt;b&gt;핵심 특징&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.8317%;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.0594%;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8984%;&quot;&gt;&lt;b&gt;✨ 이럴 때 선택하세요!&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.7887%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0,0&quot;&gt;AdaBoost&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.5834%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;오답 데이터에 직접 가중치 부여&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.8317%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,2,0&quot;&gt;직관적이고 단순함&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.0594%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,3,0&quot;&gt;노이즈나 이상치에 취약함&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8984%;&quot;&gt;&lt;span&gt;&amp;bull; 데이터셋이 비교적 작고 노이즈가 적을 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 모델의 작동 원리를 명확히 설명해야 할 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 이진 분류 문제를 풀 때&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.7887%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0,0&quot;&gt;GBM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.5834%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;오차(잔차)를 경사하강법으로 학습&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.8317%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,2,0&quot;&gt;높은 정확도, 복잡한 비선형 관계 포착&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.0594%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,3,0&quot;&gt;순차 학습으로 인해 속도가 느림&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8984%;&quot;&gt;&lt;span&gt;&amp;bull; 예측 성능이 가장 최우선 고려사항일 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 데이터의 비선형성이 매우 강할 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 충분한 컴퓨터 학습 시간을 확보할 수 있을 때&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.7887%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0,0&quot;&gt;XGBoost&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.5834%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;GBM + 정규화 + 대량 병렬 처리&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.8317%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,2,0&quot;&gt;과적합 방지(L1/L2), 결측치 자동 처리&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.0594%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,3,0&quot;&gt;하이퍼파라미터가 많아 튜닝이 복잡함&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8984%;&quot;&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;4,3,4,0&quot;&gt;대규모 데이터셋&lt;/b&gt;을 다룰 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;4,3,4,2&quot;&gt;결측치(Missing Value)가 많은&lt;/b&gt; 데이터일 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 높은 성능과 적절한 속도가 모두 필요할 때&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.7887%;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0,0&quot;&gt;LightGBM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.5834%;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;리프 중심 분할 (손실 위주 성장)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.8317%;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,2,0&quot;&gt;압도적인 속도&lt;/b&gt;, 적은 메모리 소모&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.0594%;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,3,0&quot;&gt;소규모 데이터에서 &lt;b data-index-in-node=&quot;10&quot; data-path-to-node=&quot;4,4,3,0&quot;&gt;과적합 위험&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8984%;&quot;&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;4,4,4,0&quot;&gt;매우 거대한 데이터셋&lt;/b&gt;을 다룰 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 빠른 학습 속도가 필수적일 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 메모리 자원이 제한적일 때 (&lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;4,4,4,4&quot;&gt;적은 데이터엔 주의!&lt;/b&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/28</guid>
      <comments>https://dudgus4943.tistory.com/28#entry28comment</comments>
      <pubDate>Fri, 19 Jun 2026 21:00:03 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/18</title>
      <link>https://dudgus4943.tistory.com/27</link>
      <description>&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 머신러닝 프로세스 개요 (Machine Learning Pipeline)&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Data Loading&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;분석에 필요한 데이터셋을 불러옵니다. (csv, excel, sql 등)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; train set (학습용, 레이블 있음)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; test set (평가용, 레이블 없음)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;DataSets (All, Train, Test)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Data Preprocessing &amp;amp; Feature Engineering&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;middot; 결측치 처리, 이상치 처리, 데이터 보정&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; &lt;b&gt;Feature Engineering&lt;/b&gt;: 기존 데이터를 활용한 신규 데이터 열 생성, 카테고리 데이터 변형(One-Hot Encoding 등)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; &lt;b&gt;Feature Selection/Extraction&lt;/b&gt;: 중요 데이터 선정 및 상관성이 낮은 불필요한 데이터 삭제&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; &lt;b&gt;Data Splitting&lt;/b&gt;: 학습용 데이터를 다시 학습(80%)과 학습 평가용(20%)으로 분할&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;데이터 정리본, x_train, y_train, x_valid, y_valid&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Modeling&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;학습할 모델을 생성합니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; &lt;b&gt;회귀&lt;/b&gt;: 연속형 레이블 (LR, Ridge, Lasso, RF, GB)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; &lt;b&gt;분류&lt;/b&gt;: 범주형 레이블 (LR, DT, RF, GB)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;MODEL 인스턴스&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Training (fit)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;학습 데이터를 이용해 생성된 모델을 학습시킵니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; 학습 데이터를 넣어 예측값 출력 $\rightarrow$ pred_train&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; 학습 평가 데이터를 넣어 예측값 출력 $\rightarrow$ pred_valid&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;pred_train, pred_valid&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Evaluation&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;예측값과 실제값을 비교하여 성능을 평가합니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;middot; 학습 데이터와 학습 평가 데이터의 성능 차이가 너무 크면 과적합 등의 문제가 발생한 것입니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;train score, test score&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Inferencing&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;학습된 최종 모델에 실제 예측하고자 하는 데이터(Test Set 또는 미래 데이터)를 넣어 예측합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;pred_test&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Submission&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;최종 예측 결과를 양식에 맞춰 제출합니다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;RANK (제출용 파일)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 데이터 전처리 (Data Preprocessing) - 인코딩&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝 모델은 수치형 데이터만 입력받을 수 있기 때문에, 글자로 된 &lt;b&gt;범주형(Categorical) 데이터&lt;/b&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;숫자처럼 연속적인 값이 아니라, 특정한 '범주(Category)' 또는 '이름(Label)'으로 표현되어 의미 있는 그룹으로 구분되는 데이터입니다.&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;: 남, 여 (2개 범주)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지역&lt;/b&gt;: 서울, 부산, 대전 (3개 범주)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;혈액형&lt;/b&gt;: A, B, AB, O (4개 범주)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제품등급&lt;/b&gt;: 상, 중, 하 (순서가 있는 범주 - Ordinal)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;불량 여부&lt;/b&gt;: 양품, 불량품 (2개 범주)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;① 원-핫 인코딩 (One-Hot Encoding)&lt;/h3&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;: 각 범주를 새로운 열(Column)로 만들고, 해당하는 데이터에만 1을 부여하고 나머지는 0으로 채웁니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: 혈액형(A, B, O) $\rightarrow$ A열(1, 0, 0), B열(0, 1, 0), O열(0, 0, 1)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원-핫 인코딩은 pandas 라이브러리의 get_dummies() 함수를 이용해 아주 쉽게 구현할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;import pandas as pd

# 1. 샘플 데이터프레임 생성
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'blood_type': ['A', 'B', 'O', 'AB']
})
print(&quot;원본 데이터:&quot;)
print(df)

# 2. One-Hot Encoding 적용
df_encoded = pd.get_dummies(df, columns=['blood_type'])
print(&quot;\nOne-Hot Encoding 결과:&quot;)
print(df_encoded)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레이블 인코딩 (Label Encoding)&lt;/h3&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상 &amp;lt; 중 &amp;lt; 하, 초급 &amp;lt; 중급 &amp;lt; 고급과 같이 &lt;b&gt;순서(우선순위)가 있는 범주형 변수&lt;/b&gt;를 처리할 때 유용합니다.&lt;/li&gt;
&lt;li&gt;혹은 범주의 종류가 너무 많아 원-핫 인코딩을 적용하면 열이 너무 늘어날 때 대안으로 사용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트리 기반 모델&lt;/b&gt;(Random Forest, XGBoost 등)은 데이터에 순서가 없어도 숫자의 크기에 왜곡되지 않고 처리를 잘해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동작 방식&lt;/b&gt;: 중복을 제거한 고유값들을 &lt;b&gt;글자 순서(사전순)대로 정렬&lt;/b&gt;한 뒤, 0부터 순서대로 숫자를 부여합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: 만족도(만족, 보통, 불만) $\rightarrow$ 글자 정렬 시 '만족', '보통', '불만' 순서에 따라 정수 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이블 인코딩은 scikit-learn 라이브러리의 LabelEncoder 클래스를 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;import pandas as pd
from sklearn.preprocessing import LabelEncoder

# 예시 데이터 생성
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'satisfaction': ['만족', '보통', '보통', '불만']
})
print(&quot;원본 데이터:&quot;)
print(df)

# LabelEncoder 객체 생성 및 학습/변환
le = LabelEncoder()

# 데이터를 학습(fit)하여 규칙을 정의합니다.
le.fit(df['satisfaction'])

print(&quot;\n# le.classes_ 확인 (인코딩된 범주 목록):&quot;)
print(le.classes_)

# 실제 데이터 변환(transform) 수행
df['satisfaction_encoded'] = le.transform(df['satisfaction'])

# 만약 한 번에 하려면 아래 한 줄로도 가능합니다.
# df['satisfaction_encoded'] = le.fit_transform(df['satisfaction'])

print(&quot;\nLabel Encoding 결과:&quot;)
print(df)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_j9034wj9034wj903.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4rqLT/dJMcahSk8qJ/dnsMqmM1BC5VPQEwigg7ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4rqLT/dJMcahSk8qJ/dnsMqmM1BC5VPQEwigg7ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4rqLT/dJMcahSk8qJ/dnsMqmM1BC5VPQEwigg7ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4rqLT%2FdJMcahSk8qJ%2FdnsMqmM1BC5VPQEwigg7ik%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;1408&quot; height=&quot;768&quot; data-filename=&quot;Gemini_Generated_Image_j9034wj9034wj903.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 데이터 단위 맞추기: 스케일링 (Scaling)&lt;/h2&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;키(cm): $160 \sim 190$ (최대-최소 차이: 30)&lt;/li&gt;
&lt;li&gt;연봉(만원): $1,000 \sim 10,000$ (최대-최소 차이: 9,000)&lt;/li&gt;
&lt;li&gt;이 경우, 연봉의 스케일이 압도적으로 크기 때문에 모델은 '키' 변수를 무시하고 '연봉' 변수만을 바탕으로 편향되게 학습을 진행할 위험이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;① StandardScaler (표준화)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 변수의 값을 평균이 0, 표준편차가 1인 표준정규분포를 따르도록 변환하는 방법입니다.&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;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 203128.png&quot; data-origin-width=&quot;112&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0EVNX/dJMcaaMsVET/JJ8h1vvgjeXNVN4eQsGzZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0EVNX/dJMcaaMsVET/JJ8h1vvgjeXNVN4eQsGzZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0EVNX/dJMcaaMsVET/JJ8h1vvgjeXNVN4eQsGzZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0EVNX%2FdJMcaaMsVET%2FJJ8h1vvgjeXNVN4eQsGzZ1%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;112&quot; height=&quot;53&quot; data-filename=&quot;스크린샷 2026-06-18 203128.png&quot; data-origin-width=&quot;112&quot; data-origin-height=&quot;53&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 203134.png&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edjvCb/dJMcaaeFbUk/e5EJZ8Q3C9fajIVf3HkCdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edjvCb/dJMcaaeFbUk/e5EJZ8Q3C9fajIVf3HkCdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edjvCb/dJMcaaeFbUk/e5EJZ8Q3C9fajIVf3HkCdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedjvCb%2FdJMcaaeFbUk%2Fe5EJZ8Q3C9fajIVf3HkCdK%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;227&quot; height=&quot;121&quot; data-filename=&quot;스크린샷 2026-06-18 203134.png&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;: 데이터의 전체적인 분포 모양(곡선 형태)은 유지하면서 중심축을 0으로 이동시키고 양옆으로 크기만 조절합니다. 데이터가 정규분포에 가깝거나 대칭적일 때 유용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주의&lt;/b&gt;: 이상치(Outlier)가 있을 경우 평균과 표준편차 계산이 크게 왜곡될 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실습 코드&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.preprocessing import StandardScaler

# 예시 데이터 (5개의 샘플, 2개의 특성)
X_train = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

# StandardScaler 초기화 및 변환
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)

print(&quot;StandardScaler 적용 결과:&quot;)
print(X_train_scaled)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;② MinMaxScaler (정규화)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 데이터 값을 최소값 0, 최대값 1 사이의 범위로 압축하여 변환하는 기법입니다.&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;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 202134.png&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/txV3n/dJMcad3rks7/ijqyAgdcXoVlkEAVF8AjV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/txV3n/dJMcad3rks7/ijqyAgdcXoVlkEAVF8AjV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/txV3n/dJMcad3rks7/ijqyAgdcXoVlkEAVF8AjV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtxV3n%2FdJMcad3rks7%2FijqyAgdcXoVlkEAVF8AjV1%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;184&quot; height=&quot;80&quot; data-filename=&quot;스크린샷 2026-06-18 202134.png&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;: 데이터의 범위를 일정한 구간으로 명확히 제한하고 싶을 때 사용하며, 데이터 분포가 특정 방향으로 치우쳐 있는 비정규분포 형태일 때 유용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주의&lt;/b&gt;: 이상치(Outlier)가 단 하나라도 존재하면 전체 데이터 범위가 극단적으로 좁게 압축되어 다른 데이터 간의 미세한 차이를 분별하기 어려워질 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실습 코드&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.preprocessing import MinMaxScaler

# 예시 데이터 (5개의 샘플, 2개의 특성)
X_train = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

# MinMaxScaler 초기화 및 변환
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)

print(&quot;MinMaxScaler 적용 결과:&quot;)
print(X_train_scaled)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스케일러가 강력한 성능을 발휘할 때: SVM (Support Vector Machine)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SVM 모델처럼 피처의 스케일에 매우 민감한 모델은 스케일 조정을 통해 데이터 간 거리 계산이 공정해지면서 훨씬 안정적이고 정밀한 결정 경계(Decision Boundary)를 형성하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_qeerjcqeerjcqeer.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmHZ40/dJMcadoQRmd/iXR8WnC2RPsQbkqnM39RIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmHZ40/dJMcadoQRmd/iXR8WnC2RPsQbkqnM39RIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmHZ40/dJMcadoQRmd/iXR8WnC2RPsQbkqnM39RIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmHZ40%2FdJMcadoQRmd%2FiXR8WnC2RPsQbkqnM39RIk%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;2816&quot; height=&quot;1536&quot; data-filename=&quot;Gemini_Generated_Image_qeerjcqeerjcqeer.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 머신러닝의 난제: 과적합과 다중공선성&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;① 과적합 (Overfitting) 이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝 모델이 훈련용 데이터(Train Data)에 너무 과하게 최적화되어, 새로운 데이터(Test Data)를 예측할 때 성능이 뚝 떨어지는 현상을 말합니다.&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;: Train Data에서는 100점 만점을 받지만, 정작 실전인 Test Data를 넣으면 20점밖에 받지 못하는 현상입니다.&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;모델이 너무 복잡할 때 (너무 많은 파라미터나 과도하게 깊은 트리 기법 사용)&lt;/li&gt;
&lt;li&gt;학습을 위한 데이터의 전체 양이 절대적으로 부족할 때&lt;/li&gt;
&lt;li&gt;데이터 자체에 노이즈(잡음)나 극단적인 이상치가 너무 많아 모델이 쓸데없는 오차 정보까지 전부 학습해버릴 때&lt;/li&gt;
&lt;/ol&gt;
&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;&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;규제(Regularization)&lt;/b&gt;: L1(Lasso), L2(Ridge) 등의 규제 기법으로 불필요하게 가중치가 비대해지는 것을 방지합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;교차 검증(Cross Validation)&lt;/b&gt;: 데이터를 여러 번 쪼개서 학습과 테스트를 반복 평가해 과적합 징후를 조기에 포착합니다.&lt;/li&gt;
&lt;/ol&gt;
&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;Gemini_Generated_Image_wsihtywsihtywsih.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dynqFf/dJMcaiqdCG5/8X9ZDEtM8VL8nRKKK34Jc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dynqFf/dJMcaiqdCG5/8X9ZDEtM8VL8nRKKK34Jc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dynqFf/dJMcaiqdCG5/8X9ZDEtM8VL8nRKKK34Jc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdynqFf%2FdJMcaiqdCG5%2F8X9ZDEtM8VL8nRKKK34Jc0%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;2816&quot; height=&quot;1536&quot; data-filename=&quot;Gemini_Generated_Image_wsihtywsihtywsih.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;② 다중공선성 (Multicollinearity) 이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝 학습 모델에 들어가는 독립 변수(Feature)들끼리 너무 강력하게 상관되어 있어 발생하는 현상입니다.&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;&lt;b&gt;비선형 모델(Random Forest, XGBoost 등)과 다중공선성&lt;/b&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;하지만 비선형 모델이라 할지라도 중복 정보가 지나치게 많아지면 모델의 복잡도가 불필요하게 증가(과적합 위험)하고, 중요 변수를 파악하는 특성 중요도(Feature Importance) 해석이 크게 왜곡될 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다중공선성 해결 기법 3가지&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;VIF(Variance Inflation Factor) 기반 변수 제거&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 변수마다 VIF 지수를 측정하여, VIF가 10 이상인 경우 다른 변수로 충분히 설명할 수 있는 중복 신호로 취급하고 변수를 하나씩 차례로 소거합니다. (제거 후 남은 변수로 다시 VIF를 구하는 과정을 반복)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;높은 상관관계를 가진 변수 직접 제거&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;피어슨 상관행렬(Pearson Correlation)을 구한 뒤 두 변수 간의 상관계수가 0.9를 초과하는 쌍을 찾고, 도메인 지식을 고려하여 불필요한 하나를 골라 제거합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PCA(Principal Component Analysis, 주성분 분석)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중복되는 여러 독립 변수들을 완전히 지우는 대신, 정보를 최대한 보존하면서 서로 수직인 가상의 새로운 축(주성분)들로 차원을 결합하여 축소하는 방식입니다. 다만, 분석 이후 피처의 해석력이 떨어진다는 단점이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #666666; text-align: start;&quot; 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;&lt;b&gt;모델링의 목적이 '해석(Interpretation)'인 경우&lt;/b&gt;: 독립 변수들이 각 결과에 미치는 정밀한 영향도를 알아야 하므로 VIF와 도메인 지식을 동원해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;무조건 처리&lt;/b&gt;해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모델링의 목적이 순수 '예측(Prediction)'인 경우&lt;/b&gt;: 정확히 결과 수치만 도출하는 것이 목적이라면 굳이 복잡하게 변수를 지우고 축소할 필요 없이 머신러닝 학습 모델의 예측 파워를 유지하기 위해 다중공선성을 방치해도 괜찮습니다.&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;스크린샷 2026-06-21 182141.png&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddKLnH/dJMcac4AZ8E/u5bvYZ7DkNM8pYARPtWsV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddKLnH/dJMcac4AZ8E/u5bvYZ7DkNM8pYARPtWsV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddKLnH/dJMcac4AZ8E/u5bvYZ7DkNM8pYARPtWsV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddKLnH%2FdJMcac4AZ8E%2Fu5bvYZ7DkNM8pYARPtWsV0%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;1276&quot; height=&quot;708&quot; data-filename=&quot;스크린샷 2026-06-21 182141.png&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 데이터 분할 (Data Splittin&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;g)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;훈련용 데이터(Train)와 검증/평가용 데이터(Test)를 정밀하게 분배하는 단계입니다. 학습용 모의고사 데이터셋을 쪼개어 일부는 평가용 모의고사(validation)로 남겨두는 작업입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실습 코드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scikit-learn에서 제공하는 train_test_split 모듈을 사용합니다. stratify 옵션을 쓰면 정답 레이블의 불균형 비율을 훈련셋과 테스트셋에 똑같이 복사하여 깔끔하게 분할할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;import pandas as pd
from sklearn.model_selection import train_test_split

# 예시 불균형 데이터 생성
data = {
    'feature1': range(100),
    'feature2': range(100, 200),
    'label': [0]*80 + [1]*20  # 80:20의 불균형 데이터
}
df = pd.DataFrame(data)

# X(입력) 변수와 y(정답 레이블) 분리
X = df[['feature1', 'feature2']]
y = df['label']

# 데이터 분할 (30%를 테스트 데이터로 설정, stratify를 지정해 정답 비율을 유지합니다.)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, stratify=y
)

# 최종 결과 확인
print(&quot;훈련 데이터 크기:&quot;, X_train.shape)
print(&quot;테스트 데이터 크기:&quot;, X_test.shape)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 회귀 분석 및 평가 (Regression &amp;amp; Evaluation)&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;선형회귀 (Simple Linear Regression)&lt;/b&gt;:&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;스크린샷 2026-06-18 202437.png&quot; data-origin-width=&quot;173&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7E8GT/dJMcaiwYD8d/zKb8AxhaCmtpuqWCOBHAR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7E8GT/dJMcaiwYD8d/zKb8AxhaCmtpuqWCOBHAR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7E8GT/dJMcaiwYD8d/zKb8AxhaCmtpuqWCOBHAR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7E8GT%2FdJMcaiwYD8d%2FzKb8AxhaCmtpuqWCOBHAR1%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;173&quot; height=&quot;119&quot; data-filename=&quot;스크린샷 2026-06-18 202437.png&quot; data-origin-width=&quot;173&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 202452.png&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KgbZ9/dJMcacwLBqi/mgffG75gjx1hLq6uEPcJ4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KgbZ9/dJMcacwLBqi/mgffG75gjx1hLq6uEPcJ4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KgbZ9/dJMcacwLBqi/mgffG75gjx1hLq6uEPcJ4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKgbZ9%2FdJMcacwLBqi%2FmgffG75gjx1hLq6uEPcJ4k%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;415&quot; height=&quot;149&quot; data-filename=&quot;스크린샷 2026-06-18 202452.png&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;scikit-learn에서 머신러닝 학습 모델을 생성하는 공통 패러다임은 언제나 동일합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;clf = 모델명() (인스턴스 생성)&lt;/li&gt;
&lt;li&gt;clf.fit(X_train, y_train) (모델 학습)&lt;/li&gt;
&lt;li&gt;y_pred = clf.predict(X_test) (결과 예측)&lt;/li&gt;
&lt;li&gt;평가지표(y_test, y_pred) (예측 성능 확인)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# 데이터 준비
X = [[1], [2], [3], [4], [5]]
y = [2, 4, 6, 8, 10]

# 학습 및 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 인스턴스 선언 및 지도학습 진행
model = LinearRegression()
model.fit(X_train, y_train)
&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;회귀 평가 지표들은 모델의 예측값과 실제값 사이의 잔차(Residual, 오차)를 다양한 방법으로 계산해 냅니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 절대 오차 (MAE, Mean Absolute Error)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (25).png&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RS4Eh/dJMcaaZZADv/mEJJ5ZJgJeTkoGhP5c6TW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RS4Eh/dJMcaaZZADv/mEJJ5ZJgJeTkoGhP5c6TW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RS4Eh/dJMcaaZZADv/mEJJ5ZJgJeTkoGhP5c6TW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRS4Eh%2FdJMcaaZZADv%2FmEJJ5ZJgJeTkoGhP5c6TW0%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;358&quot; height=&quot;127&quot; data-filename=&quot;image (25).png&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제값과 예측값 차이의 절대값을 전부 더해 평균을 낸 것입니다. 오차의 절대적인 스케일을 왜곡 없이 직관적으로 나타내 줍니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 평균 제곱 오차 (MSE, Mean Squared Error)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (26).png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wfYTg/dJMcadPTHgw/UqS1A5fdsBMt55skreEo41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wfYTg/dJMcadPTHgw/UqS1A5fdsBMt55skreEo41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wfYTg/dJMcadPTHgw/UqS1A5fdsBMt55skreEo41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwfYTg%2FdJMcadPTHgw%2FUqS1A5fdsBMt55skreEo41%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;230&quot; height=&quot;78&quot; data-filename=&quot;image (26).png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오차를 제곱해서 평균을 계산합니다. 제곱 연산의 특성상 실제값과 멀어진 큰 오차에 압도적인 가중 처벌(페널티)을 부여합니다. 다만 단위가 본래 가격의 '원' 단위에서 '원&amp;sup2;' 단위로 변형되므로 직관적 분석이 다소 난해합니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.metrics import mean_squared_error

# 예시 데이터 (실제 값과 예측 값)
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

# MSE 계산
mse = mean_squared_error(y_true, y_pred)
print(&quot;MSE:&quot;, mse)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 평균 제곱근 오차 (RMSE, Root Mean Squared Error)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (27).png&quot; data-origin-width=&quot;254&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7KRax/dJMcageQPY8/l3QMVkdnoEYNWLTQbFldLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7KRax/dJMcageQPY8/l3QMVkdnoEYNWLTQbFldLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7KRax/dJMcageQPY8/l3QMVkdnoEYNWLTQbFldLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7KRax%2FdJMcageQPY8%2Fl3QMVkdnoEYNWLTQbFldLK%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;254&quot; height=&quot;88&quot; data-filename=&quot;image (27).png&quot; data-origin-width=&quot;254&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MSE에 루트를 씌워 본래 타겟 데이터의 실제 스케일 단위로 오차 수준을 복구시킨 지표입니다. 오차 평균의 직관성을 보장합니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.metrics import mean_squared_error
import numpy as np

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

mse = mean_squared_error(y_true, y_pred)
# 제곱근 변환
rmse = np.sqrt(mse)
print(&quot;RMSE:&quot;, rmse)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 결정 계수 ($R^2$, R-squared)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image (28).png&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPF4PK/dJMcagy8pJC/mJSk66MoxOSPM3dRTFnWJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPF4PK/dJMcagy8pJC/mJSk66MoxOSPM3dRTFnWJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPF4PK/dJMcagy8pJC/mJSk66MoxOSPM3dRTFnWJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPF4PK%2FdJMcagy8pJC%2FmJSk66MoxOSPM3dRTFnWJ0%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;248&quot; height=&quot;84&quot; data-filename=&quot;image (28).png&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델이 실제 타겟의 전체 변동성 중 얼마나 많은 비율을 부드럽게 설명해내고 있는지를 뜻하는 수치입니다. 1에 수렴할수록 완벽히 작동하는 훌륭한 모델입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빨간 선: 모델의 예측값 / SSE: 오차.&lt;/li&gt;
&lt;li&gt;결정계수 = 1-(모형에 의해 설명이 되지 않는 변동/Y의 전체 변동)&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;image (29).png&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pjdTA/dJMcajbtYCi/CdZSZf9UdksRwtuH20Zzn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pjdTA/dJMcajbtYCi/CdZSZf9UdksRwtuH20Zzn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pjdTA/dJMcajbtYCi/CdZSZf9UdksRwtuH20Zzn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpjdTA%2FdJMcajbtYCi%2FCdZSZf9UdksRwtuH20Zzn0%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;538&quot; height=&quot;425&quot; data-filename=&quot;image (29).png&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from sklearn.metrics import r2_score

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

r2 = r2_score(y_true, y_pred)
print(&quot;R&amp;sup2; 스코어:&quot;, r2)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;④ 다중 선형회귀 (Multiple Linear Regression)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개 이상의 풍부한 여러 독립 변수(Feature)들을 함께 고려하여 복합적으로 정답을 수치 예측하는 알고리즘입니다.&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;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 202803.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wShbW/dJMb9908mVL/kColBqYtdW56yrrRT4du3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wShbW/dJMb9908mVL/kColBqYtdW56yrrRT4du3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wShbW/dJMb9908mVL/kColBqYtdW56yrrRT4du3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwShbW%2FdJMb9908mVL%2FkColBqYtdW56yrrRT4du3K%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;359&quot; height=&quot;51&quot; data-filename=&quot;스크린샷 2026-06-18 202803.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실습 코드&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# 독립 변수 (x1, x2) 다차원 행렬 준비
X = np.array([[1, 2], [2, 3], [3, 5], [4, 6], [5, 8]])
# 종속 변수 y 준비
y = np.array([3, 5, 7, 9, 11])

# 학습 데이터와 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 다중 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X_train, y_train)

# 파라미터 값 추출 및 결과 출력
print(&quot;회귀 계수 (W):&quot;, model.coef_)       # 각 가중치 배열
print(&quot;절편 (b):&quot;, model.intercept_)       # 절편
print(&quot;X_test 입력값:\n&quot;, X_test)
y_pred = model.predict(X_test)
print(&quot;최종 모델의 예측값:&quot;, y_pred)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 분류 모델 및 평가 (Classification &amp;amp; Evaluation)&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;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;: 이진 분류 (0이냐 1이냐), 다중 분류 (여러 클래스 분류)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;② 로지스틱 회귀 분석 (Logistic Regression)&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;&lt;b&gt;선형 회귀의 확률 예측 실패&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 분류 과제를 일반 선형 회귀 모델로 계산한다면 예측 결과가 음수가 되거나 1을 초과하게 될 위험이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로지스틱의 해법&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선형 예측 결과를 S자 곡선인 시그모이드 함수(Sigmoid Function)에 넣어 출력값을 항상 0~1 사이의 안전한 확률 값으로 강제 정제합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;③ 분류 모델의 상세 성능 평가 지표&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 혼동 행렬 (Confusion Matrix)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예측 범주와 실제 범주의 일치 여부를 아래 표 형식으로 나타낸 오차 행렬입니다. scikit-learn에서는 정답 클래스가 0, 1 순서에 따라 아래 배치 규칙을 가집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제값 (Actual) \ 예측값 (Predicted)&lt;b&gt;Negative (0)&lt;/b&gt;&lt;b&gt;Positive (1)&lt;/b&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;span&gt;&lt;b&gt;Negative (0)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;TN&lt;/b&gt; (True Negative)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;FP&lt;/b&gt; (False Positive)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Positive (1)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;FN&lt;/b&gt; (False Negative)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;TP&lt;/b&gt; (True Positive)&lt;/span&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;&lt;b&gt;True Positive (TP)&lt;/b&gt;: Positive(1)로 예측했고 실제로 맞춤&lt;/li&gt;
&lt;li&gt;&lt;b&gt;False Negative (FN)&lt;/b&gt;: Negative(0)로 예측했으나 실제로는 Positive(1)임 (틀림)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;False Positive (FP)&lt;/b&gt;: Positive(1)로 예측했으나 실제로는 Negative(0)임 (틀림)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;True Negative (TN)&lt;/b&gt;: Negative(0)로 예측했고 실제로 맞춤&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 정확도, 정밀도, 재현율, F1-Score 수식&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정확도 (Accuracy)&lt;/b&gt;: &lt;span&gt;(TP+TN)/(TP+FN+FP+TN)&lt;/span&gt;​
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 예측 데이터 중 정답을 맞춘 종합적 성공 비율입니다. 데이터 분포 불균형 시 정확도가 높은 착시가 생길 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정밀도 (Precision)&lt;/b&gt;:$$\text{Precision} = &lt;span&gt;TP/(TP+FP)&lt;/span&gt;​
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모델이 Positive(1)라고 강력히 우긴 데이터 중 진짜 정답이었던 비율입니다.&lt;/li&gt;
&lt;li&gt;정밀도는 의사가 아주 확실하다고 확신할 때만 소극적으로 판정을 내리면 올리기 편합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;재현율 (Recall, 민감도)&lt;/b&gt;:$$\text{Recall} = &lt;span&gt;TP/(TP+FN)&lt;/span&gt;​
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실제 존재하던 전체 Positive(1) 데이터들 중 빠트리지 않고 모델이 몇 %나 잡아냈는지 비율입니다.&lt;/li&gt;
&lt;li&gt;암 환자 검출, 기계 불량 분석처럼 &lt;b&gt;실제 대상을 절대로 놓치면 안 될 때 매우 중요하게 취급&lt;/b&gt;하는 지표입니다. (모든 사람에게 무조건 암이라고 양성 판정을 남발하면 재현율은 쉽게 100%에 도달합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F1-Score&lt;/b&gt;: &lt;span&gt;2TP/(2TP+FP+FN)&lt;/span&gt;​
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정밀도와 재현율이 한쪽으로 극단적으로 치우치지 않게 조화평균(Harmonic Mean)을 내어 모델 성능을 객관적으로 가늠하는 최고의 범용 지표입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;④ ROC 커브와 AUC (임계값 무관성 평가)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분류 예측에 쓰이는 임계값(Threshold, 예: 0.5 확률 기준을 0.3이나 0.7로 바꿈)을 연속적으로 이동시킴에 따른 TPR(참양성률, 재현율)과 FPR(거짓양성률, 오탐지율)의 궤적 좌표를 연결한 곡선입니다.&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;FPR (False Positive Rate)&lt;/b&gt;: 실제 음성인데 모델이 양성이라고 삽질 예측한 비율 ($FP / (FP + TN)$)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TPR (True Positive Rate)&lt;/b&gt;: 실제 양성인데 양성으로 정확히 구조해 낸 비율 (Recall)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: ROC 커브가 왼쪽 위 모서리에 바짝 붙어 사각형에 채워질수록, 또 대각선(랜덤 무작위 찍기 선, AUC=0.5)에서 멀어져 위로 아치형을 그릴수록 완벽한 모델입니다. 이때 곡선 아래 면적의 크기를 수치화한 것이 &lt;b&gt;AUC(Area Under Curve)&lt;/b&gt; 지표이며, 이상적 성능의 완벽한 모델은 AUC = 1.0을 기록합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⑤ 불균형 분포 클래스 평균 계산법: Macro vs Weighted&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 제품 수 100개 중 정상 제품(90개), 불량 제품(10개)인 극단적인 제조 라인 불량 분류 데이터를 가정해 보겠습니다.&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;: 데이터 90개, 성능 스코어: 0.90 (우수)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;클래스 B (불량)&lt;/b&gt;: 데이터 10개, 성능 스코어: 0.10 (불량)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 두 클래스의 평균 성적을 매기는 방법에는 큰 차이가 생깁니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Macro Average (매크로 평균)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 규모 편차에 전혀 현혹되지 않고, 개별 클래스들의 성능 자체만을 동급 일대일 기준선에 올려 평균을 냅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 202936.png&quot; data-origin-width=&quot;214&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOPkTJ/dJMcaiDJ7mv/5P8zkwhjKsoz3AKoH1g0mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOPkTJ/dJMcaiDJ7mv/5P8zkwhjKsoz3AKoH1g0mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOPkTJ/dJMcaiDJ7mv/5P8zkwhjKsoz3AKoH1g0mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOPkTJ%2FdJMcaiDJ7mv%2F5P8zkwhjKsoz3AKoH1g0mk%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;214&quot; height=&quot;172&quot; data-filename=&quot;스크린샷 2026-06-18 202936.png&quot; data-origin-width=&quot;214&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;해석&lt;/b&gt;: 최종 성적표가 0.50으로 급격히 폭락하게 됩니다. 이는 소수 클래스인 불량품 탐지에서 끔찍한 실적을 거두었다는 모델의 실제 민낯을 여과 없이 처벌하여 투명하게 드러내 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Weighted Average (가중 평균)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 클래스가 소유한 원본 데이터 크기 비율을 가중치로 보정 연산하여 합산 평균을 냅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 203000.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tRjq0/dJMcacp1h8u/mkvZtcWTKAPKnlY3MVwGR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tRjq0/dJMcacp1h8u/mkvZtcWTKAPKnlY3MVwGR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tRjq0/dJMcacp1h8u/mkvZtcWTKAPKnlY3MVwGR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtRjq0%2FdJMcacp1h8u%2FmkvZtcWTKAPKnlY3MVwGR0%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;441&quot; height=&quot;181&quot; data-filename=&quot;스크린샷 2026-06-18 203000.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;해석&lt;/b&gt;: 최종 평가 지표가 0.82라는 준수한 수치로 높게 포장됩니다. 하지만 이는 90% 비중의 다수 정상 데이터가 거둔 우수한 점수 뒤로 소수 클래스의 저조한 예측 실적이 가려지는 치명적인 '착시 현상'입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분연산 의미권장 활용 가이드잠재 리스크&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.6516%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.3954%;&quot;&gt;&lt;span&gt;&lt;b&gt;Macro Avg&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;&lt;span&gt;클래스간 철저한 평등 분배&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.6047%;&quot;&gt;&lt;span&gt;소수 클래스를 타겟팅하는 암 예방 진단, 사기 감지, 극소수 불량 탐지 분야&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.5981%;&quot;&gt;&lt;span&gt;소수 점수에 깎여 모델의 주류 분류 성적이 과소평가될 소지가 있습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.3954%;&quot;&gt;&lt;span&gt;&lt;b&gt;Weighted Avg&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;&lt;span&gt;다수결 비중 가중 원칙&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.6047%;&quot;&gt;&lt;span&gt;전체 데이터 분류 처리량(볼륨) 관점에서의 종합 성능 평가가 필요할 때&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.5981%;&quot;&gt;&lt;span&gt;불량품을 한 개도 거르지 못해도 점수가 높게 나와 오판할 수 있습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/27</guid>
      <comments>https://dudgus4943.tistory.com/27#entry27comment</comments>
      <pubDate>Thu, 18 Jun 2026 20:31:03 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/16</title>
      <link>https://dudgus4943.tistory.com/25</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 한국 취업센터에서 앞으로의 저희들이 취업에 있어서 면접이나 자기소개를 쓸때 유용하게 써먹을 수 있는 팁을 알려주셧어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알려주셧던 내용 중 하나가 AI역량검사인데 오늘은 이것에 대해 이야기해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신역검은&amp;nbsp;&quot;잠시&amp;nbsp;쉴게요&quot;라는&amp;nbsp;기능이&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역검&amp;nbsp;중간에&amp;nbsp;자리를&amp;nbsp;비울&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;얘기입니다.(화장실&amp;nbsp;등)&amp;nbsp;물론&amp;nbsp;진행&amp;nbsp;중에는&amp;nbsp;불가하고,&amp;nbsp;예를&amp;nbsp;들면&amp;nbsp;가위바위보&amp;nbsp;게임을&amp;nbsp;모두&amp;nbsp;마치고&amp;nbsp;홈&amp;nbsp;화면에서&amp;nbsp;버튼을&amp;nbsp;누른&amp;nbsp;후&amp;nbsp;휴식할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 기능은 주어진 횟수 제한이 없지만, 최대한 3회 미만으로 사용을 해주는 편이 좋다고 말씀해주셧습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-1.&amp;nbsp;나&amp;nbsp;알아보기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인&amp;nbsp;인성검사와&amp;nbsp;크게&amp;nbsp;다르지&amp;nbsp;않은&amp;nbsp;수준이고&amp;nbsp;전혀&amp;nbsp;그렇지&amp;nbsp;않다부터&amp;nbsp;매우&amp;nbsp;그렇다까지의&amp;nbsp;육지선다이며,&amp;nbsp;총&amp;nbsp;124문항에&amp;nbsp;문항당&amp;nbsp;체크&amp;nbsp;시간은&amp;nbsp;10초&amp;nbsp;내외이므로&amp;nbsp;시간&amp;nbsp;내에&amp;nbsp;잘&amp;nbsp;체크해&amp;nbsp;주시면&amp;nbsp;될&amp;nbsp;듯합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-2.&amp;nbsp;타인&amp;nbsp;관점에서&amp;nbsp;나&amp;nbsp;알아보기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가&amp;nbsp;생각하는&amp;nbsp;나와&amp;nbsp;타인이&amp;nbsp;생각하는&amp;nbsp;나를&amp;nbsp;모두&amp;nbsp;체크하면&amp;nbsp;되는데,&amp;nbsp;나&amp;nbsp;알아보기와&amp;nbsp;마찬가지로&amp;nbsp;육지선다입니다.&amp;nbsp;포인트는&amp;nbsp;둘&amp;nbsp;사이의&amp;nbsp;괴리가&amp;nbsp;크지&amp;nbsp;않도록&amp;nbsp;하는&amp;nbsp;것이고,&amp;nbsp;그렇다와&amp;nbsp;그렇다로&amp;nbsp;체크하거나&amp;nbsp;그런&amp;nbsp;편이다와&amp;nbsp;그렇다&amp;nbsp;정도로&amp;nbsp;체크하는&amp;nbsp;편이&amp;nbsp;좋을&amp;nbsp;듯합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-3.&amp;nbsp;하나만&amp;nbsp;선택하기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나&amp;nbsp;알아보기와&amp;nbsp;비슷하게&amp;nbsp;구성되어&amp;nbsp;있고&amp;nbsp;겹치는&amp;nbsp;문항이&amp;nbsp;많으므로&amp;nbsp;일관성에&amp;nbsp;유의하여&amp;nbsp;체크해야&amp;nbsp;하며,&amp;nbsp;따로&amp;nbsp;선지는&amp;nbsp;없습니다.&amp;nbsp;1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-4. 여러 개 선택하기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신을&amp;nbsp;가장&amp;nbsp;잘&amp;nbsp;설명하는&amp;nbsp;순서대로,&amp;nbsp;또는&amp;nbsp;자신과&amp;nbsp;가장&amp;nbsp;관련이&amp;nbsp;없는&amp;nbsp;순서대로&amp;nbsp;주어진&amp;nbsp;문장을&amp;nbsp;체크합니다.&amp;nbsp;이건&amp;nbsp;잘&amp;nbsp;보시면&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;정답이&amp;nbsp;정해져&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;잘&amp;nbsp;보시고&amp;nbsp;체크하시되,&amp;nbsp;시간이&amp;nbsp;순식간에&amp;nbsp;지나가니&amp;nbsp;유의하셔야&amp;nbsp;합니다.&amp;nbsp;이후에는&amp;nbsp;본인&amp;nbsp;성향에&amp;nbsp;대한&amp;nbsp;질문들이니&amp;nbsp;소신껏&amp;nbsp;체크하시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2, 게임&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-16 200922.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RqoVp/dJMcacwJO85/QkZCct0vArcmP8eEZKcHR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RqoVp/dJMcacwJO85/QkZCct0vArcmP8eEZKcHR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RqoVp/dJMcacwJO85/QkZCct0vArcmP8eEZKcHR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRqoVp%2FdJMcacwJO85%2FQkZCct0vArcmP8eEZKcHR0%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;676&quot; height=&quot;392&quot; data-filename=&quot;스크린샷 2026-06-16 200922.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;392&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 style=&quot;width: 21.124%;&quot;&gt;게임 유형&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;측정 역량&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;핵심 팁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;가위바위보&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;순발력, 판단력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;조건 읽는 속도 훈련 필수, 키보드 손 위치 미리잡기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;길 만들기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;공간지각, 논리력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;유튜브 풀이 영상 꼭 먼저 시청 - 요령 파악 후 체감 난이도 급락&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;도형 순서 기억하기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;집중력, 작업기억&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;가장 난이도 높음 - 2~3개 전 도형 기억해야 해서 연속 집중이 핵심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;도형 회전하기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;공간지각력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;인직성 공간지각 유형과 동일 - 사전 인직성 연습으로 빠르게 대비 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;고양이 술래잡기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;주의력, 순발력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;화면 전체를 시야에 두고 손가락 반응 속도 높이는 게 관건&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;약속 정하기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;작업기억, 집중력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;조건이 누적되므로 앞 조건 기억하며 차근차근 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;숫자 누르기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;순발력, 집중력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;단순하지만 속도 압박이 심함 - 손 근육 워밍업 후 응시 추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;개수 비교하기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;수 감각, 집중력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;대충 어림잡는 게 더 유리, 정확한 계산 시도하면 시간 초과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.124%;&quot;&gt;마법약 만들기&lt;/td&gt;
&lt;td style=&quot;width: 17.7519%;&quot;&gt;규칙 파악, 논리력&lt;/td&gt;
&lt;td style=&quot;width: 61.124%;&quot;&gt;초반 규칙 설명 집중해서 읽기, 놓치면 전체 흐름 흔들림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에도 영상면접이 포함되어 있지만, 면접의 경우 제가 크게 알려드릴 내용은 없을것 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;있다고 한다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1, 질문에 대해 답했는데 실수로 자기소개서와 다르게 말하였을때,&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2, 두괄식으로 대화하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크게 알게 된 내용은 이 2가지 인것 같습니다.&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/25</guid>
      <comments>https://dudgus4943.tistory.com/25#entry25comment</comments>
      <pubDate>Tue, 16 Jun 2026 20:22:39 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/15</title>
      <link>https://dudgus4943.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 실제로 코드를 사용하여 문제를 풀었는데, 각 코드에 대해서 간단히 설명하는 글을 적어보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 1&lt;/p&gt;
&lt;pre id=&quot;code_1781521315584&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1781521390112&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    answer = []
    idx = 0  
    
    for char in s:
        if char == ' ': 
            answer.append(char)
            idx = 0     
        else:            
            if idx % 2 == 0:
                answer.append(char.upper())
            else:
                answer.append(char.lower()) 
            idx += 1    
            
    return ''.join(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;idx = 0&lt;/b&gt;: 전체 문자열의 인덱스가 아니라 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;5,1,0&quot;&gt;현재 단어 안에서 몇 번째 글자인지&lt;/b&gt;를 기억하는 계수기(Counter)입니다.&lt;/li&gt;
&lt;li&gt;문자열 s에서 한 글자(char)씩 꺼내어 검사합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;만약 공백(' ')을 만나면:&lt;/b&gt; * 공백은 대소문자 변환이 필요 없으니 그대로 answer에 넣습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공백을 만났다는 것은 &quot;기존 단어가 끝나고 새 단어가 시작될 준비를 한다&quot;는 뜻이므로, 단어 내 인덱스인 idx를 다시 0으로 리셋합니다.&lt;/li&gt;
&lt;li&gt;이 덕분에 공백이 연속으로 여러 개(예: ) 나와도 계속 idx가 0으로 유지되어 안전합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;(else) 공백이 아닌 일반 문자(알파벳)를 만나면:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 단어 내 인덱스인 idx가 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;11,0,1,0,0&quot;&gt;짝수&lt;/b&gt;인지 &lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;11,0,1,0,0&quot;&gt;홀수&lt;/b&gt;인지 검사합니다.&lt;/li&gt;
&lt;li&gt;문제 조건에 따라 0번째 인덱스는 짝수로 치기 때문에, 맨 첫 글자(idx=0)는 idx % 2 == 0이 참이 되어 대문자(upper())로 변환됩니다.&lt;/li&gt;
&lt;li&gt;그 다음 글자는 홀수 인덱스가 되어 소문자(lower())로 변환됩니다.&lt;/li&gt;
&lt;li&gt;글자 하나를 처리했으니 다음 글자를 위해 idx += 1을 해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;반복문이 모두 끝나면 answer 리스트에는 ['T', 'r', 'y', ' ', 'H', 'e', 'l', 'l', 'o']와 같이 변환된 문자들이 담겨 있습니다.&lt;/li&gt;
&lt;li&gt;이를 &quot;&quot;.join()을 이용해 하나의 예쁜 문자열(&quot;Try Hello&quot;)로 합쳐서 반환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1781521647941&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.

한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.​&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1781521670307&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(number):
    answer = 0
    n = len(number)

    for i in range(n):
        for j in range(i + 1, n):
            for k in range(j + 1, n):
                if number[i] + number[j] + number[k] == 0:
                    answer += 1
                    
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;i (첫 번째 학생):&lt;/b&gt;&lt;span&gt; 가장 앞에 서는 학생입니다.&lt;/span&gt;&lt;span&gt; 뒤에 최소한 2명(&lt;/span&gt;j&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;k&lt;span&gt;)은 더 있어야 하므로 실제로는 배열의 끝에서 세 번째 자리까지만 의미가 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;j = i + 1 (두 번째 학생):&lt;/b&gt;&lt;span&gt; 무조건 첫 번째 학생(&lt;/span&gt;i&lt;span&gt;)의 &lt;/span&gt;&lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;7,1,0&quot;&gt;오른쪽&lt;/b&gt;&lt;span&gt;부터 선택을 시작합니다.&lt;/span&gt;&lt;span&gt; 이 덕분에 &lt;/span&gt;i&lt;span&gt;와 &lt;/span&gt;j&lt;span&gt;가 같은 학생을 가리키는 중복이 발생하지 않습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0&quot;&gt;k = j + 1 (세 번째 학생):&lt;/b&gt;&lt;span&gt; 무조건 두 번째 학생(&lt;/span&gt;j&lt;span&gt;)의 &lt;/span&gt;&lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;7,2,0&quot;&gt;오른쪽&lt;/b&gt;&lt;span&gt;부터 선택을 시작합니다.&lt;/span&gt;&lt;span&gt; 같은 원리로 &lt;/span&gt;j&lt;span&gt;나 &lt;/span&gt;i&lt;span&gt;와 겹치지 않습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제3&lt;/p&gt;
&lt;pre id=&quot;code_1781521760412&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.

예를 들어, t=&quot;3141592&quot;이고 p=&quot;271&quot; 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1781521786707&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(t, p):
    answer = 0
    p_len = len(p)     
    p_num = int(p)     

    for i in range(len(t) - p_len + 1):
        sub_num = int(t[i : i + p_len])

        if sub_num &amp;lt;= p_num:
            answer += 1
            
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;p_len&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 매번 &lt;/span&gt;len(p)&lt;span&gt;를 계산하면 비효율적이므로 변수에 미리 저장해 둡니다.&lt;/span&gt;&lt;span&gt; 이 길이는 문자열을 자르는 기준이 됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;p_num&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 문자열끼리 대소 비교를 하면 사전순으로 비교가 되어 엉뚱한 결과가 나올 수 있으므로,&lt;/span&gt;&lt;span&gt; 확실하게 크기를 비교하기 위해 정수(&lt;/span&gt;int&lt;span&gt;)로 미리 바꾸어 놓습니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;12,0,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;왜 len(t) - p_len + 1 인가요?&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;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;t의 길이가 7이고 p가 3일 때, 마지막으로 잘라낼 수 있는 글자는 맨 끝의 592(인덱스 4, 5, 6)입니다.&lt;/li&gt;
&lt;li&gt;즉, 시작 인덱스 i는 4까지만 가야 합니다.&lt;/li&gt;
&lt;li&gt;7 - 3 + 1 = 5가 되어 range(5)는 0, 1, 2, 3, 4까지 돌게 되므로 딱 마지막 글자까지만 안전하게 검사할 수 있게 해줍니다. (범위를 벗어나는 에러 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;t[i : i + p_len]&lt;/b&gt;: 파이썬의 가장 강력한 기능 중 하나인 슬라이싱입니다. i부터 i + 3 직전까지의 문자열을 쏙 빼옵니다.&lt;/li&gt;
&lt;li&gt;꺼내온 문자열(예: &quot;314&quot;)을 곧바로 int()를 감싸 숫자로 변환합니다&lt;/li&gt;
&lt;li&gt;방금 잘라 만든 숫자(sub_num)가 기준인 p_num(271)보다 작거나 같은지 비교합니다.&lt;/li&gt;
&lt;li&gt;조건이 참일 때만 결과 카운트(answer)를 1씩 올려줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/24</guid>
      <comments>https://dudgus4943.tistory.com/24#entry24comment</comments>
      <pubDate>Mon, 15 Jun 2026 20:09:51 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/10</title>
      <link>https://dudgus4943.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 팀별 과제를 중심으로 하루가 지나가버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 9 to 9으로 하루에 12시간동안 할 수 있을까? 걱정했는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금보니 시간이 엄청 너무 빨리가서 부족할 정도에요 ㅜ...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잡담은 여기까지 하고, 오늘은 어제 진행한 부분에 대해서 이야기를 하다가 주어진 데이터에 equipment_log에 적혀있는 [-(숫자)] 데이터 값에 집중해보았어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알아보니 이 데이터셋이 장비의 오류코드을 확률이 높더라구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 공정의 장비를 진행하면서 무언가 불량이 생겨 컴퓨터가 그것을 기록해두는거에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 제가 딱 &quot;어? 그럼 여기 오류코드 중에서도 결함이 가장 많이 발생하는 것을 캐치해서 그 오류코드가 발생하지 않게 공정 조건을 조율하고 하면 되지 않을까?&quot; 이 생각이 들어서 해당 내용으로 분석을 실시하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1781091182674&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 장비에 상관없이 오직 로그 값(log_value)별로 결함수 평균 구하기
log_defect_mean = df.groupby('log_value')['defect_count'].mean().reset_index()

# 평균 결함수가 높은 순서대로 정렬
print(log_defect_mean.sort_values(by='defect_count', ascending=False).head(10))

#출력값
    log_value  defect_count
51         61      1.870968
20         30      1.831579
58         68      1.757895
69         79      1.738318
87         97      1.708738
7          17      1.670000
53         63      1.660194
71         81      1.648649
88         98      1.636364
36         46      1.623853&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 결과 log_value 61, 30, 68, 79, 97에서 평균 결함이 많이 생기고 발생한다는 사실을 알게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 바탕으로 상위 5개의 log_value에서 어떤 변수들로 인해 결함이 생겼는지 산포도를 형성시켜 본 결과,&lt;/p&gt;
&lt;pre id=&quot;code_1781091283175&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 6))
# x축 온도, y축 압력으로 두고, 결함수가 높을수록 점의 색상을 진하게 표현
sns.scatterplot(
    data=df[df['log_value'].isin([61, 30, 68, 79, 97])],
    x='temperature_C',
    y='pressure_mbar',
    hue='defect_count',
    palette='vlag',
    size='defect_count',
    sizes=(40, 400)
)
plt.title(&quot;위험 로그들의 온도 vs 압력 복합 인과관계 분석&quot;)
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (6).png&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nADXv/dJMcaip5XFJ/hIxxcfjYRwdE9GxAv2QWp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nADXv/dJMcaip5XFJ/hIxxcfjYRwdE9GxAv2QWp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nADXv/dJMcaip5XFJ/hIxxcfjYRwdE9GxAv2QWp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnADXv%2FdJMcaip5XFJ%2FhIxxcfjYRwdE9GxAv2QWp1%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;854&quot; height=&quot;556&quot; data-filename=&quot;다운로드 (6).png&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 그래프를 통해 온도는 대략 170도 이상 압력은 3.0이상에서부터 결함의 개수가 점점 증가하신다는 사실을 아실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 저희는 공정을 170도 3mbar아래로 진행시켜 최적의 공정조건을 찾을 수 있을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 감사합니다.&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/21</guid>
      <comments>https://dudgus4943.tistory.com/21#entry21comment</comments>
      <pubDate>Wed, 10 Jun 2026 20:39:01 +0900</pubDate>
    </item>
    <item>
      <title>[내일배움캠프-본캠프] QA/QC 26/06/09</title>
      <link>https://dudgus4943.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 팀원분들과 함께 팀과제를 진행해보았었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 데이터 셋을 보고 분석을 하는데 무엇이 문제인지 여러 데이터를 보면서 해결하는게 쉬운일이 아니군요 ㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 데이터를 보고 어떤 변수가 결함과 연관이 있는데 한번 조사를 해보았었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 결론을 도출하진 않았지만 금일 분석한 내용으로 한번 정리를 해볼게요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬럼정보부터 확인하시면&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;wafer.csv 컬럼 정보&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;wafer_id&lt;/b&gt;: 웨이퍼 개별 식별자 (예: WFR-00000)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;lot_id&lt;/b&gt;: 웨이퍼가 속한 생산 단위(Lot) ID (예: LOT-4)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;process_stage&lt;/b&gt;: 현재 진행 중인 공정 단계 (예: Lithography(노광), Etch(식각) 등)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0&quot;&gt;temperature_C&lt;/b&gt;: 공정 중 측정된 &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;4,3,0&quot;&gt;온도 (&amp;deg;C)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0&quot;&gt;pressure_mbar&lt;/b&gt;: 공정 중 측정된 &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;4,4,0&quot;&gt;압력 (mbar)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,5,0&quot;&gt;defect_count&lt;/b&gt;: 발견된 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;4,5,0&quot;&gt;결함(Defect) 수&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,6,0&quot;&gt;defect_type&lt;/b&gt;: 결함의 종류 (예: Particle, Unknown 등)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,7,0&quot;&gt;equipment&lt;/b&gt;: 공정에 사용된 &lt;b data-index-in-node=&quot;19&quot; data-path-to-node=&quot;4,7,0&quot;&gt;설비 ID&lt;/b&gt; (예: EQ-ETCH-06, EQ-PHOTO-02)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,8,0&quot;&gt;timestamp&lt;/b&gt;: 공정이 수행된 날짜 및 시간&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,9,0&quot;&gt;hour&lt;/b&gt;: 공정이 수행된 시간대 (Hour, 0~23)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,10,0&quot;&gt;shift&lt;/b&gt;: 작업 근무 조 (예: Afternoon, Evening 등)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,11,0&quot;&gt;exposure_time_ms&lt;/b&gt;: 노광/공정 노출 시간 (ms, 밀리초 단위)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,12,0&quot;&gt;equipment_log&lt;/b&gt;: 설비에서 출력된 전체 로그 텍스트 (설비ID, 타임스탬프, 로그 값이 결합된 형태)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,13,0&quot;&gt;log_value&lt;/b&gt;: 설비 로그에서 추출된 특정 수치 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;111.png&quot; data-origin-width=&quot;2765&quot; data-origin-height=&quot;1163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yJNur/dJMcaffSbVS/D8YViQDMZcnC7ma8Ch8420/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yJNur/dJMcaffSbVS/D8YViQDMZcnC7ma8Ch8420/img.png&quot; data-alt=&quot;공정 단계(PROCESS STEP)별 변수 차이 비교&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yJNur/dJMcaffSbVS/D8YViQDMZcnC7ma8Ch8420/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyJNur%2FdJMcaffSbVS%2FD8YViQDMZcnC7ma8Ch8420%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;2765&quot; height=&quot;1163&quot; data-filename=&quot;111.png&quot; data-origin-width=&quot;2765&quot; data-origin-height=&quot;1163&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;공정 단계(PROCESS STEP)별 변수 차이 비교&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;222.png&quot; data-origin-width=&quot;1957&quot; data-origin-height=&quot;1364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rkBIE/dJMcabqYU02/x9MomVGHS3dlSolTge5bn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rkBIE/dJMcabqYU02/x9MomVGHS3dlSolTge5bn1/img.png&quot; data-alt=&quot;온도와 압력의 분포와 상관관계 시각화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rkBIE/dJMcabqYU02/x9MomVGHS3dlSolTge5bn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrkBIE%2FdJMcabqYU02%2Fx9MomVGHS3dlSolTge5bn1%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;1957&quot; height=&quot;1364&quot; data-filename=&quot;222.png&quot; data-origin-width=&quot;1957&quot; data-origin-height=&quot;1364&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;온도와 압력의 분포와 상관관계 시각화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;333.png&quot; data-origin-width=&quot;2355&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQgA1N/dJMcabqYU0Z/kSQv5ol60k2PTGpkd6WtSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQgA1N/dJMcabqYU0Z/kSQv5ol60k2PTGpkd6WtSK/img.png&quot; data-alt=&quot;장비 종류 및 사용 이력과 결함의 연관성 분석&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQgA1N/dJMcabqYU0Z/kSQv5ol60k2PTGpkd6WtSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQgA1N%2FdJMcabqYU0Z%2FkSQv5ol60k2PTGpkd6WtSK%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;2355&quot; height=&quot;1164&quot; data-filename=&quot;333.png&quot; data-origin-width=&quot;2355&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;장비 종류 및 사용 이력과 결함의 연관성 분석&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;444.png&quot; data-origin-width=&quot;2765&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bruYeR/dJMcadoHTjA/7VwqJS3iHVTkCtiDF7tjl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bruYeR/dJMcadoHTjA/7VwqJS3iHVTkCtiDF7tjl0/img.png&quot; data-alt=&quot;시간대별 결함 개수의 변동 추이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bruYeR/dJMcadoHTjA/7VwqJS3iHVTkCtiDF7tjl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbruYeR%2FdJMcadoHTjA%2F7VwqJS3iHVTkCtiDF7tjl0%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;2765&quot; height=&quot;964&quot; data-filename=&quot;444.png&quot; data-origin-width=&quot;2765&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;시간대별 결함 개수의 변동 추이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;555.png&quot; data-origin-width=&quot;2189&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1s5XY/dJMcabqYU00/YLsGh0dxNB4k48ulIIFIzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1s5XY/dJMcabqYU00/YLsGh0dxNB4k48ulIIFIzK/img.png&quot; data-alt=&quot;lot_id별, 장비별 결함률 집계 및 히트맵 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1s5XY/dJMcabqYU00/YLsGh0dxNB4k48ulIIFIzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1s5XY%2FdJMcabqYU00%2FYLsGh0dxNB4k48ulIIFIzK%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;2189&quot; height=&quot;1164&quot; data-filename=&quot;555.png&quot; data-origin-width=&quot;2189&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;lot_id별, 장비별 결함률 집계 및 히트맵 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (14).png&quot; data-origin-width=&quot;2962&quot; data-origin-height=&quot;2364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWXKGf/dJMcabqYU01/0Fu4pU2EjsoRIXA4mDh9WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWXKGf/dJMcabqYU01/0Fu4pU2EjsoRIXA4mDh9WK/img.png&quot; data-alt=&quot;온도 및 압력별 결함 수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWXKGf/dJMcabqYU01/0Fu4pU2EjsoRIXA4mDh9WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWXKGf%2FdJMcabqYU01%2F0Fu4pU2EjsoRIXA4mDh9WK%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;2962&quot; height=&quot;2364&quot; data-filename=&quot;다운로드 (14).png&quot; data-origin-width=&quot;2962&quot; data-origin-height=&quot;2364&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;온도 및 압력별 결함 수&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 데이터 자료들을 도출해 냈는데, 어떤 것에 데이터 전처리를 하고 기준을 잡고 어떻게 분석할지 생각해내는 것부터 하려고 하니 매우 힘들고 나온 결과값들로 결론을 내는데 너무 어렵더라구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저희는 이걸 보면서 나온 결과가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 자료값을 보면 확 튀는 결과값이 없는데 시간대를 보니 12~13시 사이에 무언가 있어서 결함 수가 급증하는건가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업자들의 부주의로 실현되는건가? 이런 결론을 내리다가..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 진행해보기로 했었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 공정 별 결함 갯수와 상관관계 가 있는 것들부터 구하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC1pIM/dJMcagMCInW/kdf1fz3taBMwbxKw69yzok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC1pIM/dJMcagMCInW/kdf1fz3taBMwbxKw69yzok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC1pIM/dJMcagMCInW/kdf1fz3taBMwbxKw69yzok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC1pIM%2FdJMcagMCInW%2Fkdf1fz3taBMwbxKw69yzok%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;767&quot; height=&quot;590&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (1).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMUFiW/dJMcagMCInV/9kuulwPFYQ36buU1fbxGrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMUFiW/dJMcagMCInV/9kuulwPFYQ36buU1fbxGrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMUFiW/dJMcagMCInV/9kuulwPFYQ36buU1fbxGrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMUFiW%2FdJMcagMCInV%2F9kuulwPFYQ36buU1fbxGrk%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;767&quot; height=&quot;590&quot; data-filename=&quot;다운로드 (1).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (2).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co0P70/dJMcaf7Vmss/SVqfLCfjGyvjmOeuKUThFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co0P70/dJMcaf7Vmss/SVqfLCfjGyvjmOeuKUThFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co0P70/dJMcaf7Vmss/SVqfLCfjGyvjmOeuKUThFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco0P70%2FdJMcaf7Vmss%2FSVqfLCfjGyvjmOeuKUThFK%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;767&quot; height=&quot;590&quot; data-filename=&quot;다운로드 (2).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (3).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqD5HJ/dJMb997J60L/T2RKb3N91YFhk3HuFM6Zu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqD5HJ/dJMb997J60L/T2RKb3N91YFhk3HuFM6Zu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqD5HJ/dJMb997J60L/T2RKb3N91YFhk3HuFM6Zu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqD5HJ%2FdJMb997J60L%2FT2RKb3N91YFhk3HuFM6Zu1%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;767&quot; height=&quot;590&quot; data-filename=&quot;다운로드 (3).png&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보시면 온도와 hour(작업이 시작된 시간)이 갯수와 가장 큰 연관이 있는 것을 알아 내는데 성공했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이를 토대로 다시 데이터 셋을 보니 거기서 머리가 터지면서 금일 학습시간이 끝나버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 강의 마친 후에나 내일 팀원들과 여기서부터 다시 이야기를 진행해봐야 할것 같아요..&lt;/p&gt;</description>
      <author>dudgus4943</author>
      <guid isPermaLink="true">https://dudgus4943.tistory.com/20</guid>
      <comments>https://dudgus4943.tistory.com/20#entry20comment</comments>
      <pubDate>Tue, 9 Jun 2026 21:02:28 +0900</pubDate>
    </item>
  </channel>
</rss>