<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>꺼내먹는지식 준</title>
    <link>https://itforfun.tistory.com/</link>
    <description>AI, 코딩 테스트 등등 IT 의 기본지식이 없는 분들을 위한 기초적이고 직관적인 글모음</description>
    <language>ko</language>
    <pubDate>Mon, 8 Jun 2026 01:46:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor></managingEditor>
    <image>
      <title>꺼내먹는지식 준</title>
      <url>https://tistory1.daumcdn.net/tistory/5141160/attach/dd605003ad8f475e823eec338524a494</url>
      <link>https://itforfun.tistory.com</link>
    </image>
    <item>
      <title>groupby, size, reset_index 조합</title>
      <link>https://itforfun.tistory.com/290</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;groupby 메소드 자체는 그룹을 생성하기만 하고, 실제로 어떤 연산을 수행하지는 않는다.&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;그래서 groupby만 단독으로 사용하면 그 자체로는 큰 의미가 없다.&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;일반적으로 groupby 뒤에 다른 연산 메소드(예: sum, mean, size, max, min 등)를 붙여서 그룹별로 어떤 계산을 할지 지정한다.&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;예를 들어, df.groupby(['date',&amp;nbsp;'positive']).size().&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsQvtV/btszbQKRTR7/nWf5ppRGnaRKKwkyKPs440/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsQvtV/btszbQKRTR7/nWf5ppRGnaRKKwkyKPs440/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsQvtV/btszbQKRTR7/nWf5ppRGnaRKKwkyKPs440/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsQvtV%2FbtszbQKRTR7%2FnWf5ppRGnaRKKwkyKPs440%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;216&quot; height=&quot;490&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data_df.groupby(['date',&amp;nbsp;'positive',&amp;nbsp;'free']).size()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkBYQw/btszfMtGtcm/OhE3YwvU5zz7DgFgxWba2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkBYQw/btszfMtGtcm/OhE3YwvU5zz7DgFgxWba2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkBYQw/btszfMtGtcm/OhE3YwvU5zz7DgFgxWba2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkBYQw%2FbtszfMtGtcm%2FOhE3YwvU5zz7DgFgxWba2k%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;271&quot; height=&quot;492&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;492&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;size() 를 붙여서 지정한 각 그룹에 대한 개수를 얻어올 수 있다. free 라는 column 이 추가 되자 더 세분화된 것을 알 수 있다.&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;data_df.groupby(['date',&amp;nbsp;'positive']).size().reset_index()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;235&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/obBBu/btszb2EvrcH/cD7bfrUa4YpLzKGlZl0i0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/obBBu/btszb2EvrcH/cD7bfrUa4YpLzKGlZl0i0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/obBBu/btszb2EvrcH/cD7bfrUa4YpLzKGlZl0i0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FobBBu%2Fbtszb2EvrcH%2FcD7bfrUa4YpLzKGlZl0i0k%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;235&quot; height=&quot;625&quot; data-origin-width=&quot;235&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 index 가 새로운 column 이 되고, index 는 초기화 된다. 기존에 size() 없이 reset_index() 를 한다면, 앞단의 index 가 새로운 column 이 되고 index가 초기화 된다. 보통 drop = True 를 파라미터로 주어 초기화 되도록 많이 사용한다.&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;data_df.groupby(['date', 'positive']).size().reset_index(name='count')&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzOJYd/btszcHNElbb/cuIyfnuHddCwP68bJPvWT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzOJYd/btszcHNElbb/cuIyfnuHddCwP68bJPvWT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzOJYd/btszcHNElbb/cuIyfnuHddCwP68bJPvWT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzOJYd%2FbtszcHNElbb%2FcuIyfnuHddCwP68bJPvWT0%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;260&quot; height=&quot;625&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;625&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;다음과 같이 name 을 설정하는 경우가 많다.&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;간단하게 자주 사용하는 groupby size count 에 관한 용례를 정리해봤다.&amp;nbsp;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/290</guid>
      <comments>https://itforfun.tistory.com/290#entry290comment</comments>
      <pubDate>Fri, 27 Oct 2023 11:47:44 +0900</pubDate>
    </item>
    <item>
      <title>Vue 기본기</title>
      <link>https://itforfun.tistory.com/282</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Vue 찍먹&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;NodeJS 를 설치하는 이유는 Terminal CLI 에서 npm 을 이용하기 위함이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;npm은 각종 웹 개발 라이브러리 설치 도우미이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b297ed/btr7OPdaykd/hr1aL14s6NEHxPOtiV7Ljk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b297ed/btr7OPdaykd/hr1aL14s6NEHxPOtiV7Ljk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b297ed/btr7OPdaykd/hr1aL14s6NEHxPOtiV7Ljk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb297ed%2Fbtr7OPdaykd%2Fhr1aL14s6NEHxPOtiV7Ljk%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;211&quot; height=&quot;295&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App.vue 파일에 메인 화면을 작성하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App.vue&amp;nbsp; 파일을 html 파일로 컴파일해주기에 가능한 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴파일은 main.js가 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;node modules 프로젝트를 위한 모든 라이브러리&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;src 실제로 소스 코드 짜는 공간&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public html, 기타 파일 보관&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;package.json 라이브러리 버전 기록&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DOM 이란?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Document Object Model&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 웹 문서(페이지)를 객체화한 개념&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문서 객체란?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;html&amp;gt;이나 &amp;lt;body&amp;gt; 같은 html문서의 태그들을 JavaScript가 이용할 수 있는 객체(object)로 만든 것&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좀 더 쉽게 설명하자면 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 언어마다 처리하는 방법이나 규칙, 즉 문법이 있다. JavaScript와 HTML은 서로 다른 언어이므로 각각 다른 '문법'을 사용한다. 이런 차이 때문에 JavaScript는 HTML을 직접적으로 이해하거나 변경할 수 없고, DOM (문서 객체 모델)은 이런 문제를 해결하는 역할을 한다. DOM은 웹 페이지의 HTML을 JavaScript에서 사용할 수 있도록 &quot;객체&quot;라는 형태로 변환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체는 JavaScript의 주요 데이터 타입 중 하나로, 속성과 메소드를 가질 수 있다. 속성은 객체의 특성을 나타내고, 메소드는 객체가 수행할 수 있는 동작을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, HTML의 &amp;lt;p&amp;gt; 태그는 DOM을 통해 Paragraph 객체로 변환되고, 이 객체는 텍스트 내용을 변경하는 메소드를 가질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript는 이 메소드를 사용해 웹 페이지의 텍스트를 동적으로 변경할 수 있다. 이처럼 DOM은 JavaScript가 HTML을 '이해'하고 조작할 수 있게 만드는 통역사 같은 역할을 한다. 즉, '객체'라는 형태로 변환된 HTML 태그 (문서 객체)는 JavaScript의 문법으로 조작이 가능하게 된다. JavaScript는 이 문서 객체를 통해 웹 페이지에 동적인 기능을 추가하거나 사용자의 상호작용에 반응하는 등의 작업을 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DOM의 형태&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IMRmT/btr72o1esLC/w4lYEV2jbJ42uNdTs9tgx1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IMRmT/btr72o1esLC/w4lYEV2jbJ42uNdTs9tgx1/img.jpg&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;479&quot; data-is-animation=&quot;false&quot; width=&quot;418&quot; style=&quot;width: 45.8157%; margin-right: 10px;&quot; data-widthpercent=&quot;46.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IMRmT/btr72o1esLC/w4lYEV2jbJ42uNdTs9tgx1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIMRmT%2Fbtr72o1esLC%2Fw4lYEV2jbJ42uNdTs9tgx1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5dKmL/btr73Ox9Oyd/T9Y1GaD99D9hxpFQxajVgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5dKmL/btr73Ox9Oyd/T9Y1GaD99D9hxpFQxajVgk/img.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;519&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.0215%;&quot; data-widthpercent=&quot;53.65&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5dKmL/btr73Ox9Oyd/T9Y1GaD99D9hxpFQxajVgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5dKmL%2Fbtr73Ox9Oyd%2FT9Y1GaD99D9hxpFQxajVgk%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;800&quot; height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DOM은 tree 구조의 형태를 가지고 있다. DOM 에 포함 된 &amp;lt;p&amp;gt;를 더 자세히 살펴보자. &amp;lt;p&amp;gt; 태그도 트리형태의 구조를 형성하고 있다. DOM 객체에 접근하고 또 키워드로 필요한 노드에 접근하여 목표한 작업을 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JavaScript로&amp;nbsp;문서객체를&amp;nbsp;생성한다는&amp;nbsp;것은&amp;nbsp;어떤&amp;nbsp;의미인가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문서 객체는 두 가지 방법으로 생성된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹 브라우저가 HTML 페이지에 적혀 있는 태그를 읽으면 생성 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 과정을 정적으로 문서 객체를 생성한다고 말한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단순히 적혀져 있는 그대로 문서객체가 생성 되는 것을 표현한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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-origin-width=&quot;581&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btlAHN/btr752vFNfr/f1kYpfdpy5hOHK4NiZiC00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btlAHN/btr752vFNfr/f1kYpfdpy5hOHK4NiZiC00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btlAHN/btr752vFNfr/f1kYpfdpy5hOHK4NiZiC00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtlAHN%2Fbtr752vFNfr%2Ff1kYpfdpy5hOHK4NiZiC00%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;396&quot; height=&quot;323&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;474&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;span style=&quot;color: #000000;&quot;&gt;Object Model이 필요한 이유&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스크립트로 사람이 document(화면 요소)를 조작하기 위해서 웹 문서가 스크립트의 객체 형식으로 표현되어야 했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Javascript 뿐만 아니라 python이나 다른 스크립트 언어로도 DOM을 조작할 수 있다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1245&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccgpyM/btr735zP8v8/AS6hxtKcy4sf5p5bjIMFDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccgpyM/btr735zP8v8/AS6hxtKcy4sf5p5bjIMFDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccgpyM/btr735zP8v8/AS6hxtKcy4sf5p5bjIMFDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccgpyM%2Fbtr735zP8v8%2FAS6hxtKcy4sf5p5bjIMFDK%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;1245&quot; height=&quot;111&quot; data-origin-width=&quot;1245&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Web API 의 사용 예시를 보면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;107&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iv4EN/btr73pyHSEw/3To8AF2kxbk5dOQSQsVG11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iv4EN/btr73pyHSEw/3To8AF2kxbk5dOQSQsVG11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iv4EN/btr73pyHSEw/3To8AF2kxbk5dOQSQsVG11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIv4EN%2Fbtr73pyHSEw%2F3To8AF2kxbk5dOQSQsVG11%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;917&quot; height=&quot;107&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;107&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DOM의 노드들 중에서 특정 노드를 선택하고, 선택한 노드의 색을 변경하거나, viewport의 높이를 찾는다거나, DOM을 조작하는 데 사용되는 스크립트 메서드들이 저 공식에 부합하는 web API 라고 불리게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터 바인딩&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;JS 데이터를 HTML에 꽂아넣는 것이 가능해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csbHP7/btr7On2fhJ1/7tVNxKXE1YfK9BEClA2Ohk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csbHP7/btr7On2fhJ1/7tVNxKXE1YfK9BEClA2Ohk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csbHP7/btr7On2fhJ1/7tVNxKXE1YfK9BEClA2Ohk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsbHP7%2Fbtr7On2fhJ1%2F7tVNxKXE1YfK9BEClA2Ohk%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;1175&quot; height=&quot;219&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바스크립트가 변수에 저장을 한다면, vue는 데이터 보관 통이 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ㄴ&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkHDJY/btr7MVrptC4/fzZe7YSmKsKPWpn9tOIdEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkHDJY/btr7MVrptC4/fzZe7YSmKsKPWpn9tOIdEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkHDJY/btr7MVrptC4/fzZe7YSmKsKPWpn9tOIdEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkHDJY%2Fbtr7MVrptC4%2FfzZe7YSmKsKPWpn9tOIdEK%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;297&quot; height=&quot;306&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;231&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;span style=&quot;color: #000000;&quot;&gt;data() 안에 모든 데이터를 포함해야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOOhsW/btr7LqSYtr3/6Weqyd1bwaoYU0dBaaihzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOOhsW/btr7LqSYtr3/6Weqyd1bwaoYU0dBaaihzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOOhsW/btr7LqSYtr3/6Weqyd1bwaoYU0dBaaihzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOOhsW%2Fbtr7LqSYtr3%2F6Weqyd1bwaoYU0dBaaihzK%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;512&quot; height=&quot;659&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;data() 안에 object 형식으로 데이터를 저장하고, html 안에 JS 데이터를 꽂아 넣었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터바인딩 왜 할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HTML에 하드코딩으로 그냥 값을 꽂아 넣으면 수정이 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 JS 데이터로 꽂아 넣으면 가변적일 때 쉽게 변경할 수 있기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Vue의 실시간 자동 렌더링 기능을 사용하려면 데이터바인딩을 해야만 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Vue는 &lt;b&gt;data()&lt;/b&gt;를 변경하면 데이터와 관련된 HTML 에도 실시간으로 반영된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 웹앱 같은 사이트를 만들 수 있다. (쇼핑몰에서 가격 필터를 사용하거나 할 때 HTML 이 자동으로 변경하게 하기 위하여)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;당연한 말이지만, 실시간 변할 필요가 없는 데이터들은 데이터바인딩을 할 필요가 없다.&lt;/b&gt; 그냥 하드코딩하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java script 의 array&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;var 어레이 = [10, 20, 30];&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 vue 에서&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어레이 : [10,20,30], 으로 작성 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 바인딩은 아래와 같이 표현식도 사용 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680594604633&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;h1&amp;gt;{{ message.split('').reverse().join('') }}&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이중 중괄호를 사용한 데이터 바인딩은 텍스트 삽입에만 사용된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;속성을 동적 값에 바인딩 하려면 v-bind 디렉티브를 사용한다. 이를 &lt;span style=&quot;text-align: start;&quot;&gt;HTML 속성 안에서 데이터 바인딩이라고 이해해도 된다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;워낙 자주 사용 되므로 v-bind: 를&amp;nbsp;&lt;/span&gt;&lt;b&gt;: 로 축약해서 사용한다.&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwL9uh/btr73xpmeF6/IIE998ifpMhWKsyz471pmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwL9uh/btr73xpmeF6/IIE998ifpMhWKsyz471pmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwL9uh/btr73xpmeF6/IIE998ifpMhWKsyz471pmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwL9uh%2Fbtr73xpmeF6%2FIIE998ifpMhWKsyz471pmk%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;825&quot; height=&quot;765&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;765&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;반복문&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;HTML 의 반복적 요소를 vue 의 반복문으로 축약해서 작성 가능하다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우선 HTML &amp;lt;template&amp;gt; 즉, 전반적인 template 을 만들고 CSS &amp;lt;style&amp;gt; template에 style을 더하고, 두가지로 해결 안되는 기능 및 추가적 요소들을 &amp;lt;script &amp;gt; 를 통해 해결한다는 것을 기억하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ChatGPT 의 응답에 따르면 아래와 같이 좀 더 직관적으로 정리해준다. 즉, 상호보완적 관계라고 이해하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MTcx3/btr7PpyGUO1/xDlTnkD2dPPtasymyYmby1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MTcx3/btr7PpyGUO1/xDlTnkD2dPPtasymyYmby1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MTcx3/btr7PpyGUO1/xDlTnkD2dPPtasymyYmby1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMTcx3%2Fbtr7PpyGUO1%2FxDlTnkD2dPPtasymyYmby1%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;1084&quot; height=&quot;604&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;278&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwg7pg/btr7OxKYCe6/sQAYIk3TBaou9cPyJxJJ5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwg7pg/btr7OxKYCe6/sQAYIk3TBaou9cPyJxJJ5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwg7pg/btr7OxKYCe6/sQAYIk3TBaou9cPyJxJJ5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcwg7pg%2Fbtr7OxKYCe6%2FsQAYIk3TBaou9cPyJxJJ5K%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;389&quot; height=&quot;199&quot; data-origin-width=&quot;278&quot; data-origin-height=&quot;142&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;span style=&quot;color: #000000;&quot;&gt;다음을 반복문으로 좀 더 간단하게 작성해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nILhQ/btr72aUQMdA/kqK64WM9TZpv9VQOoe3YH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nILhQ/btr72aUQMdA/kqK64WM9TZpv9VQOoe3YH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nILhQ/btr72aUQMdA/kqK64WM9TZpv9VQOoe3YH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnILhQ%2Fbtr72aUQMdA%2FkqK64WM9TZpv9VQOoe3YH0%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;465&quot; height=&quot;144&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;132&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;span style=&quot;color: #000000;&quot;&gt;간단하게 완료 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680582856946&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    메뉴들: ['Home', 'Shop', 'About'],&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;for 문 안에서는 어차피 string 이 들어갈 수 없으므로 따로 데이터 바인딩이 필요가 없으나, i 는 데이터 바인딩이 없으면 char 형인지 변수인지 알 수 없으므로 데이터 바인딩이 들어간다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;key의 용도는 반복문을 돌린 요소를 컴퓨터가 구분하기 위해 쓴다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 파이썬의 enumerate 와 같은 용도이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680583038376&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;a v-for=&quot;(a,i) in 메뉴들&quot; :key=&quot;i&quot;&amp;gt; {{i}} &amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;HTML 속성 안에서 데이터 바인딩은&amp;nbsp;&lt;/span&gt;&lt;b&gt;: 이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Event Handler&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1680584119991&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;button&amp;gt;허위매물신고&amp;lt;/button&amp;gt; &amp;lt;span&amp;gt;신고수 : 0&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 버튼이 있다고 가정해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ span&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;813&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBpcw5/btr727DKs4T/CJOT93wkDKb8juBOyvvhR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBpcw5/btr727DKs4T/CJOT93wkDKb8juBOyvvhR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBpcw5/btr727DKs4T/CJOT93wkDKb8juBOyvvhR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBpcw5%2Fbtr727DKs4T%2FCJOT93wkDKb8juBOyvvhR0%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;931&quot; height=&quot;813&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;813&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존에 javascript는 button 을 사용하기 위해 아래와 같은 형태로 사용했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680584559485&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;button onclick=&quot;&quot;&amp;gt;허위매물신고&amp;lt;/button&amp;gt; &amp;lt;span&amp;gt;신고수 : 0&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 Vue 방식은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680584585087&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;button v-on:click=&quot;&quot;&amp;gt;허위매물신고&amp;lt;/button&amp;gt; &amp;lt;span&amp;gt;신고수 : 0&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;v-on&lt;/b&gt; 디렉티브는 이벤트 리스너이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자주 사용되기 때문에 @로 단축해서 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, v-on:click 은 &lt;b&gt;@click&lt;/b&gt; 으로 축약해서 쓸 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼을 누르면 오른쪽 숫자를 증가하도록 설정해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AwWTg/btr7R33RWTi/IgGkW1KKiaYK5T3bfZmC30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AwWTg/btr7R33RWTi/IgGkW1KKiaYK5T3bfZmC30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AwWTg/btr7R33RWTi/IgGkW1KKiaYK5T3bfZmC30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAwWTg%2Fbtr7R33RWTi%2FIgGkW1KKiaYK5T3bfZmC30%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;192&quot; height=&quot;51&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 자바스크립트는 버튼 누르면 숫자 찾아서 +1, 그리고 HTML 에 반영하는 수순이었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bepoQy/btr7TZ02lDe/8vdKu8VrNLsAnBvV4HvEkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bepoQy/btr7TZ02lDe/8vdKu8VrNLsAnBvV4HvEkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bepoQy/btr7TZ02lDe/8vdKu8VrNLsAnBvV4HvEkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbepoQy%2Fbtr7TZ02lDe%2F8vdKu8VrNLsAnBvV4HvEkK%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;480&quot; height=&quot;124&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;124&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하지만 Vue는 마치 processing 처럼 실시간 재랜더링이 되기 때문에 신고수만 더해주면 자동으로 html 이 바뀌도록 반영 된다. (Vue의 가장 강력한 특징)&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680584972901&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button v-on:click= &quot;신고수++&quot;&amp;gt;허위매물신고&amp;lt;/button&amp;gt; &amp;lt;span&amp;gt;신고수 : {{신고수}} &amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680585069655&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@mouseover 
@drag 
@... 
등등 다양한 이벤트핸들러 기능이 많다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수를 쓰는 이유는 긴 코드를 짧고 편리하게 재사용하기 위해서이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Vue 에서도 함수가 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mmBHO/btr7TkYDMBT/TqP0FWrHiysruUpoSnDcuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mmBHO/btr7TkYDMBT/TqP0FWrHiysruUpoSnDcuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mmBHO/btr7TkYDMBT/TqP0FWrHiysruUpoSnDcuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmmBHO%2Fbtr7TkYDMBT%2FTqP0FWrHiysruUpoSnDcuK%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;510&quot; height=&quot;527&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단하게 methods 안에 선언만 해주면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유의 사항은 data 의 변수를 참고하는 경우 꼭 &lt;b&gt;this.데이터명&amp;nbsp;&lt;/b&gt;을 선언해줘야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680585458612&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;button v-on:click= &quot;increase&quot;&amp;gt;허위매물신고&amp;lt;/button&amp;gt; &amp;lt;span&amp;gt;신고수 : {{신고수}} &amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;그리고 @click 에는 따로 던져주고 싶은 매개변수가 없을 때 &quot;increase&quot; 특별히 뒤에 () 를 붙이지 않는다는 점, 함수지만 동일하게 &quot; &quot; 를 사용한다는 점 유의하자. 함수가 아니어도 : 뒤에 따라오는 데이터 바인딩은 &quot; &quot; 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당연히 매개변수를 던질 수도 있다.&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;img 삽입&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1680587761147&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;img src = &quot;./assets/room0.jpg&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 이미지는 assets 폴더에 저장한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유의사항으로 시작은 무조건 ./ 으로 시작한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;화면 내에 UI 를 제작할 때 다음만 기억하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. UI는 디자인이 선수적으로 되어 있어야 하고 특정 조건에 따라 나타난다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. UI 상태가 저장되어 있어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 데이터에 따라 UI 어떻게 보일지 작성&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJuV0/btr74uekTj0/IaVDkBVNdbeIr2hrKBJydK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJuV0/btr74uekTj0/IaVDkBVNdbeIr2hrKBJydK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJuV0/btr74uekTj0/IaVDkBVNdbeIr2hrKBJydK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJuV0%2Fbtr74uekTj0%2FIaVDkBVNdbeIr2hrKBJydK%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;406&quot; height=&quot;223&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;modal_status 가 true 일 때만 팝업 혹은 UI를 보여주자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b24w6S/btr74e3OeCa/9agfsVOZC7iv0rPvkb6E21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b24w6S/btr74e3OeCa/9agfsVOZC7iv0rPvkb6E21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b24w6S/btr74e3OeCa/9agfsVOZC7iv0rPvkb6E21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb24w6S%2Fbtr74e3OeCa%2F9agfsVOZC7iv0rPvkb6E21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;155&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼하나를 추가하여 팝업 UI를 닫을 수 있게 했는데, button 도 class 를 지정해서 위치를 바꿔줄 수 있다. 하지만 이게 직관적인 방법인지는 모르겠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터를 받아서 반영&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터를 보내고자 하는 java script 파일에서 데이터를 export 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eQRp3x/btr72a2vZQu/bCBKwTC1wg2ASN1S4BzxY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eQRp3x/btr72a2vZQu/bCBKwTC1wg2ASN1S4BzxY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eQRp3x/btr72a2vZQu/bCBKwTC1wg2ASN1S4BzxY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeQRp3x%2Fbtr72a2vZQu%2FbCBKwTC1wg2ASN1S4BzxY1%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;537&quot; height=&quot;832&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;832&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;span style=&quot;color: #000000;&quot;&gt;그리고 App.vue 파일의 &amp;lt;script&amp;gt; 안에서 import를 수행한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ucbfS/btr7T0TH8IE/Hc48LAkzCnMYYtW98jk8a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ucbfS/btr7T0TH8IE/Hc48LAkzCnMYYtW98jk8a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ucbfS/btr7T0TH8IE/Hc48LAkzCnMYYtW98jk8a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FucbfS%2Fbtr7T0TH8IE%2FHc48LAkzCnMYYtW98jk8a0%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;300&quot; height=&quot;82&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;import 시 export 변수명과 동일하지 않아도 괜찮다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 여러개를 export 하는 것도 가능하고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680593760258&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export {apple,apple2}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수를 export 하는 것도 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;받을 때는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680593812580&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import {apple} ~ 

import {apple, apple2} ~&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 받고 싶은 것을 골라 받을 수 있으나, 중괄호를 사용해야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;폼 바인딩&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eqpmCY/btr7Xcfr0w7/8fGaB3nMDgRZTmeiVTrsHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eqpmCY/btr7Xcfr0w7/8fGaB3nMDgRZTmeiVTrsHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eqpmCY/btr7Xcfr0w7/8fGaB3nMDgRZTmeiVTrsHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeqpmCY%2Fbtr7Xcfr0w7%2F8fGaB3nMDgRZTmeiVTrsHK%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;966&quot; height=&quot;714&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;input value = &quot; &quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;input 에 들어가는 초기값을 &quot; &quot;로 설정&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;input :value = &quot;text&quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;input에 들어가는 초기값을 데이터바인딩 된 text 로 설정&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;@input = &quot;onInput&quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;input이 들어오면 onInput 함수 호출&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결론적으로 &amp;lt;v-model&amp;gt; 은 함수 호출 없이 input 이 바로 text 에 들어가도록 설정 된 기능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;심지어 : , 즉 이벤트 핸들러도 사용할 필요 없다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;조건부 렌더링&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;v-if 는 ture일 때 렌더링 되었다면, v-else 는 false일 때 렌더링 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680597237417&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;h1 v-if=&quot;awesome&quot;&amp;gt;Vue는 굉장해! 엄청나!&amp;lt;/h1&amp;gt;
&amp;lt;h1 v-else&amp;gt;오 안돼  &amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같이 v-else 만으로도 v-if 에서 tracking 하는 상태를 반영하는 듯 하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;함수 (methods)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특별한 유의사항&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680597321475&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default {
  data() {
    return {
      awesome: true
    }
  },
  methods: {
    toggle() {
      this.awesome = false
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;data() 에서는 데이터 값 배정을 : 로 했지만, method에서는 = 로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 이유는 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Vue 에서 data binding 과 method parameters 의 syntax 가 다르게 이용된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ChatGPT 는 다음과 같이 대답한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGzzh/btr72qj8PI0/FCHFtFS14QoKU9q17ny2WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGzzh/btr72qj8PI0/FCHFtFS14QoKU9q17ny2WK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGzzh/btr72qj8PI0/FCHFtFS14QoKU9q17ny2WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGzzh%2Fbtr72qj8PI0%2FFCHFtFS14QoKU9q17ny2WK%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;517&quot; height=&quot;129&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YtLSz/btr76zs88Dv/S7Q3Pzufbwg3n8awhlzAjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YtLSz/btr76zs88Dv/S7Q3Pzufbwg3n8awhlzAjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YtLSz/btr76zs88Dv/S7Q3Pzufbwg3n8awhlzAjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYtLSz%2Fbtr76zs88Dv%2FS7Q3Pzufbwg3n8awhlzAjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;309&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;309&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;span style=&quot;color: #000000;&quot;&gt;&amp;lt;form&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; text-align: start;&quot;&gt;The &lt;/span&gt;&amp;lt;form&amp;gt;&lt;span style=&quot;background-color: #f7f7f8; text-align: start;&quot;&gt; element is used to group and organize multiple input elements into a form that can be submitted to a server for processing. It defines the boundaries of the form and specifies the destination URL where the data should be sent when the form is submitted. A form can contain various types of input elements such as text fields, checkboxes, radio buttons, dropdown menus, and buttons.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;form&amp;gt; 은 원래 아래와 같이 사용 되며, action 에 적힌 URL 로 정보를 보낸다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680599612620&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;form action=&quot;/login&quot; method=&quot;post&quot;&amp;gt;
  &amp;lt;label for=&quot;username&quot;&amp;gt;Username:&amp;lt;/label&amp;gt;
  &amp;lt;input type=&quot;text&quot; id=&quot;username&quot; name=&quot;username&quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
  &amp;lt;label for=&quot;password&quot;&amp;gt;Password:&amp;lt;/label&amp;gt;
  &amp;lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
  &amp;lt;input type=&quot;submit&quot; value=&quot;Login&quot;&amp;gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 prevent 를 이용하면 URL 을 보내는 defult 기능으로 사용되지 않고, 대신 custom action 을 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서는 그 action 이 &quot;addTodo&quot; 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;form&amp;gt; 안에 input, button 이 포함된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;input이 newTodo 데이터에 바인딩 되고 button 을 누르면 addTodo 가 호출된다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680600009985&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; &amp;lt;form @submit.prevent=&quot;addTodo&quot;&amp;gt;
    &amp;lt;input v-model=&quot;newTodo&quot;&amp;gt;
    &amp;lt;button&amp;gt;할 일 추가&amp;lt;/button&amp;gt;
  &amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;button이 form @submit.prevent 를 trigger 한다는 어떠한 clue 도 적혀있지 않아 헷갈렸는데 이는 &amp;lt;form&amp;gt; element 안에 있기 때문에 trigger 로 동작한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680607241936&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;      this.todos = this.todos.filter((t) =&amp;gt; t !== todo)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;todos의 elemet 중 todo 와 다른 것들만 모아 todos 에 재배치하는 함수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, todo 만 제거&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;동적 바인딩&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1680656136627&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;조건이 true경우 클래스이름이 바인딩 되고 false경우 바인딩된 클래스이름이 제거 된다.

:class=&quot;{ '클래스이름' : '조건' }&quot;

보통 class 에 거는건 CSS styling 을 위해서인데, 조건이 false 면 style이 반영되지 않는다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Computed&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;사실상 methods로 모두 대체할 수 있지만, 보통 템플릿의 &lt;b&gt;데이터 표현&lt;/b&gt;을 더 직관적이고 간결하게 도와주는 속성이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 계산이나 데이터 처리가 반복 될 경우를 위해 cache 하고 만약 데이터 속성에 변화가 있으면 이를 감지하고 자동으로 다시 연산하여 cache 한다. 또한 가독성도 높게 해준다. 가독성은 methods 와 computed 로 logic 이 seperate 되어있다보니 getFullname 이런 식으로 안하고 그냥 Fullname 이런 식으로 해도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 속성의 변화를 자동 감지하고 연산하다보니 HTTP 통신같이 컴퓨팅 리소스가 많이 필요한 로직은 정의하지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680659283693&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  computed: {
    filteredTodos(){
       return this.hideCompleted
         ? this.todos.filter((t)=&amp;gt; !t.done)
    		: this.todos
    }
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;hideCompleted 가 True 면 !t.done filter, false 면 todos return&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생명주기 훅 ref&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;이해한 바에 따르면 Vue는 DOM 을 최대한 직접 건드리지 않고 반응형, 선언적 렌더링으로 처리하고자&amp;nbsp; 한다. 하지만 그 외의 경우 DOM을 수동으로 접근하여 처리하는 경우가 있다. 이 때, $ref 를 이용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680670501299&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
export default {
  mounted(){
  this.$refs.p.textContent = &quot;마운트&quot;
  }
}
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;p ref=&quot;p&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ref 는 this. + $ref&lt;b&gt;s &lt;/b&gt;&amp;nbsp;로 접근한다. 또한 mounted() 선언을 통해 component가 렌더링 된 후에 접근이 가능해진다.&amp;nbsp; mounted 는 life cycle hook 을 명시할 때 사용한다. 보통 fetching data from API, setting up event listeners, initializing third party libraries 에 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;정확한 용례는 component 가 처음 rended 되는 순간에 딱 한번 call 된다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Java script의 DOM node에 접근 가능한 property list 는 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #f7f7f8; color: #374151; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;textContent&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;innerHTML&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;setAttribute()&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getAttribute()&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;removeAttribute()&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;style&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;className&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;classList&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Dom Node&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1117&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvPAMo/btr75tutPdk/Xkswf0gtuN8JWw33B1sCw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvPAMo/btr75tutPdk/Xkswf0gtuN8JWw33B1sCw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvPAMo/btr75tutPdk/Xkswf0gtuN8JWw33B1sCw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvPAMo%2Fbtr75tutPdk%2FXkswf0gtuN8JWw33B1sCw0%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;1117&quot; height=&quot;445&quot; data-origin-width=&quot;1117&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Watcher&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지금까지 공부한 Vue 의 강점은 reactivity system 이다. 이로 인해 data property 에 변화가 있으면 감지하여 업데이트한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼에도 불구하고 watcher 를 쓰는 이유는 뭘까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;watcher란?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mechanism&amp;nbsp;for&amp;nbsp;reacting&amp;nbsp;to&amp;nbsp;changes&amp;nbsp;in&amp;nbsp;a&amp;nbsp;specific&amp;nbsp;data&amp;nbsp;property&amp;nbsp;or&amp;nbsp;expression&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 data가 변경될 때 마다 추적하는 건 너무 큰 computation resource 가 사용된다. 가령, watcher를 사용하면 복잡한 시스템이면 특정 dependency가 변경되었을 때만 trigger 되도록 할 수 있다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;또한 비동기 처리가 가능하다고 한다. 또한 property가 변할 때 특정 action 이나 side effect가 있도록 하기에 watcher 는 잘 설계 된 logic 이다. 또한 만약 property 들이 서로 의존적이며 업데이트가 같이 되야 한다면, watcher 를 사용하는 것이 답이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Watcher의 사용법을 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 watch 하고 싶은 데이터 propety 를 결정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680672317697&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; data() {
    return {
      todoId: 1,
      todoData: null
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;todoID 라고 할 때, Watcher 는 다음의 두가지 방법으로 비동기적으로 todoID 의 변화를 추적할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680672381996&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;watch: {
    todoId() {
    
    
watch: { 
	todoID: function(){&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data property 의 todoID 와 watcher의 함수 todoID() 는 당연히 다르다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;side effect&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;wacher 를 통해 데이터 변화가 추적 된 순간 하고 싶은 특정 action 등 ex) 날짜가 1일이 되면 월의 count를 ++ 하라.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발자들은 watcher 에는 다음과 같이 watcher function 만 놓고 side effect 는 따로 methods 에 빼놓곤 한다. 이는 두번째 용례였던 todoID: function() 과 같이 callback function 으로 사용하면 접근이 불가능하나 side effect 만 따로 method 에 빼놓게 되면 this. 로 접근이 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시는 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680674250056&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
export default {
  data() {
    return {
      todoId: 1,
      todoData: null
    }
  },
  methods: {
  },
  mounted() {
    this.fetchData()
  },
  watch: {
    todoId: async function() {
      this.todoData = null
      const res = await fetch(
        `https://jsonplaceholder.typicode.com/todos/${this.todoId}`
      )
      this.todoData = await res.json()
    }
  }
  
  
}
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;p&amp;gt;할 일 id: {{ todoId }}&amp;lt;/p&amp;gt;
  &amp;lt;button @click=&quot;todoId++&quot;&amp;gt;다음 할 일 가져오기&amp;lt;/button&amp;gt;
  &amp;lt;p v-if=&quot;!todoData&quot;&amp;gt;로딩...&amp;lt;/p&amp;gt;
  &amp;lt;pre v-else&amp;gt;{{ todoData }}&amp;lt;/pre&amp;gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;watcher 안에 call back 함수를 선언하다보니 mounted() 에서 call 하고자 했던 fetchData 가 전혀 call 되지 못했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이로 인해, 처음 코드가 돌아갈때는 this.fetchData() 가 call 되지 못해 error 가 발생한다. 그러나 그 다음부터 &quot;다음 할 일 가져오기&quot; 버튼을 눌렀을 때는 아무일도 없었던 것 처럼 동작한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 코드는 아래와 같이 methods 에 함수를 나눠 적음으로써 유연하게 코드를 짤 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680674361168&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
export default {
  data() {
    return {
      todoId: 1,
      todoData: null
    }
  },
  methods: {
    async fetchData() {
      this.todoData = null
      const res = await fetch(
        `https://jsonplaceholder.typicode.com/todos/${this.todoId}`
      )
      this.todoData = await res.json()
    }
  },
  mounted() {
    this.fetchData()
  },
  watch: {
    todoId() {
      this.fetchData()
    }
  }
}
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;p&amp;gt;할 일 id: {{ todoId }}&amp;lt;/p&amp;gt;
  &amp;lt;button @click=&quot;todoId++&quot;&amp;gt;다음 할 일 가져오기&amp;lt;/button&amp;gt;
  &amp;lt;p v-if=&quot;!todoData&quot;&amp;gt;로딩...&amp;lt;/p&amp;gt;
  &amp;lt;pre v-else&amp;gt;{{ todoData }}&amp;lt;/pre&amp;gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Component&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;component를 불러와서 작업할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680675838373&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import ChildComp from './ChildComp.vue'

export default {
  components: {
    ChildComp
  }
}
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;ChildComp /&amp;gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;import 는 &amp;lt;script&amp;gt; 안에서 이뤄져야 하고, component 를 사용하기 위해서는 &amp;lt;Componet name /&amp;gt; 을 언급해줘야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Component 란?&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;vue file 에 작성 된 block 들은 모두 component 이다. 코드의 재활용이 용이한 형태로 되어있고 자식 component를 가져오는 이유이기도 하다. 이러한 의미에서 vue file 자체를 component 라고 할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Vue 는 parent 가 child component 의 consumer 이다. 즉, child component 를 import 한다. 보통 언어들에서 parent 가 자식 class 에게 inheritnace 를 제공한다는 점에서 terminology가 특이하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Props&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자식 컴포넌트는 props 를 통해 부모로부터 데이터를 받을 수 있다. 우선 허용할 props 를 선언해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 선언되면 msg prop이 this 에 노출 되고, 자식 컴포넌트에서 템플릿 사용이 가능해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부모는 속성을 사용하는 것처럼 자식에게 prop을 전달할 수 있고, 동적 값을 전달하기 위해 v-bind 문법을 사용할 수도 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서는 또 자식 컴포넌트가 부모로부터 데이터를 pass down 받는다는 점에서 충분히 햇갈린다. 용례를 아래서 살펴보자 .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;98&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgAvo7/btr8eXBTy6E/DObLI6kGptX7Txom49BDX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgAvo7/btr8eXBTy6E/DObLI6kGptX7Txom49BDX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgAvo7/btr8eXBTy6E/DObLI6kGptX7Txom49BDX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgAvo7%2Fbtr8eXBTy6E%2FDObLI6kGptX7Txom49BDX0%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;98&quot; height=&quot;113&quot; data-origin-width=&quot;98&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(Child 도 Parent Component 를 사용할 수 있는 방법이 있긴한데 지향되는 것으로 보인다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ParentCompoent.vue&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680678456973&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;{{ title }}&amp;lt;/h2&amp;gt;
    &amp;lt;ChildComponent v-for=&quot;item in items&quot; :key=&quot;item.id&quot; :item=&quot;item&quot; /&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      title: 'List of Items',
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ]
    };
  }
}
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ChildCompoent.vue&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680678483509&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;{{ item.name }}&amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
export default {
  props: ['item']
}
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;One by One 으로 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tjQnt/btr752jFA3d/gacaPMvC8fhoueO1I2Q4Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tjQnt/btr752jFA3d/gacaPMvC8fhoueO1I2Q4Y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tjQnt/btr752jFA3d/gacaPMvC8fhoueO1I2Q4Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtjQnt%2Fbtr752jFA3d%2FgacaPMvC8fhoueO1I2Q4Y0%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;583&quot; height=&quot;269&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ChildComponent tag 를 갖는 &lt;span style=&quot;background-color: #fafafa; text-align: start;&quot;&gt;Parent Component, message 를 ChildComponet에 pass down 한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ksxn/btr77gIOtJj/V8yogFFmlvxRoeJmQf7ErK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ksxn/btr77gIOtJj/V8yogFFmlvxRoeJmQf7ErK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ksxn/btr77gIOtJj/V8yogFFmlvxRoeJmQf7ErK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ksxn%2Fbtr77gIOtJj%2FV8yogFFmlvxRoeJmQf7ErK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;610&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Parent Component 에서는 Child Component 를 사용 가능하다. Child에게 보낼 message 를 설정했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b04IDL/btr8htGKakx/YkjYJfcQF0yOUQIkkYtKV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b04IDL/btr8htGKakx/YkjYJfcQF0yOUQIkkYtKV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b04IDL/btr8htGKakx/YkjYJfcQF0yOUQIkkYtKV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb04IDL%2Fbtr8htGKakx%2FYkjYJfcQF0yOUQIkkYtKV0%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;357&quot; height=&quot;425&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Child Component 는 props 선언을 통해 Parent Component로 부터 data 를 받는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ANKO/btr8i9HLkYo/6jfZ9aOC1mIQkoqyFqOkfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ANKO/btr8i9HLkYo/6jfZ9aOC1mIQkoqyFqOkfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ANKO/btr8i9HLkYo/6jfZ9aOC1mIQkoqyFqOkfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ANKO%2Fbtr8i9HLkYo%2F6jfZ9aOC1mIQkoqyFqOkfk%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;413&quot; height=&quot;265&quot; data-origin-width=&quot;413&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;받은 데이터를 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Emits&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;child에서 이벤트와 데이터를 parent 로 발송할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Child&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680681379179&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default {
  // emit할 이벤트 선언
  emits: ['response'],
  created() {
    // 인자와 함께 emit
    this.$emit('response', '자식 컴포넌트로부터  를 받았어요!')
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;emits 은 button 처럼 단순하고 emit 할 event 가 1개밖에 해당될 수 없는 경우를 제외하면 미리 선언해주어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;emits: ['response']&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;button 같은 경우는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680682220343&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button @click=&quot;$emit('my-event', {data: 'some data'})&quot;&amp;gt;Click me&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Parent에서도 이렇게 심플하게 사용가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Parent&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680681388026&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;ChildComp @response=&quot;(msg) =&amp;gt; childMsg = msg&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;created()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;created() 도 lifecycle hook 의 일종이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;component instance 가 생성 되었지만 아직 mount 되지 않았을 때 call 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른 components 들은 접근 가능하지만, DOM elements component 는 아직 mount 되기 전이라 접근 불가하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 대한 chatGPT 의 답변은 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buBd4p/btr76yXn963/AU62FsHd1xKyUFmPaoYpDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buBd4p/btr76yXn963/AU62FsHd1xKyUFmPaoYpDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buBd4p/btr76yXn963/AU62FsHd1xKyUFmPaoYpDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuBd4p%2Fbtr76yXn963%2FAU62FsHd1xKyUFmPaoYpDK%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;826&quot; height=&quot;523&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Slot&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Parent component 는 이미 child component 를 직접 access 할 수 있기 때문에 slot 기능이 필요 없지만, 반대로 child 는 필요한 순간이 꽤 된다. Parent의 compoent를 동적으로 child component에 render 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, parent component는 서로 스타일이 다른 여러개의 child component를 가질 수 있다. 각각의 child component가 동일한 text content를 보여야 한다면, slot 을 사용하여 child component가 unique style을 유지하도록 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시는 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Parent&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680683775911&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
import ChildComp from './ChildComp.vue'

export default {
  components: {
    ChildComp
  },
  data() {
    return {
      msg: 'Vue는 개발자에게 정말 유용하죠!  '
    }
  }
}
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;ChildComp&amp;gt;부모로부터: {{ msg }}&amp;lt;/ChildComp&amp;gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Child&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680683787774&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;slot&amp;gt;대체: 부모로부터 컨텐츠를 못 받았어요!  &amp;lt;/slot&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 기본기는 마무리한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/282</guid>
      <comments>https://itforfun.tistory.com/282#entry282comment</comments>
      <pubDate>Tue, 4 Apr 2023 20:22:19 +0900</pubDate>
    </item>
    <item>
      <title>Docker ce 설치 on windows</title>
      <link>https://itforfun.tistory.com/280</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다음의 과정을 걸친다.&amp;nbsp;&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;&lt;b&gt;WSL 설치, ubuntu 설치, Docker, Cuda toolkit&amp;nbsp; 설치&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WSL, ubuntu, Docker 관련 내용은 &lt;a href=&quot;https://itforfun.tistory.com/279&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WSL&lt;/a&gt;, &lt;a href=&quot;https://itforfun.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Docker&lt;/a&gt; 글을 살펴보자.&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;&lt;b&gt;WSL 설치&amp;nbsp;&amp;nbsp;&lt;/b&gt;&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;a href=&quot;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680265053218&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[Windows 10] WSL2 설치 및 사용법&quot; data-og-description=&quot;Microsoft에서는 2020년 5월 리눅스를 윈도우와 통합해서 사용할 수 있는 WSL2를 발표했습니다. 이 글에서는 WSL2를 설치하고 사용하는 방법을 소개합니다&quot; data-og-host=&quot;www.lainyzine.com&quot; data-og-source-url=&quot;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&quot; data-og-url=&quot;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eOTgM/hyR7sPrtlQ/RHfUEwaSKqhAALjkicOX0K/img.png?width=1500&amp;amp;height=976&amp;amp;face=0_0_1500_976,https://scrap.kakaocdn.net/dn/eyUKd/hyR7rQxeB7/jjHGTKgicfCVwRgT7qB001/img.png?width=1500&amp;amp;height=975&amp;amp;face=0_0_1500_975,https://scrap.kakaocdn.net/dn/rkpPr/hyR6TnzYm8/7MSWiMAiFODRYOV3VJaPg1/img.png?width=1400&amp;amp;height=1000&amp;amp;face=0_0_1400_1000&quot;&gt;&lt;a href=&quot;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eOTgM/hyR7sPrtlQ/RHfUEwaSKqhAALjkicOX0K/img.png?width=1500&amp;amp;height=976&amp;amp;face=0_0_1500_976,https://scrap.kakaocdn.net/dn/eyUKd/hyR7rQxeB7/jjHGTKgicfCVwRgT7qB001/img.png?width=1500&amp;amp;height=975&amp;amp;face=0_0_1500_975,https://scrap.kakaocdn.net/dn/rkpPr/hyR6TnzYm8/7MSWiMAiFODRYOV3VJaPg1/img.png?width=1400&amp;amp;height=1000&amp;amp;face=0_0_1400_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Windows 10] WSL2 설치 및 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Microsoft에서는 2020년 5월 리눅스를 윈도우와 통합해서 사용할 수 있는 WSL2를 발표했습니다. 이 글에서는 WSL2를 설치하고 사용하는 방법을 소개합니다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.lainyzine.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;WSL 설치를 위한 사전 진행 사항&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;Windows 업데이트 (안전빵)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Powershell 관리자 모드로 실행&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;dism으로-wsl-관련-기능-활설화&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;DISM으로 WSL 관련 기능 활성화&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;DISM(배포 이미지 서비스 및 관리) 명령어로&lt;span&gt;&amp;nbsp;&lt;/span&gt;Microsoft-Windows-Subsystem-Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;기능을 활성화합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680265120831&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
버전: 10.0.19041.844

이미지 버전: 10.0.19043.928
기능을 사용하도록 설정하는 중
[==========================100.0%==========================]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;DISM명령어로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;VirtualMachinePlatform&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기능을 활성화&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680265150175&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
배포 이미지 서비스 및 관리 도구

이미지 버전: 10.0.19043.928

기능을 사용하도록 설정하는 중
[==========================100.0%==========================]
작업을 완료했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재부팅 진행 (안해도 문제 없긴 했지만 안전빵)&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;&lt;b&gt;WSL 설치&amp;nbsp;&lt;/b&gt;&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;WSL2 Linux 커널 업데이트&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://learn.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680265180841&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;WSL 설치&quot; data-og-description=&quot;wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니&quot; data-og-host=&quot;learn.microsoft.com&quot; data-og-source-url=&quot;https://learn.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package&quot; data-og-url=&quot;https://learn.microsoft.com/ko-kr/windows/wsl/install&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Nek5q/hyR7xJY6dg/VGe36ftelOtaXvzL4KHMpk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learn.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Nek5q/hyR7xJY6dg/VGe36ftelOtaXvzL4KHMpk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;WSL 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learn.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265217767&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wsl --install&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄이면 설치가 끝나나, 설치 외 부가 정보를 얻고 싶으면 위 링크를 살펴보자.&amp;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;버전이 1인지 2인지 확인하고 싶으면, powershell 을 닫았다가 다시 관리자 모드로 킨 후 wsl -l -v 를 쳐서 확인해보자.&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;ubuntu 는 마이크로 소프트 스토어에서 설치&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;1000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB5le3/btr7hUrw3hF/lhNXRcwZk0WeQUkkbWZitk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB5le3/btr7hUrw3hF/lhNXRcwZk0WeQUkkbWZitk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB5le3/btr7hUrw3hF/lhNXRcwZk0WeQUkkbWZitk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB5le3%2Fbtr7hUrw3hF%2FlhNXRcwZk0WeQUkkbWZitk%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;1335&quot; height=&quot;1000&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;1000&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;ubuntu가 켜지면 사용자 이름과 패스워드를 설정한다.&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;powershell을 다시 실행 한 후 아래와 같이 나오는지 확인해보자.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265430077&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker 를 설치해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680265474036&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Installation Guide &amp;mdash; NVIDIA Cloud Native Technologies  documentation&quot; data-og-description=&quot;On RHEL 7, install the nvidia-container-toolkit package (and dependencies) after updating the package listing: Restart the Docker daemon to complete the installation after setting the default runtime: Note Depending on how your RHEL 7 system is configured &quot; data-og-host=&quot;docs.nvidia.com&quot; data-og-source-url=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&quot; data-og-url=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Installation Guide &amp;mdash; NVIDIA Cloud Native Technologies documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;On RHEL 7, install the nvidia-container-toolkit package (and dependencies) after updating the package listing: Restart the Docker daemon to complete the installation after setting the default runtime: Note Depending on how your RHEL 7 system is configured&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;pre id=&quot;code_1680265492004&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl https://get.docker.com | sh \
  &amp;amp;&amp;amp; sudo systemctl --now enable docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl 에서 오류가 나는 경우가 많다.&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;(출처: &lt;a href=&quot;https://github.com/microsoft/WSL/issues/8883&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/microsoft/WSL/issues/8883&lt;/a&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;WSL에 로그인&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265585802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wsl&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc폴더 wsl.conf 파일 생성&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265630074&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /etc/wsl.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 안에 다음의 내용을 추가해준다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265639626&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[boot]
systemd=true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cntrl + s로 저장하고 cntrl + x 로 파일 종료&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;shell 종료&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265687504&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl shutdown&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265703248&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wsl --shutdown&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl 재시작&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265717176&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wsl&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;package repository 를 setup 하고 GPG key 를 넣어줘야한다. 마찬가지로 여러 방법이 있지만 아래 코드를 입력하는 것이 가장 수월하다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265767743&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      &amp;amp;&amp;amp; curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      &amp;amp;&amp;amp; curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Nvidia container toolkit 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265794404&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1680265801342&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install -y nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1680265808860&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nvidia-ctk runtime configure --runtime=docker&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1680265814772&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 글에서는 나와있지 않지만 유의해야 하는 부분이있다.&amp;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;아래 명령어를 보면 cuda 의 버전이 11.6.2, ubuntu 의 버전이 20.04 이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680265833268&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무생각 없이 복사하다보니 버전을 안맞춰서 한참 고민했다. 버전을 꼭 맞춰주자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cuda 버전 확인은 nvidia-smi 로 확인할 수 있고, 우분투의 버전은 lsb_release -a 로 확인할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 gpu 드라이버가 설치되어 있지 않다면 설치가 선행이다.&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;만약 root user 가 아니라 docker 사용이 거부된다면 아래 내용을 참고하자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680266233355&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;How to fix docker: Got permission denied issue&quot; data-og-description=&quot;I installed Docker in my machine where I have Ubuntu OS. When I run: sudo docker run hello-world All is ok, but I want to hide the sudo command to make the command shorter. If I write the command&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&quot; data-og-url=&quot;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Xfgqt/hyR7z1670J/TzHC0fxfHHUKvr5w6EKVlk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Xfgqt/hyR7z1670J/TzHC0fxfHHUKvr5w6EKVlk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;How to fix docker: Got permission denied issue&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I installed Docker in my machine where I have Ubuntu OS. When I run: sudo docker run hello-world All is ok, but I want to hide the sudo command to make the command shorter. If I write the command&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/280</guid>
      <comments>https://itforfun.tistory.com/280#entry280comment</comments>
      <pubDate>Fri, 31 Mar 2023 21:38:34 +0900</pubDate>
    </item>
    <item>
      <title>WSL 개념 정리</title>
      <link>https://itforfun.tistory.com/279</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linux, Window&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Linux와 Window 는 다양한 차이가 있지만, 결정적으로 몇가지 구조적 차이가 있고, 그 중 kernel에 대해 정리해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;kernel 이란?&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단하게 예를 들어보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MS word 에서 프린트 icon을 클릭하면 프린터기에서 인쇄가 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실, 프린터기는 프린트를 위한 특별한 언어도 있고, 컴퓨터와 소통하기 위한 protocol이 존재하나 우리는 그런걸 몰라도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 kernel 이 하드웨어와 os 간에 추상적인 layer를 놓아 소통할 수 있도록 하기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, kernel은 os의 brain 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Window kernel&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Window의 kernel은 hybrid형이다. 즉, 두가지 다른 kernel architectures을 결합해서 만들었다&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;Monolithic kernel&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 코드와 드라이버를 하나의 큰 kernel 공간에 배치한다. 이에 따라 높은 퍼포먼스와 효율을 제공하는 크고 통합된 프로그램이라는 장점이 있다.&amp;nbsp;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;Micro kernel&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마이크로 kernel은 코드와 드라이브를 여러 독립 공간에 분산한다. 이에 따라 쉽게 더하거나 빼는 것이 가능하다보니 더 유연하고 커스터마이징 가능하다는 장점이 있지만 추가적인 com,munication layer가 필요하다보니 덜 효율적이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;window의 kernel은 둘다 차용해서 어느정도의 수정 가능성을 남겨 놓아 유연함과 커스텀 기능을 확보했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linux kernel&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, Linux는 monolithic kernel로 속도가 빠르고 효율이 좋다. 하지만 더 복잡하고 수정하기 힘들다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Why Linux?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&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;span style=&quot;color: #000000;&quot;&gt;Linux는 오픈소스이기에 소스코드가 공개되어있다. 즉 os를 커스텀하거나 수정이 쉽다. 이로 인해 오픈 소스 프로젝트에 기여하고 싶은 개발자에게 최적의 platform 이다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Linux는 window 보다 더 강력한 CLI를 제공한다. 즉, 파일 깔거나 정리하거나. 디버깅 등등에서 훨씬 유용하다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여러 개발 툴, 컴파일러, 디버거, 에디터가 리눅스에서는 무료다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더 안전하다. 소스 코드가 공개되었기에 많은 사람들에게 취약점들이 검증 되었다.&amp;nbsp; privilege가 root user 와 regular users 들 사이에 차이가 있어 시스템의 중요 파일에는 접근 못하게 할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다양한 환경에 설치 가능하다. 디폴트로 사용하니 docker 같은 개념이 등장할 수 있었다고 생각한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linux on Window&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;리눅스를 Window에서 사용하는 방법은 크게 두가지가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Virtual Machine 사용&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Virtual Machine 은 분리된 virual 환경을 만들고, physical computer의 하드웨어와 소프트 웨어를 emulate 한다. VM은 CPU, memory, storage를 할당 받기 때문에 resource intensive 하다. Mac 에서 윈도우를 쓰기 위해 부트캠프를 깔았을 때 생각해보면 쉽다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;WSL 사용&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL은 VM 필요없이 Window의 kernel 위에서 Ubuntu 가 돌아간다. 즉 Linux binaries와 tool 들을 윈도우 시스템에서 바로 쓸 수 있기 때문에 performance overhead나 하드웨어 요구사항이 없다. WSL 은 Linux 와 Window의 workflow를 seamless 하게 통합하여 두 OS간의 파일 공유, 리소스 공유가 자유롭다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL 을 부연설명 해보자면, WSL 설치 순간 Ubuntu distribution의 subset에 기반한 가벼운 리눅스 환경이 생성된다. 이 환경은 기본적으로 제한적인 기능을 갖는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL은 Windows NT Kernel Proxy 라는 기술을 통해 Ubuntu 환경에서 생성하는 Linux 시스템의 calls 을 interpret하여 Window system에 던져준다. 이를 통해 Linux application과 tools들이 file system, network interface, hardware devices와 같은 Window resource에 접근 가능해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL distribution (linux distribution)를 생성하면 VM 처럼 system resource가 사용되긴 한다. distribution의 종류, distribution 위에서 쓰이는 application, worload 등등에 따라 정도는 차이가 있다.&amp;nbsp;WSL의 리소스 사용량은 Window Task Manager 에서 볼 수 있다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;How does the resource consumption of WSL differ from that of VMs?&lt;/b&gt;&lt;/span&gt;&lt;/h4&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;span style=&quot;color: #000000;&quot;&gt;WSL 은 VM 과 다르게 full os 를 필요로 하지 않는다. 즉, CPU, memory 등을 적게 쓸 수 밖에 없다. 또한 추가적인 full kernel 이 필요하지 않은 것도 이에 해당한다. (WSL도 kernel 이 필요하긴 하다. 그러나 window에서 필수적으로 동작하기 위한 가벼운 kernel 이다.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL은 host Windows 와 resources 를 share 한다. VM이 통상적으로 생성 시기에 자원을 배분해줘야하는 것과 대조적이다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL 은 여러 distributions 을 최소한의 overhead 로 운용 가능하다. VM 으로 하려면 .. 상상하기 싫다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇지만 WSL 는 window 와 소통하기 위한 기본적 layer + linux distribution 이 설치되다보니 약간의 overhead가 존재하긴 하다. 그래도 워낙 장점이 많아서 좋다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;용어 정리&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linux binaries&lt;/b&gt;: executable 파일들, WSL은 Windows 환경에서 linux binaries 가 동작하도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Layer in WSL&lt;/b&gt;: container 같은 추상화 개념. filesystem 과 system resource 를 관리한다. 우분투와 데비안 같은 복잡한 리눅스 환경을 WSL distribution을 통해 제공하기 위한 필수적인 foundation이 바로 &lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;layers이다. 이 위에 지어진다. linux distribution이 window operating system위에서 돌아가기 위해 필수적인 기능과 인터페이스를 제공한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linux distribution&lt;/b&gt;: 다양한 버전의 linux&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Hyper-V&lt;/b&gt;: Hyper-V 는 말하자면 큰 박스고, 작은 박스(VM)을 그 안에 넣을 수 있다. 각각의 작은 박스는 컴퓨터처럼 OS와 개별 application 을 가지고 있다. Hyper-V 덕분에 여러개의 VM 을 같은 physical machine에서 운용 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Hyper-V 는 WSL2 아키텍쳐의 중추역할을 한다. WLS2는 가벼운 Linux kernel을 운용하기 위해 가벼운 Hyper-V VM 을 만든다. 해당 Linux kernel은 windows 10 에서 linux application 이 돌아가도록 하는 layer이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL2는 virtualized linux 환경을 windows 10 위에서 돌리지만, full-blown VM 의 overhead는 피한다. Hyper-V는 virtualized 환경을 생성하고 관리하는 필수적인 리소스를 제공한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;WSL1 vs WSL2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WSL1은 translation layer를 사용하여 Linux system의 call을 Window 에 맞게 변환시켰고 Linux user-mode code를 Windows kernel에 바로 올렸다. 이 접근법은 linux를 window 위에서 가볍게 돌릴 수 있도록 했으나, &lt;b&gt;몇가지 한계가 존재했다.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WLS2 의 가장 큰 강점이 WLS1 의 한계를 해결했다고 보면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WLS2는 VMware와 공존하여 Docker를 사용하려면 Docker legacy를 써야했던 과거에서 벗어나, WLS2가 있으면 MS store 에서 설치한 OS를 캐치하여 docker, docker compose, warm, kubernetes를 사용할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/279</guid>
      <comments>https://itforfun.tistory.com/279#entry279comment</comments>
      <pubDate>Fri, 31 Mar 2023 17:24:08 +0900</pubDate>
    </item>
    <item>
      <title>Python Flat sequence, Container sequence</title>
      <link>https://itforfun.tistory.com/277</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에는 두가지 sequence 가 존재한다.&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;Container 는 objects 의 reference 를 hold 하는 반면, flat sequence 는 실제 값을 저장한다.&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;Container&amp;nbsp;sequences:&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;list:&amp;nbsp;a&amp;nbsp;mutable&amp;nbsp;sequence&amp;nbsp;that&amp;nbsp;can&amp;nbsp;hold&amp;nbsp;any&amp;nbsp;type&amp;nbsp;of&amp;nbsp;object&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tuple:&amp;nbsp;an&amp;nbsp;immutable&amp;nbsp;sequence&amp;nbsp;that&amp;nbsp;can&amp;nbsp;hold&amp;nbsp;any&amp;nbsp;type&amp;nbsp;of&amp;nbsp;object&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collections.deque: a mutable sequence optimized for adding and removing items from both ends&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;Flat&amp;nbsp;sequences:&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;str:&amp;nbsp;an&amp;nbsp;immutable&amp;nbsp;sequence&amp;nbsp;of&amp;nbsp;Unicode&amp;nbsp;characters&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bytes:&amp;nbsp;an&amp;nbsp;immutable&amp;nbsp;sequence&amp;nbsp;of&amp;nbsp;bytes&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bytearray:&amp;nbsp;a&amp;nbsp;mutable&amp;nbsp;sequence&amp;nbsp;of&amp;nbsp;bytes&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;Container sequence example&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;스크린샷 2023-03-18 오후 2.55.18.png&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cldhOn/btr4xLqR8cx/61dRsgaq8iG2CZmqt2zWbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cldhOn/btr4xLqR8cx/61dRsgaq8iG2CZmqt2zWbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cldhOn/btr4xLqR8cx/61dRsgaq8iG2CZmqt2zWbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcldhOn%2Fbtr4xLqR8cx%2F61dRsgaq8iG2CZmqt2zWbk%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;1196&quot; height=&quot;1100&quot; data-filename=&quot;스크린샷 2023-03-18 오후 2.55.18.png&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 말인 즉슨, container 는 주소값을 포함하므로&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1679118982148&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list[0]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같이 주소값에 들어가서 수정이 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, Flat Sequence는 아래와 같이 직접 값을 저장하고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-18 오후 2.56.51.png&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSc23y/btr4vIaBain/zByUAETqUDS4Cl6u8Mwk4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSc23y/btr4vIaBain/zByUAETqUDS4Cl6u8Mwk4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSc23y/btr4vIaBain/zByUAETqUDS4Cl6u8Mwk4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSc23y%2Fbtr4vIaBain%2FzByUAETqUDS4Cl6u8Mwk4K%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;1202&quot; height=&quot;1024&quot; data-filename=&quot;스크린샷 2023-03-18 오후 2.56.51.png&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;1024&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;b&gt;불가능&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;그러나 id() 라는 기능을 제공하여 string 전체에 대한 특정 interger 값을 제공해줄 수는 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 주소값과 관련 없고, character 을 one by one 지칭하는 것은 아니지만 만약 동일한 string 이 존재한다면 두 string 이 같은 주소에 저장 된 같은 값인지 아닌지 확인할 때 사용할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-18 오후 2.57.28.png&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZp9zS/btr4tMZgdEn/Pk4CN7kKNXO19vl9lImkM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZp9zS/btr4tMZgdEn/Pk4CN7kKNXO19vl9lImkM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZp9zS/btr4tMZgdEn/Pk4CN7kKNXO19vl9lImkM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZp9zS%2Fbtr4tMZgdEn%2FPk4CN7kKNXO19vl9lImkM1%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;1206&quot; height=&quot;584&quot; data-filename=&quot;스크린샷 2023-03-18 오후 2.57.28.png&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/277</guid>
      <comments>https://itforfun.tistory.com/277#entry277comment</comments>
      <pubDate>Sat, 18 Mar 2023 14:58:40 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(5) - XGBoost</title>
      <link>https://itforfun.tistory.com/274</link>
      <description>&lt;h1&gt;XGBoost&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;* 영상 출처: &lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&quot;&gt;https://www.youtube.com/watch?v=OtD8wVaFm6E&lt;/a&gt;&lt;/i&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;XGBoost 는 EXTREME Gradient Boost의 약자이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Gradient Boost와 굉장히 유사하다.&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;관련 내용이 상당히 많으나, Regression 관련 어떻게 동작하는지만 간단하게 살펴보자.&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-origin-width=&quot;1240&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IkcWr/btr1lwYb8fp/kUjjPaUTcJfFlXNvyX6FE0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IkcWr/btr1lwYb8fp/kUjjPaUTcJfFlXNvyX6FE0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IkcWr/btr1lwYb8fp/kUjjPaUTcJfFlXNvyX6FE0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIkcWr%2Fbtr1lwYb8fp%2FkUjjPaUTcJfFlXNvyX6FE0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1240&quot; height=&quot;964&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=164s&quot;&gt;(02:44)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기값은 아주 간단하게 0.5로 보통 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기값을 average로 설정했던 Gradient Boost와 다르다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BpaZC/btr1vrBGJq2/dAmAUsZ7jCK1Z1aDOhLm4K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BpaZC/btr1vrBGJq2/dAmAUsZ7jCK1Z1aDOhLm4K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BpaZC/btr1vrBGJq2/dAmAUsZ7jCK1Z1aDOhLm4K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBpaZC%2Fbtr1vrBGJq2%2FdAmAUsZ7jCK1Z1aDOhLm4K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;664&quot; height=&quot;382&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=220s&quot;&gt;(03:40)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또다른 다른 점으로, Gradient Boost는 MSE Regression Tree를 사용하여 RSS(예측과 실제의 오차의 제곱합) 기반으로 분기점을 선택한 반면 XGBoost는 Similarity Score 이라는 것을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Similarity Score&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ON4Gh/btr06XJnrli/wq8faxMMZ0io1IOpiKIoC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ON4Gh/btr06XJnrli/wq8faxMMZ0io1IOpiKIoC1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ON4Gh/btr06XJnrli/wq8faxMMZ0io1IOpiKIoC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FON4Gh%2Fbtr06XJnrli%2Fwq8faxMMZ0io1IOpiKIoC1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;150&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=259s&quot;&gt;(04:19)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Similiarity Score은 square of sum of residuals 이 아니라 sum of residual의 sqaure 값이다. 그리고 lambda 는 regularization term이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 initial guess 가 0.5 이므로, -10.5, ..., -7.5 총 4개의 similiarity score은 4이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpACra/btr06XJnrkz/NDMiYiUdr0PZEzlAwH0sE0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpACra/btr06XJnrkz/NDMiYiUdr0PZEzlAwH0sE0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpACra/btr06XJnrkz/NDMiYiUdr0PZEzlAwH0sE0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpACra%2Fbtr06XJnrkz%2FNDMiYiUdr0PZEzlAwH0sE0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;106&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=329s&quot;&gt;(05:29)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqaS3Z/btr0VJ55FuZ/2KSmf8cwCofJ8YxN8T3EF1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqaS3Z/btr0VJ55FuZ/2KSmf8cwCofJ8YxN8T3EF1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqaS3Z/btr0VJ55FuZ/2KSmf8cwCofJ8YxN8T3EF1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqaS3Z%2Fbtr0VJ55FuZ%2F2KSmf8cwCofJ8YxN8T3EF1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;176&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=287s&quot;&gt;(04:47)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유의할점은 만약 데이터가 대칭의 위치에 있다면 서로 값을 cancel out 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, similarity score은 높을 수록 cancel out 되는 일이 없다는 것을 뜻한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 분류하기 위한 트리는 regression 트리와 유사하나 다르다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIMxQj/btr1ddZb5YB/SvbbsMkuIWSNoo30OiR4j0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIMxQj/btr1ddZb5YB/SvbbsMkuIWSNoo30OiR4j0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIMxQj/btr1ddZb5YB/SvbbsMkuIWSNoo30OiR4j0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIMxQj%2Fbtr1ddZb5YB%2FSvbbsMkuIWSNoo30OiR4j0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;746&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=386s&quot;&gt;(06:26)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 샘플 2개의 평균값을 나누는 기준으로 설정한 후, 여러 기준 중 가장 적절한 것을 선택하는 것은 동일하나, RSS 로 선택하는 것이 아니라 Similarity Score을 이용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxVtS7/btr1dclD8bU/34kaEubYkXMD3J4V7wAJA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxVtS7/btr1dclD8bU/34kaEubYkXMD3J4V7wAJA1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxVtS7/btr1dclD8bU/34kaEubYkXMD3J4V7wAJA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxVtS7%2Fbtr1dclD8bU%2F34kaEubYkXMD3J4V7wAJA1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;342&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=462s&quot;&gt;(07:42)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 각 값에 대한 similarity score을 구한 후 (regularization term lambda는 0으로 한 상태이다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MdXvA/btr1bfpqfq4/SGKgucW2nplUnATLt2izo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MdXvA/btr1bfpqfq4/SGKgucW2nplUnATLt2izo0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MdXvA/btr1bfpqfq4/SGKgucW2nplUnATLt2izo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMdXvA%2Fbtr1bfpqfq4%2FSGKgucW2nplUnATLt2izo0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;538&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=531s&quot;&gt;(08:51)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Left Similiarity + Right Similarity - Root Similarity를 수행하여 Gain 값을 구한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnf0FA/btr02yXuOf2/lngrzB3yUcCF68fuLxmKq1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnf0FA/btr02yXuOf2/lngrzB3yUcCF68fuLxmKq1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnf0FA/btr02yXuOf2/lngrzB3yUcCF68fuLxmKq1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnf0FA%2Fbtr02yXuOf2%2FlngrzB3yUcCF68fuLxmKq1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;534&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=576s&quot;&gt;(09:36)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FhFmz/btr1nDvZnfQ/CjqZssykGDZnAZIbWLIHQ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FhFmz/btr1nDvZnfQ/CjqZssykGDZnAZIbWLIHQ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FhFmz/btr1nDvZnfQ/CjqZssykGDZnAZIbWLIHQ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFhFmz%2Fbtr1nDvZnfQ%2FCjqZssykGDZnAZIbWLIHQ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;956&quot; height=&quot;532&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=624s&quot;&gt;(10:24)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다른 값을 root node 로 할 때의 Gain 도 구해보았다. 각각 4, 56.33를 얻었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 결과 &amp;lt;15 일 때 Gain 값이 가장 높아 tree로 사용하기 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bafdiE/btr1fOkzKYz/GeeEC8tKYhfqBmsdJVrkoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bafdiE/btr1fOkzKYz/GeeEC8tKYhfqBmsdJVrkoK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bafdiE/btr1fOkzKYz/GeeEC8tKYhfqBmsdJVrkoK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbafdiE%2Fbtr1fOkzKYz%2FGeeEC8tKYhfqBmsdJVrkoK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;778&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=716s&quot;&gt;(11:56)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 후, Dosage &amp;lt; 22.5 로 구분한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 Dosage &amp;lt; 22.5 의 Gain 은 28.17이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpuFNv/btr1bfpqfpA/1UF5xLm6QVjQyLZiCZ7ea1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpuFNv/btr1bfpqfpA/1UF5xLm6QVjQyLZiCZ7ea1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpuFNv/btr1bfpqfpA/1UF5xLm6QVjQyLZiCZ7ea1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpuFNv%2Fbtr1bfpqfpA%2F1UF5xLm6QVjQyLZiCZ7ea1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;486&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=741s&quot;&gt;(12:21)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4DDgQ/btr07z2PE7v/iQLrynFfHrNpaXvZAXpks0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4DDgQ/btr07z2PE7v/iQLrynFfHrNpaXvZAXpks0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4DDgQ/btr07z2PE7v/iQLrynFfHrNpaXvZAXpks0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4DDgQ%2Fbtr07z2PE7v%2FiQLrynFfHrNpaXvZAXpks0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;774&quot; height=&quot;84&quot; data-origin-width=&quot;774&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;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=746s&quot;&gt;(12:26)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Dosage&amp;gt; 30 으로 하면 Gain이 140.17이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 Dosage&amp;lt;30 을 tree로 선정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradient Boost와 달리 XGBoost 는 tree 자체를 Prune 하는 기능이 있다. 이를 통해 성능 나쁜 Tree는 버려버리는 것이다. 굉장히 타당한 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 gamma 라는 term이 등장한다. 지정한 gamma 값으로 Gain - gamma 를 하여 값이 negative가 되면 해당 tree를 prune 한다. (실제로는 XGBoost가 module 내에서 자동으로 값을 iterate하며 cross validation 을 수행하고, 그 중 가장 좋은 값으로 선택한다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAtbtU/btr1vsm3kai/Pxc5KJxIt3x21muHS6mTY0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAtbtU/btr1vsm3kai/Pxc5KJxIt3x21muHS6mTY0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAtbtU/btr1vsm3kai/Pxc5KJxIt3x21muHS6mTY0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAtbtU%2Fbtr1vsm3kai%2FPxc5KJxIt3x21muHS6mTY0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;974&quot; height=&quot;360&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=850s&quot;&gt;(14:10)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 유의할 점은 만약 자식 노드의 Gain - Gamma 가 양수라면 부모노드 - Gamma 가 음수여도 Tree를 prune하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qZmTr/btr06Xii1YT/hL0pqbFbOFoOkoqvoGhA8K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qZmTr/btr06Xii1YT/hL0pqbFbOFoOkoqvoGhA8K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qZmTr/btr06Xii1YT/hL0pqbFbOFoOkoqvoGhA8K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqZmTr%2Fbtr06Xii1YT%2FhL0pqbFbOFoOkoqvoGhA8K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=929s&quot;&gt;(15:29)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 잠시 나왔던 lambda 값이 0이 아닌 값이 주어진다면 어떻게 될까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxg6PT/btr1pWPBRt5/60OFh2vlIBCwXwRo3sPT1k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxg6PT/btr1pWPBRt5/60OFh2vlIBCwXwRo3sPT1k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxg6PT/btr1pWPBRt5/60OFh2vlIBCwXwRo3sPT1k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxg6PT%2Fbtr1pWPBRt5%2F60OFh2vlIBCwXwRo3sPT1k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=944s&quot;&gt;(15:44)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b35Qsb/btr1lwKAkjA/cNXkJTkJskHkGR9zYsbl2k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b35Qsb/btr1lwKAkjA/cNXkJTkJskHkGR9zYsbl2k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b35Qsb/btr1lwKAkjA/cNXkJTkJskHkGR9zYsbl2k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb35Qsb%2Fbtr1lwKAkjA%2FcNXkJTkJskHkGR9zYsbl2k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=955s&quot;&gt;(15:55)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2qSJO/btr07AUX0fu/VUPwkHmtuGaV1wPNmMLwdk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2qSJO/btr07AUX0fu/VUPwkHmtuGaV1wPNmMLwdk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2qSJO/btr07AUX0fu/VUPwkHmtuGaV1wPNmMLwdk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2qSJO%2Fbtr07AUX0fu%2FVUPwkHmtuGaV1wPNmMLwdk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=965s&quot;&gt;(16:05)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;leaf에 있는 Sample 개수에 따라 값이 조정 정도가 다르다. 작을 수록 조정 되는 정도가 크다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPFLn0/btr1vstON68/JpiBKZW3pcLuFpH58WSdpk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPFLn0/btr1vstON68/JpiBKZW3pcLuFpH58WSdpk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPFLn0/btr1vstON68/JpiBKZW3pcLuFpH58WSdpk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPFLn0%2Fbtr1vstON68%2FJpiBKZW3pcLuFpH58WSdpk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=1010s&quot;&gt;(16:50)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 이로인한 Gain 값도 크게 작아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면 regularization term을 통해 Gain 값을 조정하고 결국 트리가 prune 되도록 할 수 있다. 이 또한 사용자가 manual 하게 주거나, cross validation 과정을 통해 자동으로 XGBoost가 선택할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckDFjy/btr1vsHm9b0/azSpXSpqjY2U3gTjevsjO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckDFjy/btr1vsHm9b0/azSpXSpqjY2U3gTjevsjO0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckDFjy/btr1vsHm9b0/azSpXSpqjY2U3gTjevsjO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckDFjy%2Fbtr1vsHm9b0%2FazSpXSpqjY2U3gTjevsjO0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=1183s&quot;&gt;(19:43)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Output Value 를 구하는 방법은 Similarity 와 거의 유사하나, square을 하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A9Y6d/btr06VY8bIr/cdPe7TYOGVtjg3PbGdQ5I1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A9Y6d/btr06VY8bIr/cdPe7TYOGVtjg3PbGdQ5I1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A9Y6d/btr06VY8bIr/cdPe7TYOGVtjg3PbGdQ5I1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA9Y6d%2Fbtr06VY8bIr%2FcdPe7TYOGVtjg3PbGdQ5I1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=1323s&quot;&gt;(22:03)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 후, Output * learning Rate + initial Guess 로 guess을 업데이트 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2dJoX/btr02za0blx/FsgCsJNRIg2UFOFfVkUwH1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2dJoX/btr02za0blx/FsgCsJNRIg2UFOFfVkUwH1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2dJoX/btr02za0blx/FsgCsJNRIg2UFOFfVkUwH1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2dJoX%2Fbtr02za0blx%2FFsgCsJNRIg2UFOFfVkUwH1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=1373s&quot;&gt;(22:53)&lt;/a&gt;&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-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xtQxY/btr1fOERswc/lMMoC3RF7hAgCONoKemizk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xtQxY/btr1fOERswc/lMMoC3RF7hAgCONoKemizk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xtQxY/btr1fOERswc/lMMoC3RF7hAgCONoKemizk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxtQxY%2Fbtr1fOERswc%2FlMMoC3RF7hAgCONoKemizk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OtD8wVaFm6E&amp;amp;t=1420s&quot;&gt;(23:40)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝.&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/274</guid>
      <comments>https://itforfun.tistory.com/274#entry274comment</comments>
      <pubDate>Wed, 1 Mar 2023 14:00:17 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(7) - 특이값 분해 (SVD)</title>
      <link>https://itforfun.tistory.com/272</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 글은 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot;&gt;https://angeloyeo.github.io/2019/08/01/SVD.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677340320098&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;특이값 분해(SVD) - 공돌이의 수학정리노트&quot; data-og-description=&quot;&quot; data-og-host=&quot;angeloyeo.github.io&quot; data-og-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;특이값 분해(SVD) - 공돌이의 수학정리노트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;angeloyeo.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;내용을 이해하되, 중간중간 기본적 개념을 조금 더 추가한 글입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특이값 분해(Singular Value Decomposition, SVD)는 임의로 $m /times n$ 차원의 행렬 $A$에 대하여 &lt;b&gt;다음과 같이 행렬을 분해할 수 있다는 '행렬 분해' 방법 중 하나이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;차&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;원 축소 기법 &lt;/span&gt;&lt;a style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px; color: #000000;&quot; href=&quot;https://itforfun.tistory.com/271&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PCA&lt;/a&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 에 대해 살펴보았었는데, SVD 도 차원 축소 기법 중 하나이다. (차원 추출)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추천 시스템 관련 글에서 SVD 즉 특이값 분해를 다뤘었기에 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/180&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;그 글&lt;/a&gt;만 참고해도 좋다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$A = U \Sigma V^T$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A 라는 행렬을 다음과 같이 $U, V^T$ 로 분해 가능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.44.png&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkkxdl%2Fbtr0GaWI0mP%2F17ACTYdMHTmfEAqs8oNMK1%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;278&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.44.png&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;226&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.55.png&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be0mrI/btr0KSUQhKg/jGwotk0wjjgrDXcJLGMh7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be0mrI/btr0KSUQhKg/jGwotk0wjjgrDXcJLGMh7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be0mrI/btr0KSUQhKg/jGwotk0wjjgrDXcJLGMh7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe0mrI%2Fbtr0KSUQhKg%2FjGwotk0wjjgrDXcJLGMh7k%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;231&quot; height=&quot;55&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.55.png&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;orthogonal: 직교&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;orthogonal matrix는 모든 column vector가 자기 자신을 제외한 나머지 모든 column vector들과 직교이면서 크기가 1인 단위 벡터들로 구성된 행렬&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터가 서로 직교할 때, 우리는 직교벡터라 한다. 이 때 각 벡터의 내적은 0 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정규직교(orthonormal)벡터: 두 벡터가 직교벡터이면서 각 벡터의 길이는 1인 방향성분만을 나타내는 벡터&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단위 벡터는 자기 자신과 곱하면 즉 내적하면 결과값이 1이다. (단위벡터의 norm이 1이기에 당연한 결과이다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자기 사진을 제외한 나머지 모든 벡터들과는 직교한다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 자기 자신을 제외한 나머지 벡터들과의 내적 결과가 0이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.24.27.png&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7yQZg/btr0IuAbvO5/eBkN6QCGPoizBJlve4VxYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7yQZg/btr0IuAbvO5/eBkN6QCGPoizBJlve4VxYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7yQZg/btr0IuAbvO5/eBkN6QCGPoizBJlve4VxYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7yQZg%2Fbtr0IuAbvO5%2FeBkN6QCGPoizBJlve4VxYk%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;461&quot; height=&quot;369&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.24.27.png&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;sin과 cos 으로 이루어진 벡터를 나타낸다. 이들 벡터 a,b의 길이는 각각 1이며 둘 사이의 각도는 90도 이다. 두 벡터가 직교하며 각 벡터의 길이는 1로써 방향성분만 나타내므로 이들은 정규직교벡터이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이러한 정규직교벡터들은 행렬의 column vector에 삽입하면 직교행렬이 된다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 Q 를 직교행렬이라고 했을 때 orthonormal vector들의 Q의 정규직교기저가 되는 것이다. 아래의 그림 같이 말이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이러한 정규직교기저는 선형대수의 행렬 계산에 있어 좋은 결과를 보여준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.32.51.png&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b70ITe/btr0ObNmVvk/GUv8PKU1KKTsKinDFunxP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b70ITe/btr0ObNmVvk/GUv8PKU1KKTsKinDFunxP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b70ITe/btr0ObNmVvk/GUv8PKU1KKTsKinDFunxP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb70ITe%2Fbtr0ObNmVvk%2FGUv8PKU1KKTsKinDFunxP0%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;159&quot; height=&quot;200&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.32.51.png&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$q_1 ... q_n$: 각각은 orthnormal vector&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, $q_i$ 는 자기 자신을 제외한 나머지 벡터들과 직교하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.34.13.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdviKHr%2Fbtr0VLghFH9%2F2qvHEMXWwZTvyk88MkbAP1%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;386&quot; height=&quot;101&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.34.13.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Q transpose와 Q 를 곱하면 Identity matrix가 나타난다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(직교 벡터끼리의 곱은 0이고, 자기자신의 곱은 단위벡터의 내적이기에 1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정리하자면 정규직교 벡터를 column으로 갖는 직교행렬을 배웠다. 정규 네임이 orthonormal matrix 여야 할 것 같지만, orthogonoal matrix 라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;직교행렬의 특성&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 정방행렬인 직교행렬은 transpose 가 역행렬과 동일하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단위 행렬의 각 column vector는 자기 자신을 제외한 나머지 벡터와 90도의 각도를 이루면서 크기가 1이어야 한다. 이를 시각화하면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.07.16.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk4GvH/btr0KR9wsqh/StVM7qWHtb3UMmRWuGIVBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk4GvH/btr0KR9wsqh/StVM7qWHtb3UMmRWuGIVBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk4GvH/btr0KR9wsqh/StVM7qWHtb3UMmRWuGIVBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk4GvH%2Fbtr0KR9wsqh%2FStVM7qWHtb3UMmRWuGIVBK%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;389&quot; height=&quot;954&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.07.16.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;954&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.34.13.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dviKHr/btr0VLghFH9/2qvHEMXWwZTvyk88MkbAP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdviKHr%2Fbtr0VLghFH9%2F2qvHEMXWwZTvyk88MkbAP1%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;386&quot; height=&quot;101&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.34.13.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;248&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;span style=&quot;color: #000000;&quot;&gt;아까 살펴보았듯이, 정방행렬인 상황에서는 자기 자신과 곱해진 경우는 1, 이외에는 직교로 0이 되므로 단위행렬을 만들어내고, 이는 결국 역행렬의 특성과 동일하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 모든 colum이 직교 벡터를 가지나 각 벡터의 크기가 1이 아닐 때 직교 행렬을 만드는법&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.09.54.png&quot; data-origin-width=&quot;222&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmE0ky/btr0DVTaLyy/xh1aOex1Ls2Os8gQxMsjq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmE0ky/btr0DVTaLyy/xh1aOex1Ls2Os8gQxMsjq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmE0ky/btr0DVTaLyy/xh1aOex1Ls2Os8gQxMsjq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmE0ky%2Fbtr0DVTaLyy%2Fxh1aOex1Ls2Os8gQxMsjq1%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;123&quot; height=&quot;146&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.09.54.png&quot; data-origin-width=&quot;222&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터의 크기로 행렬 원소 전체를 나누어주면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.11.08.png&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beLL1y/btr0VKhok6S/teHZs8OfcaLGT5TEnKhDbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beLL1y/btr0VKhok6S/teHZs8OfcaLGT5TEnKhDbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beLL1y/btr0VKhok6S/teHZs8OfcaLGT5TEnKhDbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeLL1y%2Fbtr0VKhok6S%2FteHZs8OfcaLGT5TEnKhDbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;404&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.11.08.png&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서는 column $q_1, q_2$의 크기가 같아서 동일하게 나눠줬지만, 다를 경우에는 각자의 크기로 나눠주면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직교 행렬을 만드는 방법으로 그람-슈미트 과정이 있다. 본 내용은 추후 다시 다룬다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;직교 행렬 사용의 장점&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추후 읽어보자&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://twlab.tistory.com/37&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://twlab.tistory.com/37&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://twlab.tistory.com/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://twlab.tistory.com/34&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단위 벡터:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;크기가 1인 방향만이 의미를 갖는 벡터&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.14.57.png&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lloce/btr0H6TSHSC/HD3m7VVwAkFWMkrrp4CYm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lloce/btr0H6TSHSC/HD3m7VVwAkFWMkrrp4CYm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lloce/btr0H6TSHSC/HD3m7VVwAkFWMkrrp4CYm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flloce%2Fbtr0H6TSHSC%2FHD3m7VVwAkFWMkrrp4CYm1%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;81&quot; height=&quot;57&quot; data-filename=&quot;스크린샷 2023-02-25 오후 10.14.57.png&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;164&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;span style=&quot;color: #000000;&quot;&gt;※Diagonal Matrix&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대각 행렬 : 행렬은 선형 변환이다. 이 중, diagonal matrix 는 벡터의 크기를 조정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;scaling factor를 0으로 하면 차원을 축소하는 것도 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2oA96/btr0OaVhQZY/hYruzqSntzvGANLsAsmtlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2oA96/btr0OaVhQZY/hYruzqSntzvGANLsAsmtlk/img.png&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;878&quot; data-is-animation=&quot;false&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.20.07.png&quot; style=&quot;width: 32.5178%; margin-right: 10px;&quot; data-widthpercent=&quot;33.29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2oA96/btr0OaVhQZY/hYruzqSntzvGANLsAsmtlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2oA96%2Fbtr0OaVhQZY%2FhYruzqSntzvGANLsAsmtlk%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;724&quot; height=&quot;878&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhzZvR/btr0OaHKwDA/Se2zYaXR2RtJgbqkQ393MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhzZvR/btr0OaHKwDA/Se2zYaXR2RtJgbqkQ393MK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;880&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.20.21.png&quot; style=&quot;width: 32.892%; margin-right: 10px;&quot; data-widthpercent=&quot;33.68&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhzZvR/btr0OaHKwDA/Se2zYaXR2RtJgbqkQ393MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhzZvR%2Fbtr0OaHKwDA%2FSe2zYaXR2RtJgbqkQ393MK%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;734&quot; height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJI0Z9/btr0NJKawVc/l0U5fHK601Tg9h7zTch76K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJI0Z9/btr0NJKawVc/l0U5fHK601Tg9h7zTch76K/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;880&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.20.34.png&quot; style=&quot;width: 32.2646%;&quot; data-widthpercent=&quot;33.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJI0Z9/btr0NJKawVc/l0U5fHK601Tg9h7zTch76K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJI0Z9%2Fbtr0NJKawVc%2Fl0U5fHK601Tg9h7zTch76K%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;880&quot;/&gt;&lt;/span&gt;&lt;/div&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bElM4R/btr0H7LYK2n/3pDnpqNU2BiCkxeT1ckKgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bElM4R/btr0H7LYK2n/3pDnpqNU2BiCkxeT1ckKgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bElM4R/btr0H7LYK2n/3pDnpqNU2BiCkxeT1ckKgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbElM4R%2Fbtr0H7LYK2n%2F3pDnpqNU2BiCkxeT1ckKgk%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;404&quot; height=&quot;137&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;374&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SVD의 기하학적 의미&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직교하는 벡터 집합에 대하여, 선형 변환 후에 그 크기는 변하지만, 여전히 직교할 수 있게 만드는 그 직교 벡터 집합은 무엇이고, 변형 후의 결과는 무엇인가?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 말의 뜻이 이해가 잘 안간다면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://angeloyeo.github.io/2019/08/01/SVD.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677327448887&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;특이값 분해(SVD) - 공돌이의 수학정리노트&quot; data-og-description=&quot;&quot; data-og-host=&quot;angeloyeo.github.io&quot; data-og-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;특이값 분해(SVD) - 공돌이의 수학정리노트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;angeloyeo.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 글에서 직접 시각화 툴을 선형 변환하며 직교가 유지되는 경우를 살펴보면 이해에 도움이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.17.37.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OloUV/btr0HtPhr53/EBY94ZUoLAjDLMK8IRagiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OloUV/btr0HtPhr53/EBY94ZUoLAjDLMK8IRagiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OloUV/btr0HtPhr53/EBY94ZUoLAjDLMK8IRagiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOloUV%2Fbtr0HtPhr53%2FEBY94ZUoLAjDLMK8IRagiK%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;211&quot; height=&quot;764&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.17.37.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;764&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.43.46.png&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgJYvk/btr0KHZ797m/K3xzCuvAzVkgVJmv4y28H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgJYvk/btr0KHZ797m/K3xzCuvAzVkgVJmv4y28H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgJYvk/btr0KHZ797m/K3xzCuvAzVkgVJmv4y28H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgJYvk%2Fbtr0KHZ797m%2FK3xzCuvAzVkgVJmv4y28H0%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;473&quot; height=&quot;462&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.43.46.png&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직교하는 벡터 x, y 가 있다고 할 때, 두 벡터가 선형 변환 한 결과 Ax, Ay 도 여전히 직교하는지 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 경우에는 Ax, Ay가 직교하지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzOBHq/btr0VLgjgG4/WkWk5psbKGplKuuFKCyz91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzOBHq/btr0VLgjgG4/WkWk5psbKGplKuuFKCyz91/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;332&quot; data-filename=&quot;스크린샷 2023-02-25 오후 11.44.44.png&quot; width=&quot;164&quot; height=&quot;157&quot; data-widthpercent=&quot;50.01&quot; style=&quot;width: 49.4305%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzOBHq/btr0VLgjgG4/WkWk5psbKGplKuuFKCyz91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzOBHq%2Fbtr0VLgjgG4%2FWkWk5psbKGplKuuFKCyz91%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;346&quot; height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lhsA9/btr0NJJ9LuT/O5TLAhiqPaaoGrxF29rgxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lhsA9/btr0NJJ9LuT/O5TLAhiqPaaoGrxF29rgxk/img.png&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;336&quot; data-is-animation=&quot;false&quot; width=&quot;182&quot; height=&quot;175&quot; style=&quot;width: 49.4067%;&quot; data-widthpercent=&quot;49.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lhsA9/btr0NJJ9LuT/O5TLAhiqPaaoGrxF29rgxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlhsA9%2Fbtr0NJJ9LuT%2FO5TLAhiqPaaoGrxF29rgxk%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;350&quot; height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 위 그림과 같이 잘 조정하다보면 어떤 경우에는 x,y 도 직교하고 Ax, Ay 도 직교한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 경우 우리는 벡터 x,y 를 가지고 singular vector decomposion 을 했다고 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기하학적 의미를 다시 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직교하는 &lt;b&gt;벡터 집합&lt;/b&gt;에 대하여, 선형 변환 후에 그 크기는 변하지만, 여전히 직교할 수 있게 만드는 그 직교 &lt;b&gt;벡터 집합&lt;/b&gt;은 무엇이고, 변형 후의 결과는 무엇인가?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터 집합이란, 결국 column 벡터를 갖는 &lt;b&gt;행렬&lt;/b&gt;을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결국 정리하자면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.44.png&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkkxdl/btr0GaWI0mP/17ACTYdMHTmfEAqs8oNMK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkkxdl%2Fbtr0GaWI0mP%2F17ACTYdMHTmfEAqs8oNMK1%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;278&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2023-02-25 오후 9.15.44.png&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직교하는 벡터 집합: $V$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선형 변환: $A$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;크기는 변하지만 여전히 직교할 수 있게 만드는 직교 벡터 집합: $\Sigma$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;변경 후의 결과: $U$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$U = AV \cdot \Sigma$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$U \Sigma^T = AV$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$U \Sigma^T V^T = A$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$A = U \Sigma V^T$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(선형변환을 한 직교하는 벡터 집합(행렬)에 orthogonal한 벡터 집합을 곱해도 여전히 직교하는 벡터 집합이 존재한다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;U, V 계산법은 eigenvalue decomposition 이라는 기법을 이용해야 한다. 추후 정리하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-26 오전 12.41.27.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRmnnd/btr0DVZWNKX/w2FqGZQevVleA9GMQFOGM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRmnnd/btr0DVZWNKX/w2FqGZQevVleA9GMQFOGM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRmnnd/btr0DVZWNKX/w2FqGZQevVleA9GMQFOGM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRmnnd%2Fbtr0DVZWNKX%2Fw2FqGZQevVleA9GMQFOGM0%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;261&quot; data-filename=&quot;edited_스크린샷 2023-02-26 오전 12.41.27.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;524&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.42.48.png&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djHAll/btr0KGz85T3/BkdQykHnkuyi2hkt6mrzE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djHAll/btr0KGz85T3/BkdQykHnkuyi2hkt6mrzE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djHAll/btr0KGz85T3/BkdQykHnkuyi2hkt6mrzE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjHAll%2Fbtr0KGz85T3%2FBkdQykHnkuyi2hkt6mrzE0%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;698&quot; height=&quot;327&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.42.48.png&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 결과물을 보면, sigma가 마치 각 항에 weight 의 역할을 하는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 이 scaling fator 가 A가 가지고 있는 matrix 의 정보량을 결정해준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, SVD 방법을 통해 A 라는 임의의 행렬을 여러개의 A 행렬과 동일한 크기를 갖는 여러개의 행렬로 분해해서 생각할 수 있는데, 분해된 각 행렬의 원소의 값의 크기는 sigma 의 값의 크기에 의해 결정된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다시말해 SVD를 이용해 임의의 행렬 A 를 정보량에 따라 여러 layer로 쪼개서 생각할 수 있게 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;특이값 분해의 활용&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특이값 분해는 분해되는 과정보다는 분해된 행렬을 다시 조합하는 과정에서 그 응용력이 빛을 발한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존의 $\Sigma, U, V^T$ 로 분해되어 있던 A 행렬을 특이값 p개만을 이용해 $A^'$ 라는 행렬로 부분 복원 할 수 있다. 위에서 말했던 것 특이값의 크기에 따라 A 의 정보량이 결정되기 때문에 &lt;b&gt;값이 큰 몇개의 특이값만을 가지고도 충분히 유용한 정보를 유지할 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;즉, 이를 통해 차원을 축소할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.49.17.png&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LPV9s/btr0GLpdY7I/sQVMETaHwBYDkpWBtoUIGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LPV9s/btr0GLpdY7I/sQVMETaHwBYDkpWBtoUIGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LPV9s/btr0GLpdY7I/sQVMETaHwBYDkpWBtoUIGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLPV9s%2Fbtr0GLpdY7I%2FsQVMETaHwBYDkpWBtoUIGk%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;680&quot; height=&quot;241&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.49.17.png&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;644&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wmvNv/btr0DjsZGLv/fS3ikEPGqZyH2kOrKkLZGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wmvNv/btr0DjsZGLv/fS3ikEPGqZyH2kOrKkLZGk/img.png&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;1090&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4048%; margin-right: 10px;&quot; data-widthpercent=&quot;33.18&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wmvNv/btr0DjsZGLv/fS3ikEPGqZyH2kOrKkLZGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwmvNv%2Fbtr0DjsZGLv%2FfS3ikEPGqZyH2kOrKkLZGk%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;1056&quot; height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjSYky/btr0KRVZfI0/5S8zlgzoH6465kMjl9gAlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjSYky/btr0KRVZfI0/5S8zlgzoH6465kMjl9gAlk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1120&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.50.01.png&quot; data-widthpercent=&quot;33.02&quot; style=&quot;width: 32.2535%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjSYky/btr0KRVZfI0/5S8zlgzoH6465kMjl9gAlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjSYky%2Fbtr0KRVZfI0%2F5S8zlgzoH6465kMjl9gAlk%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;1080&quot; height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0AmPG/btr0ObUcuMe/WzGXFVwvTYPjPGksM3AzBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0AmPG/btr0ObUcuMe/WzGXFVwvTYPjPGksM3AzBk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;1084&quot; data-filename=&quot;스크린샷 2023-02-26 오전 12.50.10.png&quot; style=&quot;width: 33.0161%;&quot; data-widthpercent=&quot;33.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0AmPG/btr0ObUcuMe/WzGXFVwvTYPjPGksM3AzBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0AmPG%2Fbtr0ObUcuMe%2FWzGXFVwvTYPjPGksM3AzBk%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;1070&quot; height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정보를 다 반영 안해도 상당한 정보를 얻을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(입출력의 차원이 다른 변환의 경우에도 사용 가능하다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 블로그 참고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://angeloyeo.github.io/2019/08/01/SVD.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677340308955&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;특이값 분해(SVD) - 공돌이의 수학정리노트&quot; data-og-description=&quot;&quot; data-og-host=&quot;angeloyeo.github.io&quot; data-og-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://angeloyeo.github.io/2019/08/01/SVD.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;특이값 분해(SVD) - 공돌이의 수학정리노트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;angeloyeo.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마지막으로 해당 개념은 추천시스템에서도 활용된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHSdeq/btr0HRvEmXc/RGZjk12zXi8KAfpEBoowjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHSdeq/btr0HRvEmXc/RGZjk12zXi8KAfpEBoowjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHSdeq/btr0HRvEmXc/RGZjk12zXi8KAfpEBoowjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHSdeq%2Fbtr0HRvEmXc%2FRGZjk12zXi8KAfpEBoowjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;456&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;456&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;span style=&quot;color: #000000;&quot;&gt;User item 정보를 User, Item 그리고 차원을 맞춰주며 동시에 중요도에 따라 scaling 하는 $\Sigma$ 행렬로 분해할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 User, Item 의 행렬은 orthogonal 행렬이다. $\Sigma$ 는 diagonal matrix 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분석 후, 중요도에 따라 K의 factor만을 선정하여 $\hat{R}$을 복원한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;계산방법은 아래의 블로그 내용을 참고하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://ys-cs17.tistory.com/52&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ys-cs17.tistory.com/52&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677341114077&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;SVD의 기본 이론과 이해 및 활용&quot; data-og-description=&quot;SVD (Singular Value Decomposition) 정의: 임의의 $m * n$ 차원 행렬 A에 대하여 다음과 같이 행렬 분해를 할 수 있다는 행렬 분해 방법 중 하나이다. $$ A = U\Sigma V^T $$ $A: m \times n$ rectangular matrix $U: m \times n$ or&quot; data-og-host=&quot;ys-cs17.tistory.com&quot; data-og-source-url=&quot;https://ys-cs17.tistory.com/52&quot; data-og-url=&quot;https://ys-cs17.tistory.com/52&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CGxvy/hyRJGCJUd2/9NdDej7le39ZFkVLBYkXHk/img.png?width=410&amp;amp;height=76&amp;amp;face=0_0_410_76,https://scrap.kakaocdn.net/dn/lzQJy/hyRJUAXGzg/EvXTxHjKkL9b32KIq8IhZk/img.png?width=410&amp;amp;height=76&amp;amp;face=0_0_410_76,https://scrap.kakaocdn.net/dn/PZbvP/hyRKVyfqEF/4Ks3qYGo74Zf2X3K4FIAk0/img.jpg?width=2000&amp;amp;height=1500&amp;amp;face=0_0_2000_1500&quot;&gt;&lt;a href=&quot;https://ys-cs17.tistory.com/52&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ys-cs17.tistory.com/52&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CGxvy/hyRJGCJUd2/9NdDej7le39ZFkVLBYkXHk/img.png?width=410&amp;amp;height=76&amp;amp;face=0_0_410_76,https://scrap.kakaocdn.net/dn/lzQJy/hyRJUAXGzg/EvXTxHjKkL9b32KIq8IhZk/img.png?width=410&amp;amp;height=76&amp;amp;face=0_0_410_76,https://scrap.kakaocdn.net/dn/PZbvP/hyRKVyfqEF/4Ks3qYGo74Zf2X3K4FIAk0/img.jpg?width=2000&amp;amp;height=1500&amp;amp;face=0_0_2000_1500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;SVD의 기본 이론과 이해 및 활용&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SVD (Singular Value Decomposition) 정의: 임의의 $m * n$ 차원 행렬 A에 대하여 다음과 같이 행렬 분해를 할 수 있다는 행렬 분해 방법 중 하나이다. $$ A = U\Sigma V^T $$ $A: m \times n$ rectangular matrix $U: m \times n$ or&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ys-cs17.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/272</guid>
      <comments>https://itforfun.tistory.com/272#entry272comment</comments>
      <pubDate>Sun, 26 Feb 2023 01:06:32 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(6) - PCA</title>
      <link>https://itforfun.tistory.com/271</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;들어가며&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;feature의 개수가 1, 2개인 경우에는 시각적으로 표현하기가 쉽다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 feature 개수가 많아지면 시각적으로 표현이 불가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 feature 개수가 많아지면, 데이터를 학습의 sparsity 도 높아지고, 이로 인해 저장 공간, 학습 속도 이슈를 마주한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직관적으로 생각해도 feature간 중요도 차이가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이로 인해 차원 축소를 하게 되는데, 차원 축소는 feature 선택과 feature 추출 두가지 방식이 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 중 feature 선택에 해당하는 PCA 를 간단하게 설명해본다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 내용은 StatQuest 의 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.youtube.com/watch?v=FgakZw6K1QQ&quot;&gt;https://www.youtube.com/watch?v=FgakZw6K1QQ&lt;/a&gt; 영상을 직접적으로 참고하여 작성하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;본문&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.14.28.png&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lIwZx/btr0JAGnd2j/zVNuJpIPWJ7XQZM72y5fX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lIwZx/btr0JAGnd2j/zVNuJpIPWJ7XQZM72y5fX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lIwZx/btr0JAGnd2j/zVNuJpIPWJ7XQZM72y5fX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlIwZx%2Fbtr0JAGnd2j%2FzVNuJpIPWJ7XQZM72y5fX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;566&quot; height=&quot;722&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.14.28.png&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;722&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결과를 미리 보자면 다음과 같이 feature가 4개인 데이터가 주어졌을 때, PCA 를 통해 주성분 2개를 골라내고, 그 두개가 데이터를 얼마나 설명하는지 수치적으로 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;feature 가 두개인 데이터로 내용을 쉽게 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.17.06.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdj6Jk/btr0ANOcqdJ/e8Ls5mjPM4P1CkKtnMJnN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdj6Jk/btr0ANOcqdJ/e8Ls5mjPM4P1CkKtnMJnN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdj6Jk/btr0ANOcqdJ/e8Ls5mjPM4P1CkKtnMJnN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdj6Jk%2Fbtr0ANOcqdJ%2Fe8Ls5mjPM4P1CkKtnMJnN0%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;154&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.17.06.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;318&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RHEvg/btr0GbgwbVE/WCxKoZu7wIlcKQy0EKC5Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RHEvg/btr0GbgwbVE/WCxKoZu7wIlcKQy0EKC5Hk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;406&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.16.30.png&quot; style=&quot;width: 34.456%; margin-right: 10px;&quot; data-widthpercent=&quot;35.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RHEvg/btr0GbgwbVE/WCxKoZu7wIlcKQy0EKC5Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRHEvg%2Fbtr0GbgwbVE%2FWCxKoZu7wIlcKQy0EKC5Hk%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;518&quot; height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qWMZF/btr0DU68TiL/uvkX8fR9YqFsak43nPkZuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qWMZF/btr0DU68TiL/uvkX8fR9YqFsak43nPkZuk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;402&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.16.35.png&quot; style=&quot;width: 31.1712%; margin-right: 10px;&quot; data-widthpercent=&quot;31.91&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qWMZF/btr0DU68TiL/uvkX8fR9YqFsak43nPkZuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqWMZF%2Fbtr0DU68TiL%2FuvkX8fR9YqFsak43nPkZuk%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;464&quot; height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBURQy/btr0Gb8Bvzh/acbbsElxrKauIR7AzkUVU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBURQy/btr0Gb8Bvzh/acbbsElxrKauIR7AzkUVU1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;450&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.16.41.png&quot; data-widthpercent=&quot;32.81&quot; style=&quot;width: 32.0472%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBURQy/btr0Gb8Bvzh/acbbsElxrKauIR7AzkUVU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBURQy%2Fbtr0Gb8Bvzh%2FacbbsElxrKauIR7AzkUVU1%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;534&quot; height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;먼저 각 feature 에 평균 값을 구하고, 평균값에 해당하는 좌표를 찾는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;span style=&quot;color: #000000;&quot;&gt;그 좌표를 기준으로 데이터를 평행이동한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drrelR/btr0AMBO1Qv/P3A139f85DZqJl15LCujl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drrelR/btr0AMBO1Qv/P3A139f85DZqJl15LCujl1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;820&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.18.43.png&quot; style=&quot;width: 50.2526%; margin-right: 10px;&quot; data-widthpercent=&quot;50.84&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drrelR/btr0AMBO1Qv/P3A139f85DZqJl15LCujl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrrelR%2Fbtr0AMBO1Qv%2FP3A139f85DZqJl15LCujl1%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;1294&quot; height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf5V0y/btr0IwEcYIB/Yae1MSsaKAHt1aBry7Apz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf5V0y/btr0IwEcYIB/Yae1MSsaKAHt1aBry7Apz1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;818&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.18.53.png&quot; style=&quot;width: 48.5846%;&quot; data-widthpercent=&quot;49.16&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf5V0y/btr0IwEcYIB/Yae1MSsaKAHt1aBry7Apz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf5V0y%2Fbtr0IwEcYIB%2FYae1MSsaKAHt1aBry7Apz1%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;1248&quot; height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;평행 이동한다해서 데이터의 특성이 망가지는 일은 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 후 데이터를 가장 잘 설명하는 선을 찾는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5wBKe/btr0GKDbuDv/YpKRP4pQrGIS1KYM904w3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5wBKe/btr0GKDbuDv/YpKRP4pQrGIS1KYM904w3K/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;818&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.19.45.png&quot; width=&quot;437&quot; height=&quot;266&quot; style=&quot;width: 47.4208%; margin-right: 10px;&quot; data-widthpercent=&quot;47.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5wBKe/btr0GKDbuDv/YpKRP4pQrGIS1KYM904w3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5wBKe%2Fbtr0GKDbuDv%2FYpKRP4pQrGIS1KYM904w3K%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;1346&quot; height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl5RoM/btr0IwqEsK4/WoC1YhWyYK2tcOfhII60ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl5RoM/btr0IwqEsK4/WoC1YhWyYK2tcOfhII60ok/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;806&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.20.06.png&quot; style=&quot;width: 51.4164%;&quot; data-widthpercent=&quot;52.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl5RoM/btr0IwqEsK4/WoC1YhWyYK2tcOfhII60ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl5RoM%2Fbtr0IwqEsK4%2FWoC1YhWyYK2tcOfhII60ok%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;1438&quot; height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 데이터 샘플과 선과의 거리를 최소화 하기 위하여 '&lt;b&gt;b' &lt;/b&gt;를 작게 만들어야 한다고 생각하나,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제로는 계산의 편리함을 위하여 c 의 길이를 최대한으로 방식으로 한다. (c 가 길수록 b가 짧아진다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ROOrp/btr0Iu7uQxB/aj9zTgMAldubaK0xwLseD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ROOrp/btr0Iu7uQxB/aj9zTgMAldubaK0xwLseD1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;786&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.45.25.png&quot; style=&quot;width: 48.5463%; margin-right: 10px;&quot; data-widthpercent=&quot;49.12&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ROOrp/btr0Iu7uQxB/aj9zTgMAldubaK0xwLseD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FROOrp%2Fbtr0Iu7uQxB%2Faj9zTgMAldubaK0xwLseD1%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;1400&quot; height=&quot;786&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCFe43/btr0HStXHMp/sL5o3XbN4K6JWQyLVAKrn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCFe43/btr0HStXHMp/sL5o3XbN4K6JWQyLVAKrn1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;788&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.46.00.png&quot; style=&quot;width: 50.2909%;&quot; data-widthpercent=&quot;50.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCFe43/btr0HStXHMp/sL5o3XbN4K6JWQyLVAKrn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCFe43%2Fbtr0HStXHMp%2FsL5o3XbN4K6JWQyLVAKrn1%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;1454&quot; height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.46.36.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTZIZf%2Fbtr0DitvabS%2FdPKrRWdM1mBFFk7KpoqIo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;41&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.46.36.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SS 를 최대화 하는 선을 찾자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터를 설명하는 해당 선을 Principle Component 1의 약자 &amp;nbsp;PC1 이라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.49.46.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRgVrd/btr0BEDAZwZ/PABsrEcJJCbd1dN1mXqkGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRgVrd/btr0BEDAZwZ/PABsrEcJJCbd1dN1mXqkGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRgVrd/btr0BEDAZwZ/PABsrEcJJCbd1dN1mXqkGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRgVrd%2Fbtr0BEDAZwZ%2FPABsrEcJJCbd1dN1mXqkGk%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;379&quot; height=&quot;232&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.49.46.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC 1 의 slope 가 0.25라는 의미는 &lt;b&gt;x 좌표로 4만큼 갈 때, y 좌표로 1만큼 올라간다는 뜻이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;진한 글씨로 적힌 부분을 우리는 linear combination이라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kKS1g/btr0KGM8RyI/OgDbefM1sSMljmTma4fspK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kKS1g/btr0KGM8RyI/OgDbefM1sSMljmTma4fspK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;802&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.51.16.png&quot; style=&quot;width: 31.6024%; margin-right: 10px;&quot; data-widthpercent=&quot;32.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kKS1g/btr0KGM8RyI/OgDbefM1sSMljmTma4fspK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkKS1g%2Fbtr0KGM8RyI%2FOgDbefM1sSMljmTma4fspK%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;1302&quot; height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brglXm/btr0BEXTNpM/KAifjgHXsDfOXKHSw1cBJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brglXm/btr0BEXTNpM/KAifjgHXsDfOXKHSw1cBJk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;822&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.51.23.png&quot; style=&quot;width: 29.5547%; margin-right: 10px;&quot; data-widthpercent=&quot;30.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brglXm/btr0BEXTNpM/KAifjgHXsDfOXKHSw1cBJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrglXm%2Fbtr0BEXTNpM%2FKAifjgHXsDfOXKHSw1cBJk%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;1248&quot; height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/okfQC/btr0HSgucIJ/GqIrRCGipmckP0eTpI5Elk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/okfQC/btr0HSgucIJ/GqIrRCGipmckP0eTpI5Elk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;806&quot; data-widthpercent=&quot;37.39&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.51.48.png&quot; style=&quot;width: 36.5174%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/okfQC/btr0HSgucIJ/GqIrRCGipmckP0eTpI5Elk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FokfQC%2Fbtr0HSgucIJ%2FGqIrRCGipmckP0eTpI5Elk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;가장 긴 길이를 1 로 scale 길이들을 scale 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 0.97 과 0.242의 선형 결합으로 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0.97과 0.242로 구성되는 unit vector 를 바로 &lt;b&gt;Eigenvector&lt;/b&gt;, 혹은 &lt;b&gt;Singular Vector&lt;/b&gt;라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 각 feature 의 비, 즉 0.97 : 0.242 를 &lt;b&gt;Loading Scores&lt;/b&gt; 라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.46.36.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TZIZf/btr0DitvabS/dPKrRWdM1mBFFk7KpoqIo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTZIZf%2Fbtr0DitvabS%2FdPKrRWdM1mBFFk7KpoqIo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;41&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 8.46.36.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 SS 를 eigenvalue 라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.56.44.png&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JwGZW/btr0AycwU5a/Cpei74nltKvBvtXldVfhK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JwGZW/btr0AycwU5a/Cpei74nltKvBvtXldVfhK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JwGZW/btr0AycwU5a/Cpei74nltKvBvtXldVfhK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJwGZW%2Fbtr0AycwU5a%2FCpei74nltKvBvtXldVfhK1%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;383&quot; height=&quot;200&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.56.44.png&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;404&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.57.38.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sFepe/btr0KGfiB65/1SRdLXgC8P0E9kYMDnJK11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sFepe/btr0KGfiB65/1SRdLXgC8P0E9kYMDnJK11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sFepe/btr0KGfiB65/1SRdLXgC8P0E9kYMDnJK11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsFepe%2Fbtr0KGfiB65%2F1SRdLXgC8P0E9kYMDnJK11%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;310&quot; height=&quot;60&quot; data-filename=&quot;스크린샷 2023-02-24 오후 8.57.38.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;160&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;span style=&quot;color: #000000;&quot;&gt;PC 1 에 perpendicular 한 vector를 PC2 라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 feature가 2개 이상일 때는 perpendicular 하면서 동시에 SS 가 가장 긴 vector 가 PC2 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6tmY8/btr0AOzDW7M/wvt5EAQGiXfN7OK65U61EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6tmY8/btr0AOzDW7M/wvt5EAQGiXfN7OK65U61EK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1426&quot; data-origin-height=&quot;778&quot; data-filename=&quot;edited_스크린샷 2023-02-24 오후 9.05.10.png&quot; width=&quot;485&quot; height=&quot;263&quot; data-widthpercent=&quot;51.17&quot; style=&quot;width: 50.5709%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6tmY8/btr0AOzDW7M/wvt5EAQGiXfN7OK65U61EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6tmY8%2Fbtr0AOzDW7M%2Fwvt5EAQGiXfN7OK65U61EK%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;1426&quot; height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY1IBq/btr0KGzB4aq/6mO3hoapMGwxb58EaIyGqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY1IBq/btr0KGzB4aq/6mO3hoapMGwxb58EaIyGqk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;806&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.07.15.png&quot; style=&quot;width: 48.2664%;&quot; data-widthpercent=&quot;48.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY1IBq/btr0KGzB4aq/6mO3hoapMGwxb58EaIyGqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY1IBq%2Fbtr0KGzB4aq%2F6mO3hoapMGwxb58EaIyGqk%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;1410&quot; height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 후 PC1이 x축이 되도록 회전한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dm1mC/btr0BBGT3HH/QjYkF4TgZ4Kbr281Fduqa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dm1mC/btr0BBGT3HH/QjYkF4TgZ4Kbr281Fduqa1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;702&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.08.14.png&quot; style=&quot;width: 42.8649%; margin-right: 10px;&quot; data-widthpercent=&quot;43.37&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dm1mC/btr0BBGT3HH/QjYkF4TgZ4Kbr281Fduqa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDm1mC%2Fbtr0BBGT3HH%2FQjYkF4TgZ4Kbr281Fduqa1%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;1328&quot; height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/31Y58/btr0IGtiCxQ/a5TKFxyy0LUGnYQgzBZCJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/31Y58/btr0IGtiCxQ/a5TKFxyy0LUGnYQgzBZCJK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1492&quot; data-origin-height=&quot;604&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.08.24.png&quot; style=&quot;width: 55.9723%;&quot; data-widthpercent=&quot;56.63&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/31Y58/btr0IGtiCxQ/a5TKFxyy0LUGnYQgzBZCJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F31Y58%2Fbtr0IGtiCxQ%2Fa5TKFxyy0LUGnYQgzBZCJK%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;1492&quot; height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC1 과 PC2 를 기준으로 새롭게 데이터를 시각화한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.09.05.png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AJ6UV/btr0BXb2r12/EaOnRuOgzNiBd1TuJdI5p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AJ6UV/btr0BXb2r12/EaOnRuOgzNiBd1TuJdI5p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AJ6UV/btr0BXb2r12/EaOnRuOgzNiBd1TuJdI5p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAJ6UV%2Fbtr0BXb2r12%2FEaOnRuOgzNiBd1TuJdI5p0%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;408&quot; height=&quot;752&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.09.05.png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SS (eigen value 즉, 선이 얼마나 데이터를 잘 표현하는가) 를 데이터 샘플 개수로 나눈 값을 variation이라 하고, 이 값을 기준으로 데이터를 얼마나 설명하는지 결정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.10.11.png&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nG4u8/btr0DV6bLTU/6HVmDIlnmuc5HmjTilGvcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nG4u8/btr0DV6bLTU/6HVmDIlnmuc5HmjTilGvcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nG4u8/btr0DV6bLTU/6HVmDIlnmuc5HmjTilGvcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnG4u8%2Fbtr0DV6bLTU%2F6HVmDIlnmuc5HmjTilGvcK%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;424&quot; height=&quot;168&quot; data-filename=&quot;스크린샷 2023-02-24 오후 9.10.11.png&quot; data-origin-width=&quot;1490&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터의 차원 수가 더 커져도 마찬가지다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 feature 가 3개라면, PC1 에 perpendicular 하면서 SS 가 가장 긴 PC2,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC1, PC2 와 perpendicular 하면서 SS가 가장 긴 PC3 를 찾고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC1, PC2, PC3 중 Variation이 가장 높은 2개를 선택 하고, PC1 을 x축이 되도록 회전한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼 2차원으로 표현 가능하다!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/271</guid>
      <comments>https://itforfun.tistory.com/271#entry271comment</comments>
      <pubDate>Fri, 24 Feb 2023 21:12:35 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(4) - Gradient Boost</title>
      <link>https://itforfun.tistory.com/270</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gradient Boost는 굉장히 다양한 분야에 적용 가능하도록 디자인 된 알고리즘이다. 하지만 주로 continous value를 예측하는 모델로 사용되고, 나머지도 분류 모델 정도로 사용된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 글에서는 먼저 회귀 모델로의 Gradient Boost를 다루고 분류 모델로의 Gradient Boost를 다뤄본다.&amp;nbsp;&lt;/span&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;&lt;b&gt;회귀 모델로의 Gradient Boost&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AdaBoost 와 Gradient Boost의 차이&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AdaBoost를 잘 모르면 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/268&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;을 읽고오자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 4.01.14.png&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zdekl/btrZJdLVoD3/ycsWEGhDglzIfMyH9iJOTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zdekl/btrZJdLVoD3/ycsWEGhDglzIfMyH9iJOTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zdekl/btrZJdLVoD3/ycsWEGhDglzIfMyH9iJOTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZdekl%2FbtrZJdLVoD3%2FycsWEGhDglzIfMyH9iJOTK%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;271&quot; height=&quot;154&quot; data-filename=&quot;스크린샷 2023-02-17 오후 4.01.14.png&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같은 데이터 샘플들이 주어졌다고 가정해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chazH9/btrZCp1Yb1n/3orbdXfORlBR84Zmo5Coe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chazH9/btrZCp1Yb1n/3orbdXfORlBR84Zmo5Coe0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;280&quot; data-filename=&quot;스크린샷 2023-02-17 오후 4.03.52.png&quot; width=&quot;354&quot; height=&quot;141&quot; data-widthpercent=&quot;42.62&quot; style=&quot;width: 42.123%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chazH9/btrZCp1Yb1n/3orbdXfORlBR84Zmo5Coe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchazH9%2FbtrZCp1Yb1n%2F3orbdXfORlBR84Zmo5Coe0%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;702&quot; height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rWkOJ/btrZCpnouxz/buk8KD3hgMGOgKycKdAhak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rWkOJ/btrZCpnouxz/buk8KD3hgMGOgKycKdAhak/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;410&quot; data-filename=&quot;edited_edited_스크린샷 2023-02-17 오후 4.20.02.png&quot; width=&quot;570&quot; height=&quot;169&quot; style=&quot;width: 56.7142%;&quot; data-widthpercent=&quot;57.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rWkOJ/btrZCpnouxz/buk8KD3hgMGOgKycKdAhak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrWkOJ%2FbtrZCpnouxz%2Fbuk8KD3hgMGOgKycKdAhak%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;1384&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;AdaBoost(왼쪽), Gradient Boost(오른쪽)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AdaBoost 는 여러개의 stump의 결합으로 의사결정을 하는 머신러닝 기법이다. 선행 stump가 잘 분류하지 못했던 샘플들에 대하여 후행 stump가 얼마나 잘 분류했는가에 따라 각자 다른 &lt;b&gt;Amount of Say &lt;/b&gt;가 주어지고, 새로운 input이 들어오면 내린 결정 * Amount of Say로 최종 output 을 결정한다. (투표권에 차등이 있다고 생각하면 편하다) 당연히 stump를 결정할 때도 선행 stump가 잘 분류하지 못했던 샘플을 기반한다. 사용자가 요청한 stump의 개수 혹은 완벽하게 샘플을 모두 분류해낼 때 까지 위 과정을 반복한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gradient Boost는 선행 트리의 오류를 후행 트리가 반영한다는 점에서 AdaBoost와 유사하나, 주로 tree의 사이즈가 stump 보다 크다. 본 글에서는 주로 leaf 의 개수를 4개로 제한해서 설명할 예정이나, 현업에서는 주로 8~ 32개 정도로 제한한다. 즉, AdaBoost나 Graident Boost 모두 선행 트리의 오류를 반영하여 고정된 사이즈의 트리를 만든다는 점에서는 동일하나 Gradient Boost의 각 트리가 stump 보다 클 수 있다는 점이 다르다. 또한 AdaBoost와 Gradient Boost 모두 최종 output에 대한 각 트리 별 결정 발언권을 조정하나, Gradient Boost의 모든 트리는 결정권의 크기를 동일하게 본다. (즉 Gradient Boost는 모든 tree의 결정권 크기를 동시에 조정 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Gradient Boost 작동 원리&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 4.25.31.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CKiw4/btrZGXxaphM/HugM9Pdpv2H10IHg8eMWi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CKiw4/btrZGXxaphM/HugM9Pdpv2H10IHg8eMWi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CKiw4/btrZGXxaphM/HugM9Pdpv2H10IHg8eMWi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCKiw4%2FbtrZGXxaphM%2FHugM9Pdpv2H10IHg8eMWi1%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;218&quot; height=&quot;218&quot; data-filename=&quot;스크린샷 2023-02-17 오후 4.25.31.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gradient Boost의 작동 원리는 반복 과정을 통해 label 예측을 개선시켜 정답에 가깝게 하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Initial 예측은 주어진 정보가 따로 없으므로, label (Weight)의 평균을 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 6.16.39.png&quot; data-origin-width=&quot;289&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZQpnw/btrZHSXaiQm/kJoAIdwGNM9kiX4KSMrHAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZQpnw/btrZHSXaiQm/kJoAIdwGNM9kiX4KSMrHAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZQpnw/btrZHSXaiQm/kJoAIdwGNM9kiX4KSMrHAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZQpnw%2FbtrZHSXaiQm%2FkJoAIdwGNM9kiX4KSMrHAK%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;106&quot; height=&quot;47&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 6.16.39.png&quot; data-origin-width=&quot;289&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, Weight의 평균은 우리가 첫번째로 예측한 값이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예측값을 기존 관측값인 Weight 샘플 값들에서 각각 뺀다.&amp;nbsp;(예측 값 - 관측 값)은 Residual이라 부른다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.20.33.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tSLH7/btrZIsJ9UP3/eXukWtTBBWkk0qi5O01fbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tSLH7/btrZIsJ9UP3/eXukWtTBBWkk0qi5O01fbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tSLH7/btrZIsJ9UP3/eXukWtTBBWkk0qi5O01fbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtSLH7%2FbtrZIsJ9UP3%2FeXukWtTBBWkk0qi5O01fbK%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;241&quot; height=&quot;193&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.20.33.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;612&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;span style=&quot;color: #000000;&quot;&gt;Residual 값을 분류하는 Tree를 만든다. 목표는 label과 예측값의 차이인 Residual 값을 점점 작게 만드는 것이다. 내용을 끝까지 따라오면 충분히 이해할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.22.47.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjRAgU/btrZIJETm7p/tM8eHL2S9Dp9hSnZvKoamk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjRAgU/btrZIJETm7p/tM8eHL2S9Dp9hSnZvKoamk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjRAgU/btrZIJETm7p/tM8eHL2S9Dp9hSnZvKoamk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjRAgU%2FbtrZIJETm7p%2FtM8eHL2S9Dp9hSnZvKoamk%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;391&quot; height=&quot;176&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.22.47.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 Tree를 통해 Residual 값을 분류한다. 해당 Tree를 만드는 방법은 Regression Tree와 동일 할 것으로 추측된다. 현재 Tree의 leaf 는 4개이나, 현업에서는 보통 8~ 32개를 사용한다는 점을 기억하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.25.03.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mUdcB/btrZH2ys1HP/2GJaLc8DWZvKEWsZe08QN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mUdcB/btrZH2ys1HP/2GJaLc8DWZvKEWsZe08QN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mUdcB/btrZH2ys1HP/2GJaLc8DWZvKEWsZe08QN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmUdcB%2FbtrZH2ys1HP%2F2GJaLc8DWZvKEWsZe08QN0%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;428&quot; height=&quot;185&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.25.03.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 leaf 에 해당하는 값이 여러개인 경우 평균을 취한다. 왜 평균 취하는 이유는 아래 공식을 통해 유도되는 과정을 참고하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AGBd2/btrZIsDpTkz/TmBt3n0FPFsgSp2NKHMSk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AGBd2/btrZIsDpTkz/TmBt3n0FPFsgSp2NKHMSk0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;850&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.28.05.png&quot; style=&quot;width: 48.4807%; margin-right: 10px;&quot; data-widthpercent=&quot;49.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AGBd2/btrZIsDpTkz/TmBt3n0FPFsgSp2NKHMSk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAGBd2%2FbtrZIsDpTkz%2FTmBt3n0FPFsgSp2NKHMSk0%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;1734&quot; height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkA6DV/btrZK0lnaJe/XThFO8WoXX0OUaT7Vkb8j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkA6DV/btrZK0lnaJe/XThFO8WoXX0OUaT7Vkb8j0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;824&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.28.17.png&quot; style=&quot;width: 50.3565%;&quot; data-widthpercent=&quot;50.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkA6DV/btrZK0lnaJe/XThFO8WoXX0OUaT7Vkb8j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkA6DV%2FbtrZK0lnaJe%2FXThFO8WoXX0OUaT7Vkb8j0%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;1746&quot; height=&quot;824&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;트리를 통해 분류한 residual 값과 Initial 예측값을 이용하여 분류 기준에 해당되었던 데이터 샘플의 weight 값을 update한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한번의 과정만 거쳤는데 실제 Weight값을 복원했다. 무슨 뜻일까? 안봐도 데이터에 Over-fitting 되었다는 증거다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 Learning Rate 개념이 도입된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMeQCa/btrZH3xo79g/kPovBmBe8jqUQ9e3QHpqW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMeQCa/btrZH3xo79g/kPovBmBe8jqUQ9e3QHpqW0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;424&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.08.png&quot; style=&quot;width: 57.9554%; margin-right: 10px;&quot; data-widthpercent=&quot;58.64&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMeQCa/btrZH3xo79g/kPovBmBe8jqUQ9e3QHpqW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMeQCa%2FbtrZH3xo79g%2FkPovBmBe8jqUQ9e3QHpqW0%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;1692&quot; height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;562&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.23.png&quot; style=&quot;width: 40.8818%;&quot; data-widthpercent=&quot;41.36&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVJSXX%2FbtrZH2SOezH%2FCHqBDRD1IPuZon7x4HKCvK%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;1582&quot; height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;Learning Rate란 한번에 큰 값을 업데이트 하지 말고, 조금씩 목표 지점에 도달하자는 개념인건 딥러닝을 하시는 분들은 바로 이해할 수 있을 것이다. 정리하자면 0~ 1 사이 값을 갖는 Learning Rate * residual 로 예측값을 업데이트 한다. 새로운 예측값 72.9 라는 값이 한번에 88까지 접근 했던 초기 방식에 비해 훨씬 더 천천히 접근하지만, initial 예측값이던 71.2 보다는 더 좋은 결과임에는 틀림없다. Graident Boost를 제안한 Jerome Friedman의 emprical 실험 결과에 따르면, Learning Rate를 통해 옳은 방향으로 조금씩 나아가는 방식이 더 낮은 Variance 즉, 타당한 예측값을 만들어낸다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 6.36.54.png&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWw25k/btrZKybBE6W/Lb6J4aACRSrOalz5XG0GPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWw25k/btrZKybBE6W/Lb6J4aACRSrOalz5XG0GPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWw25k/btrZKybBE6W/Lb6J4aACRSrOalz5XG0GPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWw25k%2FbtrZKybBE6W%2FLb6J4aACRSrOalz5XG0GPk%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;481&quot; height=&quot;267&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 6.36.54.png&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.38.47.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr9wVf/btrZHImMKcJ/RA1cwEekxTkgZK2ecdhvm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr9wVf/btrZHImMKcJ/RA1cwEekxTkgZK2ecdhvm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr9wVf/btrZHImMKcJ/RA1cwEekxTkgZK2ecdhvm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdr9wVf%2FbtrZHImMKcJ%2FRA1cwEekxTkgZK2ecdhvm0%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;262&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.38.47.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;새로운 예측 값을 통해 Residual 을 업데이트해보니, 확실히 이전 Residual 보다 결과가 더 낫다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 과정을 반복한다. 반복 과정 중, Residual을 분류하는&amp;nbsp;&lt;b&gt;Tree는 당연히 새롭게 만들어 지기도 한다. (여기서는 편의를 위해 동일한 Tree를 사용하였다.)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.40.40.png&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOJCM4/btrZIaDishT/kDVjjyKkg6zRosCk3aIiq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOJCM4/btrZIaDishT/kDVjjyKkg6zRosCk3aIiq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOJCM4/btrZIaDishT/kDVjjyKkg6zRosCk3aIiq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOJCM4%2FbtrZIaDishT%2FkDVjjyKkg6zRosCk3aIiq1%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;503&quot; height=&quot;702&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.40.40.png&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복 과정에서 초기 예측 값, 이후 반복 과정에서 구한 각각의 residual X Learning Rate을 더해 예측값을 업데이트한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.42.58.png&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgBN4h/btrZIfRS3Yq/kXePp62nWodHHQQa0fBKV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgBN4h/btrZIfRS3Yq/kXePp62nWodHHQQa0fBKV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgBN4h/btrZIfRS3Yq/kXePp62nWodHHQQa0fBKV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgBN4h%2FbtrZIfRS3Yq%2FkXePp62nWodHHQQa0fBKV0%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;509&quot; height=&quot;774&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.42.58.png&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복 과정에서 Residual 은 계속해서 작아진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리가 정한 최대 반복 횟수, 혹은 resiual 값이 더이상 변화가 없을 때 학습을 멈춘다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.45.18.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GErsB/btrZJWw4s92/e6oVimPDmB3fRCSh8DvPbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GErsB/btrZJWw4s92/e6oVimPDmB3fRCSh8DvPbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GErsB/btrZJWw4s92/e6oVimPDmB3fRCSh8DvPbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGErsB%2FbtrZJWw4s92%2Fe6oVimPDmB3fRCSh8DvPbK%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;275&quot; height=&quot;152&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.45.18.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후 모델에 예측을 위해 Input 데이터가 들어오게 되면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.46.34.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;786&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cO05WW/btrZHI1neMc/BEr0pCzvQKkk5m1oGZypuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cO05WW/btrZHI1neMc/BEr0pCzvQKkk5m1oGZypuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cO05WW/btrZHI1neMc/BEr0pCzvQKkk5m1oGZypuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO05WW%2FbtrZHI1neMc%2FBEr0pCzvQKkk5m1oGZypuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;298&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.46.34.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;786&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;학습과정에서 생성하였던 initial Value + &lt;b&gt;각&lt;/b&gt; 트리의 Residual * learning rate 를 통해 최종 예측 값을 산출한다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Gradient Boost 이론 (Regression)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 7.41.35.png&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;68&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpvz6W/btrZJ4hLDiw/xDdoKaQ2rD1Gnn8bZBK0l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpvz6W/btrZJ4hLDiw/xDdoKaQ2rD1Gnn8bZBK0l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpvz6W/btrZJ4hLDiw/xDdoKaQ2rD1Gnn8bZBK0l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpvz6W%2FbtrZJ4hLDiw%2FxDdoKaQ2rD1Gnn8bZBK0l1%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;523&quot; height=&quot;31&quot; data-filename=&quot;스크린샷 2023-02-17 오후 7.41.35.png&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;68&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data 샘플 $x_i, y_i$ 가 총 n 개 존재하고, Loss function은 미분 가능해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Regression을 수행하는 Gradient Boost가 주로 사용하는 Loss function은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\frac{1}{2} \textrm{ (Observed - Predicted)}^2$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;앞에 $\frac{1}{2}$ 가 붙어있는 이유는 Gradient Boost의 Loss function을 미분하면 합성함수으로 인해&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$-\textrm{Observed - Predicted}$ 가 된다. 미분 결과가 -Residual 이이 되는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$L(y_i, F(x))$ 에서 $y_i$ 가 Obeserved 이고, $F(x)$ 가 predicted 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(물론 Loss function은 다른 것도 있다.)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.02.26.png&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgH6Gy/btrZLVqPmx5/6t6holTbkX5BX7zyg9kxz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgH6Gy/btrZLVqPmx5/6t6holTbkX5BX7zyg9kxz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgH6Gy/btrZLVqPmx5/6t6holTbkX5BX7zyg9kxz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgH6Gy%2FbtrZLVqPmx5%2F6t6holTbkX5BX7zyg9kxz1%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;518&quot; height=&quot;53&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.02.26.png&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$y_i$ 는 observed, $\gamma$ 는 predicted 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같은 데이터 샘플이 주어졌을 때,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.05.46.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RWf7o/btrZLUZLf5A/ChA6FbpJUf7BgoKumnRKs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RWf7o/btrZLUZLf5A/ChA6FbpJUf7BgoKumnRKs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RWf7o/btrZLUZLf5A/ChA6FbpJUf7BgoKumnRKs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRWf7o%2FbtrZLUZLf5A%2FChA6FbpJUf7BgoKumnRKs0%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;231&quot; height=&quot;137&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.05.46.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = [1 , n] 을 모두 더하면 아래와 같이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.06.25.png&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FGqBw/btrZLVEm2Jy/p7HEfJ9rCFwxARJuTBQ8Mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FGqBw/btrZLVEm2Jy/p7HEfJ9rCFwxARJuTBQ8Mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FGqBw/btrZLVEm2Jy/p7HEfJ9rCFwxARJuTBQ8Mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFGqBw%2FbtrZLVEm2Jy%2Fp7HEfJ9rCFwxARJuTBQ8Mk%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;251&quot; height=&quot;123&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.06.25.png&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$argmin_\gamma$는 총 합을 최소화 하는 predicted 의 값이라는 뜻이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오른쪽 그래프와 같이, predicted 값에 따른 $F_0(x)$를 알 수 있다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.08.00.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/21t2U/btrZK0y9FTM/lkRrzbFtYXz8GsHuF6mOq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/21t2U/btrZK0y9FTM/lkRrzbFtYXz8GsHuF6mOq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/21t2U/btrZK0y9FTM/lkRrzbFtYXz8GsHuF6mOq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F21t2U%2FbtrZK0y9FTM%2FlkRrzbFtYXz8GsHuF6mOq1%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;364&quot; height=&quot;207&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.08.00.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;466&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;span style=&quot;color: #000000;&quot;&gt;그림을 보아하니 Gradient Descent로 최소값을 찾아낼 수도 있지만, 사실 간단한 math 이니 그냥 계산해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;미분 값이 즉 순간변화율이 0이 되는 순간을 찾으면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.37.png&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yc031/btrZH1T7z5D/W9l1eqYKqHZwl8t6G36G01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yc031/btrZH1T7z5D/W9l1eqYKqHZwl8t6G36G01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yc031/btrZH1T7z5D/W9l1eqYKqHZwl8t6G36G01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyc031%2FbtrZH1T7z5D%2FW9l1eqYKqHZwl8t6G36G01%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;473&quot; height=&quot;33&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.37.png&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.47.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4MZoI/btrZIgDu5x7/RIiMko1sfYvSbdxF4SMzO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4MZoI/btrZIgDu5x7/RIiMko1sfYvSbdxF4SMzO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4MZoI/btrZIgDu5x7/RIiMko1sfYvSbdxF4SMzO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4MZoI%2FbtrZIgDu5x7%2FRIiMko1sfYvSbdxF4SMzO1%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;231&quot; height=&quot;29&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.47.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.55.png&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s1im0/btrZITVozVe/xK854ajYwTqCpReXiDUI4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s1im0/btrZITVozVe/xK854ajYwTqCpReXiDUI4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s1im0/btrZITVozVe/xK854ajYwTqCpReXiDUI4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs1im0%2FbtrZITVozVe%2FxK854ajYwTqCpReXiDUI4k%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;229&quot; height=&quot;64&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.11.55.png&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구하고보니, 그냥 &lt;b&gt;obeserved data의 평균값&lt;/b&gt;이다. 그래서 Gradient Boost model을 초기화 할 때 observed data의 평균값으로 한다. $F_o(x)$ 는 초기 예측값인 leaf라는 것을 확인했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.17.04.png&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhGXyh/btrZJ2RNmn9/of9bkYsBnrZHSjPaerCPkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhGXyh/btrZJ2RNmn9/of9bkYsBnrZHSjPaerCPkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhGXyh/btrZJ2RNmn9/of9bkYsBnrZHSjPaerCPkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhGXyh%2FbtrZJ2RNmn9%2Fof9bkYsBnrZHSjPaerCPkk%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;454&quot; height=&quot;240&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.17.04.png&quot; data-origin-width=&quot;1114&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1676632725044&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;m = 1
#M is usally 100
for i in range(m, M)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;m 은 첫번째 tree이고, M 은 마지막 tree이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.20.33.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuOXeC%2FbtrZIlrjQdw%2Frk6r2gV7RXse5B2okMGky1%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;391&quot; height=&quot;65&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.20.33.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1676633284223&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in range(1, n)
#for all samples&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\frac{\partial \textrm{ Loss function}}{\partial \textrm{ predicted}}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, $-\textrm{Observed - Predicted}$ 에 - 가 붙은 형태이니 결국 $\textrm{Observed - Predicted}$ 즉, Residual이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$F(x) = F_{m-1}(x)$는 m = 1 일 때, $F(x) = F_0(x)$ 임을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, $r$ 은 Residual이고 $i$ 는 sample number 이며, $m$은 몇번째 tree인지 알려준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(A)는 모든 샘플의 residual을 계산한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.29.30.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c12u7z/btrZKp0iQ2l/uD7R1lUKBt9WbKKKPrBKrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c12u7z/btrZKp0iQ2l/uD7R1lUKBt9WbKKKPrBKrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c12u7z/btrZKp0iQ2l/uD7R1lUKBt9WbKKKPrBKrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc12u7z%2FbtrZKp0iQ2l%2FuD7R1lUKBt9WbKKKPrBKrK%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;518&quot; height=&quot;139&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.29.30.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(A) 과정이 Graident 를 구하는 과정이므로, Gradient Boost 라는 이름을 얻게 되었다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 Loss function은 Linear regression과 달리 $\frac{1}{2}$ 이 앞에 붙어있다. 따라서 명칭이 약간 다르다. Pseudo Residual이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.35.29.png&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RaBFu/btrZImRnbbU/KdNZ1C8StxHjsWRPc78X4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RaBFu/btrZImRnbbU/KdNZ1C8StxHjsWRPc78X4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RaBFu/btrZImRnbbU/KdNZ1C8StxHjsWRPc78X4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRaBFu%2FbtrZImRnbbU%2FKdNZ1C8StxHjsWRPc78X4K%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;497&quot; height=&quot;63&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.35.29.png&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 말은 Residual이 terminal leaf 로 끝나는 regression tree를 만든다는 것이다. j 는 leaf 의 index이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.39.23.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LjCWf/btrZJWKOcS1/uUqJXcaSzgnmZ5Cxh9oki0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LjCWf/btrZJWKOcS1/uUqJXcaSzgnmZ5Cxh9oki0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LjCWf/btrZJWKOcS1/uUqJXcaSzgnmZ5Cxh9oki0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLjCWf%2FbtrZJWKOcS1%2FuUqJXcaSzgnmZ5Cxh9oki0%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;465&quot; height=&quot;61&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.39.23.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.46.19.png&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;691&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zC4I6/btrZJClzBcH/bCA5NaKuFY0KUk5GZcuqy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zC4I6/btrZJClzBcH/bCA5NaKuFY0KUk5GZcuqy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zC4I6/btrZJClzBcH/bCA5NaKuFY0KUk5GZcuqy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzC4I6%2FbtrZJClzBcH%2FbCA5NaKuFY0KUk5GZcuqy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;529&quot; height=&quot;250&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.46.19.png&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;691&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$x \in R_{i,j}$ 는 i,j 번째 leaf에 존재하는 data sample 들을 뜻한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우변을 최소화하는 $\gamma$ 즉 residual을 찾는 것이 목표이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 미분 값이 0인,&amp;nbsp;0 = observed - (선행 예측값 + 최소화 하는 Residual) 이다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.23.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVJSXX%2FbtrZH2SOezH%2FCHqBDRD1IPuZon7x4HKCvK%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;1582&quot; height=&quot;562&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.23.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 아래와 같은 트리가 있다고 할 때,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.55.27.png&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBkZ3w/btrZIeTg99A/62wBbh2de2BiZ7fKmLsRUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBkZ3w/btrZIeTg99A/62wBbh2de2BiZ7fKmLsRUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBkZ3w/btrZIeTg99A/62wBbh2de2BiZ7fKmLsRUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBkZ3w%2FbtrZIeTg99A%2F62wBbh2de2BiZ7fKmLsRUK%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;257&quot; height=&quot;170&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.55.27.png&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;278&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJMIo/btrZJCsmUfS/DIoG4u6lbdEvevq2wa22f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJMIo/btrZJCsmUfS/DIoG4u6lbdEvevq2wa22f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJMIo/btrZJCsmUfS/DIoG4u6lbdEvevq2wa22f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJMIo%2FbtrZJCsmUfS%2FDIoG4u6lbdEvevq2wa22f1%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;249&quot; height=&quot;71&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.55.37.png&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K4wyH/btrZIgKlQKd/8mK54JeuiZfAzHnGXUhMmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K4wyH/btrZIgKlQKd/8mK54JeuiZfAzHnGXUhMmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K4wyH/btrZIgKlQKd/8mK54JeuiZfAzHnGXUhMmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK4wyH%2FbtrZIgKlQKd%2F8mK54JeuiZfAzHnGXUhMmK%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;247&quot; height=&quot;95&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.55.37.png&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.56.51.png&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cElZNu/btrZJ2dgpzW/h0p20qchk5G1UGozWuSNG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cElZNu/btrZJ2dgpzW/h0p20qchk5G1UGozWuSNG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cElZNu/btrZJ2dgpzW/h0p20qchk5G1UGozWuSNG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcElZNu%2FbtrZJ2dgpzW%2Fh0p20qchk5G1UGozWuSNG0%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;147&quot; height=&quot;26&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.56.51.png&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.56.56.png&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBxNUe/btrZIlrnyMM/HCpMi52JKswG3AkZbSW4a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBxNUe/btrZIlrnyMM/HCpMi52JKswG3AkZbSW4a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBxNUe/btrZIlrnyMM/HCpMi52JKswG3AkZbSW4a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBxNUe%2FbtrZIlrnyMM%2FHCpMi52JKswG3AkZbSW4a0%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;91&quot; height=&quot;51&quot; data-filename=&quot;edited_스크린샷 2023-02-17 오후 8.56.56.png&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 계산 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면 residual은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0 = observed - (선행 예측값 + 최소화 하는 Residual)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;observed - &lt;span&gt;선행 예측값&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;= Residual&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;같은 leaf 여러개의 residual이 존재할 경우&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 residual 의 평균이 leaf의 residual이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.07.26.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQz9kE/btrZIJSMupS/KLJDwdMkCaMOVD3rG0It4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQz9kE/btrZIJSMupS/KLJDwdMkCaMOVD3rG0It4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQz9kE/btrZIJSMupS/KLJDwdMkCaMOVD3rG0It4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQz9kE%2FbtrZIJSMupS%2FKLJDwdMkCaMOVD3rG0It4k%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;352&quot; height=&quot;70&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.07.26.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\nu$ 는 learning rate이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 예측 값 = 이전 예측값 + learning rate X 데이터 샘플이 해당되는 leaf의 residual들&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;우리가 흔히 Gradient Boost를 개념화 할 때 초기 예측 값 + 트리_1 leaf residual + 트리_1에 영향받은 트리_2 leaf residual + 트리_2에 영향받은 트리_3 leaf residual .... 로 구조화 하기 때문에 (D) 공식이 이해가 잘 안갈 수도 있지만, 그냥 누적 분포처럼 $F_m(x)$은 누적 값이라고 생각하면 된다.&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc7uRA/btrZKp0mleW/LJWjT7hJKDvzkEcf8voXiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc7uRA/btrZKp0mleW/LJWjT7hJKDvzkEcf8voXiK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;682&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.11.52.png&quot; width=&quot;360&quot; style=&quot;width: 32.7314%; margin-right: 10px;&quot; data-widthpercent=&quot;33.51&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc7uRA/btrZKp0mleW/LJWjT7hJKDvzkEcf8voXiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc7uRA%2FbtrZKp0mleW%2FLJWjT7hJKDvzkEcf8voXiK%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;1286&quot; height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1JTPD/btrZIr5YUNz/iQTdHSM05mUXzLbhVgAb20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1JTPD/btrZIr5YUNz/iQTdHSM05mUXzLbhVgAb20/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;686&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.12.07.png&quot; style=&quot;width: 32.5911%; margin-right: 10px;&quot; data-widthpercent=&quot;33.37&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1JTPD/btrZIr5YUNz/iQTdHSM05mUXzLbhVgAb20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1JTPD%2FbtrZIr5YUNz%2FiQTdHSM05mUXzLbhVgAb20%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;1288&quot; height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qOx1z/btrZIJ6kjWz/7N4PgvH1azkqIM6yB4tqwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qOx1z/btrZIJ6kjWz/7N4PgvH1azkqIM6yB4tqwK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;690&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.12.25.png&quot; style=&quot;width: 32.3519%;&quot; data-widthpercent=&quot;33.12&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qOx1z/btrZIJ6kjWz/7N4PgvH1azkqIM6yB4tqwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqOx1z%2FbtrZIJ6kjWz%2F7N4PgvH1azkqIM6yB4tqwK%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;1286&quot; height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/div&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;Gradient Boost는 예측 값과 관측 값의 차이를 최소화 하는 loss function의 미분값(Gradient)에 learning rate를 곱하여 예측 값을 관측 값과 유사하게 근사하는 기법이다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;분류 모델로의 Gradient Boost&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradient Boost가 Classification에 사용되면 Logisitic Regression과 겹치는 부분이 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;logisitic regression을 잘 모른다면 &lt;a href=&quot;https://itforfun.tistory.com/251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;을 읽어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 데이터는 아래와 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.37.43.png&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvAgIw/btrZLVkb3Vo/fhV3i3HrrqxGBihCk3avBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvAgIw/btrZLVkb3Vo/fhV3i3HrrqxGBihCk3avBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvAgIw/btrZLVkb3Vo/fhV3i3HrrqxGBihCk3avBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvAgIw%2FbtrZLVkb3Vo%2FfhV3i3HrrqxGBihCk3avBk%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;316&quot; height=&quot;324&quot; data-filename=&quot;스크린샷 2023-02-17 오후 9.37.43.png&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회귀모델과 마찬가지로 초기 initial 예측을 생성한다. 여기서는 각 개인의 log(odds)를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ odds: 발생 확률/ 발생하지 않을 확률&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;샘플 중 Troll 2 를 좋아하는 인원은 4명이고 싫어하는 인원은 2인이므로&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;$\log(\textrm{odds})$ = $\log (\frac{4}{2}) = 0.7$ 이다.&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;Initial Prediction&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 5.24.03.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9Wi3y%2FbtrZ7F9DwIi%2F8Z1vtTTwMgcwAMpIUT7kA0%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;146&quot; height=&quot;46&quot; data-filename=&quot;스크린샷 2023-02-20 오후 5.24.03.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;90&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Logistic Regression recall&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;Logistic Regression은 이진 분류의 경우, 각 분류에 속할 확률을 계산한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.25.54.png&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddN3Ne/btrZ4cm0pT8/EfqGbChnkz0b0cdAV166Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddN3Ne/btrZ4cm0pT8/EfqGbChnkz0b0cdAV166Yk/img.png&quot; data-alt=&quot;log(odds) = X theta&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddN3Ne/btrZ4cm0pT8/EfqGbChnkz0b0cdAV166Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddN3Ne%2FbtrZ4cm0pT8%2FEfqGbChnkz0b0cdAV166Yk%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;274&quot; height=&quot;64&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.25.54.png&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;log(odds) = X theta&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.50.10.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRlLKf/btr0dqZxnuW/bLz4bMHa4mrcA98FCmHlRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRlLKf/btr0dqZxnuW/bLz4bMHa4mrcA98FCmHlRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRlLKf/btr0dqZxnuW/bLz4bMHa4mrcA98FCmHlRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRlLKf%2Fbtr0dqZxnuW%2FbLz4bMHa4mrcA98FCmHlRK%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;320&quot; height=&quot;317&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.50.10.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 이항 로지스틱 모델에 범주 정보를 모르는 입력 벡터 x를 넣으면 범주가 Positive 에 속할 확률을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 5.24.03.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9Wi3y/btrZ7F9DwIi/8Z1vtTTwMgcwAMpIUT7kA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9Wi3y%2FbtrZ7F9DwIi%2F8Z1vtTTwMgcwAMpIUT7kA0%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;146&quot; height=&quot;46&quot; data-filename=&quot;스크린샷 2023-02-20 오후 5.24.03.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;90&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보를 활용하여 Troll 2 를 좋아할 확률을 계산해보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.22.36.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeevpBP%2FbtrZSSv6AlW%2F8G5VnoEiAIaj01BWJo7kR0%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;241&quot; height=&quot;67&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.22.36.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;138&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;사실 정확한 확률은 아래와 같다. Troll 2 를 좋아할 확률은 4/6 = 0.6667 과 동일하다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.24.14.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm29wB/btrZ77EWmtL/59DzeNoVF6D3Czq58EAVK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm29wB/btrZ77EWmtL/59DzeNoVF6D3Czq58EAVK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm29wB/btrZ77EWmtL/59DzeNoVF6D3Czq58EAVK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm29wB%2FbtrZ77EWmtL%2F59DzeNoVF6D3Czq58EAVK1%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;208&quot; height=&quot;122&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.24.14.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.5를 의사결정의 threshold로 삼으면 Training Set 의 모든 샘플은 Troll 2 를 좋아한다고 예측할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Initial Residual을 잡아보자.&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZggq/btrZYTatJhW/RdItKkwbHGTMjt2Ohz5Yvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZggq/btrZYTatJhW/RdItKkwbHGTMjt2Ohz5Yvk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;720&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.30.29.png&quot; width=&quot;604&quot; height=&quot;357&quot; style=&quot;width: 49.534%; margin-right: 10px;&quot; data-widthpercent=&quot;50.12&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZggq/btrZYTatJhW/RdItKkwbHGTMjt2Ohz5Yvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZggq%2FbtrZYTatJhW%2FRdItKkwbHGTMjt2Ohz5Yvk%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;1218&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnQQv8/btrZ9Gmzd3i/mq2j9gVM6I3DDHhdowKme1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnQQv8/btrZ9Gmzd3i/mq2j9gVM6I3DDHhdowKme1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;740&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.30.42.png&quot; style=&quot;width: 49.3032%;&quot; data-widthpercent=&quot;49.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnQQv8/btrZ9Gmzd3i/mq2j9gVM6I3DDHhdowKme1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnQQv8%2FbtrZ9Gmzd3i%2Fmq2j9gVM6I3DDHhdowKme1%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;1246&quot; height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ Residual = (Observed - Predicted)&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Residual을 업데이트 하기 위해 feature로 Residual을 분류하는 Tree를 생성한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.32.09.png&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRS1G/btrZ5jmcWyU/jtU1ZoK5y1S9AiFUaHGItk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRS1G/btrZ5jmcWyU/jtU1ZoK5y1S9AiFUaHGItk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRS1G/btrZ5jmcWyU/jtU1ZoK5y1S9AiFUaHGItk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRS1G%2FbtrZ5jmcWyU%2FjtU1ZoK5y1S9AiFUaHGItk%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;421&quot; height=&quot;780&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.32.09.png&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.33.26.png&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIUSaD/btrZ6IMKIOT/XUeGNMCKzARTId6Ivp59ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIUSaD/btrZ6IMKIOT/XUeGNMCKzARTId6Ivp59ok/img.png&quot; data-alt=&quot;현업에서는 leaves 가 8 ~ 32 로 사용된다는 것을 기억하자.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIUSaD/btrZ6IMKIOT/XUeGNMCKzARTId6Ivp59ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIUSaD%2FbtrZ6IMKIOT%2FXUeGNMCKzARTId6Ivp59ok%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;428&quot; height=&quot;226&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.33.26.png&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;현업에서는 leaves 가 8 ~ 32 로 사용된다는 것을 기억하자.&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;Gradient Boost 를 Regression에 사용할 때는 leaf 에 corresponding 되는 데이터 샘플이 1개라면 Output Value 를 계산할 때 &amp;nbsp;별다른 처리 없이 residual 값 그대로 prediction 예측에 사용되었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.23.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVJSXX/btrZH2SOezH/CHqBDRD1IPuZon7x4HKCvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVJSXX%2FbtrZH2SOezH%2FCHqBDRD1IPuZon7x4HKCvK%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;1582&quot; height=&quot;562&quot; data-filename=&quot;스크린샷 2023-02-17 오후 6.31.23.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;562&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;그러나 Classification에 사용될 때는 initial Prediction 자체가 log(odds)인 반면, leaf 의 residual 은 확률이기에 바로 예측에 사용할 수 없고 변환을 해주어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.22.36.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eevpBP/btrZSSv6AlW/8G5VnoEiAIaj01BWJo7kR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeevpBP%2FbtrZSSv6AlW%2F8G5VnoEiAIaj01BWJo7kR0%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;241&quot; height=&quot;67&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.22.36.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.41.29.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu0pSm/btrZ7rjo6AR/HsqzfbBrkaRWXeRkKsuuD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu0pSm/btrZ7rjo6AR/HsqzfbBrkaRWXeRkKsuuD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu0pSm/btrZ7rjo6AR/HsqzfbBrkaRWXeRkKsuuD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu0pSm%2FbtrZ7rjo6AR%2FHsqzfbBrkaRWXeRkKsuuD0%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;395&quot; height=&quot;776&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.41.29.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;776&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 아래식을 활용한다. 아래 식은 아래쪽 수식 유도 과정에서 설명한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.43.19.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPiq7Z%2FbtrZ8NM3uhZ%2FgIycbpyOo9tSnesC4BJIa0%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;499&quot; height=&quot;140&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.43.19.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;해당 leaf 는 데이터가 한개이므로 아래와 같이 정리할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.44.46.png&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7vd4w/btrZ7FBXFK0/TWyvdtQuuhIHhQEmOM5krk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7vd4w/btrZ7FBXFK0/TWyvdtQuuhIHhQEmOM5krk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7vd4w/btrZ7FBXFK0/TWyvdtQuuhIHhQEmOM5krk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7vd4w%2FbtrZ7FBXFK0%2FTWyvdtQuuhIHhQEmOM5krk%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;241&quot; height=&quot;76&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.44.46.png&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-20 오후 6.45.15.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFHsj8/btrZ0JSZWSm/ecKi6sXAkjnF8K0XKF0CTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFHsj8/btrZ0JSZWSm/ecKi6sXAkjnF8K0XKF0CTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFHsj8/btrZ0JSZWSm/ecKi6sXAkjnF8K0XKF0CTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFHsj8%2FbtrZ0JSZWSm%2FecKi6sXAkjnF8K0XKF0CTk%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;576&quot; height=&quot;263&quot; data-filename=&quot;edited_스크린샷 2023-02-20 오후 6.45.15.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;539&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 모든 샘플이 1에 속할 확률이 0.7 로 사전 설정되었으므로 모두 동일하지만, update 과정에서 당연히 달라진다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.49.08.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y9rFg/btrZ0KElfH9/aa4rh1XI7P0C2vUajsw78K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y9rFg/btrZ0KElfH9/aa4rh1XI7P0C2vUajsw78K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y9rFg/btrZ0KElfH9/aa4rh1XI7P0C2vUajsw78K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy9rFg%2FbtrZ0KElfH9%2Faa4rh1XI7P0C2vUajsw78K%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;533&quot; height=&quot;163&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.49.08.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;update 를 모두 마친 후, initial guess + learning rate $\times$ 각 leaf의 residual 로 새로운 prediction을 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(원할한 설명을 위해 lr 을 0.8로 잡았지만 현업에서는 보통 0.1을 사용한다.)&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.41.37.png&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BhYka/btr0gkDDE7J/13DwanBAwov420Laz6O1r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BhYka/btr0gkDDE7J/13DwanBAwov420Laz6O1r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BhYka/btr0gkDDE7J/13DwanBAwov420Laz6O1r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBhYka%2Fbtr0gkDDE7J%2F13DwanBAwov420Laz6O1r0%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;581&quot; height=&quot;291&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.41.37.png&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;772&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;초기 예측값 log(odds) 를 먼저 업데이트하고,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.42.38.png&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BXVg4/btrZ71l5O3U/2IfHAQl4RUFqK1bBluzk80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BXVg4/btrZ71l5O3U/2IfHAQl4RUFqK1bBluzk80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BXVg4/btrZ71l5O3U/2IfHAQl4RUFqK1bBluzk80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBXVg4%2FbtrZ71l5O3U%2F2IfHAQl4RUFqK1bBluzk80%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;298&quot; height=&quot;75&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.42.38.png&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Troll 2 를 좋아할 확률을 업데이트 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.42.43.png&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU8Qan/btr0dljvahU/nkKowNT2cdlHu3bPAVkx1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU8Qan/btr0dljvahU/nkKowNT2cdlHu3bPAVkx1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU8Qan/btr0dljvahU/nkKowNT2cdlHu3bPAVkx1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU8Qan%2Fbtr0dljvahU%2FnkKowNT2cdlHu3bPAVkx1K%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;126&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.42.43.png&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;126&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;※ 애초에 initial guess를 log(odds)로 하지 않고 확률로 하면 어떨까 싶지만, 애초에 logistic regression을 수행하는 이유가 linear 회귀 모델로 해결하지 못하는 부분에 odds 를 취하고 log 를 이용하여 decision boundary에서 변화를 급격화 시킴으써 명확하게 구분하기 위함이라는 것을 기억하자. 즉, tree가 분류를 수월하게 하기 위해서라도 log(odds) 과정은 필수이다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.48.30.png&quot; data-origin-width=&quot;1474&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMHqVC/btrZ8NOy1Hb/riaV54gzPfmtSnYwMK3M8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMHqVC/btrZ8NOy1Hb/riaV54gzPfmtSnYwMK3M8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMHqVC/btrZ8NOy1Hb/riaV54gzPfmtSnYwMK3M8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMHqVC%2FbtrZ8NOy1Hb%2FriaV54gzPfmtSnYwMK3M8K%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;607&quot; height=&quot;558&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.48.30.png&quot; data-origin-width=&quot;1474&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Loves Troll 2 label이 Yes 임에도 probability 가 0.7에서 0.5로 떨어졌다. 즉 예측이 오히려 나빠졌다.&amp;nbsp; tree를 하나만 만들지 않고 여러개 만드는 이유가 바로 여기에 있다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.51.05.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZXsGy/btr0frXzxYI/TUl4eMYiqRx0fSicHoLQw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZXsGy/btr0frXzxYI/TUl4eMYiqRx0fSicHoLQw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZXsGy/btr0frXzxYI/TUl4eMYiqRx0fSicHoLQw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZXsGy%2Fbtr0frXzxYI%2FTUl4eMYiqRx0fSicHoLQw0%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;560&quot; height=&quot;220&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.51.05.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금부터는 iterate 과정이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새롭게 예측한 probabilty 를 이용하여 Residual을 새롭게 update한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.54.38.png&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/87nrh/btr0eK4rV3Z/i4u4tjS3KAHqxUfmpMhSk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/87nrh/btr0eK4rV3Z/i4u4tjS3KAHqxUfmpMhSk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/87nrh/btr0eK4rV3Z/i4u4tjS3KAHqxUfmpMhSk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F87nrh%2Fbtr0eK4rV3Z%2Fi4u4tjS3KAHqxUfmpMhSk0%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;141&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.54.38.png&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트 한 residual로 tree를 새롭게 생성하여 분류한 후,&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X3wDZ/btr0dkLIhoP/KmWRPBsnYjza3MMbv1jv71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X3wDZ/btr0dkLIhoP/KmWRPBsnYjza3MMbv1jv71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X3wDZ/btr0dkLIhoP/KmWRPBsnYjza3MMbv1jv71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX3wDZ%2Fbtr0dkLIhoP%2FKmWRPBsnYjza3MMbv1jv71%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;413&quot; height=&quot;294&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;806&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;사용자가 사전 설정한 maximum 횟수, 혹은 residual이 특정 임계값 아래로 내려갈때 까지 위 과정이 iterate 된다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.59.39.png&quot; data-origin-width=&quot;1518&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejSiAJ/btr0aUNmzS7/UGvjjPEp1BkwqIS3eVZRF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejSiAJ/btr0aUNmzS7/UGvjjPEp1BkwqIS3eVZRF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejSiAJ/btr0aUNmzS7/UGvjjPEp1BkwqIS3eVZRF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FejSiAJ%2Fbtr0aUNmzS7%2FUGvjjPEp1BkwqIS3eVZRF0%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;573&quot; height=&quot;308&quot; data-filename=&quot;스크린샷 2023-02-21 오후 3.59.39.png&quot; data-origin-width=&quot;1518&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 완료 된 이후, input data가 주어지면 위 과정을 거쳐 Log(odds) prediction 값을 얻게 되고, 이를 통해 probability를 업데이트 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.00.05.png&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HnK5P/btr0fULVJqx/FcnQ8nVFJASYtKNwNeNNiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HnK5P/btr0fULVJqx/FcnQ8nVFJASYtKNwNeNNiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HnK5P/btr0fULVJqx/FcnQ8nVFJASYtKNwNeNNiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHnK5P%2Fbtr0fULVJqx%2FFcnQ8nVFJASYtKNwNeNNiK%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;264&quot; height=&quot;58&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.00.05.png&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Gradient Boost 이론 (Classification)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ log(likelihood)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.10.58.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ESyIg/btr0fVqzZt8/ey7Ybbf52dqxPXPP8l6ChK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ESyIg/btr0fVqzZt8/ey7Ybbf52dqxPXPP8l6ChK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ESyIg/btr0fVqzZt8/ey7Ybbf52dqxPXPP8l6ChK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FESyIg%2Fbtr0fVqzZt8%2Fey7Ybbf52dqxPXPP8l6ChK%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;148&quot; height=&quot;51&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.10.58.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 우도를 곱하는건 너무 stressful 하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양 변에 log 를 취해주면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 4.11.33.png&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cx69Ap/btr0dmiuy0S/dya4PYoilkqVZV1E0j3Lck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cx69Ap/btr0dmiuy0S/dya4PYoilkqVZV1E0j3Lck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cx69Ap/btr0dmiuy0S/dya4PYoilkqVZV1E0j3Lck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcx69Ap%2Fbtr0dmiuy0S%2Fdya4PYoilkqVZV1E0j3Lck%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;279&quot; height=&quot;54&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 4.11.33.png&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;106&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;a href=&quot;https://itforfun.tistory.com/242&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&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;log: log는 단조 함수이므로 log 를 취해주는 것은 문제가 없다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명의 간소화를 위해 sample이 3개인 데이터를 사용한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.37.50.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwrxBP/btr0e8xjKmb/CQoOTf0aRSA8l3iVBkmW0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwrxBP/btr0e8xjKmb/CQoOTf0aRSA8l3iVBkmW0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwrxBP/btr0e8xjKmb/CQoOTf0aRSA8l3iVBkmW0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwrxBP%2Fbtr0e8xjKmb%2FCQoOTf0aRSA8l3iVBkmW0k%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;231&quot; height=&quot;136&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.37.50.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;302&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;Likelihood는 클 수록 예측이 잘 된다는 뜻이다. 당연히 Logistic Regression의 목표도 log(likelihood)를 최대화 하는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 log(likelihood)를 Loss function으로 쓰려면 -1 $\times$ log(likelihood)를 사용해야 한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.35.36.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bakrMe/btr0fVxpJc5/3qtEaQOIoksyVqnn5RRLlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bakrMe/btr0fVxpJc5/3qtEaQOIoksyVqnn5RRLlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bakrMe/btr0fVxpJc5/3qtEaQOIoksyVqnn5RRLlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbakrMe%2Fbtr0fVxpJc5%2F3qtEaQOIoksyVqnn5RRLlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;48&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.35.36.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이진 분류 문제이므로, $P(x_i | \theta)$ 가 1 아니면 0 이다. 이에 따라 Loss function을 아래와 같이 정리 할 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 4.45.57.png&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DFyHR/btrZ9NOzqHv/VbYxD1wr6RtJk0xJBVsCu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DFyHR/btrZ9NOzqHv/VbYxD1wr6RtJk0xJBVsCu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DFyHR/btrZ9NOzqHv/VbYxD1wr6RtJk0xJBVsCu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDFyHR%2FbtrZ9NOzqHv%2FVbYxD1wr6RtJk0xJBVsCu0%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;276&quot; height=&quot;54&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 4.45.57.png&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;131&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.43.25.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4tpvu/btr0eKwI0sI/xgufnv074q6sefBM37Kli0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4tpvu/btr0eKwI0sI/xgufnv074q6sefBM37Kli0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4tpvu/btr0eKwI0sI/xgufnv074q6sefBM37Kli0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4tpvu%2Fbtr0eKwI0sI%2Fxgufnv074q6sefBM37Kli0%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;284&quot; height=&quot;199&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.43.25.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.42.25.png&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIh9g/btr0fUL18AV/hX5PnOB2oXkmB8bwdEwpbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIh9g/btr0fUL18AV/hX5PnOB2oXkmB8bwdEwpbk/img.png&quot; data-alt=&quot;앞에 - 가 붙어야 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIh9g/btr0fUL18AV/hX5PnOB2oXkmB8bwdEwpbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIh9g%2Fbtr0fUL18AV%2FhX5PnOB2oXkmB8bwdEwpbk%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;432&quot; height=&quot;82&quot; data-filename=&quot;스크린샷 2023-02-21 오후 4.42.25.png&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;194&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;&lt;b&gt;함수가 미분 가능여부를 확인&lt;/b&gt;하자.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미분 가능을 확인하는 과정이니, sum 은 생략한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKLsGf/btrZ8ONJkEN/5yleeO0eaPuokKRHf04ZNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKLsGf/btrZ8ONJkEN/5yleeO0eaPuokKRHf04ZNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKLsGf/btrZ8ONJkEN/5yleeO0eaPuokKRHf04ZNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKLsGf%2FbtrZ8ONJkEN%2F5yleeO0eaPuokKRHf04ZNk%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;335&quot; height=&quot;48&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$y_i$ 의 readability를 위해 Observed 로 기입&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.32.02.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YJA4c/btr0fvMDVWJ/Rz2xoocHTTr8SIyIMUTeb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YJA4c/btr0fvMDVWJ/Rz2xoocHTTr8SIyIMUTeb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YJA4c/btr0fvMDVWJ/Rz2xoocHTTr8SIyIMUTeb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYJA4c%2Fbtr0fvMDVWJ%2FRz2xoocHTTr8SIyIMUTeb0%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;416&quot; height=&quot;160&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.32.02.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;374&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;$\log(p) - \log(1-p)$ 는 $\frac{\log(p)}{\log(1-p)}$ 이므로, log(odds) 이다.&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;그리고 $\log(1-p) 는 -\log(1+e^{\log(\textrm{odds})})$이다. 아래 유도과정을 살펴보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.35.13.png&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7fKS4/btr0e7SPTw4/5tbQ11t9KGZaEP4kCngR40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7fKS4/btr0e7SPTw4/5tbQ11t9KGZaEP4kCngR40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7fKS4/btr0e7SPTw4/5tbQ11t9KGZaEP4kCngR40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7fKS4%2Fbtr0e7SPTw4%2F5tbQ11t9KGZaEP4kCngR40%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;623&quot; height=&quot;116&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.35.13.png&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.36.31.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FyZvE/btrZ84pB5rr/ZRPcK2otSdQmiBGyIm6zZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FyZvE/btrZ84pB5rr/ZRPcK2otSdQmiBGyIm6zZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FyZvE/btrZ84pB5rr/ZRPcK2otSdQmiBGyIm6zZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFyZvE%2FbtrZ84pB5rr%2FZRPcK2otSdQmiBGyIm6zZ0%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;460&quot; height=&quot;252&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.36.31.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;534&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;이제 5) 가 미분 가능한지 확인해보자. 추후 우리의 목표는 prediction (log(odds)) 로 미분을 했을 때 0이 되는 극저점을 찾는 것이므로 log(odds) 로 미분가능한지 확인한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.51.44.png&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oMaJd/btr0dmC4H9B/yRPJaWeoKBC6YLiXDcaUr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oMaJd/btr0dmC4H9B/yRPJaWeoKBC6YLiXDcaUr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oMaJd/btr0dmC4H9B/yRPJaWeoKBC6YLiXDcaUr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoMaJd%2Fbtr0dmC4H9B%2FyRPJaWeoKBC6YLiXDcaUr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;147&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.51.44.png&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chain rule 에 의해 미분하면 아래와 같이 정리 가능하다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.52.59.png&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZyCz2/btr0gB6IWYs/JkkM4MKMxOk4aMwSUG3KSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZyCz2/btr0gB6IWYs/JkkM4MKMxOk4aMwSUG3KSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZyCz2/btr0gB6IWYs/JkkM4MKMxOk4aMwSUG3KSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZyCz2%2Fbtr0gB6IWYs%2FJkkM4MKMxOk4aMwSUG3KSk%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;179&quot; height=&quot;64&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 5.52.59.png&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.53.11.png&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvennA%2Fbtr0aVTgPBJ%2Fy3SRmigMTzsctJ12JTEoc0%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;114&quot; height=&quot;29&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.53.11.png&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미분 가능한 것을 확인했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Model 을 initalize 하기 위하여 initial prediction 이 필요하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.54.43.png&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAge6h/btr0e8RPsxc/WVkAX6FtKWZc3SgF6lUTnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAge6h/btr0e8RPsxc/WVkAX6FtKWZc3SgF6lUTnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAge6h/btr0e8RPsxc/WVkAX6FtKWZc3SgF6lUTnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAge6h%2Fbtr0e8RPsxc%2FWVkAX6FtKWZc3SgF6lUTnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;64&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.54.43.png&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;log(odds)은 prediction 이므로 위 식은 아래와 같이 정리 가능하다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.57.01.png&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZkp8C/btr0dlqDQSn/vHOBB4RTk2EzeEWKLEqxU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZkp8C/btr0dlqDQSn/vHOBB4RTk2EzeEWKLEqxU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZkp8C/btr0dlqDQSn/vHOBB4RTk2EzeEWKLEqxU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZkp8C%2Fbtr0dlqDQSn%2FvHOBB4RTk2EzeEWKLEqxU0%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;296&quot; height=&quot;24&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.57.01.png&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;54&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.57.57.png&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sy2XH/btr0gDDuheB/dKJ7TIwV67TRdhLF7aUd5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sy2XH/btr0gDDuheB/dKJ7TIwV67TRdhLF7aUd5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sy2XH/btr0gDDuheB/dKJ7TIwV67TRdhLF7aUd5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSy2XH%2Fbtr0gDDuheB%2FdKJ7TIwV67TRdhLF7aUd5K%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;305&quot; height=&quot;243&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.57.57.png&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 값을 minimize 하는 gamma 값을 찾아야 하므로 log(odds) 로 미분한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.53.11.png&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vennA/btr0aVTgPBJ/y3SRmigMTzsctJ12JTEoc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvennA%2Fbtr0aVTgPBJ%2Fy3SRmigMTzsctJ12JTEoc0%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;114&quot; height=&quot;29&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.53.11.png&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;72&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.59.41.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQYkoa/btr0e8dgJvM/GkwvqC749Np6Cbb94dZii1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQYkoa/btr0e8dgJvM/GkwvqC749Np6Cbb94dZii1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQYkoa/btr0e8dgJvM/GkwvqC749Np6Cbb94dZii1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQYkoa%2Fbtr0e8dgJvM%2FGkwvqC749Np6Cbb94dZii1%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;391&quot; height=&quot;398&quot; data-filename=&quot;스크린샷 2023-02-21 오후 5.59.41.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$-1 + p + -1 + p + -0 + p = 0$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$p = \frac{2}{3}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\log(odds) = \log(\frac{2}{1})$&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.02.09.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beGFow/btrZ9Fwlh6A/oynGg20u5Z2V3FBxK56AbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beGFow/btrZ9Fwlh6A/oynGg20u5Z2V3FBxK56AbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beGFow/btrZ9Fwlh6A/oynGg20u5Z2V3FBxK56AbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeGFow%2FbtrZ9Fwlh6A%2FoynGg20u5Z2V3FBxK56AbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;521&quot; height=&quot;230&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.02.09.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Yes: 2 , No: 1 라는 점에서 위 유도과정이 reasonable 한 것을 확인했다.&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;$F_0(x) = \log(\frac{2}{1}) = 0.69$&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;initial guess 를 구했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.03.36.png&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LSJd3/btr0e9b9bxh/e3CuLHDfnHKdfWyKpt6cM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LSJd3/btr0e9b9bxh/e3CuLHDfnHKdfWyKpt6cM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LSJd3/btr0e9b9bxh/e3CuLHDfnHKdfWyKpt6cM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLSJd3%2Fbtr0e9b9bxh%2Fe3CuLHDfnHKdfWyKpt6cM1%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;150&quot; height=&quot;51&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.03.36.png&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;100&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.04.23.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zt30Y/btr0fKbURmp/OwHN4jBd1EMuSpdZgNYNO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zt30Y/btr0fKbURmp/OwHN4jBd1EMuSpdZgNYNO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zt30Y/btr0fKbURmp/OwHN4jBd1EMuSpdZgNYNO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzt30Y%2Fbtr0fKbURmp%2FOwHN4jBd1EMuSpdZgNYNO1%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;629&quot; height=&quot;351&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.04.23.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1676970308146&quot; class=&quot;angelscript&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;m = 1
#M is usally 100
for i in range(m, M)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;m 은 첫번째 tree이고, M 은 마지막 tree이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.20.33.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uOXeC/btrZIlrjQdw/rk6r2gV7RXse5B2okMGky1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuOXeC%2FbtrZIlrjQdw%2Frk6r2gV7RXse5B2okMGky1%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;391&quot; height=&quot;65&quot; data-filename=&quot;스크린샷 2023-02-17 오후 8.20.33.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1676970308147&quot; class=&quot;less&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in range(1, n)
#for all samples&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Loss function의 미분은 이미 계산을 완료했다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 6.06.24.png&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSHMhY/btr0hqqqhfk/yRsniDm95DB6ieHQ8v53cK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSHMhY/btr0hqqqhfk/yRsniDm95DB6ieHQ8v53cK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSHMhY/btr0hqqqhfk/yRsniDm95DB6ieHQ8v53cK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSHMhY%2Fbtr0hqqqhfk%2FyRsniDm95DB6ieHQ8v53cK%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;213&quot; data-filename=&quot;edited_스크린샷 2023-02-21 오후 6.06.24.png&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$F(x) = F_{m-1}(x)$ 이므로,&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;Pseudo Residual 을 업데이트하면 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.11.54.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1bvPv/btr0aU7VxR9/5MO57Wc8CmGvlNGu48mkH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1bvPv/btr0aU7VxR9/5MO57Wc8CmGvlNGu48mkH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1bvPv/btr0aU7VxR9/5MO57Wc8CmGvlNGu48mkH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1bvPv%2Fbtr0aU7VxR9%2F5MO57Wc8CmGvlNGu48mkH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;126&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.11.54.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;282&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.12.19.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVQJjU/btr0glCV2GQ/ikIocfKc7KtFNqUSFwwaWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVQJjU/btr0glCV2GQ/ikIocfKc7KtFNqUSFwwaWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVQJjU/btr0glCV2GQ/ikIocfKc7KtFNqUSFwwaWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVQJjU%2Fbtr0glCV2GQ%2FikIocfKc7KtFNqUSFwwaWK%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;556&quot; height=&quot;75&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.12.19.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;136&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;Regression Tree 를 만들어서 분류한다. 단, 아래 tree가 Stump인 것은 계산의 단순화를 위해서이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.13.15.png&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;744&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyJ7iB/btr0e94gOtu/mKv13fXW0aG4OSE9WjWaeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyJ7iB/btr0e94gOtu/mKv13fXW0aG4OSE9WjWaeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyJ7iB/btr0e94gOtu/mKv13fXW0aG4OSE9WjWaeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyJ7iB%2Fbtr0e94gOtu%2FmKv13fXW0aG4OSE9WjWaeK%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;459&quot; height=&quot;306&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.13.15.png&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;744&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.14.27.png&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDyoRp/btr0e8j4ESY/YkGnzkKcsUH9B0eukuIKqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDyoRp/btr0e8j4ESY/YkGnzkKcsUH9B0eukuIKqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDyoRp/btr0e8j4ESY/YkGnzkKcsUH9B0eukuIKqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDyoRp%2Fbtr0e8j4ESY%2FYkGnzkKcsUH9B0eukuIKqk%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;589&quot; height=&quot;87&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.14.27.png&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(C) 를 통해 아래 식이 유도되는 과정을 살펴보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.43.19.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPiq7Z/btrZ8NM3uhZ/gIycbpyOo9tSnesC4BJIa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPiq7Z%2FbtrZ8NM3uhZ%2FgIycbpyOo9tSnesC4BJIa0%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;499&quot; height=&quot;140&quot; data-filename=&quot;스크린샷 2023-02-20 오후 6.43.19.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;140&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.16.01.png&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NeMzr/btr0fUetxU3/KOarKSQVotAXL5jcdy8Ih0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NeMzr/btr0fUetxU3/KOarKSQVotAXL5jcdy8Ih0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NeMzr/btr0fUetxU3/KOarKSQVotAXL5jcdy8Ih0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNeMzr%2Fbtr0fUetxU3%2FKOarKSQVotAXL5jcdy8Ih0%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;318&quot; height=&quot;59&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.16.01.png&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Loss function은 이미 알고있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_edited_스크린샷 2023-02-21 오후 6.06.24.png&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDBrKZ/btr0dpT50wZ/Y6IsSRWBzKmS82fWp3P7P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDBrKZ/btr0dpT50wZ/Y6IsSRWBzKmS82fWp3P7P0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDBrKZ/btr0dpT50wZ/Y6IsSRWBzKmS82fWp3P7P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDBrKZ%2Fbtr0dpT50wZ%2FY6IsSRWBzKmS82fWp3P7P0%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;61&quot; data-filename=&quot;edited_edited_edited_스크린샷 2023-02-21 오후 6.06.24.png&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;133&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.16.38.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MuaxR/btr0dpmd9tN/UTsMxjANeiDAVtM97Lm9s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MuaxR/btr0dpmd9tN/UTsMxjANeiDAVtM97Lm9s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MuaxR/btr0dpmd9tN/UTsMxjANeiDAVtM97Lm9s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMuaxR%2Fbtr0dpmd9tN%2FUTsMxjANeiDAVtM97Lm9s0%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;430&quot; height=&quot;54&quot; data-filename=&quot;스크린샷 2023-02-21 오후 6.16.38.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sum은 생략한다. (데이터가 한개인 경우, 계산의 단순화)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-22 오후 3.59.57.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FZuSQ/btr0pwRvH70/XOqf7QQAf7TLA40vgvEBG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FZuSQ/btr0pwRvH70/XOqf7QQAf7TLA40vgvEBG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FZuSQ/btr0pwRvH70/XOqf7QQAf7TLA40vgvEBG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFZuSQ%2Fbtr0pwRvH70%2FXOqf7QQAf7TLA40vgvEBG1%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;587&quot; height=&quot;273&quot; data-filename=&quot;스크린샷 2023-02-22 오후 3.59.57.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i에 1 을 대입&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.06.34.png&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drAEKt/btr0klX7M1L/2k4jhcbL1h9IR27r9mBR01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drAEKt/btr0klX7M1L/2k4jhcbL1h9IR27r9mBR01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drAEKt/btr0klX7M1L/2k4jhcbL1h9IR27r9mBR01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrAEKt%2Fbtr0klX7M1L%2F2k4jhcbL1h9IR27r9mBR01%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;435&quot; height=&quot;46&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.06.34.png&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gamma 에 대하여 미분 값을 찾는 것이 가장 정확한 방법이나 너무 많은 연산량이 필요하다.&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;이에 따라 Regression을 위해 Gradient Boost 를 사용한다.&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;즉, 테일러 급수를 통해 Loss function 을 근사한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.59.39.png&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/urSwL/btr0p7xrsqD/pmdL9VFSaTWMIg0CEL11XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/urSwL/btr0p7xrsqD/pmdL9VFSaTWMIg0CEL11XK/img.png&quot; data-alt=&quot;테일러 급수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/urSwL/btr0p7xrsqD/pmdL9VFSaTWMIg0CEL11XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FurSwL%2Fbtr0p7xrsqD%2FpmdL9VFSaTWMIg0CEL11XK%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;419&quot; height=&quot;132&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.59.39.png&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;220&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;자세한 내용은 &lt;a href=&quot;https://itforfun.tistory.com/251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;의 Gradient Descent 내용을 참고하자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.09.18.png&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/piotq/btr0mekkRcY/OQ7vkgFPKziMXHLUYyxQh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/piotq/btr0mekkRcY/OQ7vkgFPKziMXHLUYyxQh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/piotq/btr0mekkRcY/OQ7vkgFPKziMXHLUYyxQh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpiotq%2Fbtr0mekkRcY%2FOQ7vkgFPKziMXHLUYyxQh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;178&quot; data-filename=&quot;스크린샷 2023-02-22 오후 4.09.18.png&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\gamma ^2$ 이하 항을 $Q(x)$ 라 할 때, $Q(x)$ 의 크기는 무시할정도로 작다고 가정하여 생략되었다.&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>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/270</guid>
      <comments>https://itforfun.tistory.com/270#entry270comment</comments>
      <pubDate>Wed, 22 Feb 2023 16:06:09 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(3) - AdaBoost</title>
      <link>https://itforfun.tistory.com/268</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Adaboost 를 만드는 방법이 몇가지 존재하지만, 그 중 Decision Tree를 사용하는 것이 가장 일반적이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Decision Tree를 기반으로 하는 Adaboost 를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;랜덤 포레스트 내용이 필수적으로 등장하니, 잘 모르는 분들은 먼저 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/267&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;을 읽고 오면 좋다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;랜덤 포레스트는 트리를 만들 때 마다 full-sized tree를 만든다. 그리고 max sample 개수나 특정 조건에 따라 각각의 트리의 깊이가 다르다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.33.42.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb3lBM/btrZxJeKwpa/WkxLTe2fGlJIKPQEYhVsSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb3lBM/btrZxJeKwpa/WkxLTe2fGlJIKPQEYhVsSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb3lBM/btrZxJeKwpa/WkxLTe2fGlJIKPQEYhVsSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb3lBM%2FbtrZxJeKwpa%2FWkxLTe2fGlJIKPQEYhVsSK%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;219&quot; height=&quot;226&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.33.42.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, Adaboost는 주로 깊이가 1인, 즉 루트 노드에 두개의 leaves 만 존재한다. 이러한 형태의 Tree를 Stump 라 한다. 아래 이미지와같이 stump 들의 모임은 주로 Forest of Stumps 라 부른다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.34.54.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQIfYG/btrZxJy40GA/yOkWKeXDL3GK2Ayvw2gqP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQIfYG/btrZxJy40GA/yOkWKeXDL3GK2Ayvw2gqP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQIfYG/btrZxJy40GA/yOkWKeXDL3GK2Ayvw2gqP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQIfYG%2FbtrZxJy40GA%2FyOkWKeXDL3GK2Ayvw2gqP1%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;200&quot; height=&quot;278&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.34.54.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당연히 Stumps는 feature 하나로 결정을 내리다보니 좋은 의사결정이 나올 확률이 낮다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Stumps야 말로 &quot;weak learners&quot; 라 할 수 있다.&amp;nbsp;&lt;/span&gt;&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;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Random Forests와 AdaBoost의 차이점&lt;/span&gt;&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.42.58.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsOs0v/btrZz1y3z09/LmXKwkQ8wehdMwWbrRGMl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsOs0v/btrZz1y3z09/LmXKwkQ8wehdMwWbrRGMl1/img.png&quot; data-alt=&quot;Random Forests(왼쪽) AdaBoost(오른쪽)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsOs0v/btrZz1y3z09/LmXKwkQ8wehdMwWbrRGMl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsOs0v%2FbtrZz1y3z09%2FLmXKwkQ8wehdMwWbrRGMl1%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;706&quot; height=&quot;554&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.42.58.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Random Forests(왼쪽) AdaBoost(오른쪽)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;굉장히 흥미로운 점은 Random Forests는 각 트리의 vote 능력이 동등한 반면 AdaBoost는 vote 능력이 동등하지 않다. 이와 유사한 다양한 경우에서 능력에 따라 vote 의 weight를 다르게 주는 것이 항상 성능이 향상되었던 것을 떠올려볼 때, 굉장히 당연하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Random Forests는 tree의 순서가 상관 없었지만, AdaBoost는 순서가 굉장히 중요한 것도 다른점이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선행 Stump가 판단을 잘 못 내리면 따라오는 Stump 는 영향을 받을 수 밖에 없는 구조이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.49.22.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuVRmX/btrZuHuJspJ/daohYcTFWLBrKve9d20WuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuVRmX/btrZuHuJspJ/daohYcTFWLBrKve9d20WuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuVRmX/btrZuHuJspJ/daohYcTFWLBrKve9d20WuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuVRmX%2FbtrZuHuJspJ%2FdaohYcTFWLBrKve9d20WuK%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;202&quot; height=&quot;259&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.49.22.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;정리하자면 AdaBoost 다음의 3가지 철학을 가지고 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AdaBoost는 weak learner인 stumps를 여럿 결합하여 classifiaction을 수행한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Stumps 중 몇몇은 classification에 있어 더 강한 발언권을 갖는다. (weight)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 stump는 생성될 때 선행 stump 의 실수에 영향을 받는다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AdaBoost 생성 과정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.19.10.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKYPmL/btrZxI8dMBF/Y86D78ofsz73Z661ky9auk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKYPmL/btrZxI8dMBF/Y86D78ofsz73Z661ky9auk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKYPmL/btrZxI8dMBF/Y86D78ofsz73Z661ky9auk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYPmL%2FbtrZxI8dMBF%2FY86D78ofsz73Z661ky9auk%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;265&quot; height=&quot;354&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.19.10.png&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이 데이터가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.20.49.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb7Mfz/btrZuG3T6oc/zdxWRfvzCPf3L65WWsWgH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb7Mfz/btrZuG3T6oc/zdxWRfvzCPf3L65WWsWgH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb7Mfz/btrZuG3T6oc/zdxWRfvzCPf3L65WWsWgH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb7Mfz%2FbtrZuG3T6oc%2FzdxWRfvzCPf3L65WWsWgH1%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;541&quot; height=&quot;676&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.20.49.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Boost 는 선행 트리가 후행 트리에 영향을 끼쳐야하기 때문에 Weight의 값이 중요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기 Weight는 전체 데이터 샘플 개수 분의 1 로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Weight는 Stump 를 만드는 과정에서 계속 update 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫 Stump 를 결정하기 위해 각 feature를 택했을 때 Gini index 를 비교해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Chest Pain&lt;/b&gt;은 8개 중 총 3개의 incorrect한 결과를 생성한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.23.36.png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbjjAF/btrZAtPLWfT/iMJzg3HQdwCgn6Z86vB5W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbjjAF/btrZAtPLWfT/iMJzg3HQdwCgn6Z86vB5W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbjjAF/btrZAtPLWfT/iMJzg3HQdwCgn6Z86vB5W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbjjAF%2FbtrZAtPLWfT%2FiMJzg3HQdwCgn6Z86vB5W0%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;548&quot; height=&quot;760&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.23.36.png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Blocked Arteries&lt;/b&gt;는 총 4개의 incorrect한 결과를 생성한다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.24.28.png&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nkPVO/btrZA2xAP8b/kMeraIfHmnplHABpEFwMak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nkPVO/btrZA2xAP8b/kMeraIfHmnplHABpEFwMak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nkPVO/btrZA2xAP8b/kMeraIfHmnplHABpEFwMak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnkPVO%2FbtrZA2xAP8b%2FkMeraIfHmnplHABpEFwMak%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;595&quot; height=&quot;836&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.24.28.png&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Patient Weight &amp;gt; 176 &lt;/b&gt;은 총 1개의 incorrect한 결과를 생성한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 176으로 결정하는 방법은 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/265&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이글&lt;/a&gt;에서 설명 했었다. Iterate 과정 중, 172 180 사이에서 Gini index 가 가장 작았기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.30.20.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dx1wkE/btrZD2DCKwA/W0S3bHtS3aTraV6LSVJHOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dx1wkE/btrZD2DCKwA/W0S3bHtS3aTraV6LSVJHOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dx1wkE/btrZD2DCKwA/W0S3bHtS3aTraV6LSVJHOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdx1wkE%2FbtrZD2DCKwA%2FW0S3bHtS3aTraV6LSVJHOk%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;477&quot; height=&quot;270&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.30.20.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Patient Weight의 Gini Index가 가장 낮으므로 첫 노드로 선정 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AdaBoost는 각 Tree 마다 최종 의사결정 단계에서 발언권, 즉 가중치가 다르다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.32.08.png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQaC2c/btrZz01vuFe/T1q2JFyOu3j5KLVJnyW3v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQaC2c/btrZz01vuFe/T1q2JFyOu3j5KLVJnyW3v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQaC2c/btrZz01vuFe/T1q2JFyOu3j5KLVJnyW3v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQaC2c%2FbtrZz01vuFe%2FT1q2JFyOu3j5KLVJnyW3v0%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;583&quot; height=&quot;750&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.32.08.png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가장 먼저 Total Error 는 분류 실패한 데이터 샘플의 Weight를 모두 더한 값으로 여기서는 $\frac{1}{8}$이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(참고로 Sample Weight의 총 합은 1이다. Total Error 가 0에 가까울 수록 좋은 stump 이고 1에 가까울 수록 나쁜 stump이다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.33.44.png&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eesCEy/btrZC33KvxW/DKA4j1zByDv0glGvGnhKKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eesCEy/btrZC33KvxW/DKA4j1zByDv0glGvGnhKKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eesCEy/btrZC33KvxW/DKA4j1zByDv0glGvGnhKKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeesCEy%2FbtrZC33KvxW%2FDKA4j1zByDv0glGvGnhKKk%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;275&quot; height=&quot;51&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.33.44.png&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Amount of Say 를 그래프화 하면 아래와 같다. Total Eror 가 0에 가까울 수록 Amount of Say는 무한대에 수렴하고, 1에 가까울 수록 - 무한대에 수렴한다. 물론 그런 극단의 상황은 피하기 위해서 실제 application단에서는 보정을 위해 작은 error term 을 추가하여 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.34.09.png&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWvW8L/btrZA1yIqDn/BubcoqGTzv742vAo6UKkdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWvW8L/btrZA1yIqDn/BubcoqGTzv742vAo6UKkdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWvW8L/btrZA1yIqDn/BubcoqGTzv742vAo6UKkdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWvW8L%2FbtrZA1yIqDn%2FBubcoqGTzv742vAo6UKkdK%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;199&quot; height=&quot;274&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.34.09.png&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정리하자면, &lt;b&gt;Weight &amp;gt; 176 &lt;/b&gt;스텀프는 0.97의 Amount of Say를 갖는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.36.22.png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPGyr7/btrZzZ9oj4W/bpThXEgh6qkuPe2zfAnKY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPGyr7/btrZzZ9oj4W/bpThXEgh6qkuPe2zfAnKY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPGyr7/btrZzZ9oj4W/bpThXEgh6qkuPe2zfAnKY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPGyr7%2FbtrZzZ9oj4W%2FbpThXEgh6qkuPe2zfAnKY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;299&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.36.22.png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;816&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;span style=&quot;color: #000000;&quot;&gt;만약 Weight가 아닌 Chest Pain 을 골랐다면 Total Error 가 $frac{3}{8}$ 이고, Amount of Say 는 아래와 같았을 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.39.10.png&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8eynQ/btrZAHAlg3g/pPKHLUBVctycedNL9zUk71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8eynQ/btrZAHAlg3g/pPKHLUBVctycedNL9zUk71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8eynQ/btrZAHAlg3g/pPKHLUBVctycedNL9zUk71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8eynQ%2FbtrZAHAlg3g%2FpPKHLUBVctycedNL9zUk71%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;278&quot; height=&quot;44&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.39.10.png&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;차이가 큰 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 과정을 통해 잘못 분류된 샘플의 Sample Weight가 Amount of Say 에 얼마나 큰 영향을 끼치는지 이해했다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Sample Weight 업데이트&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 첫 Stump 분류를 통해 잘못 분류한 Sample의 Weight 를 업데이트 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sample의 Weight 을 업데이트 함으로써 다음 Stump를 위한 데이터 Sampling 과정에 영향을 끼친다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.43.57.png&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6kw4F/btrZxdAAxCm/khXSc3keuTTzWJB7OHRIWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6kw4F/btrZxdAAxCm/khXSc3keuTTzWJB7OHRIWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6kw4F/btrZxdAAxCm/khXSc3keuTTzWJB7OHRIWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6kw4F%2FbtrZxdAAxCm%2FkhXSc3keuTTzWJB7OHRIWK%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;556&quot; height=&quot;750&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.43.57.png&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래프를 통해 알 수 있듯이, 기존의 Sample weight를 amount of say 값에 따라 update한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리의 amount of say 는 0.97 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.45.35.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqZ8aT/btrZzoaD9H3/oVI90dWWWYNA7trXaQtx0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqZ8aT/btrZzoaD9H3/oVI90dWWWYNA7trXaQtx0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqZ8aT/btrZzoaD9H3/oVI90dWWWYNA7trXaQtx0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqZ8aT%2FbtrZzoaD9H3%2FoVI90dWWWYNA7trXaQtx0k%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;276&quot; height=&quot;54&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.45.35.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\frac{1}{8}$에 비해 크게 증가하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 데이터 샘플의 weight 가 증가하였다면, 올바르게 분류하였던 샘플들의 weight는 작게 할 필요가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.46.50.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yMCON/btrZuGv8oxa/hPHp0da5YdboJK7tKgxC11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yMCON/btrZuGv8oxa/hPHp0da5YdboJK7tKgxC11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yMCON/btrZuGv8oxa/hPHp0da5YdboJK7tKgxC11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyMCON%2FbtrZuGv8oxa%2FhPHp0da5YdboJK7tKgxC11%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;514&quot; height=&quot;256&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.46.50.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번에는 Amount of Say의 - 값을 승으로 삼아 Weight를 더 작게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.47.31.png&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byB9ls/btrZB3QtC14/LRotk4Fz4C3jHIHpFxbGx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byB9ls/btrZB3QtC14/LRotk4Fz4C3jHIHpFxbGx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byB9ls/btrZB3QtC14/LRotk4Fz4C3jHIHpFxbGx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyB9ls%2FbtrZB3QtC14%2FLRotk4Fz4C3jHIHpFxbGx0%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;292&quot; height=&quot;55&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.47.31.png&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후 sample weight를 업데이트 하고, 총 합이 1이 되도록 Normalize한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.48.21.png&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXGpu8/btrZBrYpvZG/jDG9yGzWP6K75mVcSWHPh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXGpu8/btrZBrYpvZG/jDG9yGzWP6K75mVcSWHPh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXGpu8/btrZBrYpvZG/jDG9yGzWP6K75mVcSWHPh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXGpu8%2FbtrZBrYpvZG%2FjDG9yGzWP6K75mVcSWHPh1%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;133&quot; height=&quot;316&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.48.21.png&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 Stump 를 위해 데이터를 샘플링한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 샘플링을 위해 0 ~ 1사이의 난수를 총 8번 뽑는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 때 뽑은 8개의 난수를 아래의 기준에 맞춰 데이터 샘플링에 적용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Weight 의 총합은 1이므로, 앞쪽부터 순서대로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0 ~ 0.07: 1번째 샘플&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0.07 ~ 0.14: 2번째 샘플&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0.21 ~ 0.7 : 4번째 샘플&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0.93 ~ 1 : 8번째 샘플&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.49.35.png&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3b7Fj/btrZBEDhDxX/J9prNcXe2ncIcE81KUV6Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3b7Fj/btrZBEDhDxX/J9prNcXe2ncIcE81KUV6Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3b7Fj/btrZBEDhDxX/J9prNcXe2ncIcE81KUV6Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3b7Fj%2FbtrZBEDhDxX%2FJ9prNcXe2ncIcE81KUV6Hk%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;349&quot; height=&quot;365&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.49.35.png&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 샘플링 결과, weight가 높았던 4번째 sample 이 가장 많이 뽑힌 것을 확인할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.51.49.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcYqBu/btrZznv11Uf/zC9TtjYFjaPuyxqqLDHJzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcYqBu/btrZznv11Uf/zC9TtjYFjaPuyxqqLDHJzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcYqBu/btrZznv11Uf/zC9TtjYFjaPuyxqqLDHJzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcYqBu%2FbtrZznv11Uf%2FzC9TtjYFjaPuyxqqLDHJzk%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;264&quot; height=&quot;342&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.51.49.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;682&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.53.12.png&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1QeQ0/btrZzLi5JF4/SYKR5u6PCkaBAcwZWH2oIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1QeQ0/btrZzLi5JF4/SYKR5u6PCkaBAcwZWH2oIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1QeQ0/btrZzLi5JF4/SYKR5u6PCkaBAcwZWH2oIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1QeQ0%2FbtrZzLi5JF4%2FSYKR5u6PCkaBAcwZWH2oIk%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;341&quot; height=&quot;357&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.53.12.png&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 후, Sample Weight 는 다시 초기화 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만, 동일한 데이터가 4개나 있다보니 만약 이번에도 해당 데이터를 잘못 분류하게 되면 penalty가 굉장히 크다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;애초에 해당 데이터에 대해 gini index가 낮은 feature를 선택하다보니 웬만하면 분류가 잘 될 확률이 높다고 생각한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;최종적으로 새로운 데이터가 들어오면 각 Stump들은 분류를 마친 후, 각 결과별로 Amount of Say를 총합하여 더 높은 쪽으로 결론을 내리게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.55.40.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K4S7F/btrZz1e6gpo/jDWJGTvz68sAAoGuVlsdP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K4S7F/btrZz1e6gpo/jDWJGTvz68sAAoGuVlsdP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K4S7F/btrZz1e6gpo/jDWJGTvz68sAAoGuVlsdP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK4S7F%2FbtrZz1e6gpo%2FjDWJGTvz68sAAoGuVlsdP1%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;1510&quot; height=&quot;680&quot; data-filename=&quot;스크린샷 2023-02-16 오후 10.55.40.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약한 분류기를 직렬로 쌓는 강력한 모델 AdaBoost를 살펴보았다. 다만, 과정에서 살펴보았듯이 첫 노드가 제대로 예측하지 못했던 데이터 샘플에 치우치는 경향이 발생하기 쉬워보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/268</guid>
      <comments>https://itforfun.tistory.com/268#entry268comment</comments>
      <pubDate>Thu, 16 Feb 2023 22:57:52 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5(2) - 앙상블이란?, Random Forests</title>
      <link>https://itforfun.tistory.com/267</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;앙상블&amp;nbsp;&lt;/b&gt;&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;앙상블에 대한 General하고 Naive한 정의는 여러 약한 알고리즘의 힘을 합쳐서 하나의 강력한 의사결정을 하는 머신러닝 기법이다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;배깅 : 동일 알고리즘의 약 분류기를 병렬로 사용 &lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부스팅 : 동일 알고리즘의 약 분류기를 직렬로 사용 &lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보팅 : 다른 알고리즘의 약 분류기를 병렬로 사용&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;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;분류문제에 입각하여 앙상블을 정의해보면 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앙상블은 여러 개의 의사 결정 트리(Decision Tree)를 결합하여 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 여러 개의 약 분류기(Weak Classifier)를 병렬 또는 직렬로 결합하여 강 분류기(Strong Classifier)로 만드는 것이다.&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;&lt;b&gt;배깅(Bagging)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uCTWH/btrZsEEOr0h/VHQpomkGHOfiiM6Bt4RT0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uCTWH/btrZsEEOr0h/VHQpomkGHOfiiM6Bt4RT0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uCTWH/btrZsEEOr0h/VHQpomkGHOfiiM6Bt4RT0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuCTWH%2FbtrZsEEOr0h%2FVHQpomkGHOfiiM6Bt4RT0K%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;1194&quot; height=&quot;584&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;584&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;원본 데이터를 랜덤 샘플링(복원 추출)해, 크기가 동일한 n개의 샘플 데이터를 생성한다. 이 과정을 Bootstrapping이라 한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;각 샘플 데이터를 기반으로 동일한 알고리즘&lt;span&gt;&amp;nbsp;&lt;/span&gt;기반의 의사 결정 트리를 병렬적으로 학습한 뒤,&lt;/li&gt;
&lt;li&gt;각 모델의 학습 결과를 결합하는 방식이다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반적으로 학습 결과를 결합할 때,&lt;/li&gt;
&lt;li&gt;회귀&lt;span&gt;&amp;nbsp;&lt;/span&gt;문제라면 평균(average),&lt;/li&gt;
&lt;li&gt;분류 문제라면 다중 투표(majority vote)가 사용된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;대표적인 배깅 모델로는 'Random Forest'가 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Random Forest&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;랜덤 포레스트는 배깅의 일종이므로, 먼저 Bootstrapping을 수행한다.&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;원본 데이터를 랜덤 샘플링(복원 추출)해, 크기가 동일한 n개의 샘플 데이터를 생성한다. 이 과정을 Bootstrapping이라 한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;약 분류기인 Decision Tree 를 생성하는 과정이 모델의 핵심 포인트이다.&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;기존 Decision Tree와 달리 모든 feature를&amp;nbsp; Tree 생성에 사용하지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들어 feature이 약 30개 주어진다하면, Information Gain의 결과(거의 이것 때문) + Prunning 과정으로 인해 몇개의 강력한 feature만이 데이터를 분류하는데 적극적으로 활용된다.&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;강력한 feature외의 feature 들은 의사결정 과정에 직접적으로 거의 기여가 없게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 해결하기 위하여 각각의 약 분류기를 생성할 때 사용할 feature의 개수를 지정해놓고 feature를 random sampling하여 각각 다른 feature를 고려한 여러 약 분류기의 tree를 생성하여 의사결정 과정에 참여하도록 한다. (투표로 결정한다.)&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;여기까지가 Random Forest 개념의 골자였다면, 아래는 추가적인 사항이다.&amp;nbsp;&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;- 흥미로운 점은 Bootstrapping 을 통해 각 tree의 학습 데이터셋을 만들게 되면 각각 random sampling과정에서 놓치게 되는 data가 존재하게 된다. 이를 Out of Bag Samples라 한다. Out of Bag samples은 tree 학습 과정에서 관측하지 못한 데이터이므로, 성능 점검에 적극적으로 활용할 수 있다. 또한 tree 들이 약간씩 다른 데이터셋으로 학습했다는 점에서 Overfitting도 어느정도 피하도록 돕는다.&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;- Out of Bag Samples로 Accuracy를 비교한다. 이후 가장 성능이 좋은 feature의 개수를 선택하기 위해 feature의 개수를 조정해가며 Out of Bag error가 가장 낮은 상황을 찾는다.&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;- 결측치가 존재하는 경우&amp;nbsp;&lt;/b&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 4.43.32.png&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DgVnP/btrZzoun6Of/xy3m3Cq9sII4xuj75bHQa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DgVnP/btrZzoun6Of/xy3m3Cq9sII4xuj75bHQa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DgVnP/btrZzoun6Of/xy3m3Cq9sII4xuj75bHQa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDgVnP%2FbtrZzoun6Of%2Fxy3m3Cq9sII4xuj75bHQa1%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;312&quot; height=&quot;271&quot; data-filename=&quot;스크린샷 2023-02-16 오후 4.43.32.png&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 Blocked Arteries, Weight 의 데이터가 결측된 결과표가 있다고 가정하자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 Random Forests는 결측치가 존재할 때, Weak Guess 를 한 후, Guess 를 강화하는 방식으로 접근한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 Guess는 Label 값을 기준으로, 동일 label을 가진 다른 데이터를 참고한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 Blocked Arteries 는 &quot;No&quot;, Weight 는 (125+210)/2 = 167.5로 Guess 한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 4.46.27.png&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CFvoW/btrZAhaiFNE/xPir7ZWTPIK98oR2Yd9YR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CFvoW/btrZAhaiFNE/xPir7ZWTPIK98oR2Yd9YR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CFvoW/btrZAhaiFNE/xPir7ZWTPIK98oR2Yd9YR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCFvoW%2FbtrZAhaiFNE%2FxPir7ZWTPIK98oR2Yd9YR0%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;336&quot; height=&quot;281&quot; data-filename=&quot;스크린샷 2023-02-16 오후 4.46.27.png&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Guess 를 Refine 하여 더 강력한 Guess 를 만들어보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-16 오후 5.39.34.png&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vx8qV/btrZuCtoW3N/C1pk4LB85w5CbJS6kuh8H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vx8qV/btrZuCtoW3N/C1pk4LB85w5CbJS6kuh8H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vx8qV/btrZuCtoW3N/C1pk4LB85w5CbJS6kuh8H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVx8qV%2FbtrZuCtoW3N%2FC1pk4LB85w5CbJS6kuh8H0%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;758&quot; height=&quot;371&quot; data-filename=&quot;edited_스크린샷 2023-02-16 오후 5.39.34.png&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Decision Tree로 분류한 결과 같은 leaf 노드에 떨어지는 데이터는 유사하다고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 정보를 활용하여 Proximity Matrix 를 만들 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.41.46.png&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IK9tV/btrZAtIA2gZ/tIH9HlYULCBY0t1brA49iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IK9tV/btrZAtIA2gZ/tIH9HlYULCBY0t1brA49iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IK9tV/btrZAtIA2gZ/tIH9HlYULCBY0t1brA49iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIK9tV%2FbtrZAtIA2gZ%2FtIH9HlYULCBY0t1brA49iK%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;389&quot; height=&quot;364&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.41.46.png&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 모든 Tree에 넣고 돌려보면서 나온 결과들을 matrix에 기입한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.42.08.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbL5Yi/btrZtqmm6Zn/lNr2kloamFIWaIkzr8KK11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbL5Yi/btrZtqmm6Zn/lNr2kloamFIWaIkzr8KK11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbL5Yi/btrZtqmm6Zn/lNr2kloamFIWaIkzr8KK11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbL5Yi%2FbtrZtqmm6Zn%2FlNr2kloamFIWaIkzr8KK11%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;228&quot; height=&quot;218&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.42.08.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과 다음과 같은 Proximity Matrix 를 얻을 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.43.36.png&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxCor2/btrZzMu8bye/Jw42WAytK5L64UDkUtfSe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxCor2/btrZzMu8bye/Jw42WAytK5L64UDkUtfSe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxCor2/btrZzMu8bye/Jw42WAytK5L64UDkUtfSe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxCor2%2FbtrZzMu8bye%2FJw42WAytK5L64UDkUtfSe0%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;222&quot; height=&quot;211&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.43.36.png&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;276&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;Proximity Matrix를 Tree의 총 개수로 나누어 준다. (만약 모든 tree에서 동일한 결과를 얻은 두 데이터라면 matrix에는 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;이제 이 정보를 활용하여 4번 데이터의 결측치를 업데이트 해보자.&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;4번 데이터는 1번 데이터와 0.1 , 2번 데이터와 0.1, 3번 데이터와 0.8의 관계가 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.45.50.png&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjRFOA/btrZtqzVVh2/M8xctOyPk7dDHZcRwPWoWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjRFOA/btrZtqzVVh2/M8xctOyPk7dDHZcRwPWoWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjRFOA/btrZtqzVVh2/M8xctOyPk7dDHZcRwPWoWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjRFOA%2FbtrZtqzVVh2%2FM8xctOyPk7dDHZcRwPWoWk%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;754&quot; height=&quot;413&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.45.50.png&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;862&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;결측치 Bolcked Arteries 에 대해 2번 데이터는 &quot;YES&quot;라 응답한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&quot;YES&quot; 는 3번 중 1번 등장했으므로, $\frac{1}{3}$ 이라 할 수 있다.&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;&quot;YES&quot; 의 weight는 $\frac{\textrm{2번 데이터의 proximity 값}}{\textrm{4번 데이터의 전체 proximity 합}}$ 으로 구할 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.48.58.png&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cS1GNA/btrZAF90EDl/BjzMyXeyRKAESt0WYAesEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cS1GNA/btrZAF90EDl/BjzMyXeyRKAESt0WYAesEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cS1GNA/btrZAF90EDl/BjzMyXeyRKAESt0WYAesEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS1GNA%2FbtrZAF90EDl%2FBjzMyXeyRKAESt0WYAesEk%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;210&quot; height=&quot;54&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.48.58.png&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 위와 같이 나타난다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 방법으로 &quot;NO&quot;의 weight를 구하면 아래와 같고,&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.50.01.png&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H3CZt/btrZzHAJxfz/nayJBeU3Rilg1hwnvMo9c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H3CZt/btrZzHAJxfz/nayJBeU3Rilg1hwnvMo9c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H3CZt/btrZzHAJxfz/nayJBeU3Rilg1hwnvMo9c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3CZt%2FbtrZzHAJxfz%2FnayJBeU3Rilg1hwnvMo9c0%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;365&quot; height=&quot;72&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.50.01.png&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과 NO 에 해당되는 cetainty 값은 0.6임을 알 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.50.23.png&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CUoYW/btrZB4amOMZ/kHkXx7oQIWv7uYhXK6krSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CUoYW/btrZB4amOMZ/kHkXx7oQIWv7uYhXK6krSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CUoYW/btrZB4amOMZ/kHkXx7oQIWv7uYhXK6krSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCUoYW%2FbtrZB4amOMZ%2FkHkXx7oQIWv7uYhXK6krSK%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;187&quot; height=&quot;58&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.50.23.png&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 4번 데이터의 Blocked Arteries 결측치는 &quot;NO&quot; 가 유지된다.&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;동일한 방법으로 Weight 결측치도 살펴보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;continuous 한 값이니, 각 값에 weight 를 바로 곱해서 더해주면 된다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.51.54.png&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnbMLd/btrZAsXebXI/e07wY6Ip8PQFSOPZw9KFh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnbMLd/btrZAsXebXI/e07wY6Ip8PQFSOPZw9KFh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnbMLd/btrZAsXebXI/e07wY6Ip8PQFSOPZw9KFh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnbMLd%2FbtrZAsXebXI%2Fe07wY6Ip8PQFSOPZw9KFh1%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;528&quot; height=&quot;70&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.51.54.png&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 4번 데이터의 Weight 결측치를 198.5로 업데이트한다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.53.00.png&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIcaV/btrZuDslhbX/ATBSCfK8VJ7lheCxXWh0S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIcaV/btrZuDslhbX/ATBSCfK8VJ7lheCxXWh0S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIcaV/btrZuDslhbX/ATBSCfK8VJ7lheCxXWh0S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIcaV%2FbtrZuDslhbX%2FATBSCfK8VJ7lheCxXWh0S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;328&quot; height=&quot;280&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.53.00.png&quot; data-origin-width=&quot;652&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;이 과정을 몇번 반복하면 (5~6번), 각 결측치가 특정 값에 수렴하게 된다.&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;proximity matrix 는 활용도가 높다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 아래와 같은 proximity matrix 가 있다고 가정해보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.54.35.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbsqFP/btrZtrMkYRI/QQijEdIvUFPG9t0e45kwx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbsqFP/btrZtrMkYRI/QQijEdIvUFPG9t0e45kwx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbsqFP/btrZtrMkYRI/QQijEdIvUFPG9t0e45kwx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbsqFP%2FbtrZtrMkYRI%2FQQijEdIvUFPG9t0e45kwx0%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;588&quot; height=&quot;248&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.54.35.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 - proximity values 의 결과 값을 각 데이터 샘플 간의 distance 라고 볼 수 있다.&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;이를 통해 히트맵이나 MDS plot 을 만들 수 있다. 즉, 샘플 들 간의 관계를 시각화하는 것이 간단하다.&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HAbY0/btrZtpOy7IW/Xmlm1MSkLt3k9OhawBI6Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HAbY0/btrZtpOy7IW/Xmlm1MSkLt3k9OhawBI6Q1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;686&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.55.43.png&quot; width=&quot;216&quot; height=&quot;215&quot; data-widthpercent=&quot;44&quot; style=&quot;width: 43.4915%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HAbY0/btrZtpOy7IW/Xmlm1MSkLt3k9OhawBI6Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHAbY0%2FbtrZtpOy7IW%2FXmlm1MSkLt3k9OhawBI6Q1%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;688&quot; height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XPHzq/btrZBrwTiQo/jyiNnnCiQLfVCwrDsbIp50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XPHzq/btrZBrwTiQo/jyiNnnCiQLfVCwrDsbIp50/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;666&quot; data-filename=&quot;스크린샷 2023-02-16 오후 5.56.01.png&quot; style=&quot;width: 55.3458%;&quot; data-widthpercent=&quot;56&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XPHzq/btrZBrwTiQo/jyiNnnCiQLfVCwrDsbIp50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXPHzq%2FbtrZBrwTiQo%2FjyiNnnCiQLfVCwrDsbIp50%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;850&quot; height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;trainig dataset이 아닌 input data에 결측치가 존재한다면 어떡해야 할까?&amp;nbsp;&lt;/b&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.05.07.png&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDg5Nz/btrZAtBT6Wn/sSKqXZ0zQ4jc66lppFMjq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDg5Nz/btrZAtBT6Wn/sSKqXZ0zQ4jc66lppFMjq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDg5Nz/btrZAtBT6Wn/sSKqXZ0zQ4jc66lppFMjq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDg5Nz%2FbtrZAtBT6Wn%2FsSKqXZ0zQ4jc66lppFMjq1%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;340&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.05.07.png&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 환자는 Heart Disease 가 있을까 없을까?&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.18.36.png&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eDJQnC/btrZznbnarQ/4KXpTaMgJXeGSscLuA3530/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eDJQnC/btrZznbnarQ/4KXpTaMgJXeGSscLuA3530/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eDJQnC/btrZznbnarQ/4KXpTaMgJXeGSscLuA3530/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeDJQnC%2FbtrZznbnarQ%2F4KXpTaMgJXeGSscLuA3530%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;350&quot; height=&quot;366&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.18.36.png&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;626&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;이 후 iterate 과정을 통해 각각의 Blocked Arteries 를 채워보면 아래와 같이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 그 결과를 통해 얻은 데이터 샘플들을 tree에 넣어보자.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.19.58.png&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBSTGk/btrZxeeQzga/WKIFYpKYH7LRpO9CbkqQHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBSTGk/btrZxeeQzga/WKIFYpKYH7LRpO9CbkqQHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBSTGk/btrZxeeQzga/WKIFYpKYH7LRpO9CbkqQHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBSTGk%2FbtrZxeeQzga%2FWKIFYpKYH7LRpO9CbkqQHk%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;695&quot; height=&quot;337&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.19.58.png&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 데이터 샘플을 tree에 돌린 결과 label 이 옳게 나온 경우는 각각&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Blocked Arterires &quot;YES&quot;, Heart Disease &quot;Yes&quot; : 3번&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Blocked Arterires &quot;NO&quot;, Heart Disease &quot;NO&quot; : 1번 으로 3번이 더 많이 나왔다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 최종 결과는 아래의 데이터 샘플을 선택한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.22.09.png&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp7DnU/btrZtrr68vM/qdX9lHAB4L3mqsausb3kR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp7DnU/btrZtrr68vM/qdX9lHAB4L3mqsausb3kR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp7DnU/btrZtrr68vM/qdX9lHAB4L3mqsausb3kR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp7DnU%2FbtrZtrr68vM%2FqdX9lHAB4L3mqsausb3kR1%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;360&quot; height=&quot;129&quot; data-filename=&quot;스크린샷 2023-02-16 오후 6.22.09.png&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random Forest 는 결측지에도 강하고, Overfitting 에도 강한, 그리고 시각화도 가능한 강력한 머신러닝 Bagging 기법이다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/267</guid>
      <comments>https://itforfun.tistory.com/267#entry267comment</comments>
      <pubDate>Thu, 16 Feb 2023 17:58:51 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 4.5 -회귀 나무 (Regression Tree)</title>
      <link>https://itforfun.tistory.com/265</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;decision tree를 공부할 때 보통 이산형 데이터 즉 분류모델을 배운다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 decision tree는 연속형 데이터에도 사용가능하다.&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;(https://www.youtube.com/watch?v=g9c66TUylZ4) 내용 기반&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.51.13.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5GLEF/btrZtsQiGcl/22ouuJ4T1typoRe1MsKB9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5GLEF/btrZtsQiGcl/22ouuJ4T1typoRe1MsKB9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5GLEF/btrZtsQiGcl/22ouuJ4T1typoRe1MsKB9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5GLEF%2FbtrZtsQiGcl%2F22ouuJ4T1typoRe1MsKB9K%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;497&quot; height=&quot;698&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.51.13.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linear Regression 으로 처리하기 어려운 경우 회귀 나무를 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K09yI/btrZrgceALm/RSL4zzYk8GU9Qo4Lu5vxlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K09yI/btrZrgceALm/RSL4zzYk8GU9Qo4Lu5vxlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K09yI/btrZrgceALm/RSL4zzYk8GU9Qo4Lu5vxlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK09yI%2FbtrZrgceALm%2FRSL4zzYk8GU9Qo4Lu5vxlK%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;642&quot; height=&quot;740&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 X의 범위로 간단하게 분류한 후, leaf node에는 해당되는 데이터들의 y 값의 평균을 기입한다.&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;회귀 나무는 feature 개수가 1개보다 많을 때 진가가 드러난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.54.48.png&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/se3dg/btrZoqUfGXc/25kMW2FSS3mGlv1P3Uxtlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/se3dg/btrZoqUfGXc/25kMW2FSS3mGlv1P3Uxtlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/se3dg/btrZoqUfGXc/25kMW2FSS3mGlv1P3Uxtlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fse3dg%2FbtrZoqUfGXc%2F25kMW2FSS3mGlv1P3Uxtlk%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;304&quot; height=&quot;275&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.54.48.png&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서부터는 눈으로 구분하기 쉽지 않다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.55.41.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;658&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eI1D67/btrZmD0z3pC/vuyqxk97nWQ1ISNHq3AyJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eI1D67/btrZmD0z3pC/vuyqxk97nWQ1ISNHq3AyJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eI1D67/btrZmD0z3pC/vuyqxk97nWQ1ISNHq3AyJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeI1D67%2FbtrZmD0z3pC%2Fvuyqxk97nWQ1ISNHq3AyJk%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;613&quot; height=&quot;248&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.55.41.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;658&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 회귀 나무는 쉽게 분류할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;Root Node 는 어떻게 정할까?&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.59.04.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch2pQY/btrZrVSV4hN/a1jNuvEsbGFL98iildir4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch2pQY/btrZrVSV4hN/a1jNuvEsbGFL98iildir4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch2pQY/btrZrVSV4hN/a1jNuvEsbGFL98iildir4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch2pQY%2FbtrZrVSV4hN%2Fa1jNuvEsbGFL98iildir4k%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;599&quot; height=&quot;758&quot; data-filename=&quot;스크린샷 2023-02-15 오후 8.59.04.png&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;758&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;root node 의 기준을 Dosage &amp;lt; 3 으로 정한다고 가정해보자.&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 미만의 node 는 하나로 Average = 0 이다. 분류된 node의 개수가 적긴 하지만, 일단 잘 맞춘다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 3 초과의 node는 Aveage = 38.8 이다. 실제로 데이터를 살펴보면 상당 수의 데이터가 100% 이기도 하고, 0%이기도 하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;38.8 이라는 수치는 전혀 데이터를 잘 설명하지 못한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.01.32.png&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LRO0p/btrZqUUPLp8/AD4WOF9Xgu94UkbLb9WrHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LRO0p/btrZqUUPLp8/AD4WOF9Xgu94UkbLb9WrHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LRO0p/btrZqUUPLp8/AD4WOF9Xgu94UkbLb9WrHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLRO0p%2FbtrZqUUPLp8%2FAD4WOF9Xgu94UkbLb9WrHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;542&quot; height=&quot;748&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.01.32.png&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;748&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;이 점선을 Residual 이라 한다.&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;수치적으로 차이를 나타내려면 MSE 를 구하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.04.03.png&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EWUMZ/btrZrct9QlI/OkPdEbg8k88UtSyCXi4w4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EWUMZ/btrZrct9QlI/OkPdEbg8k88UtSyCXi4w4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EWUMZ/btrZrct9QlI/OkPdEbg8k88UtSyCXi4w4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEWUMZ%2FbtrZrct9QlI%2FOkPdEbg8k88UtSyCXi4w4k%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;586&quot; height=&quot;274&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.04.03.png&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼 오른 노드의 Residual을 모두 구하는 과정은 MSE 구하는 과정과 동일하다.&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;위 Residual 의 총 합은 37,468.5 로 계산되었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.05.41.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hps74/btrZrd0Ssam/o1dNlaR0xZIPymddEpPEFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hps74/btrZrd0Ssam/o1dNlaR0xZIPymddEpPEFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hps74/btrZrd0Ssam/o1dNlaR0xZIPymddEpPEFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHps74%2FbtrZrd0Ssam%2Fo1dNlaR0xZIPymddEpPEFk%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;354&quot; height=&quot;185&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.05.41.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구한 값을 그래프에 표현해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈치가 빠른 분들은 위 그래프를 보고 Root Node를 결정하기 위한 과정이 interate 과정이라는 것을 알아챘을 것이다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.07.49.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1vftZ/btrZuGtYxNu/bpQcyC1tndzOVRlgnMtl9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1vftZ/btrZuGtYxNu/bpQcyC1tndzOVRlgnMtl9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1vftZ/btrZuGtYxNu/bpQcyC1tndzOVRlgnMtl9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1vftZ%2FbtrZuGtYxNu%2FbpQcyC1tndzOVRlgnMtl9k%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;473&quot; height=&quot;420&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.07.49.png&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 Root Node 의 기준은 다음 두 데이터의 평균 값으로 결정한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-02-15 오후 9.08.21.png&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;892&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xLqgM/btrZreZORMc/9rsbK3ycWs3orzbg9XFiy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xLqgM/btrZreZORMc/9rsbK3ycWs3orzbg9XFiy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xLqgM/btrZreZORMc/9rsbK3ycWs3orzbg9XFiy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxLqgM%2FbtrZreZORMc%2F9rsbK3ycWs3orzbg9XFiy1%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;614&quot; height=&quot;892&quot; data-filename=&quot;edited_스크린샷 2023-02-15 오후 9.08.21.png&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;892&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 과정으로 다시 분류한 후, residual 값을 계산한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.08.33.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m39Ix/btrZuHNb1yL/eYFXMucMHnnee27eVwKznk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m39Ix/btrZuHNb1yL/eYFXMucMHnnee27eVwKznk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m39Ix/btrZuHNb1yL/eYFXMucMHnnee27eVwKznk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm39Ix%2FbtrZuHNb1yL%2FeYFXMucMHnnee27eVwKznk%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;376&quot; height=&quot;400&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.08.33.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;400&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.11.14.png&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jkp7c/btrZuIrNucC/k6tDV8SNExsRIPJKoDcyLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jkp7c/btrZuIrNucC/k6tDV8SNExsRIPJKoDcyLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jkp7c/btrZuIrNucC/k6tDV8SNExsRIPJKoDcyLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkp7c%2FbtrZuIrNucC%2Fk6tDV8SNExsRIPJKoDcyLk%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;386&quot; height=&quot;400&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.11.14.png&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 Residual 이 가장 낮은 Dosage &amp;lt; 14.5 가 Root Node 가 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Decision Tree에서 label 을 Root Node 로 사용했던 것과 사뭇 다르다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.14.17.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRdpD4/btrZrU0NJy2/LZ2a6U80yW8Kv7S8cjb2Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRdpD4/btrZrU0NJy2/LZ2a6U80yW8Kv7S8cjb2Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRdpD4/btrZrU0NJy2/LZ2a6U80yW8Kv7S8cjb2Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRdpD4%2FbtrZrU0NJy2%2FLZ2a6U80yW8Kv7S8cjb2Dk%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;340&quot; height=&quot;253&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.14.17.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이후 분류에서도 똑같이 Residual 을 구하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.14.05.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZcwuR/btrZqUtLZaJ/kkfhGYfGBXfK4mIlXkrJU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZcwuR/btrZqUtLZaJ/kkfhGYfGBXfK4mIlXkrJU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZcwuR/btrZqUtLZaJ/kkfhGYfGBXfK4mIlXkrJU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZcwuR%2FbtrZqUtLZaJ%2FkkfhGYfGBXfK4mIlXkrJU0%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;515&quot; height=&quot;264&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.14.05.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분류 된 데이터가 1개일 때 leaf node 처리한다.&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;또한 Average = 0 으로 분류 된 데이터는 4개나 되지만 4개가 다 같은 값이므로 leaf node 처리한다.&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;다 좋은데 위에 처럼 하면 overfitting 될 가능성이 있다.&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;(보통 최소 데이터 개수 20개)&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;위 문제는 데이터가 애초에 개수가 적으므로 minimum 개수를 7개로 설정한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.27.57.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgwF9y/btrZmCUXGZW/tu76abGtc7OCQRZKDqQQCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgwF9y/btrZmCUXGZW/tu76abGtc7OCQRZKDqQQCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgwF9y/btrZmCUXGZW/tu76abGtc7OCQRZKDqQQCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgwF9y%2FbtrZmCUXGZW%2Ftu76abGtc7OCQRZKDqQQCK%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;669&quot; height=&quot;746&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.27.57.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 왼쪽 노드는 leaf 가 되고, 6개 데이터의 Average는 4.2% 가 된다.&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;오른 쪽은 데이터가 7개보다 많으므로 leaf 가 아니고 분류 node 가 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.29.55.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blEHAd/btrZo8F6GQL/pJbzSkuv8WGm4pBQ7YPifK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blEHAd/btrZo8F6GQL/pJbzSkuv8WGm4pBQ7YPifK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blEHAd/btrZo8F6GQL/pJbzSkuv8WGm4pBQ7YPifK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblEHAd%2FbtrZo8F6GQL%2FpJbzSkuv8WGm4pBQ7YPifK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;256&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.29.55.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;722&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;당연히 분류의 기준 값은 residual 을 통해 찾는다.&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;feature가 Dosage 1개인 경우로 분류를 해보았다. feature 의 개수가 1개를 넘을 경우는 어떻게 될까?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Dosage의 residual 을 구해 가장 낮을 때의 threshold 를 후보로 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 Age로 동일하게 MSR(Minimum sum of residual)의 threshold를 후보로 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sex도 동일하게 threshold 후보를 찾는다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.33.38.png&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ImdTY/btrZrZ8V1Uf/hKzqLNzEuy1hEJUHIEZ6l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ImdTY/btrZrZ8V1Uf/hKzqLNzEuy1hEJUHIEZ6l0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ImdTY/btrZrZ8V1Uf/hKzqLNzEuy1hEJUHIEZ6l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FImdTY%2FbtrZrZ8V1Uf%2FhKzqLNzEuy1hEJUHIEZ6l0%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;554&quot; height=&quot;868&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.33.38.png&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 중 가장 SSR이 낮은 Age를 첫번 째 cadidate로 한다.&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.34.56.png&quot; data-origin-width=&quot;1632&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj6EGJ/btrZsGOPf0Q/AatsAvaS8i8vopeF5p4kPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj6EGJ/btrZsGOPf0Q/AatsAvaS8i8vopeF5p4kPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj6EGJ/btrZsGOPf0Q/AatsAvaS8i8vopeF5p4kPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj6EGJ%2FbtrZsGOPf0Q%2FAatsAvaS8i8vopeF5p4kPK%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;610&quot; height=&quot;251&quot; data-filename=&quot;스크린샷 2023-02-15 오후 9.34.56.png&quot; data-origin-width=&quot;1632&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※Age 로 분류한 후, 또 다시 분류할 때는 남은 Dosage 와 Sex 중에서 골라야 하는 것일까? Decision Tree는 애초에 한 feature로 discrete 하게 분류를 해버리고 나니 다음 분류 노드에서 사용했던 feature가 제외되지만, Regression Tree는 얼마든지 또 continuous 한 값을 사용할 수 있다. 논리적으로 생각해 봤을 때는 만약 Age feature가 또다시 SSR이 낮으면 선택될 것 같다.&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;Regression Tree는 딱 봐도 굉장히 오래 걸릴 것 같다. 하지만 굉장히 직관적이다.&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/265</guid>
      <comments>https://itforfun.tistory.com/265#entry265comment</comments>
      <pubDate>Wed, 15 Feb 2023 21:40:11 +0900</pubDate>
    </item>
    <item>
      <title>NLP 총 정리 글</title>
      <link>https://itforfun.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/ha_junv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/ha_junv&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1672294409347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;까먹을때 빨리 기억나려고 작성하는 블로그 : 네이버 블로그&quot; data-og-description=&quot;자기소개가 없습니다.&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/ha_junv&quot; data-og-url=&quot;https://blog.naver.com/ha_junv&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d2d1lK/hyQ5wMAG2k/wdKCYkjhMOWHRoISsB5nE1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://blog.naver.com/ha_junv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/ha_junv&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d2d1lK/hyQ5wMAG2k/wdKCYkjhMOWHRoISsB5nE1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;까먹을때 빨리 기억나려고 작성하는 블로그 : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;자기소개가 없습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NLP 는 네이버 블로그에서 정리했었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글을 티스토리로 옮기기가 용이하지 않아 링크&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/NLP</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/263</guid>
      <comments>https://itforfun.tistory.com/263#entry263comment</comments>
      <pubDate>Thu, 29 Dec 2022 15:13:57 +0900</pubDate>
    </item>
    <item>
      <title>초평면이 법선벡터의 곱셈인 이유</title>
      <link>https://itforfun.tistory.com/261</link>
      <description>&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;i&gt;w&lt;/i&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;$\vec{w} \cdot \vec{x} + b = 0$&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;$y = (x, y)$ in $R^2$&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;직선의 방정식 general form&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ax + by + d = 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;우리에게 익숙한 형태&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$y = -\frac{a}{b}x - \frac{d}{b}$&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;$x = t , -\infty &amp;lt; t &amp;lt; \infty$&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;$\textrm{since, } y = \vec{p} = \vec{a} + t\vec{u}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$y = (x,y) = (x_1, y_1) + t(u_1, u_2) = (x_1 + tu_1, y_1+tu_2)$&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;$y = (x,y) = \bigg( t, -\frac{a}{b}t - \frac{d}{b} \bigg) = t \bigg( 1, -\frac{a}{b} \bigg) +\bigg( 0, -\frac{d}{b}\bigg)$&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, -\frac{a}{b})$ 방향으로 하여 $(0 , -\frac{d}{b})$ 를 통과한다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\vec{n} \cdot y + d = 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;$\vec{n} \cdot p + d = 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;since $d = -\vec{n} \cdot p$&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;$\vec{n} \cdot y - \vec{n} \cdot p = 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;$\vec{n} \cdot(y-p) $ 이 식은 &lt;a href=&quot;https://itforfun.tistory.com/259&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;에서 성립함을 확인했다. 점 - 점 = 벡터, 벡터 $\cdot$ 법선벡터&amp;nbsp; = 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;즉 d 는 $- n \cdot p$ 이다.&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;a href=&quot;https://itforfun.tistory.com/256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt; 에서 확인한 직선의 방정식을 아핀 공간에서 구하는 형태와 동일하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/261</guid>
      <comments>https://itforfun.tistory.com/261#entry261comment</comments>
      <pubDate>Thu, 10 Nov 2022 16:51:43 +0900</pubDate>
    </item>
    <item>
      <title>법선벡터를 이용한 직선의 방정식</title>
      <link>https://itforfun.tistory.com/259</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;점 $A(x_1, y_1)$를 지나고 법선벡터가 $\vec{n} = (n_1, n_2)$인 직선의 방정식은&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;$n_1(x- x_1) + n_2(y-y_1) = 0$&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-09 오후 8.02.11.png&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q1UVA/btrQN8tHU9T/3okqlNhRL8J7Ck1sXAOfzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q1UVA/btrQN8tHU9T/3okqlNhRL8J7Ck1sXAOfzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q1UVA/btrQN8tHU9T/3okqlNhRL8J7Ck1sXAOfzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ1UVA%2FbtrQN8tHU9T%2F3okqlNhRL8J7Ck1sXAOfzk%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;201&quot; height=&quot;334&quot; data-filename=&quot;스크린샷 2022-11-09 오후 8.02.11.png&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;334&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;법선 벡터는 내적하면 0 이라는 특성을 이용한 공식이다.&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;&lt;b&gt;(점 - 점) $\cdot$ 법선 벡터 = 0&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 구했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ 2개의 점을 알아도 직선을 구할 수 있다.&amp;nbsp;&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;&lt;b&gt;$a_1 x_1 + a_2 x_2 = b$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$Ax = b$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$Ax - b = 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;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/259</guid>
      <comments>https://itforfun.tistory.com/259#entry259comment</comments>
      <pubDate>Wed, 9 Nov 2022 20:27:54 +0900</pubDate>
    </item>
    <item>
      <title>초평면</title>
      <link>https://itforfun.tistory.com/258</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;초평면&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dd5sC/btrQgEHoGPC/UeWmKxFx1h8JhMBG2Cq5Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dd5sC/btrQgEHoGPC/UeWmKxFx1h8JhMBG2Cq5Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dd5sC/btrQgEHoGPC/UeWmKxFx1h8JhMBG2Cq5Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDd5sC%2FbtrQgEHoGPC%2FUeWmKxFx1h8JhMBG2Cq5Kk%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;823&quot; height=&quot;442&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #777777;&quot;&gt;초평면 $1 + 2X_1 + 3X_2 = 0$. $1 + 2X_1 = 3X_2 &amp;gt; 0$은 파란 점이 모인 파란 공간이고 $1+2X_1+3X_2 &amp;lt; 0$ 은 보라색 점이 모인 보라색 공간이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p차원 공간에서, 초평면은 p-1 차원인 평평한 아핀 부분 공간이다. &lt;a href=&quot;https://itforfun.tistory.com/256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아핀공간&lt;/a&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;예를 들어, 2차원 공간에서 초평면은 평평한 1차원 부분공간으로 선이다. 3차원 초평면은 평평한 2차원 부분공간이며 이는 평면이다. p&amp;gt;3 인 경우에는 초평면을 시각화하기 어렵지만 p-1 차원인 평평한 부분 공간인 것은 여전히 유효하다.&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;2차원에서 초평면의 수학적인 정의는 다음의 방정식으로 정의한다.&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;$$\beta_0 + \beta_1 X_1 + \beta_2 X_2 = 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;2차원의 초평면은 1차원 선이다. 2차원 파라미터 $\beta_0, \beta_1, \beta_2$ 가 존재하며, $X_1, X_2$ 는 초평면 상 임의의 점이다.&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;위 식은 임의의 p차원으로 확장 할 수 있다. 즉 p차원에 대한 초평면은 아래의 식으로 정의한다.&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;$$\beta_0 + \beta_1 X_1 + \beta_2 X_2&amp;nbsp; + ... +\beta_p X_p= 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;p차원 공간의 점 $X_1 X_p$가 위 식을 만족하면 X는 초평면 상에 있다.&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;X가 아래 식을 만족하면 X는 초평면의 한쪽에 놓인 다는 것을 의미한다.&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;$$\beta_0 + \beta_1 X_1 + \beta_2 X_2&amp;nbsp; + ... +\beta_p X_p &amp;gt; 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;반면 아래 식을 만족하면 X는 초평면의 다른 한쪽에 놓인다.&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;$$\beta_0 + \beta_1 X_1 + \beta_2 X_2&amp;nbsp; + ... +\beta_p X_p &amp;lt; 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;따라서 초평면은 p차원 공간을 두개로 분할한다고 생각할 수 있다. X가 분리된 두 공간 중 어느 부분에 속하는지 판별하려면 초평면 식에 X를 대힙하여 0보다 큰지 작은지 확인하면 된다.&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;&lt;b&gt;분리 초평면을 이용한 분류 (Classification Using a Separating Hyperplane)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$p$차원 공간에서 $n$개의 학습 관측값들로 구성된 $n \times p$ 크기의 행렬 $X$가 있다고 가정해보자. 그리고 이 관측값들은 두 개의 class에 속한다. $y_1 \sim y_n$이 -1 또는 1 이다. 목적은학습 셋에 기반한 &lt;span&gt;test observation을 정확하게 분류하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-08 오후 8.39.26.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WWzQq/btrQJPAg4dF/oPnLx8zArce283CA6gFl50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WWzQq/btrQJPAg4dF/oPnLx8zArce283CA6gFl50/img.png&quot; data-alt=&quot;보라 점과 파란 점을 나누는 여러개의 초평면 후보군이 검은 선으로 표기되어 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WWzQq/btrQJPAg4dF/oPnLx8zArce283CA6gFl50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWWzQq%2FbtrQJPAg4dF%2FoPnLx8zArce283CA6gFl50%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;599&quot; height=&quot;291&quot; data-filename=&quot;스크린샷 2022-11-08 오후 8.39.26.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;684&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;Training observation이 정답 class label에 해당하도록 완벽하게 분리하는 초평면을 정의할 수 있다고 가정해보자. 위 그림에서 왼쪽 그림은 3개의 분리 초평면 예이다. 분리 초평면을 정의하고 식에 X를 대입했을 때, 0보다 큰지 작은지 판별하여 class를 할당할 수 있다.&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;$$\beta_0 + \beta_1 x_i1 + \beta_2 x_i2&amp;nbsp; + ... +\beta_p x_ip &amp;gt; 0 \textrm{ if } y_i = 1,$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\beta_0 + \beta_1 x_i1 + \beta_2 x_i2&amp;nbsp; + ... +\beta_p x_ip &amp;lt; 0 \textrm{ if } y_i = -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;이를 다르게 표현하면 분리 초평면은 모든 관측값에 대하여 아래의 식을 만족한다.&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;$$y_i(\beta_0 + \beta_1 x_i1 + \beta_2 x_i2&amp;nbsp; + ... +\beta_p x_ip) &amp;gt; 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;분리 초평면이 존재한다면 이것을 사용하여 자연스러운 분류기를 구성할 수 있다. test observation이 초평면의 어느 면에 위치해있는지에 따라 class를 부여하면 된다. 예를 들어 f(x)가 양수이면 x는 1에 할당, 음수이면 x = -1 에 할당한다.&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;f(x)의 크기도 활용하여 f(x)가 0과 멀면 x는 초평면과 많이 떨어져 있고 class를 신뢰할 수 있다. 하지만 초평면과 가까우면 클래스에 대한 확신이 덜하다.&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/258</guid>
      <comments>https://itforfun.tistory.com/258#entry258comment</comments>
      <pubDate>Tue, 8 Nov 2022 20:44:16 +0900</pubDate>
    </item>
    <item>
      <title>벡터의 외적</title>
      <link>https://itforfun.tistory.com/257</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;벡터의 외적&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;평행하지 않은 두 벡터가 있다고 가정하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.18.45.png&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXkw2E/btrQq5pB6Fe/SP6MkhLP6iyfyU3dTBivKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXkw2E/btrQq5pB6Fe/SP6MkhLP6iyfyU3dTBivKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXkw2E/btrQq5pB6Fe/SP6MkhLP6iyfyU3dTBivKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXkw2E%2FbtrQq5pB6Fe%2FSP6MkhLP6iyfyU3dTBivKk%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;218&quot; height=&quot;159&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.18.45.png&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;350&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;span style=&quot;color: #000000;&quot;&gt;두 벡터에게 동시에 수직인 벡터를 구하고 싶으면 어떻게 해야할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\vec{a}, \vec{b}$ 두 벡터가 만드는 평면이 있을텐데, 그 평면 위에서는 두 벡터에 동시에 수직인 벡터를 찾을 수 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 벡터의 외적은 기본적으로 3차원 공간에서 생각해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.25.00.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctgzUp/btrQrEyjkUB/5nXBZnXkSGFw2JMIzNMQz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctgzUp/btrQrEyjkUB/5nXBZnXkSGFw2JMIzNMQz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctgzUp/btrQrEyjkUB/5nXBZnXkSGFw2JMIzNMQz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctgzUp%2FbtrQrEyjkUB%2F5nXBZnXkSGFw2JMIzNMQz0%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;232&quot; height=&quot;181&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.25.00.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;358&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;span style=&quot;color: #000000;&quot;&gt;$\vec{a}, \vec{b}$ 에 동시에 수직인 벡터 $\vec{P}$ 가 있다고 하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 $\vec{P}$ 를 쉽게 찾을 수 있는 방법을 찾아보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.26.41.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Im4k1/btrQpTqa3Bx/tRuMf1e3ekwjw8FvEi9ppK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Im4k1/btrQpTqa3Bx/tRuMf1e3ekwjw8FvEi9ppK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Im4k1/btrQpTqa3Bx/tRuMf1e3ekwjw8FvEi9ppK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIm4k1%2FbtrQpTqa3Bx%2FtRuMf1e3ekwjw8FvEi9ppK%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;382&quot; height=&quot;187&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.26.41.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;362&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;span style=&quot;color: #000000;&quot;&gt;각 벡터를 성분으로 표현하고, 수직인 두 벡터를 내적하면 0이라는 성질을 사용해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$a_1x + a_2y + a_3z = 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$b_1x + b_2y + b_3z = 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 두 식을 동시에 만족시키는 $(x,y,z)$ 를 구하면 $\vec{P}$ 의 성분이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$z$ 성분을 없애기 위하여 아래의 작업을 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$a_1&amp;nbsp;b_3x&amp;nbsp;+&amp;nbsp;a_2&amp;nbsp;b_3y&amp;nbsp;+&amp;nbsp;a_3&amp;nbsp;b_3z&amp;nbsp;=&amp;nbsp;0&amp;nbsp;-&amp;nbsp;(1)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$a_3b_1x + a_3b_2y + a_3b_3z = 0 - (2)$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$(1) - (2) = (a_1b_3 - a_3b_1)x + (a_2b_3 - a_3b_2)y = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 $x = a_2b_3 - a_3b_2$ 이고 $y = -(a_1b_3 - a_3b_1)$ 이면 자연스럽게 결과가 성립한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 결과 $z = a_1b_2 - a_2b_1$ 로 얻을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, (1), (2) 번식에 모두 성립하는 x,y,z 를 찾을 수 있었고 $\vec{P}$ 는 &amp;nbsp;$\vec{a}$ 와 &amp;nbsp;$\vec{b}$ 모두와 수직임을 알게되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$&amp;nbsp;\vec{a}&amp;nbsp;\times&amp;nbsp;&amp;nbsp;\vec{b}&amp;nbsp;=&amp;nbsp;(a_1,&amp;nbsp;a_2,&amp;nbsp;a_3)&amp;nbsp;\times&amp;nbsp;(b_1,&amp;nbsp;b_2,&amp;nbsp;b_3)$$&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ = (a_2b_3 - a_3b_2, a_1b_3 - a_3b_1, a_1b_2 - a_2b_1)$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터의 외적은 위에서 유도한 것이라고 생각하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;공식을 암기하지말고 다음과 같이 간단하게 계산하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B4fJZ/btrQq6hOdQh/aJ3WijxQqrQYWLfzsVy0Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B4fJZ/btrQq6hOdQh/aJ3WijxQqrQYWLfzsVy0Gk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;214&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.38.31.png&quot; style=&quot;width: 51.4255%; margin-right: 10px;&quot; data-widthpercent=&quot;52.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B4fJZ/btrQq6hOdQh/aJ3WijxQqrQYWLfzsVy0Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB4fJZ%2FbtrQq6hOdQh%2FaJ3WijxQqrQYWLfzsVy0Gk%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;658&quot; height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yQQ69/btrQpFMxp7R/63YkKkKx9dShFW0cX6zFPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yQQ69/btrQpFMxp7R/63YkKkKx9dShFW0cX6zFPk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;230&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.38.41.png&quot; style=&quot;width: 47.4117%;&quot; data-widthpercent=&quot;47.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yQQ69/btrQpFMxp7R/63YkKkKx9dShFW0cX6zFPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyQQ69%2FbtrQpFMxp7R%2F63YkKkKx9dShFW0cX6zFPk%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;652&quot; height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o5k5e/btrQrr65m30/WFbflcjIdPKEcspBjdxAj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o5k5e/btrQrr65m30/WFbflcjIdPKEcspBjdxAj1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;220&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.39.04.png&quot; style=&quot;width: 50.0168%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;50.61&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o5k5e/btrQrr65m30/WFbflcjIdPKEcspBjdxAj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo5k5e%2FbtrQrr65m30%2FWFbflcjIdPKEcspBjdxAj1%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;648&quot; height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M40fm/btrQpGLsQ5n/EloQ1kP1x0FKCMcCJEoexk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M40fm/btrQpGLsQ5n/EloQ1kP1x0FKCMcCJEoexk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;224&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.39.23.png&quot; style=&quot;width: 48.8204%; margin-top: 10px;&quot; data-widthpercent=&quot;49.39&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M40fm/btrQpGLsQ5n/EloQ1kP1x0FKCMcCJEoexk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM40fm%2FbtrQpGLsQ5n%2FEloQ1kP1x0FKCMcCJEoexk%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;644&quot; height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 성분을 모두 작성한 후, $a_1, b_1$ 을 지운다. 그 다음 성분끼리 X 자로 각 곱한 값들을 빼준다. ($a_2b_3 - a_3b_2$)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;벡터의 외적은 내적과 달리 결과값도 벡터이다. &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.41.55.png&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eYQUIh/btrQpVVW3Ua/XD6QM4LrrkpYQuC2OKc1tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eYQUIh/btrQpVVW3Ua/XD6QM4LrrkpYQuC2OKc1tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eYQUIh/btrQpVVW3Ua/XD6QM4LrrkpYQuC2OKc1tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeYQUIh%2FbtrQpVVW3Ua%2FXD6QM4LrrkpYQuC2OKc1tk%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;345&quot; height=&quot;197&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.41.55.png&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;366&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;span style=&quot;color: #000000;&quot;&gt;다만 벡터의 외적은 다음과 같이 방향이 반대인 경우도 당연히 있을 것이다. 이 때, 외적 결과값 벡터의 방향을 어떻게 알 수 있을까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.45.21.png&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qxJK8/btrQpUbEBP2/Tr0vMr63hM2draZRXy1Njk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qxJK8/btrQpUbEBP2/Tr0vMr63hM2draZRXy1Njk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qxJK8/btrQpUbEBP2/Tr0vMr63hM2draZRXy1Njk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqxJK8%2FbtrQpUbEBP2%2FTr0vMr63hM2draZRXy1Njk%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;368&quot; height=&quot;249&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.45.21.png&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWElnI/btrQrDGf1Dr/kNiIpIqlnbcr7dzYczmz3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWElnI/btrQrDGf1Dr/kNiIpIqlnbcr7dzYczmz3k/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;356&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.46.31.png&quot; style=&quot;width: 28.8847%; margin-right: 10px;&quot; data-widthpercent=&quot;29.57&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWElnI/btrQrDGf1Dr/kNiIpIqlnbcr7dzYczmz3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWElnI%2FbtrQrDGf1Dr%2FkNiIpIqlnbcr7dzYczmz3k%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;666&quot; height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDYTdQ/btrQqi388yo/aHmtGjOHAJkdfKVId5vKWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDYTdQ/btrQqi388yo/aHmtGjOHAJkdfKVId5vKWk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;194&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.45.57.png&quot; style=&quot;width: 35.3366%; margin-right: 10px;&quot; data-widthpercent=&quot;36.18&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDYTdQ/btrQqi388yo/aHmtGjOHAJkdfKVId5vKWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDYTdQ%2FbtrQqi388yo%2FaHmtGjOHAJkdfKVId5vKWk%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;444&quot; height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW0w4l/btrQq5cbSzY/kEnvW2kOprPvogqzBzm9BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW0w4l/btrQq5cbSzY/kEnvW2kOprPvogqzBzm9BK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;180&quot; data-filename=&quot;스크린샷 2022-11-04 오후 6.46.02.png&quot; style=&quot;width: 33.4531%;&quot; data-widthpercent=&quot;34.25&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW0w4l/btrQq5cbSzY/kEnvW2kOprPvogqzBzm9BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW0w4l%2FbtrQq5cbSzY%2FkEnvW2kOprPvogqzBzm9BK%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;390&quot; height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;크기가 1 이다 보니 딱 떨어지는 결과가 나왔지만, 두벡터의 외적이 다른 한 벡터의 방향과 동일해진다는 것만을 확인 할 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;방향을 구할 때는 오른 손의 법칙을 기억하자!&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW6vvH/btrQpt6NO7H/kHiiCDcZlytZnPOkGEfQB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW6vvH/btrQpt6NO7H/kHiiCDcZlytZnPOkGEfQB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW6vvH/btrQpt6NO7H/kHiiCDcZlytZnPOkGEfQB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW6vvH%2FbtrQpt6NO7H%2FkHiiCDcZlytZnPOkGEfQB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;221&quot; height=&quot;200&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$&amp;nbsp;\vec{a}&amp;nbsp;\times&amp;nbsp;&amp;nbsp;\vec{b}&amp;nbsp;=&amp;nbsp;(a_2&amp;nbsp;b_3&amp;nbsp;-&amp;nbsp;a_3&amp;nbsp;b_2,&amp;nbsp;a_1&amp;nbsp;b_3&amp;nbsp;-&amp;nbsp;a_3&amp;nbsp;b_1,&amp;nbsp;a_1&amp;nbsp;b_2&amp;nbsp;-&amp;nbsp;a_2&amp;nbsp;b_1)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;외적의 크기는 아래와 같다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$| \vec{a} \times \vec{b}|^2 = (a_2b_3)^2 + (a_3b_2)^2 - 2a_2a_3b_2b_3 $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ + (a_3b_1)^2 + (a_1b_3)^2 - 2a_1a_3b_1b_3$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ + (a_1b_2)^2 + (a_2b_1)^2 - 2a_1a_2b_1b_2$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기에 $(a_1 b_1)^2 + (a_2 b_2)^2 + (a_3 b_3)^2, - (a_1 b_1)^2 - (a_2 b_2)^2 - (a_3 b_3)^2$ 를 더해준다. (합쳐서 0)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 후 다시 정리를 해주면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ $\bigg( (\vec{a} \cdot \vec{b})^2 = |\vec{a}|^2|\vec{b}|^2 \cdot \cos^2\theta \bigg)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$=&amp;nbsp;(a_1^2+a_2^2+a_3^2)b_3^2&amp;nbsp;+&amp;nbsp;&amp;nbsp;(a_1^2+a_2^2+a_3^2)b_2^2&amp;nbsp;+&amp;nbsp;&amp;nbsp;(a_1^2+a_2^2+a_3^2)b_1^2&amp;nbsp;-&amp;nbsp;(a_1&amp;nbsp;b_1&amp;nbsp;+&amp;nbsp;a_2&amp;nbsp;b_2&amp;nbsp;+&amp;nbsp;a_3&amp;nbsp;b_3)^2$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$=&amp;nbsp;(a_1^2+a_2^2+a_3^2)(b_1^2+b_2^2+b_3^3)&amp;nbsp;-&amp;nbsp;(a_1b_1&amp;nbsp;+&amp;nbsp;a_2b_2&amp;nbsp;+&amp;nbsp;a_3b_3)^2$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= |\vec{a}|^2 \times |\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= |\vec{a}|^2 \times |\vec{b}|^2 \, (1 - cos^2 \theta)$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$|\vec{a} \times \vec{b}|^2 = |\vec{a}|^2 \times |\vec{b}|^2 \, (sin^2 \theta)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$(0 \leq \theta \leq \pi)&amp;nbsp; \,\,\, sin \theta \textrm{ 가 양수임을 확인}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$|\vec{a} \times \vec{b}|= |\vec{a}| \times |\vec{b}| \, (sin \theta)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.41.25.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5Dm5p/btrQq5wEyHp/eq3rKKSVuJouahDmdmIpIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5Dm5p/btrQq5wEyHp/eq3rKKSVuJouahDmdmIpIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5Dm5p/btrQq5wEyHp/eq3rKKSVuJouahDmdmIpIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5Dm5p%2FbtrQq5wEyHp%2Feq3rKKSVuJouahDmdmIpIK%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;656&quot; height=&quot;202&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.41.25.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;378&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;벡터의 외적의 성질&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.42.32.png&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMugPt/btrQqiQMCvx/vaqx8yjRKdTKqwDmr6w5Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMugPt/btrQqiQMCvx/vaqx8yjRKdTKqwDmr6w5Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMugPt/btrQqiQMCvx/vaqx8yjRKdTKqwDmr6w5Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMugPt%2FbtrQqiQMCvx%2Fvaqx8yjRKdTKqwDmr6w5Q1%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;185&quot; height=&quot;147&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.42.32.png&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. $(\vec{a} \times \vec{b}) \cdot \vec{a} = 0$ , $(\vec{a} \times \vec{b}) \cdot \vec{b} = 0$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.45.58.png&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dj2rAL/btrQqlNCkot/ulAXMGwhBKwG8p17RTFc7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dj2rAL/btrQqlNCkot/ulAXMGwhBKwG8p17RTFc7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dj2rAL/btrQqlNCkot/ulAXMGwhBKwG8p17RTFc7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdj2rAL%2FbtrQqlNCkot%2FulAXMGwhBKwG8p17RTFc7k%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;186&quot; height=&quot;177&quot; data-filename=&quot;스크린샷 2022-11-04 오후 7.45.58.png&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.&amp;nbsp; $\vec{b}&amp;nbsp;\times&amp;nbsp;\vec{a}&amp;nbsp;=&amp;nbsp;-&amp;nbsp;(\vec{a}&amp;nbsp;\times&amp;nbsp;\vec{b})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;크기는 동일하나 방향이 반대이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. $\vec{a} \times \vec{a} = \vec{0}$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외적의 크기를 구할 때 $\sin \theta(0) = 0$ 이므로&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;평행한 벡터들도 마찬가지다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.00.55.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dho0s8/btrQrq1DP8m/FylWVnSEv0dISXn3KjTkO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dho0s8/btrQrq1DP8m/FylWVnSEv0dISXn3KjTkO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dho0s8/btrQrq1DP8m/FylWVnSEv0dISXn3KjTkO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdho0s8%2FbtrQrq1DP8m%2FFylWVnSEv0dISXn3KjTkO0%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;210&quot; height=&quot;286&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.00.55.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. $\vec{a} \times \vec{b} = \bigg( |\vec{a}| |\vec{b}| \sin \theta \bigg) \vec{n}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외적은 평행사변형의 넓이&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;출처:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 글의 내용은 유튜브 수악중독님의 내용을 재편집 한 포스트입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.youtube.com/watch?v=nxiVG22BaZk&quot;&gt;https://www.youtube.com/watch?v=nxiVG22BaZk&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=nxiVG22BaZk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/btfYQu/hyQsaxhNwE/gZMTKBylxAVeAvTK7lMTEK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/nxiVG22BaZk&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.youtube.com/watch?v=PReXlXpEdoM&quot;&gt;https://www.youtube.com/watch?v=PReXlXpEdoM&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=PReXlXpEdoM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cN7dsd/hyQr4DQ1Qi/3hwMO6Whh1gdxwzFkJWdI0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/PReXlXpEdoM&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/257</guid>
      <comments>https://itforfun.tistory.com/257#entry257comment</comments>
      <pubDate>Fri, 4 Nov 2022 20:03:25 +0900</pubDate>
    </item>
    <item>
      <title>아핀 공간</title>
      <link>https://itforfun.tistory.com/256</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;들어가며&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터는&lt;b&gt; 위치&lt;/b&gt;를 가지지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위치와 상관 없이 동일한 크기와 방향을 가지는 벡터는 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 기하학에서 벡터는 '방향'과 '변화' 두가지 의미로 사용될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;벡터의 덧셈 뺄셈&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2KqND/btrQtUBcSi7/JwkzC1vxh9xf8YDQGPvIvk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2KqND/btrQtUBcSi7/JwkzC1vxh9xf8YDQGPvIvk/img.gif&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;146&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.6024%; margin-right: 10px;&quot; data-widthpercent=&quot;52.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2KqND/btrQtUBcSi7/JwkzC1vxh9xf8YDQGPvIvk/img.gif&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2KqND%2FbtrQtUBcSi7%2FJwkzC1vxh9xf8YDQGPvIvk%2Fimg.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;231&quot; height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZBbme/btrQqJ82a6q/78ssDregKO0rOUr0CGDHPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZBbme/btrQqJ82a6q/78ssDregKO0rOUr0CGDHPk/img.png&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;145&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.2348%;&quot; data-widthpercent=&quot;47.79&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZBbme/btrQqJ82a6q/78ssDregKO0rOUr0CGDHPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZBbme%2FbtrQqJ82a6q%2F78ssDregKO0rOUr0CGDHPk%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;210&quot; height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;화살표의 방향을 유의해서 보자 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터의 덧셈의 대수학적 법칙은 실수의 덧셈과 유사하다. 이는 위치를 갖지 않는다는 특성으로 인한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. v + w = w + v (교환법칙)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. u + (v+w) = (u+v) +w (결합법칙)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. v + 0 = v (덧셈의 항등원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 모든 v에 대해 v+(-v) = 0 을 만족하는 벡터 -v 가 존재한다. (덧셈의 역원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;뺄셈의 결과 벡터는 두번째 벡터의 머리에서 첫번째 벡터의 머리로 이어진다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ 아핀 공간:&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 6년전 그래픽스 논문을 읽다가 도대체 아핀 공간이 무엇인가! 하고 찾아봤던 기억이 있다. 당시에는 지금처럼 한국에 좋은 자료가 많지 않아서 아핀 공간을 잘 이해하기가 어려웠는데, 요새는 좋은 자료가 많다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적으로 유클리드 공간은 아핀 공간이지만 벡터 공간이라고도 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 공간의 정의 자체가 벡터공간을 필요로하기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 공간으로 벡터 공간을 형성할 수 있다고 알고 이해하면 된다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적으로 직교좌표계에서 점은 &lt;b&gt;원점으로부터 각 축에 대해서 얼만큼 떨어져 있는가&lt;/b&gt; 표현된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-03 오후 7.55.45.png&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wzoxc/btrQl5bNrnQ/oEqlbCUKm09xqsoC06otu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wzoxc/btrQl5bNrnQ/oEqlbCUKm09xqsoC06otu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wzoxc/btrQl5bNrnQ/oEqlbCUKm09xqsoC06otu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwzoxc%2FbtrQl5bNrnQ%2FoEqlbCUKm09xqsoC06otu0%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;194&quot; height=&quot;154&quot; data-filename=&quot;스크린샷 2022-11-03 오후 7.55.45.png&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 &lt;b&gt;정의된 점&lt;/b&gt;이 &lt;b&gt;아핀 공간&lt;/b&gt;에 있다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;아핀 공간을 벡터공간이라고만 알기보다는 좀 더 정확히 정의해보자.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;V라는 벡터 공간이 있을 때, 이 V 위에서 아핀 공간은 A라는 점들의 집합&lt;/b&gt;으로 정의된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 벡터 공간과 아핀 공간에 대한 직관적인 차이점 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://gyong0.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://gyong0.tistory.com/68&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667621043068&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;아핀 공간과 벡터 공간의 차이점&quot; data-og-description=&quot;아핀 공간과 벡터 공간의 차이점은 무엇일까? 먼저 벡터를 표현할 때는 기본 과정이 존재한다. 벡터는 그림 1과 같이 원점을 기준으로 방향과 크기를 나타낸 것이다. 하지만 그림 2에서는 원점에&quot; data-og-host=&quot;gyong0.tistory.com&quot; data-og-source-url=&quot;https://gyong0.tistory.com/68&quot; data-og-url=&quot;https://gyong0.tistory.com/68&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cG65dB/hyQtxyfS7H/FQLTLcyID4h5acBGfkb0qk/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243,https://scrap.kakaocdn.net/dn/dkdEnh/hyQsaYXT2R/GVTq0q0L6DHpQbsA5Z2hE1/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243,https://scrap.kakaocdn.net/dn/i7Roz/hyQtw7bD8m/oZq3jlwPwKMWmrIiaziML1/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243&quot;&gt;&lt;a href=&quot;https://gyong0.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gyong0.tistory.com/68&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cG65dB/hyQtxyfS7H/FQLTLcyID4h5acBGfkb0qk/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243,https://scrap.kakaocdn.net/dn/dkdEnh/hyQsaYXT2R/GVTq0q0L6DHpQbsA5Z2hE1/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243,https://scrap.kakaocdn.net/dn/i7Roz/hyQtw7bD8m/oZq3jlwPwKMWmrIiaziML1/img.png?width=295&amp;amp;height=243&amp;amp;face=0_0_295_243');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;아핀 공간과 벡터 공간의 차이점&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;아핀 공간과 벡터 공간의 차이점은 무엇일까? 먼저 벡터를 표현할 때는 기본 과정이 존재한다. 벡터는 그림 1과 같이 원점을 기준으로 방향과 크기를 나타낸 것이다. 하지만 그림 2에서는 원점에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gyong0.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$A \times V \rightarrow A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P,v | \rightarrow P+v$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;($P$는 $A$ 공간의 점, $v$는 $V$에 속한 임의의 벡터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$V$와 $A$ 사이에는 위 2가지 두 대응이 존재한다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ 점과 벡터가 + 연산이 되는이유&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-03 오후 8.07.04.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byhZGt/btrQkGD0CMC/WInZ0Wi1fkb6vkIwrWtCo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byhZGt/btrQkGD0CMC/WInZ0Wi1fkb6vkIwrWtCo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byhZGt/btrQkGD0CMC/WInZ0Wi1fkb6vkIwrWtCo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyhZGt%2FbtrQkGD0CMC%2FWInZ0Wi1fkb6vkIwrWtCo0%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;197&quot; height=&quot;178&quot; data-filename=&quot;스크린샷 2022-11-03 오후 8.07.04.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P$(점)에서 $v$(벡터)를 더해서 $Q$(점)이 나오는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P&amp;nbsp; = (p_x, p_y, p_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v = (v_x, v_y, v_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$Q = P + v $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ = (p_x, p_y, p_z) + (v_x, v_y, v_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= (p_x + v_x, p_y + v_y, p_z + v_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 아핀 공간에서 덧셈 연산을 할 때는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터와 벡터의 연산인지, 점과 벡터의 연산인지에 유의해서 정확하게 봐야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;span style=&quot;color: #000000;&quot;&gt;또한 3가지 성질이 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. $A$에 속한 모든 점 $P$에 대해서 $P + \vec{0} = P$ 이다. 영 벡터$(\vec{0})$는 벡터 공간 $V$의 항등원이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. $A$에 속한 모든 점 $P$와 $V$에 속한 임의의 벡터 $v,w$에 대해 $P + (v + w) = (P+v)+w$ 가 성립한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. $A$에 속한 점 $P,Q$가 있을 때 $P + v = Q$를 만족하는 단 하나의 벡터 $v$가 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3번이 좀 헷갈리니 살펴보자. 점 2개를 찍어놓고 두 점 사이에 존재하는 벡터는 하나라는 것을 쉽게 확인할 수 있다. (방향 크기 동일)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 이에 따라 $Q-P = v$ 점 $Q$ 에서 점 $P$를 빼면 벡터 $v$를 얻는다는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터와 벡터의 연산은 벡터&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터와 점의 연산 점&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;점과 점의 뺄셈 연산 벡터&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 조건을 만족하는 공간이 바로 아핀 공간이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;점 다음으로 선을 살펴보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2차원에서 선을 표현하는 것은 가능하지만, 3차원에서 선을 표현하는 것이 불가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제로 불가능하다기 보다는 $ax + by + c = 0$ 형태로 표현이 불가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;성분이 늘어나기에 사실상 평면의 방정식이 되어버린다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 3차원에서는 매개변수 방정식(parameteric equation)을 통해 선을 표현한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-03 오후 8.16.32.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;694&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esaKfI/btrQkXFwEQU/GKRRF9yO8OWRxFuXUQNkak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esaKfI/btrQkXFwEQU/GKRRF9yO8OWRxFuXUQNkak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esaKfI/btrQkXFwEQU/GKRRF9yO8OWRxFuXUQNkak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FesaKfI%2FbtrQkXFwEQU%2FGKRRF9yO8OWRxFuXUQNkak%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;232&quot; height=&quot;180&quot; data-filename=&quot;스크린샷 2022-11-03 오후 8.16.32.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;694&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떤 방향벡터와 점이 선을 표현할 수 있게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 방향벡터는 점과 점을 뺀 결과이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;t는 음의 무한대~ 양의 무한대의 실수 범위를 가지고 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$L(t) = P + t \cdot v $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= P + t \cdot(Q - P)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= P + t \cdot Q - t\cdot P$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= (1-t) \cdot P - t \cdot Q$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이 직선을 표현하는 과정에서 &lt;b&gt;$(1-t)$ 와 $t$ 를 주목하며 봐보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;점에다가 스칼라를 곱하고 이를 더한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 공간에서 &lt;b&gt;점과 점의 덧셈&lt;/b&gt;은 안되는 줄만 알았는데 벡터 공간의 선형 조합처럼 &lt;b&gt;아핀 조합&lt;/b&gt;이라는 것이 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 벡터공간의 선형 조합&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ &amp;lt;v_1, ... v_n&amp;gt; = \{ a_1 v_1 + ... + a_n v_n&amp;nbsp;&amp;nbsp;| a_i \in F \}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터들에 스칼라배를 해서 더함으로서 수많은 벡터를 만들 수 있고, 이를 통해 공간 자체를 span 할 수 있다는 뜻&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선형 조합들이 벡터들에게 임의의 스칼라 값을 곱해서 새로운 벡터를 만든다면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;아핀 조합은 점들에게 특정 조건을 만족하는 스칼라 값을 곱해서 더하면 새로운 점이 나온다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다만, 벡터는 임의의 스칼라지만, 점은 특정 스칼라의 곱이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 조합은 &lt;b&gt;점과 벡터의 덧셈연산&lt;/b&gt;에서 나온다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;점에다 벡터를 더하면 아래와 같다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P = P_0 + v $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P = P_0 + (a_1 \cdot v_1 + ... + a_n \cdot v_n)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쉽게 생각하기 위해서&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;P0가 중심&lt;/b&gt;이라고 생각하면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$v_1 \sim v_n$ 은 기저벡터라고 볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 기저벡터는 다시 아래와 같이 다르게 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;점 - 점 = 벡터&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_1 = P_1 - P_0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_1 = P_2 - P_0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_1 = P_3 - P_0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\cdots$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_i = P_i - P_0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 결과를 통해 아래와 같이 정리할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P&amp;nbsp;=&amp;nbsp;P_0&amp;nbsp;+&amp;nbsp;(a_1&amp;nbsp;\cdot&amp;nbsp;v_1&amp;nbsp;+&amp;nbsp;&amp;nbsp;\cdots&amp;nbsp;+&amp;nbsp;a_n&amp;nbsp;\cdot&amp;nbsp;v_n)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P = P_0 + a_1 \cdot (P_1 - P_0) + a_2 \cdot (P_2 - P_0) + \cdots + a_n \cdot (P_n - P_0)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P = (1 - a_1 - a_2 - a_3 - \cdots&amp;nbsp;- a_n) \cdot P_0 + a_1 \cdot P_1 + a_2 \cdot P_2 + \cdots + a_n \cdot P_n$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식이 바로 새로운 점을 만드는 아핀 조합이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 스칼라값만 뽑아보면 아래와 같이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$(1 - a_1 - a_2 - a_3 -&amp;nbsp;\cdots - a_n) + a_1 + a_2 + a_3 + \cdots a_n = 1$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;아핀 조합의 스칼라 조건&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 점에 대해서 스칼라 값의 합이 1이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기저벡터들의 조합으로 벡터공간이 형성되듯이&amp;nbsp;$P_0 ~ P_n$ 점들의 조합으로 아핀 공간이 생긴다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 조합에 참여한 점들은 임의의 점이 아니라 서로 아핀 독립(affinely independent)하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 독립이란 쉽게 말해서 점 집합에서 임의의 한 점이 나머지 점들을 아무리 아핀 조합을 한들 만들어질 수 없다는 것을 의미한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(기저벡터와 유사 y 와 x 벡터를 아무리 조합해도 x 벡터를 만들 수는 없다. )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 점들이 아핀독립인지 확인하는 방법은 벡터를 이용하는 방법이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정렬된 점들이 서로에게 아핀 독립이면 이 점들을 차례대로 두 개씩 골라서 만들어지는 벡터 또한 선형 독립이 되는 것을 이용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이 벡터들&lt;/b&gt;이 &lt;b&gt;한 벡터 공간의 기저 벡터&lt;/b&gt;가 된다는 점을 이용하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아핀 독립인 점들의 집합을 단체, simplex 라고 하고, 아핀 조합에 등장하는 스칼라값들을 아핀 조합으로 생성되는 점의 무게중심좌표, barycecntric coordinate이라고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 살펴보았던 매개변수 방정식은 아핀 조합임을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$$L(t) = P + t \cdot v $$&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= P + t \cdot(Q - P)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= P + t \cdot Q - t\cdot P$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= (1-t) \cdot P - t \cdot Q$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PQ 벡터는 유일한 기저벡터가 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 아핀 조합은 1차원 아핀 공간을 생성하고 이것이 바로 선이 되는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직선이 아니라 선분을 표현하고 싶다면 t 값의 범위를 정해주면 선분이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 t = [0, 1] 범위라면 P 와 Q를 잇는 선분이 만들어질 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;점, 선 다음으로 면을 알아보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선을 만들 때 두점의 아핀 조합을 통해 만들었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;면을 만들 때는 세점의 아핀 조합을 통해서 만든다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;면도 매개변수 방정식으로 표현된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 평면에 점 3개 A,B,C 가 있다면 아래와 같이 표현할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(s,t) = (1 - s - t) \cdot A + s \cdot B + t \cdot C$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot (B - A) + t \cdot (C - A)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot u + t \cdot v$$ (햇갈리니 벡터는 벡터표시를 해주자)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot \vec{u} + t \cdot \vec{v}$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;점과 점의 뺄샘 계산으로 벡터를 만들어서 점 하나와 2개의 벡터 계산으로 바꿀 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3차원&lt;/b&gt; &lt;b&gt;공간&lt;/b&gt;에서 &lt;b&gt;선&lt;/b&gt;을 표현할 때는&lt;b&gt; 매개변수 방정식&lt;/b&gt;으로 많이 표현하지만,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3차원 공간&lt;/b&gt;에서 &lt;b&gt;면&lt;/b&gt;을 표현할 때는 매개변수 방정식과 함께 &lt;b&gt;일반화&lt;/b&gt; 표현을 많이 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(3D 게임에서 평면을 다룰 때는 매개변수보다 일반화 방정식이 더 이해하기 수월하다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;고등학교에서는 한 점과 법선벡터가 주어졌을 때 평면을 모두 만들 수 있다고 배웠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 점 : P, 법선벡터: n &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P = (p_x, p_y, p_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$n = (a,b,c)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임의의 평면의 점 Q에 대해서 성립해야 그것이 평면이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$Q = (x,y,z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v = Q - P$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v = (x - p_x, y - p_y, z - p_z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.16.08.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wxoMu/btrQkReOHW3/oXjB04GfxltNlpkJ1ucEOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wxoMu/btrQkReOHW3/oXjB04GfxltNlpkJ1ucEOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wxoMu/btrQkReOHW3/oXjB04GfxltNlpkJ1ucEOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwxoMu%2FbtrQkReOHW3%2FoXjB04GfxltNlpkJ1ucEOK%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;277&quot; height=&quot;161&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.16.08.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떤 Q를 잡아도 그 벡터와 법선벡터를 내적하면 0이 나와야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$n \cdot v = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$(a,b,c) \cdot (x - p_x, y - p_y, z - p_z) = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$a \cdot (x - p_x) + b \cdot (y - p_y) + c \cdot (z - p_z)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$a \cdot x + b \cdot y + c \cdot z - (a \cdot p_x + b \cdot p_y + c \cdot p_z) = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$a \cdot x + b \cdot y + c \cdot z - n \cdot P = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리가 알던 평면의 방정식을 얻게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매개변수가 기하학적으로 해석이 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 n 과 p 의 내적을 d 로만 고치면 우리가 알던 평면의 방정식을 얻는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ax + by + cz + d = 0$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;법선 벡터는 단위벡터인게 좋다. 점과 평면 직선거리를 쉽게 구할 수 있기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(정규화 시키려면 크기로 나누면 된다. 나머지 성분들도 변한다는 것 유의 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;평소에 한점과 법선 벡터로 평면의 방정식을 구했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇다면 세 점으로는 어떻게 평면을 구하는지 알아보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단하게 설명하면 세점으로 2개의 벡터를 만들고 외적을 하면 법선벡터가 나올 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또 나머지 한점으로 위 과정을 반복하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v = Q - P$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w = R - P$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$n = v \times w = (a,b,c)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$d = -n \cdot P$$&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.23.27.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9fGl7/btrQliQOWhg/tLrMVnulEqsalVeUmJeNWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9fGl7/btrQliQOWhg/tLrMVnulEqsalVeUmJeNWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9fGl7/btrQliQOWhg/tLrMVnulEqsalVeUmJeNWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9fGl7%2FbtrQliQOWhg%2FtLrMVnulEqsalVeUmJeNWK%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;273&quot; height=&quot;201&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.23.27.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 여기서 법선 벡터가 2개를 얻을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;앞으로 나올지, 뒤로 나올지는 외적의 계산 순서에 따른다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다만, 공간의 임의의 점이 평면의 앞에 있는지 뒤에 있는지를 평면의 방향 기준으로 정하기 때문에 평면의 방향을 중요한 의미가 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.26.02.png&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp2gJM/btrQooh9CzY/Una9GxWuS3n2u0jiav1vv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp2gJM/btrQooh9CzY/Una9GxWuS3n2u0jiav1vv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp2gJM/btrQooh9CzY/Una9GxWuS3n2u0jiav1vv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp2gJM%2FbtrQooh9CzY%2FUna9GxWuS3n2u0jiav1vv1%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;156&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.26.02.png&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;618&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;span style=&quot;color: #000000;&quot;&gt;다음과 같이 6개의 평면이 닫힌 공간이 있을 때, 법선 벡터의 방향에 따라 겉과 안을 구분하게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;대입을 해보면 수식적으로 앞인지 뒤인지 알수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ax + by + cz + d$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;계산해서 양수가 나오면 앞에 있고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;음수가 나오면 뒤에 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당연히 0이 나오면 평면 상에 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매개변수가 아니라 일반화 방정식을 쓰는 이유가 바로 대입하면 어디 있는지 바로 확인할 수 있기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;법선 벡터가 단위벡터라면 그 점을 대입한 값에 절대값을 취하면 바로 그 점과 평면 사이의 거리가 된다. (아니면 법선 벡터의 크기만큼 나눠주면 된다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임의의 점이 주어졌을 때 같은 평면 상에 존재하는지 구별하는 법을 알았으니 여기서 그만 멈추도록 하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;점 A, B , C ,D 가 주어졌을 때, 각 점을 이용하여 벡터를 만든다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ u = B - A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ b = C - A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ w = D - A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4 점이 다 같은 평면상에 있다면 3 개 중 2개의 벡터는 외적하고 그 결과를 나머지 남은 벡터와 내적해서 0이 나오면 그 3개의 벡터는 동일 평면 상에 존재한다고 말 할 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.24.41.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8vG2a/btrQpTwEcwa/sN0jII2VSDbAh0QAUOJpMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8vG2a/btrQpTwEcwa/sN0jII2VSDbAh0QAUOJpMk/img.png&quot; data-alt=&quot;벡터의 외적&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8vG2a/btrQpTwEcwa/sN0jII2VSDbAh0QAUOJpMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8vG2a%2FbtrQpTwEcwa%2FsN0jII2VSDbAh0QAUOJpMk%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;245&quot; height=&quot;207&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.24.41.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;482&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;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;마지막으로, 컴퓨터 그래픽스에 많이 사용되는 삼각형에 대해 공부해보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래를 읽기 전에 이 글을 읽고 오면 배경 설정에 도움이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://math-development-geometry.tistory.com/44&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://math-development-geometry.tistory.com/44&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667553861667&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;평면(Plane) 에 대한 이야기&quot; data-og-description=&quot;기하학에서 평면은 매우 중요한 요소입니다. 점, 선, 면과 같이 각 차원에서 기본적인 요소가 되는 것들이죠. 이중에서 평면에 대해 이야기를 하도록 하겠습니다. 평면은 평평한 면으로 곡률이 &quot; data-og-host=&quot;math-development-geometry.tistory.com&quot; data-og-source-url=&quot;https://math-development-geometry.tistory.com/44&quot; data-og-url=&quot;https://math-development-geometry.tistory.com/44&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GLMnx/hyQshwq4Qt/UeZWGGmU1HNk7EcRhJHYDK/img.png?width=245&amp;amp;height=205&amp;amp;face=0_0_245_205,https://scrap.kakaocdn.net/dn/cLErs0/hyQscona3h/5fM7KekaBjT7yHLS42IoBk/img.png?width=245&amp;amp;height=205&amp;amp;face=0_0_245_205,https://scrap.kakaocdn.net/dn/goDZj/hyQr6PfrcN/CLrjRhkQDXlcgH6nuUfgz0/img.png?width=206&amp;amp;height=244&amp;amp;face=0_0_206_244&quot;&gt;&lt;a href=&quot;https://math-development-geometry.tistory.com/44&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://math-development-geometry.tistory.com/44&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GLMnx/hyQshwq4Qt/UeZWGGmU1HNk7EcRhJHYDK/img.png?width=245&amp;amp;height=205&amp;amp;face=0_0_245_205,https://scrap.kakaocdn.net/dn/cLErs0/hyQscona3h/5fM7KekaBjT7yHLS42IoBk/img.png?width=245&amp;amp;height=205&amp;amp;face=0_0_245_205,https://scrap.kakaocdn.net/dn/goDZj/hyQr6PfrcN/CLrjRhkQDXlcgH6nuUfgz0/img.png?width=206&amp;amp;height=244&amp;amp;face=0_0_206_244');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;평면(Plane) 에 대한 이야기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;기하학에서 평면은 매우 중요한 요소입니다. 점, 선, 면과 같이 각 차원에서 기본적인 요소가 되는 것들이죠. 이중에서 평면에 대해 이야기를 하도록 하겠습니다. 평면은 평평한 면으로 곡률이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;math-development-geometry.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사각형은 삼각형 두개로 표현된다. 가장 작은 도형이 삼각형이고, 삼각형 보다 꼭지점이 많은 도형들은 3각형으로 모두 쪼갤 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 삼각형은 세점이 항상 동일 평면 위에 존재할 수 있는 유일한 도형이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(마치 삼각대의 다리 3개가 평면을 만들어 중심을 잡는 것과 같은 맥락이다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;삼각형에 색을 칠하면 그제서야 우리는 볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 모델을 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.35.22.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5JNys/btrQkXTBBvb/08Giu3V5EtIN9wV0XhZVkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5JNys/btrQkXTBBvb/08Giu3V5EtIN9wV0XhZVkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5JNys/btrQkXTBBvb/08Giu3V5EtIN9wV0XhZVkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5JNys%2FbtrQkXTBBvb%2F08Giu3V5EtIN9wV0XhZVkK%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;335&quot; height=&quot;210&quot; data-filename=&quot;스크린샷 2022-11-04 오전 11.35.22.png&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;904&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;span style=&quot;color: #000000;&quot;&gt;선들로 닫혀진 공간이 바로 삼각형이 된다. (주로 polygon 이라 부른다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 폴리곤을 이루는 점을 vertex, 삼각형은 볼록다각형, convex polygon 이라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ 볼록 다각형&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 이어진 두 선분이 이루는 각이 180도 보다는 작거나 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 임의의 두 꼭지점을 이은 선은 다각형의 내부에 있거나 다각형을 이루는 선 중에 하나다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.26.16.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHgJLK/btrQq2TGgzq/BzVF5S5dTcfoq1FKOjViYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHgJLK/btrQq2TGgzq/BzVF5S5dTcfoq1FKOjViYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHgJLK/btrQq2TGgzq/BzVF5S5dTcfoq1FKOjViYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHgJLK%2FbtrQq2TGgzq%2FBzVF5S5dTcfoq1FKOjViYk%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;340&quot; height=&quot;188&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.26.16.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;554&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;span style=&quot;color: #000000;&quot;&gt;저번에도 평면의 앞 뒤 여부가 중요했듯이,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;삼각형도 특정 점이 삼각형 내부에 있는지 외부에 있는지가 중요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A,B,C는 삼각형의 점이고 삼각형 안에 점 D가 있다고 가정하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동일 평면상에 있는지는 위에서 4개의 점에 대해 확인하는 법을 배웠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.28.33.png&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIblRP/btrQoneukyy/fPQDutuNMw6YI6u7Q1RO9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIblRP/btrQoneukyy/fPQDutuNMw6YI6u7Q1RO9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIblRP/btrQoneukyy/fPQDutuNMw6YI6u7Q1RO9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIblRP%2FbtrQoneukyy%2FfPQDutuNMw6YI6u7Q1RO9K%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;312&quot; height=&quot;271&quot; data-filename=&quot;스크린샷 2022-11-04 오후 5.28.33.png&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음의 4점으로부터 다시 벡터 6개가 정의된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;D 중심&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$u_1 = D - A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$u_2 = D - B$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$u_3 = D - C$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반시계 방향&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_1 = B - A$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_2 = C - B$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$v_3 = A - C$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래는 외적의 결과이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_1 = u_1 \times v_1$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_2 = u_2 \times v_2$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_3 = u_3 \times v_3$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 점 D 가 삼각형 안에 있다면 외적한 결과값 $w_1, w_2, w_3$ 가 같아진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모두 시계방향의 외적 순서이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 점 D 가 삼각형 밖에 있다면 외적한 결과값 중 한 벡터의 방향이 반대로 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 설명은 아래 글로 대체&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://hwanggoon.tistory.com/114&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://hwanggoon.tistory.com/114&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667560387549&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;삼각형 안에 점이 있는지 확인하는 방법&quot; data-og-description=&quot;삼각형 안에 점이 있는지 확인하는 방법 삼각메쉬 안에 버텍스가 포함되어 있는지는 외적과 내적을 이용하면 확인 할 수 있습니다. 다음 삼각 메쉬에 파란색 점이 밖에 있습니다. ab = A점에서 B&quot; data-og-host=&quot;hwanggoon.tistory.com&quot; data-og-source-url=&quot;https://hwanggoon.tistory.com/114&quot; data-og-url=&quot;https://hwanggoon.tistory.com/114&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UAw0e/hyQse0UTsa/e1qhzMkGorKUOKSXjs5hOk/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272,https://scrap.kakaocdn.net/dn/8SBnN/hyQr4xeziz/VXTLdKqZK2AFeGkv1EKxGK/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272,https://scrap.kakaocdn.net/dn/bjTK0g/hyQr8l5CPV/DhxMbn0OchBPKAkVGoEGJ0/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272&quot;&gt;&lt;a href=&quot;https://hwanggoon.tistory.com/114&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hwanggoon.tistory.com/114&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UAw0e/hyQse0UTsa/e1qhzMkGorKUOKSXjs5hOk/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272,https://scrap.kakaocdn.net/dn/8SBnN/hyQr4xeziz/VXTLdKqZK2AFeGkv1EKxGK/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272,https://scrap.kakaocdn.net/dn/bjTK0g/hyQr8l5CPV/DhxMbn0OchBPKAkVGoEGJ0/img.jpg?width=600&amp;amp;height=272&amp;amp;face=0_0_600_272');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;삼각형 안에 점이 있는지 확인하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;삼각형 안에 점이 있는지 확인하는 방법 삼각메쉬 안에 버텍스가 포함되어 있는지는 외적과 내적을 이용하면 확인 할 수 있습니다. 다음 삼각 메쉬에 파란색 점이 밖에 있습니다. ab = A점에서 B&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hwanggoon.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(외적한 결과는 외적하는 순서에 따라 결정된다. 오른손의 법칙 기억)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외적이 기억나지 않는다면 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/257&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;해당 글&lt;/a&gt;을 참고하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외적한 결과가 달라지므로 구분할 수가 있게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 아래 조건을 만족하면 벡터의 방향이 모두 같으므로 삼각형 안에 점이 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_1 \cdot w_2 &amp;gt; 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_2 \cdot w_3 &amp;gt; 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$w_3 \cdot w_1 &amp;gt; 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;면을 표현할 때는 일반방정식이 더 편리했지만, 삼각형 내부범위 조사는 매개변수가 더 편리하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;세점으로 식을 유도하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(s,t) = (1 - s - t) \cdot A + s \cdot B + t \cdot C$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot (B - A) + t \cdot (C - A)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot u + t \cdot v$$ (햇갈리니 벡터는 벡터표시를 해주자)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= A + s \cdot \vec{u} + t \cdot \vec{v}$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직선의 방정식을 매개변수에 범위를 주어 선분으로 만들거나 했던 것을 생각하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 면의 방정식도 매개변수에 범위를 주어 삼각형으로 만들 수 있다는 것이다.&amp;nbsp;&lt;/span&gt;&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;s+t &amp;lt; 1 의 조건을 만족하면 점 A, B ,C 가 이루는 삼각형이 되고&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;삼각형 안의 모든 점들을 점 A 와 어떤 벡터와의 합으로 표현된다면&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;그 벡터는 s = B - A, t = C - A 벡터가 된다. (기저벡터 $\rightarrow$ 아핀조합)&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;스크린샷 2022-11-04 오후 8.17.52.png&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euySQA/btrQrsFegqS/ujvZ2MRf2S5oqjnk9PlYk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euySQA/btrQrsFegqS/ujvZ2MRf2S5oqjnk9PlYk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euySQA/btrQrsFegqS/ujvZ2MRf2S5oqjnk9PlYk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuySQA%2FbtrQrsFegqS%2FujvZ2MRf2S5oqjnk9PlYk1%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;329&quot; height=&quot;259&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.17.52.png&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 D 가 삼각형 안에 점이 있으면&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;점 D 를 표현했을 때가 A 와 기저벡터의 덧셈이다.&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;s+t 의 합이 1보다 작게 나올 것이다.&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;$$D = A + s \cdot + t \cdot v$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$D - A = s \cdot u + t \cdot v$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$w = s \cdot u + t \cdot v$$&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;하지만 s,t 를 구하는 것은 쉽지 않다.&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;때문에 식에 각각 u 와 v 벡터를 내적한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.19.30.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLy9Pe/btrQrFK4Uh2/Vdvo41bc0ooFdK46NDBAYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLy9Pe/btrQrFK4Uh2/Vdvo41bc0ooFdK46NDBAYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLy9Pe/btrQrFK4Uh2/Vdvo41bc0ooFdK46NDBAYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLy9Pe%2FbtrQrFK4Uh2%2FVdvo41bc0ooFdK46NDBAYk%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;367&quot; height=&quot;156&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.19.30.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s,t 에 대해서 정리하면 이렇게 나온다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.20.03.png&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vyPbQ/btrQqJAFZ1E/XXONlTe9WvIhML49D06iv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vyPbQ/btrQqJAFZ1E/XXONlTe9WvIhML49D06iv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vyPbQ/btrQqJAFZ1E/XXONlTe9WvIhML49D06iv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvyPbQ%2FbtrQqJAFZ1E%2FXXONlTe9WvIhML49D06iv1%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;433&quot; height=&quot;165&quot; data-filename=&quot;스크린샷 2022-11-04 오후 8.20.03.png&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 글의 출처:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://luv-n-interest.tistory.com/807&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://luv-n-interest.tistory.com/807&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667529123018&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;아핀 공간, Affine Space - 2 [게임수학]&quot; data-og-description=&quot;저번 시간에는 선을 배웠으니 이제 면을 배워볼 시간이다. 선을 만들 때 두 점의 아핀 조합을 통해 만들었다. 면을 만들 때는 세 점의 아핀 조합을 통해서 만든다. 알아보자 면도 매개변수 방정&quot; data-og-host=&quot;luv-n-interest.tistory.com&quot; data-og-source-url=&quot;https://luv-n-interest.tistory.com/807&quot; data-og-url=&quot;https://luv-n-interest.tistory.com/807&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dua2US/hyQsjggxb1/Okwow6yN3CNKPOihdvU0vK/img.png?width=399&amp;amp;height=272&amp;amp;face=0_0_399_272,https://scrap.kakaocdn.net/dn/AlEbm/hyQsgw451v/b2lncLpQEkNHLN5zAhSqyk/img.png?width=399&amp;amp;height=272&amp;amp;face=0_0_399_272,https://scrap.kakaocdn.net/dn/vyLsO/hyQsaDC2Mw/Vq14eTpwTMqm473ToZrjmK/img.png?width=804&amp;amp;height=263&amp;amp;face=0_0_804_263&quot;&gt;&lt;a href=&quot;https://luv-n-interest.tistory.com/807&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://luv-n-interest.tistory.com/807&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dua2US/hyQsjggxb1/Okwow6yN3CNKPOihdvU0vK/img.png?width=399&amp;amp;height=272&amp;amp;face=0_0_399_272,https://scrap.kakaocdn.net/dn/AlEbm/hyQsgw451v/b2lncLpQEkNHLN5zAhSqyk/img.png?width=399&amp;amp;height=272&amp;amp;face=0_0_399_272,https://scrap.kakaocdn.net/dn/vyLsO/hyQsaDC2Mw/Vq14eTpwTMqm473ToZrjmK/img.png?width=804&amp;amp;height=263&amp;amp;face=0_0_804_263');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;아핀 공간, Affine Space - 2 [게임수학]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;저번 시간에는 선을 배웠으니 이제 면을 배워볼 시간이다. 선을 만들 때 두 점의 아핀 조합을 통해 만들었다. 면을 만들 때는 세 점의 아핀 조합을 통해서 만든다. 알아보자 면도 매개변수 방정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;luv-n-interest.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 블로그를 이해하며 적었습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/256</guid>
      <comments>https://itforfun.tistory.com/256#entry256comment</comments>
      <pubDate>Fri, 4 Nov 2022 11:31:50 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 9 - Naive Bayes vs Logistic Regression</title>
      <link>https://itforfun.tistory.com/255</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;들어가며&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;머신러닝에서 learning 이란?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;parameter inference, 즉 파라미터를 특정 데이터에 맞춰 최적화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;강한 hypothesis 를 기준으로 참과 거짓, rank, category, 군집 등을 결정하는 등의 목적이 있는데, 이를 위하여 데이터 셋을 기준으로 특정 모델의 parameter 조정한다. (다시 말하면 모델이 정해져있기 때문에 우리가 조정할 수 있는 건 parameter 밖에 없다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logistic regression 에서 probability likelihood 를 최대한 높히기 위하여 gradient ascent 를 통해 $\theta$ 를 업데이트 하여 $P(Y|X)$ 계산식이 도출되었기 때문에 learning 이 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번 글에서는 Naive Bayes의 개념을 점검할 겸, Logistic Regression 과의 관계를 확인해보려고 한다.&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Gussian Naive Bayes&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 는 그냥 사용하면 logistic regression 과 비교할 수 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 는 categorical input을 받는다. (해당 input은 0,1 로 정의를 했었다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, logistic regression 은 housing information 을 사용했었기에 numerical variable 이 많았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇기 때문에 Naive Bayes 를 continuous features 를 활용하는 방식으로 수정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Naive Bayes Classifier&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f_{NB}(x) = argmax_{Y=y} P(Y=y)\prod_{1 \leq i \leq d} P(X_i = x_i | Y = y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(d 는 Input feature 개수)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Continuous random feature&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;span style=&quot;color: #000000;&quot;&gt;일단 어떤 분포를 따를지를 결정해야 한다. (ex. Poisson ...)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$X_i | Y$가 Gaussian distribution 을 따른다고 가정&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;$(X_i = x_i |Y = y)$ 개별 class variable 로 sorting 한 상태에서 mean 과 variance 를 가진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. $P(X_i | Y, \mu, \sigma^2) = \frac{1}{\sigma\sqrt{2\pi}}e^{\frac{(X_i-\mu)^2}{2\sigma^2}}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ $P(X_i | Y)$ 는 확률, 확률 밀도함수에서 뽑아낼 수 있음이 당연&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어차피 하려는 건 결국 classification 이다. 이에 따라 Y 는 categorical value 가 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 prior 부분은 Guassian distribution 처럼 만들지 않아도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. $P(Y=y) = \pi_1$ 로 표현한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1, 2 번 공식을 Naive Bayes Classifier 공식에 대입하여 다음과 같이 정리할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-28 오후 8.25.38.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOAXy0%2FbtrPQIVTdmm%2FSFvGlyc7OqK3kTHARrW9k1%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;565&quot; height=&quot;67&quot; data-filename=&quot;스크린샷 2022-10-28 오후 8.25.38.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(feature 개수만큼 곱한 형태)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Logistic Regression 은 discrimitive mode, Naive Bayes 는 generative model 이다. (아래 글 참고)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/253&quot;&gt;https://itforfun.tistory.com/253&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667342561709&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;머신러닝 정리 7.5(1) - Discriminative model vs Generative Model&quot; data-og-description=&quot;Naive Bayes Model은 Generative Model 이고 Logistic Regression 은 Discrimitive Model 이다. Generative Model은 GAN 과 Diffusion 으로 접해봤는데 Naive Bayes 가 Generative 라니 어떤 의미인지 직관적으로 와닿지 않았다. 이에 &quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/253&quot; data-og-url=&quot;https://itforfun.tistory.com/253&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CpyG4/hyQqJ6Hlj2/zSa3BIRVPrqnMUZvLDu4iK/img.png?width=669&amp;amp;height=468&amp;amp;face=0_0_669_468,https://scrap.kakaocdn.net/dn/bKVB9q/hyQqMPSYn3/HkAbz5WPEa22ZzOvKEUfuk/img.png?width=669&amp;amp;height=468&amp;amp;face=0_0_669_468,https://scrap.kakaocdn.net/dn/uY3TP/hyQpzkigh8/nqq18aHaFGGWkHFlC25td1/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/253&quot; data-source-url=&quot;https://itforfun.tistory.com/253&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CpyG4/hyQqJ6Hlj2/zSa3BIRVPrqnMUZvLDu4iK/img.png?width=669&amp;amp;height=468&amp;amp;face=0_0_669_468,https://scrap.kakaocdn.net/dn/bKVB9q/hyQqMPSYn3/HkAbz5WPEa22ZzOvKEUfuk/img.png?width=669&amp;amp;height=468&amp;amp;face=0_0_669_468,https://scrap.kakaocdn.net/dn/uY3TP/hyQpzkigh8/nqq18aHaFGGWkHFlC25td1/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;머신러닝 정리 7.5(1) - Discriminative model vs Generative Model&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Naive Bayes Model은 Generative Model 이고 Logistic Regression 은 Discrimitive Model 이다. Generative Model은 GAN 과 Diffusion 으로 접해봤는데 Naive Bayes 가 Generative 라니 어떤 의미인지 직관적으로 와닿지 않았다. 이에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/254&quot;&gt;https://itforfun.tistory.com/254&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667342567203&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;머신러닝 정리 7.5(2) - Naive Bayes는 Generative Model&quot; data-og-description=&quot;Naive Bayes 가 Generative model 인 것을 확인하기 위하여 이전 글 에서 Generative Model에 대한 간략한 소개글을 작성했다. 해당 글을 원할하게 읽기 위해서는 이전 글을 간단하게 살펴보는 것을 추천한다.&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/254&quot; data-og-url=&quot;https://itforfun.tistory.com/254&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cFJXAW/hyQqP6SnhA/BMKehyiFbG1SnL1FeOdcCk/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/boC1Iw/hyQptK82bY/YKGKu2SnOgxOxZhTvKYTP0/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/bY85l9/hyQprGxGpb/GmlySIa3dqepjFZB5k7kK0/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/254&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cFJXAW/hyQqP6SnhA/BMKehyiFbG1SnL1FeOdcCk/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/boC1Iw/hyQptK82bY/YKGKu2SnOgxOxZhTvKYTP0/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/bY85l9/hyQprGxGpb/GmlySIa3dqepjFZB5k7kK0/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;머신러닝 정리 7.5(2) - Naive Bayes는 Generative Model&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Naive Bayes 가 Generative model 인 것을 확인하기 위하여 이전 글 에서 Generative Model에 대한 간략한 소개글을 작성했다. 해당 글을 원할하게 읽기 위해서는 이전 글을 간단하게 살펴보는 것을 추천한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 가정과 함께&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-29 오후 9.26.04.png&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAS4Go%2FbtrPQqhOi8U%2F15SmXvbvfaGeJBBlt4b4S1%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;652&quot; height=&quot;119&quot; data-filename=&quot;스크린샷 2022-10-29 오후 9.26.04.png&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;240&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;Logisitic Regression 에서는 $P(Y = y|X)$ 형태 자체를 모델링 하려고 했었다. (&lt;a href=&quot;https://itforfun.tistory.com/251&quot;&gt;참고글&lt;/a&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;P(Y|X) 가 logistic function의 모양을 따르겠다는 가정하에 logistic function에다가 regression을 하는 형태로 logistic regression model을 설계했었다. 즉 별다른 작업을 거칠 필요가 없었다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;(Discriminative Model 자체가 컨셉이 더 간단하다보니, 유도 과정 자체도 더 단순해질 수 밖에 없는 것 아닌가 하는 생각이 든다.)&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;반면 Generative Model 은 위 공식유도와 같이 Bayes theorem 형태로 바꿔서 적용하려고 노력한다.&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;span style=&quot;color: #000000;&quot;&gt;보통 $P(X)$ 는 normalize constant term 으로 제하고서&amp;nbsp;$P(Y =y |X) \propto {P(X|Y = y)P(Y=y)}$ 로 본다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 이 중 $P(Y=y)$ prior 로,&amp;nbsp; $P(X|Y = y)$ 를 &lt;span style=&quot;color: #000000;&quot;&gt;likelihood&lt;/span&gt;로 보곤한다. 여기서 $P(X|Y = y)P(Y=y)$ 부분을 추정해서 classification model 을 만든다. 이것이 Naive Bayes 모델의 기본 형태이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 지금은 equal 관계를 모델링 하는 것이기 때문에 분모 부분을 생략하지 않고 deriviation 한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서는 categorical value 가 아니라 numerical, continuous value 를 다룬다. 여기에 Gaussian 가정을 덧붙여서 Gaussian Naive Bayes 로 만들었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정리하자면 Generative model 은 $P(Y|X)$ 를 bayes theorem 을 활용해 prior 와 likelihood로 만들어준 다음에 posterior 를 그대로 측정하는 것이 아니라 prior 와 likelihood를 개별적으로 learning 하거나 parameter 를 넣어 만드려고 한다. (만들고나니 MLE, MAP 와 유사해보인다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지금 여기서의 목표는 Naive Bayes 에서 Logistic Regression 이 유도가 된 다는 것을 보이고자 하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론, Bayes theorem 에 의해 성립이 되긴 하지만, &amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;$f_{NB}(x) = argmax_{Y=y} P(Y=y)\prod_{1 \leq i \leq d} P(X_i = x_i | Y = y)$ 형태, 여기서도 Gaussian 가정이 가미 된 아래 형태에서&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-28 오후 8.25.38.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOAXy0/btrPQIVTdmm/SFvGlyc7OqK3kTHARrW9k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOAXy0%2FbtrPQIVTdmm%2FSFvGlyc7OqK3kTHARrW9k1%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;565&quot; height=&quot;67&quot; data-filename=&quot;스크린샷 2022-10-28 오후 8.25.38.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;192&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;span style=&quot;color: #000000;&quot;&gt;logistic regression 으로 바꿔주면 어떻게 될지 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-29 오후 9.26.04.png&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAS4Go/btrPQqhOi8U/15SmXvbvfaGeJBBlt4b4S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAS4Go%2FbtrPQqhOi8U%2F15SmXvbvfaGeJBBlt4b4S1%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;652&quot; height=&quot;119&quot; data-filename=&quot;스크린샷 2022-10-29 오후 9.26.04.png&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;240&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;span style=&quot;color: #000000;&quot;&gt;$P(X)$ 는 아래와 같은 모든 X를 포함해 줘야 하므로 Y 가 포함 될 때의 X, Y가 포함 되지 않을 때의 X 모두 더해준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byeu80/btrP8OJIZX6/zntwkti4UVQFG3k8QLWmrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byeu80/btrP8OJIZX6/zntwkti4UVQFG3k8QLWmrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byeu80/btrP8OJIZX6/zntwkti4UVQFG3k8QLWmrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyeu80%2FbtrP8OJIZX6%2Fzntwkti4UVQFG3k8QLWmrK%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;171&quot; height=&quot;129&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;358&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;span style=&quot;color: #000000;&quot;&gt;$P(X|Y = y)P(Y=y)$ 는 X 가 여러개가 되었을 때 parameter 의 수가 exponential 하게 증가하기 때문에 Naive Assumption 을 이용해서 개별 feature 들의 multiplication 형태 $P(Y=y)\prod_{1 \leq i \leq d}P(X_i |Y=y)$로 만들어주었다. 분모도 동일하게 적용해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한, Gaussian 가정을 했기에, 이에 맞춰 모델 형태를 변화시킨다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;((Y= y, n) 인걸 통해서 X 가 continuous variable 인 것과 관련없이 output 이 Yes, No 로 나뉘는 classifier 인 것임을 기억하자.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분자와 분모가 겹치는 부분이 있어서 약분해주고 아래와 같이 정리한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.05.05.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blAgPh/btrP8NRz700/8LmhYR4MA18MI1IPwBZB0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blAgPh/btrP8NRz700/8LmhYR4MA18MI1IPwBZB0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blAgPh/btrP8NRz700/8LmhYR4MA18MI1IPwBZB0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblAgPh%2FbtrP8NRz700%2F8LmhYR4MA18MI1IPwBZB0k%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;541&quot; height=&quot;237&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.05.05.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;524&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;span style=&quot;color: #000000;&quot;&gt;또 추가적으로 가정을 해본다. $a_2^i = a_1^i$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;총 가정이 3가지이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. Gaussian Assumption&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. Naive Assumption&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. input feature 가 나타내는 각 클래스간의 variance 가 동일&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이로 인해 부분적으로 더 간략하게 정리가 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$e^1 \cdot e^2 = e^{1+2}$ 지수의 곱이 합이 되는 특성을 이용하여 정리&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;prior 파트인 $\pi_2, pi_1$ 도 내부로 넣게되면 log 가 붙는다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.09.21.png&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuZ0fJ/btrQasFwHos/KcWc248nTKIt60nDOipln0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuZ0fJ/btrQasFwHos/KcWc248nTKIt60nDOipln0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuZ0fJ/btrQasFwHos/KcWc248nTKIt60nDOipln0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuZ0fJ%2FbtrQasFwHos%2FKcWc248nTKIt60nDOipln0%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;465&quot; height=&quot;330&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.09.21.png&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;776&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\sum$ 이 같은 형태이므로, 합쳤다.&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;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;$a_2^i = a_1^i$&amp;nbsp; 로 가정이 되었으므로 통일한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 후 식을 다 정리한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.54.00.png&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpH5oX/btrP7S6LHH6/hseIPIaFNUzwmgZWkk1C3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpH5oX/btrP7S6LHH6/hseIPIaFNUzwmgZWkk1C3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpH5oX/btrP7S6LHH6/hseIPIaFNUzwmgZWkk1C3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpH5oX%2FbtrP7S6LHH6%2FhseIPIaFNUzwmgZWkk1C3k%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;607&quot; height=&quot;216&quot; data-filename=&quot;스크린샷 2022-11-02 오전 8.54.00.png&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;454&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;다 정리하고 나니, logistic regression 에서 쓰이는 logistic function과 형태가 똑같아졌다.&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;$\sum_{1 \leq i \leq d}\{ 2(\mu_2^i - \mu_1^i)X_i + \mu_1^{i^{2}} - \mu_2^{i^{2}}\} + \log \pi_2 - log\pi_1$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\rightarrow X\theta$ 의 linear term 하고 동일하다.&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;&lt;b&gt;위 증명은 어떤 의미가 있을까?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gaussian Naive Bayes 라는 모델은 class 로 sorting 한 경우(여기서는 Yes or No)에 같은 feature 들에서는 같은 level의 variance 를 갖는다고, 두개의 class 를 설명하는 추가 가정을 달면 그 것 자체가 즉 logistic regression 과 동일해진다는 것을 확인했다.&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-origin-width=&quot;1746&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byuwfU/btrQaaE27u0/HIfkiIpZ5NoNSLO7qjZng0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byuwfU/btrQaaE27u0/HIfkiIpZ5NoNSLO7qjZng0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byuwfU/btrQaaE27u0/HIfkiIpZ5NoNSLO7qjZng0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyuwfU%2FbtrQaaE27u0%2FHIfkiIpZ5NoNSLO7qjZng0%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;948&quot; height=&quot;193&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;356&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;span style=&quot;color: #000000;&quot;&gt;결론적으로 살펴보자면 Naive Bayes는 Logistic Regression에 비해 몇가지 더 가정을 걸었다. (물론 Logistic Regression의 가장 하나가 Naive Bayes 의 가정들보다 더 좋다고 단정할 수는 없다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 학계에서의 정론은 logistic regression이 Naive Bayes 보다 성능이 더 좋다고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes는 Logistic Regression 보다 오히려 찾아야하는 parameter 의 개수도 많다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\mu$ 에 대해 2개, input feature $d$ , variance 에 대해 2개 (가정으로 인해 1개로 처리)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;= 2 X 2(1) X d + 1 = 4d(2d) +1(prior)&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;반면 Logistic Regression은 d + 1(prior) 으로 수가 훨씬 적다.&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;그렇다면 Logistic Regression은 모든 상황에서 항상 더 좋을까?&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;Naive Bayes 는 Bayes Theorem 을 기반으로 하기 때문에, prior 정보를 파라미터 추정 과정에서 추가해줄 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 조작할 수 있는 레버가 좀 더 많다. 즉, 좋은 사전 정보가 있다면 Naive Bayes 가 더 좋을 수 있는 것이다.&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;그렇기에 이러한 비교 과정을 follow up 하며 내용을 알고있는 것이 중요하다.&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;&lt;b&gt;Generative - Discriminative Pair&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Generative model, P(Y|X) = P(X,Y) / P(X) = P(X|Y)P(Y)/ P(X)&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;Generative model 은 P(Y|X) 를 굳이 위와 같이 표현을 한다.&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;Full probabilistic model of all variables&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터로부터 P(X|Y), P(Y) 의 파라미터를 측정한다.&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;Characteristic: Bayesian, Prior, Modeling the joint probability&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Naive Bayes classifier&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Discriminative model P(Y|X)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관측 된 변수들의 분포를 모델링 할 필요가 없다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터로부터 얻은 P(Y|X) 의 파라미터를 측정한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Characteristics: conditional probability 를 모델링한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Logistic Regression&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Pros and Cons&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Logistic Regression is less biased&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Probably approximately correct learning: Naive Bayes learns faster&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;위 과정을 통해 90년도 중후반까지 사용했던 classic model 들을 살펴보았다.&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;다음 게시물부터는 20년도 초반에 많이 활용된 SVM 에 대하여 다뤄본다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/255</guid>
      <comments>https://itforfun.tistory.com/255#entry255comment</comments>
      <pubDate>Wed, 2 Nov 2022 10:43:40 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 8.5(2) - Naive Bayes는 Generative Model</title>
      <link>https://itforfun.tistory.com/254</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 가 Generative model 인 것을 확인하기 위하여 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://itforfun.tistory.com/253&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 글&lt;/a&gt;&lt;/span&gt; 에서 Generative Model에 대한 간략한 소개글을 작성했다. 해당 글을 원할하게 읽기 위해서는 이전 글을 간단하게 살펴보는 것을 추천한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes를 classification task 로 사용하는 것은 익숙하나, data 생성용으로 사용된다는 것은 익숙하지 않다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 놀랍게도 Naive Bayes는 데이터 생성에 가장 일찍 사용된 모델 중 하나이다. 물론, 복잡한 이미지 데이터에는 사용할 수 없었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 글에서는 Naive Bayes가 어떻게 generative model 이며, 왜 해당 모델로 복잡한 데이터인 이미지나 글 생성에 사용될 수 없는지 정리한다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;인스타그램에서 #패션스타그램 을 한다고 상상해보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AZrAh/btrP4W7AYgP/zFlFLJiDVOZKf99IJaD3R0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AZrAh/btrP4W7AYgP/zFlFLJiDVOZKf99IJaD3R0/img.png&quot; data-alt=&quot;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AZrAh/btrP4W7AYgP/zFlFLJiDVOZKf99IJaD3R0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAZrAh%2FbtrP4W7AYgP%2FzFlFLJiDVOZKf99IJaD3R0%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;610&quot; height=&quot;326&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 사진을 보라, 당신은 피드에 패션스타그램으로 많은 글을 올렸다. 신규유입을 위해 계속해서 색다른 착장을 올리고 싶으나 적절하며 새로운 착장이 안떠오른다. Naive Bayes를 사용한 generative model이 적절하며 유니크한 조합을 당신에게 제시해줄 수 있을까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;정답은 물론이다!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 다음을 읽기 전 아래 두가지를 전제조건으로 하고 넘어가자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 위 이미지에서 관측한 착장 외에 새로운 아이템은 없다. 아래 주어진 것들만이 'features' 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKlL4z/btrP5DUfGjZ/BJv6w38Umin5xluxMxqUr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKlL4z/btrP5DUfGjZ/BJv6w38Umin5xluxMxqUr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKlL4z/btrP5DUfGjZ/BJv6w38Umin5xluxMxqUr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKlL4z%2FbtrP5DUfGjZ%2FBJv6w38Umin5xluxMxqUr0%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;545&quot; height=&quot;270&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;383&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;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;7(hairstyles) x 6 (hair color) x 3(specs) x 4 (tops) x 8 (colors)=4032 unique combinations 이다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 training dataset은 당연히 이미지를 입력으로 바로 받는 것이 아니라, tabular data 의 형식으로 받는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 상단 이미지는 아주 강력한 힌트를 제공한다 : 특정 카테고리의 몇몇 아이템을 고를 확률이 같은 카테고리의 다른 아이템을 고를 확률보다 더 높다.&lt;i&gt; 예를 들면, silver-grey curly hair 를 다른 요소보다 선호할 수 있고, 유사하게 white tops 를 green tops 보다 선호할 수 있다. 모델이 내 선호도를 반영하면 좋겠다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2번째 전제조건이 수학적으로 어떤 의미가 있는가?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 착장이 동일한 확률을 갖지 않고 어떠한 p_data 분포를 따른다는 것이다. (&lt;i&gt;당연히 uniform 한 형태는 아니기에 pdf라고 부른다 &lt;/i&gt;) 당신은 당신의 옷장에 있는 몇몇 아이템을 다른 아이템보다 선호한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기까지만 읽어도 뭔가 generative model 과 관련이 있어보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pdf 추정: 어떠한 pdf 에 사용된 p_data: 위 tabular data(dataset X)가 주어졌을 때의 p_model&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추정된 pdf: p_model을 사용하여 새로우며 적절한 combination을 생성하여 새로운 인스타 이미지를 업로드한다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;parametric modeling 사용하여&amp;nbsp;pdf:p_data 를 추정하려면 이 p_data 분포를 나타낼 수 있는(represet) parameter 를 추정해야한다. (말이 복잡하지만, p_data 분포를 나타내는 paramter 를 추정하는 것이 곧 최적화 된 p_model을 찾는 것). 현재 가장 novel 한 방식은 샘플 공간(sample space)의 가능한 모든 포인트를 파라미터로 고려하는 것이다. 그러므로 우리는 샘플 공간의 포인트들의 확률인 4032 (모든 combinations) - 1 =4031 개의 포인트를 parameter로 넘긴다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;※ 왜 1을 뺄까?&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4032 개의 포인트의 확률이 모두 합쳐 1이 되어야 하므로, 4031 개만 알면된다. 마지막 포인트는 1 - (4031 포인트 확률의 합) 으로 구할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4031 개의 포인트의 확률은 어떻게 구할까? (여기서는 각 포인트가 하나의 착장)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;P(아무 착장) = 샘플 data에서 관측된 착장의 빈번도 / 총 샘플&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 Red round Top 과 white hair &amp;amp; no glasses 착장을 100번의 인스타 이미지 중 4번 입었다면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;P(Red &amp;amp; Round Top &amp;amp; White hair &amp;amp; No glasses) = 4/100&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼 본적 없는 combination 에 대해서는 어떨까? 그냥 확률이 0인걸까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;b&gt;물론 아니다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;combination이 데이터에 등장한 적 없었던 경우에 분자와 분모에 엡실론을 더하는, additive smoothing 을 수행하고, 이로 인해 unseen combinations 의 확률은 0이 아니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 숨겨진 문제는 여전히 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 앞에서 언급된 것과 같이, silver hair &amp;amp; white tops 을 선호한다. 그러므로, 논리적으로 따지면 silver hair 나 white topes, 혹은 둘다를 갖는 unseen combinations 높은 확률이어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 만약 옷장에 흰색과 굉장히 유사한, 달걀껍질 흰색의 옷이 있으면 어떻게 처리해야 할까? 흰색과 다름에도 굉장히 유사하다는 이유로 달걀껍질 흰색 옷을 포함하는 combination이 초록색이나 노랜색보다 조금 더 높은 확률을 가져야 할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 문제 1에만 집중을 해서 해결해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 시나리오에서 모든 combination의 확률은 다음으로 같이 계산된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;its &lt;i&gt;total occurrence / total images&lt;/i&gt; &lt;b&gt;else&lt;/b&gt; some &lt;i&gt;'k'&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;샘플 공간(sample space)의 모든 착장에 대하여 확률을 배정해주는 상단 접근방식은 모든 unseen combination 에&amp;nbsp;특정 확률 'k'를 부여하게 될 것이고 이는 우리가 원하는 pdf: p_data 가 아니다. unseen combination중 더 선호하는 아이템이 포함된 것이 모델로부터 더 높은 확률을 부여받아야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좀 더 자세히 보면, 이러한 확률 부여 방식이 곧 모든 파라미터가 100% dependent 하다고 직접적으로 가정한 것을 의미한다. 하지만 실제로는 그러기도 하고 그렇지 않기도 하다. 이는 다음과 같은 큰 문제점을 갖는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당신이 silver hair, white round tops, glasses 를 좋아 할 수 있지만, 안경을 쓰지 않고 나가는 combinations 착장은 생각도 못해봤을 수 있다. 이 착장의 (silver hair, white round tops, &lt;b&gt;NO &lt;/b&gt;glasses) 선호도를 한번 계산해보자. 이전 접근 방식으로 계산하면 관측 되지 않았던 랜덤 hair, random 색상의 top, glass 유뮤와 동일한 확률을 부여한다. 보통 5개의 아이템 중 4개는 선호하는 것을 사용하는 취향을 고려했을 때 말도 안된다. 선호 하는 feature 중 그냥 하나의 feature (여기서는 no glasses)만 빠졌을 뿐인데, 왜 이 combination이 다른 어떤 random combination 같은 것처럼 보이게 만드는 걸까? 그런 random combination 보다는 확률이 높아야 정상이다!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제는 우리가 아래와 같이 가정할 때 발생한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(A,B,C,D,E) = P(A \cap B \cap C \cap D \cap E) - 1번 식$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;all or nothing. 즉, 모든 것이 한번이라도 동시에 일어나지 않으면, 확률은 'k' 이다. (unseen combinations 에 대한 상수)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래는 어떨까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(A,B,C,D,E) = P(A) \times P(B) \times P(C) \times P(D) \times P(E) - 2번 식$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 방식은 우리가 위에서 마주한 문제를 해결한다: 즉 all-or-nothing을 피하게 한다. 위에서 언급한 것과 동일한 상황을 가정해보자. 5개 중 4개의 attributes 가 선호도 높은 아이템 일 때, random combination 보다 해당 combination 이 더 높은 확률을 가능성이 높다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 것이 바로 Naive Bayes 가 기능이다. 모든 features 이 독립이라고 가정함으로써 hair style 을 고르는 것은 top color 를 고르는 것과 무관하고, top style 은 악세사리 등 뭐를 착용하던간에 그 것과 독립이다. 그러므로 우리의 확률 분포 함수는 1번 식에서 2번 식으로 변경된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Black&amp;nbsp;hair,&amp;nbsp;long&amp;nbsp;curly&amp;nbsp;hair,&amp;nbsp;pink&amp;nbsp;top,&amp;nbsp;round&amp;nbsp;top,&amp;nbsp;no&amp;nbsp;glasses)&amp;nbsp;=&amp;nbsp;P(Balck&amp;nbsp;hair)&amp;nbsp;x&amp;nbsp;P(long&amp;nbsp;curly&amp;nbsp;hair)&amp;nbsp;x&amp;nbsp;P(pink&amp;nbsp;top)&amp;nbsp;x&amp;nbsp;P(round&amp;nbsp;top)&amp;nbsp;x&amp;nbsp;P(no&amp;nbsp;glasses)&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P(any element x) =&amp;nbsp; X의 등장 수 / total samples 이므로&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P(Balck Hair) = (Black hair)의 빈도/ Total insta images이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive probability distribution function 을 사용하는 것만으로도 4031개의 파라미터를 23 개로 줄일 수 있다!!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;어떻게 가능한가?&lt;/b&gt;&lt;/span&gt;&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rf2ZR/btrP36pXrWr/pC7kcFaPIaGA3lhDbK1J50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rf2ZR/btrP36pXrWr/pC7kcFaPIaGA3lhDbK1J50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rf2ZR/btrP36pXrWr/pC7kcFaPIaGA3lhDbK1J50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frf2ZR%2FbtrP36pXrWr%2FpC7kcFaPIaGA3lhDbK1J50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;316&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;383&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;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 는 모든 feature 가 독립이라고 가정한다. 즉, pdf 의 total parameters 개수는 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7(Hair style) -1 + 6(hair color) - 1 + 3(glasses) - 1+ 4(clothing type) - 1 + 8(clothing color) - 1 = 23&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 왜 모든 feature에 대하여 a-1 을 할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 -1 을 했던 것과 동일하게 a-1 개의 확률이 정해지면 나머지 1개는 $1 - \sum_{i=1}^{a-1}(P(i))$ 로 정해지기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 왜 총 파라미터의 개수가 곱셈이 아니고 덧셈일까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 feature 가 독립이므로, 확률은 다음과 같이 계산된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Black&amp;nbsp;hair|&amp;nbsp;pink&amp;nbsp;top)&amp;nbsp;=&amp;nbsp;P(Black&amp;nbsp;hair)&amp;nbsp;x&amp;nbsp;P(pink&amp;nbsp;top)&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&amp;amp;&amp;nbsp;P(Balck&amp;nbsp;hair|round&amp;nbsp;top)&amp;nbsp;=&amp;nbsp;P(Black&amp;nbsp;hair)&amp;nbsp;x&amp;nbsp;P(round&amp;nbsp;top)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Black hair)&amp;nbsp;&lt;/i&gt;는 상수이므로, 아까의 경우 parameter들이 dependent 하다고 가정했던 것과는 달리 위 두가지 경우를 계산할 때 모두 활용된다. 첫번 째 pdf 에서는 &lt;i&gt;P(Black hair $\cap$ pink top) &amp;amp; P(Black hair $\cap$ round top)&lt;/i&gt; 를 계산하되 features를 dependent 하다고 보아&lt;i&gt; P(Black hair)&lt;/i&gt; 만으로는 계산이 불가능했다. 풀어 말하자면, Black hair 를 포함한 모든 착장의 확률이 개별적으로 계산되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기까지 살펴본 것을 통해서 Naive Bayes 가 주어진 샘플(단순한)에 대하여 유사한 새로운 데이터를 생성하는 데 어떻게 도움이 되는지 알게 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;두줄 정리&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Discrimitative 모델이었다면 주어진 입력이 어디 카테고리에 속하는지 나누는 것이 목적이라면, Naive Bayes 는 당신이 인스타 그램에 새롭게 업데이트 할 옷을 추천해줄 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다만 Naive Bayes 는 conditional independence 를 가정하는데, 해당 글은 마치 marginal independence 를 가정한 것 처럼 작성되어 있어서 읽을 때 유의가 필요할 것 같다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Naive Bayes 를 활용하여 이미지를 생성할 수는 없을까?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단순히 combinations 을 제안하는 것을 넘어 mock picture 를 생성하여 어떤 착장을 입을지 아이디어를 얻어보려고 한다. 또한 이번에는 tabular data로 학습하지 않는다. 이번에는 계정의 instagram에 올라왔던 원본 사진으로 학습시켜서 model 이 dress combination 을 제안시켜 보려 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes Model을 다음 이미지로 학습시킨다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dtlz1/btrPYDnrMrM/T8WhaxKX30dlCHZz07xK4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dtlz1/btrPYDnrMrM/T8WhaxKX30dlCHZz07xK4K/img.png&quot; data-alt=&quot;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dtlz1/btrPYDnrMrM/T8WhaxKX30dlCHZz07xK4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDtlz1%2FbtrPYDnrMrM%2FT8WhaxKX30dlCHZz07xK4K%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;610&quot; height=&quot;326&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 결과물은 아래와 같이 생성된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG9lKe/btrP5DOj9JI/HpQNlswOcQeffG7izQ8Tu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG9lKe/btrP5DOj9JI/HpQNlswOcQeffG7izQ8Tu0/img.png&quot; data-alt=&quot;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG9lKe/btrP5DOj9JI/HpQNlswOcQeffG7izQ8Tu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG9lKe%2FbtrP5DOj9JI%2FHpQNlswOcQeffG7izQ8Tu0%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;727&quot; height=&quot;289&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.oreilly.com/library/view/generative-deep-learning/9781492041931/&lt;/figcaption&gt;
&lt;/figure&gt;
&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;뭐가 잘 못 된 것일까?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이전 시나리오에서 Naive Bayes 를 [n x 7] 행의 데이터로 학습시켰다. (n = 샘플 개수 / image - 즉 50개). feature 값들은 직접적으로 tabular data로 제공되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면 이번 시나리오에서 데이터는 복잡해졌다. 이번에 우리는 Naive Bayes를 [n x 64 x 64] 크기의 데이터로 학습시켰다. (64x 64 는 이미지의 차원이다). 관측한다면, 이 이미지들은 hair style 이나 top style 혹은 color 에 대해 어떤 힌트도 제공하지 않기에 Naive Bayes 로서는 특징을 뽑아내는 것이 굉장히 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 상황에서 Naive Bayes 를 사용하는 것은 아래와 같은 어려운 점이 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes 는 모든 features 가 독립이라고 가정하였다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이러한 가정은 다른 combinations 을 생성할 때 선호도등을 반영하고자 했던 첫번째 시나리오에는 적절하다. 하지만 이게 이제는 Bottle Neck이 되어버린다. 왜일까? 이제는 'top' 영역의 인접 pixels 이 하나의 독립체에 속하고 유사하게 보여야 한다는 것을 알 방법이 없다. (위 결과 사진을 보면 'top' 의 pixel의 중구난방한 것을 볼 수 있다.) 그러므로, training dataset을 통하여 얼굴 색이나 입술 색을 묘사하는 것은 꾀나 정확하나, 'tops' 의 색상은 이미지마다 계속해서 빠르게 변하므로 최종 결과물이 다소 pixels 들이 섞이게 된 것이다. 얼굴과 입술은 트레이닝 데이터 샘플에서도 일정하다보니 비교적 나을 수 밖에 없다. 재밌게도, training dataset에 존재하는 top colors 들이 거의 유사한 확률로 &amp;nbsp;섞여가지고 최종 결과물의 'top' 영역에 드러났다. 비슷한 패턴이 머리 안경 등에서도 나타났다. 한마디로 관계나 상황을 따로 학습시킬 방법이 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫번째 케이스에서 샘플 공간(sample space)이 4032 points 로 굉장히 작았고 각 포인트가 가능한 유효한 combination을(선호 되지 않는 것도) 생성했다.&amp;nbsp; 이미지를 고려할 때 각 픽셀이 255개의 고유한 값을 가질 수 있고 64 X 64 = 4096 픽셀까지 하면 샘픙 공간이 엄청나진다. 당연히, 모든 결합이 valid image가 되지는 못한다. 그러다보니 1) 샘플 공간에서 특정 파트를 딱 정해서 valid image가 생성되게 하는 것 자체가 어렵고 2) Naive Bayes 로 인해 픽셀간의 관계가 무시되어서 더 어렵다. 이미지의 pixels들은 주로 작은 patches 로 연관되어있다. (top, faces, lips 등). 이러한 연관관계는 절대 무시되면 안된다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;이러한 한계를 극복한 방법은 Autoencoders 와 Generative Modeling 의 아주 큰 주춧돌인 VAEs 를 통해 추후 알아보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/254</guid>
      <comments>https://itforfun.tistory.com/254#entry254comment</comments>
      <pubDate>Tue, 1 Nov 2022 13:59:40 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 8.5(1) - Discriminative model vs Generative Model</title>
      <link>https://itforfun.tistory.com/253</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes Model은 Generative Model 이고 Logistic Regression 은 Discrimitive Model 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Generative Model은 GAN 과 Diffusion 으로 접해봤는데 Naive Bayes 가 Generative 라니 어떤 의미인지 직관적으로 와닿지 않았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이에 따라 Generative Model 과 Discrimitive Model 을 기본개념부터 비교해보며 정리해본다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Discriminative Model &amp;amp; Generative Model&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Discriminative Model&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 모델들은 training data 중 클래스들을 구별하는데 도움이 되는 unique features 들만 학습한다. 이러한 특성으로 인해 주로 classification algorithm에 주로 사용된다. (ex. SVM, Random Forests, etc.) 해당 모델들은 feature X가 주어졌을 때의 feature Y의 확률인 $P(y|x)$ 를 측정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;예를 들어, 만약 주어진 이미지 데이터셋에서 말과 얼룩말을 구분해야하는 경우를 보자. Discriminative Model 은 두 샘플을 구별하는 특징들만 학습하고자 한다. (얼룩말의 줄무늬가 구분되는 특징일 수 있다.) 그러나 얼룩말과 말이 어떻게 생겼는지는 절대 이해할 수 없다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Generative Model&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 모델들은 클래스들을 구별하는데 도움이 될만한 unique features 이해하기 보다는 전체를 이해하고자 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;예를 들어, 분류를 돕는 unique feature만을 이해하려 하기 보다는 말과 얼룩말이 어떻게 생겼는가에 집중한다. 이러한 모델들은 실제로 data 를 이해하고, &lt;b&gt;discriminative model 이 할 수 없는 data 생성이라는 엄청난 이점을 제공한다.&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성 모델들은 다음을 측정하고자 한다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;unsupervised data: &lt;i&gt;sample&lt;/i&gt; '&lt;i&gt;x&lt;/i&gt;' &lt;i&gt;를 관측할 확률&lt;/i&gt; &lt;i&gt;즉, 주어진 데이터셋 X의 p(x)&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;supervised data: 주어진 데이터 셋 X에서 label 'y' 가 주어졌을 때 sample 'x' 를 관측할 확률&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성 모델의 몇가지 특징&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 분포의 측정 &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;목표는 training samples이 생성되는 분포를 결정하는 것이다. 만약 해당 분포가 측정되면, 수 많은 samples 을 생성하는 것은 굉장히 쉽다. (평균과 표준편차가 주어진 정규분포에서 샘플을 생성하는 것이 얼마나 쉬운지 떠올려보자.) 분포를 추정함으로써 분포의 parameters를 추정한다. (정규분포의 평균과 표준편차같은 느낌)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 통계적 본질 (&lt;i&gt;Stochastic Nature&lt;/i&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좀 어려운 부분이다. 통계적으로 랜덤인 요소를 측정한다. 이러한 알고리즘은 자연적으로 통계적이라(stochastic in nature) 주어진 한 input에 대해 다른 결과물들을 생성한다. 이러한 특성은 마치 determisnistic(&lt;i&gt;주어진 input에 fixed 된 결과물&lt;/i&gt;) 인 것처럼 필수적이다, 모델은 일부 공식을 학습하여 생성 능력이 소진 될 수 있다. 즉, 고유한 입력이 한번 반복되면, 고유한 출력이 반복된다. 이는 주어진 샘플 데이터 셋에 대하여 수십만장의 이미지를 생성하고자 하면 큰 문제가 될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 평가하기 어려움&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실이다. discriminative model은 accuracy, F1 Scores, 등의 metric을 갖는 것과 비교하여 생성 된 인공 샘플의 질을 평가하는 것은 어렵다. True, False 혹은 좋다 나쁘다의 기준 같은 것이 없다. 생성 된 샘플의 질은 정성적인 영역이다. (실제로 논문에서도 정성 평가를 사용하곤 한다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 복잡한 데이터의 잠재 표현에 대한 의존성 (&lt;i&gt;Dependence on Laten representation for complex data&lt;/i&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;잠재 표현(&lt;i&gt;Laten representaion&lt;/i&gt;)은 주로 높은 차원의 복잡한 데이터를 낮은 차원으로 표현한 것이다. 이는 데이터 생성에서 굉장히 중요한 역할을 한다. 잠재 공간(&lt;i&gt;latent space&lt;/i&gt;)에 데이터의 중요한 특성만 보존하여 원본 객체에 근사하도록 역추적을 한다. 확률적 요소가 더해져 생성된 이미지가 데이터 셋 X의 주제/내용 (&lt;i&gt;theme/content&lt;/i&gt;)와 유사하면서도 학습 데이터와 동일한 복사본이 되지 않도록 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;원기둥의 잠재 공간(&lt;i&gt;latent space&lt;/i&gt;) 를 만들고자 한다고 가정해보자. 원기둥을 더 낮은 차원인 '잠재 공간(&lt;i&gt;latent space&lt;/i&gt;)' 표현하면, 잠재 공간은 모든 작은 디테일을 기억하지는 않고 원기둥을 결정짓는 중요한 요소들인 기본 특성만(&lt;i&gt;원기둥 같은 높이, 반지름, 길이, 그 외 보통 원기둥을 결정 짓는 요소들&lt;/i&gt;) 기억할 것이다. 잠재 공간에 저장 된 이러한 기본 지식들에 작은 인공적 디테일을(&lt;i&gt;ex. 질감, 원기둥 색상&lt;/i&gt;) 더하여&amp;nbsp; 데이터셋에 적합해 보이면서 한번도 본적 없는 새로운 샘플들이 생성되는데 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pFuqB/btrP4vaU2Et/7KhkLd2RZ1Qs88BnJllkDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pFuqB/btrP4vaU2Et/7KhkLd2RZ1Qs88BnJllkDK/img.png&quot; data-alt=&quot;회색 도형: samples, 점선 도형: input N이 주어졌을 때, 잠재 공간으로 생성 할 수 있는 본적 없는 결과물&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pFuqB/btrP4vaU2Et/7KhkLd2RZ1Qs88BnJllkDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpFuqB%2FbtrP4vaU2Et%2F7KhkLd2RZ1Qs88BnJllkDK%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;669&quot; height=&quot;468&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;회색 도형: samples, 점선 도형: input N이 주어졌을 때, 잠재 공간으로 생성 할 수 있는 본적 없는 결과물&lt;/figcaption&gt;
&lt;/figure&gt;
&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;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 놀랍게 세상은 주로 Discriminative modelling 에 집중한다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 Discriminative model이 실제 세상 문제들에 적합하기 때문이다. 인공 샘플을 생성하기 위하여 샘플이 생성 된 분포를 알아야 되는 상황은 드물다 - 즉 주로 '분류(&lt;i&gt;classification&lt;/i&gt;)' 가 실제 세상 문제와 연결된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 상황을 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;의료 이미지를 병감지 센터로부터 받았다. 여기서는 모델이 의료 이미지를 더 생성하는 것보다는 그냥 악성 종양을 잘 분류하거나 잡아내기를 원할 것이다. 분포를 학습하는 것이 여기서는 의미가 없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;email 을 스펨으로 분류하기 위해서 모델은 spam, no-spam 으로 분류해야 한다. 이를 위해서는 이러한 이메일이 생성된 분포를 이해하기 보다는 내용으로 분류하는 것이 중요하다.&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;최근 GAN 및 텍스트 생성의 발전으로 인해 generative modelling 이 실제 세상 문제에 적용될 여러 새로운 기회를 얻고 있다. 그러나 여전히 커리어의 초기단게에서는 generative model이 주로 사용되는 경우가 적다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Generative Model Framework는 어떻게 생겼는가?&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dataset X가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 X 가 어떤 분포 P_data 에서 샘플링 되었다고 가정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;generative model 인 P_model 은 P_data 와 유사하게 행동하여 비슷한 샘플을 생성한다. 목표는 P_model을 P_data와 최대한 유사하게 학습시킨 후, P_model을 이용하여 같은 타입 샘플을 더 많이 생성하는 것이다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;P_model 이 보기 좋은 모습은?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P_model이 유사한 샘플을(dataset X에 봤던 것과는 같지 않은) 생성할 때, '주제(theme)' 는 같도록 유지되지만, 다른 특성(features)은 상당히 변화한다. 만약 'X' 가 얼굴 데이터라 하면, 성공적인 P_model은 다음과 같은 얼굴 이미지를 생성할 수 있어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P_data의 copy_paste 가 아닌 샘플 (dataset에서 본적 없는 face) (오타가 아닌가 싶다 P_data 가 아니라 X_data 아닌가? )&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;샘플들은 얼굴과 닮아야 한다. (말이 아니어야 한다.)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 예제는 이상적인 경우다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYZoze/btrP36P7itY/yB27PJ909dUP33706Wweak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYZoze/btrP36P7itY/yB27PJ909dUP33706Wweak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYZoze/btrP36P7itY/yB27PJ909dUP33706Wweak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYZoze%2FbtrP36P7itY%2FyB27PJ909dUP33706Wweak%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;572&quot; height=&quot;290&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;290&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;span style=&quot;color: #000000;&quot;&gt;위 세계 지도를 살펴보자. '검은 점'이 generative model을 만들 때 학습한 데이터 셋이라 가정해보자. 학습 데이터 셋은 다음의 특징을 갖는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 점은 '육지' 지역에 있고 바다 지역에 있지 않다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;육지 선택에 특별한 조건은 없는 듯 해 보인다. 전 대륙에 걸쳐 넓게 퍼져있다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;generative model 'a', 'b', 'c' 를 학습시킨다고 가정해보자. 각 모델은 한 점씩 생성한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;'a' 는 점 'A' 를 생성했다. 하지만 바다 위에 점을 생성했기에 이상적인 generator 가 아니다. 이 모델은 학습 데이터에서 가장 중요한 특성중 하나인 '각 점은 육지 지역에 있다'를 이해하지 못했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;'b' 는 점 'B' 를 생성했다. 그러나 B는 overfit 된 것 처럼 보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;'c' 는 점 'C' 를 생성했다. 점이 육지위에 찍혔고, 기존 데이터와 너무 유사하지도 않아서 좋아보인다. 'C' 가 이상적인 generator이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;몇가지 용어 정리&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ Sample Space&lt;/b&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;The&amp;nbsp;pool&amp;nbsp;of&amp;nbsp;values&amp;nbsp;from&amp;nbsp;which&amp;nbsp;samples&amp;nbsp;in&amp;nbsp;training&amp;nbsp;dataset&amp;nbsp;&amp;lsquo;X&amp;rsquo;&amp;nbsp;can&amp;nbsp;take&amp;nbsp;values.&amp;nbsp;For&amp;nbsp;example:&amp;nbsp;In&amp;nbsp;the&amp;nbsp;above&amp;nbsp;world&amp;nbsp;map&amp;nbsp;scenario,&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;of&amp;nbsp;all&amp;nbsp;points&amp;nbsp;on&amp;nbsp;&amp;lsquo;land&amp;rsquo;&amp;nbsp;constitute&amp;nbsp;the&amp;nbsp;sample&amp;nbsp;space&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;b&gt;※&lt;/b&gt;Probability Density Function (pdf)&lt;/b&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;It&amp;rsquo;s&amp;nbsp;the&amp;nbsp;function&amp;nbsp;th&lt;/span&gt;at&amp;nbsp;maps&amp;nbsp;the&amp;nbsp;probability&amp;nbsp;of&amp;nbsp;picking&amp;nbsp;up&amp;nbsp;a&amp;nbsp;sample&amp;nbsp;from&amp;nbsp;a&amp;nbsp;sample&amp;nbsp;space.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;예를들어, 물위에 있는 점은 probability = 0 이다. 육지에 있는 점은 상수 'k' 이다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ &lt;b&gt;Parameteric modeling&lt;/b&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Representing any distribution using a set of parameters is called Parameter modeling (정규분포에서 평균과 표준편차가 있으면 sample 을 뽑을 수 있다. 삼각형의 경우 꼭지점 3개로 결정된다. 즉 모든 샘플은 (A,B,C) 좌표로 측정 될 수 있다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ &lt;b&gt;Likelihood&lt;/b&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 셋 X 가 주어졌을 때, 분포의 paramters $\theta$ 가 관측될 확률. 즉, $P(y|X, \theta)$ 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※&lt;b&gt;Maximum likelihood&lt;/b&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(y|X, \theta)$ 를 최대화 하기 위한 최적의 parameter $\theta$ 를 maximum likelihood라고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;샘플 공간(&lt;i&gt;sample space&lt;/i&gt;)의 모든 샘플의 확률의 합은 1이다. P_data &amp;amp; P_model도 물론 pdf 형태로 나타난다. P_data의 유일한 차이점은 dataset X의 true pdf 이고, 그러한 pdf 는 하나만 있다는 것이다. 반면에 추정하고자 하는 P_model은 P_data에 의해 여러개로 추정 될 수 있다. 우리는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;P_data 를 추정하는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;best P_model 얻을 방법을 찾아야 한다. (&lt;i&gt;알아듣기 쉽게 설명하자면, true pdf 는 당연히 하나밖에 없다. true pdf 를 추정하는 모델은 당연히 여러개 생길 수 있다. 이 중 true pdf를 가장 근사하는 모델이 우리가 찾고자 하는 모델이다.&lt;/i&gt;)&lt;/span&gt;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/253</guid>
      <comments>https://itforfun.tistory.com/253#entry253comment</comments>
      <pubDate>Mon, 31 Oct 2022 20:30:15 +0900</pubDate>
    </item>
    <item>
      <title>머신러닝 정리 7 - Decision Boundary, logistic regression, Gradient Descent</title>
      <link>https://itforfun.tistory.com/251</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지금까지 Traditional 한 기법인 Decision Tree, Linear Regression, Rule base 기법 등을 알아보았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고, 가장 최근 글에서는 conditional independence 를 가정한 Naive Bayes Classifier 를 알아보았다. Navie Bayes Classifier&amp;nbsp; 는 MAP 기법으로 간단하게 구현된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 Navie Bayes Classifier 는 Naive 한 가정으로 인해 feature 간의 interaction을 전혀 반영하지 못한다는 점에서 문제가 있었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이러한 문제를 탈피한 여러 방법론들을 앞으로 알아보려고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 중, 가장 기본적인 것 부터 알아보자.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Logistic Regression&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Logisitc Regression 도 Bayes risk (error)를 최소화 하는 형태로 구현되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이글에서는 Logisitic Model 을 구현 한 후, parameter 를 optimize 하는 MLE(극점 이용) 기법을 통해 parameter $\theta$ 를 inference 하는 과정을 다루고,&amp;nbsp;마지막에 Naive Bayes 와 Logistic Regression 을 비교해본다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfJedy/btrORX8KKSI/8HcK2ykghD8LWbo2na9AH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfJedy/btrORX8KKSI/8HcK2ykghD8LWbo2na9AH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfJedy/btrORX8KKSI/8HcK2ykghD8LWbo2na9AH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfJedy%2FbtrORX8KKSI%2F8HcK2ykghD8LWbo2na9AH0%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;839&quot; height=&quot;397&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;551&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;span style=&quot;color: #000000;&quot;&gt;위 이미지는 이미 그전 글들에서 너무 여러번 다뤘던 내용이므로 간단하게 요약만 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Binary Classification 문제에서 postive 일 확률이 0.7 이면, negative 일 확률은 0.3이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0.3 만큼이나 negative 가 될 bayes risk 를 안게된다. (위 그림에서는 색칠 된 영역)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 점선으로 모델링 된 확률을 실선처럼 모델링 하여 bayes risk 자체를 최소화 하는 방법이 있다면, 그렇게 하는 것이 가장 이상적이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$x_m$ 을 기준으로 왼 쪽이면 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;y을 갖고&lt;/span&gt;&lt;/b&gt;, 오른 쪽이면 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;y을 갖는다&lt;/span&gt;&lt;/b&gt;. 이 $x_m$ 의 위치를 &lt;b&gt;Decision Boundary&lt;/b&gt; 라고 부른다. Decision Boundary 를 기준으로 각 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;y&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;y&lt;/span&gt;&lt;/b&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;span style=&quot;color: #000000;&quot;&gt;이 두가지를 만족하는 것이 위의 실선이다. 이 실선을 지금부터 S 커브 혹은 Sigmoid function 이라고 부르자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Likelihood 를 어떤 형태로 만들어야 sigmoid 형태가 될 수 있을지 지금부터 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용 데이터 셋: Credit Approval Dataset&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot;&gt;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666018125783&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;UCI Machine Learning Repository: Credit Approval Data Set&quot; data-og-description=&quot;Credit Approval Data Set Download: Data Folder, Data Set Description Abstract: This data concerns credit card applications; good mix of attributes Data Set Characteristics:&amp;nbsp;&amp;nbsp; Multivariate Number of Instances: 690 Area: Financial Attribute Characteristics&quot; data-og-host=&quot;archive.ics.uci.edu&quot; data-og-source-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; data-og-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;UCI Machine Learning Repository: Credit Approval Data Set&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Credit Approval Data Set Download: Data Folder, Data Set Description Abstract: This data concerns credit card applications; good mix of attributes Data Set Characteristics:&amp;nbsp;&amp;nbsp; Multivariate Number of Instances: 690 Area: Financial Attribute Characteristics&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;archive.ics.uci.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;690 Instances total&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;307 positive instance&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;credit card 신청인 총 690 인 중, 307 명만 허가된 데이터 셋이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;A1 ~ A16 features&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;class C 에 대하여, 총 16개의 feature가 존재한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 중 A 15 attribute 를 사용하여 예측을 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Y axis 는 P(Y|X) 이다. (응답 C)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Decision Boundary 는 회색 줄로 표시되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-28 오전 1.43.40.png&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bItB0u/btrPIEOyEZW/glKHyNEuHwbha9a375ej60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bItB0u/btrPIEOyEZW/glKHyNEuHwbha9a375ej60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bItB0u/btrPIEOyEZW/glKHyNEuHwbha9a375ej60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbItB0u%2FbtrPIEOyEZW%2FglKHyNEuHwbha9a375ej60%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;584&quot; height=&quot;250&quot; data-filename=&quot;스크린샷 2022-10-28 오전 1.43.40.png&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왼쪽 그림은 X = A 15, Y = C 이고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오른쪽 그림은 X = log(A15), Y = C 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 왼쪽 그림을 보면 Decision Boundary 보다 아래에 있어도 응답이 positive인 사람들이 있지만, negative 인 사람들이 모두 Boundary 보다 아래에 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X 를 linear 하게 보니 생각보다 clear 하게 보이지 않아, log 를 씌운 후 결과값을 본게 오른쪽 그림이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※log 를 씌운다는 것 자체가 급격한 값의 차이를 좀 누그려 뜨려서 보겠다는 것이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1, 10, 100, 1000 $\rightarrow$ 1, 2, 3, 4&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 결과 Boundary를 기준으로 label의 나뉘는 경향성이 비교적 잘 보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A 15를 linear regression 으로 fitting 해보자. 물론 discrete 한 label을 fitting 한다는게 말은 안되지만 한번 해보자.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPH6BA/btrPJcX4rS8/PprO9EHdAlnP67Mp34Xi9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPH6BA/btrPJcX4rS8/PprO9EHdAlnP67Mp34Xi9k/img.png&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;510&quot; data-is-animation=&quot;false&quot; width=&quot;293&quot; height=&quot;244&quot; data-widthpercent=&quot;51.04&quot; style=&quot;width: 50.4439%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPH6BA/btrPJcX4rS8/PprO9EHdAlnP67Mp34Xi9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPH6BA%2FbtrPJcX4rS8%2FPprO9EHdAlnP67Mp34Xi9k%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;612&quot; height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsAcI5/btrOS1WrbVN/5VC22L6f0PWtwkL2wyRgKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsAcI5/btrOS1WrbVN/5VC22L6f0PWtwkL2wyRgKk/img.png&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;410&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.3933%;&quot; data-widthpercent=&quot;48.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsAcI5/btrOS1WrbVN/5VC22L6f0PWtwkL2wyRgKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsAcI5%2FbtrOS1WrbVN%2F5VC22L6f0PWtwkL2wyRgKk%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;472&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;왼쪽 그림을 살펴보자. 빨간 선으로 linear 하게 fitting 이 되었다. 그리고 초록색으로 logistic regression도 해보았다. (logistic regression에 대해 아직 설명하지 않았다 뒤에서 설명한다. 다만, logistic regression 은 오른쪽 그림과 같이 S 의 형태를 띈다는 것만 알아두자.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;워낙에 데이터가 모여있어서 초록색 fitting 된 커브가 잘 눈에 안들어오지만, 동그라미 친 부분을 확대하면 오른쪽 그림과 같이 S 자 인 것을 확인할 수 있다. (오른 쪽 그림의 검은 선은 decision boundary를 임의로 표시해놓은 것이다. 원점이 아니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좀 더 변화를 넓게 보기 위하여 A15 에 log 를 취해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-28 오전 1.45.19.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/32qui/btrPJcX4sHv/kPIOEjxU1eMVizm6ZS2LJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/32qui/btrPJcX4sHv/kPIOEjxU1eMVizm6ZS2LJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/32qui/btrPJcX4sHv/kPIOEjxU1eMVizm6ZS2LJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F32qui%2FbtrPJcX4sHv%2FkPIOEjxU1eMVizm6ZS2LJk%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;333&quot; height=&quot;284&quot; data-filename=&quot;스크린샷 2022-10-28 오전 1.45.19.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Blue = $(X, Y_{true})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Red = $(X, P_{lin} (Y|X))$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Green = $(X, P_{log} (Y|X))$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(X가 log 가 씌어진 형태이므로, 일반적 linear 한 형태가 아니라 증가하는 형태를 띄게 되었다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logistic regression이 자신의 decision boundary 근처에서 부드럽고 급격하게 올라가고 그 후 그 상태를 유지하는 S 커브 형태를 만들어낸다는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHta1M/btrPJ3M7OQK/Zflip2XBE5p7I2PL1LeJbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHta1M/btrPJ3M7OQK/Zflip2XBE5p7I2PL1LeJbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHta1M/btrPJ3M7OQK/Zflip2XBE5p7I2PL1LeJbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHta1M%2FbtrPJ3M7OQK%2FZflip2XBE5p7I2PL1LeJbk%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;305&quot; height=&quot;261&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear regression 은 0.5 를 지나는 지점이 logstic regression 보다 훨씬 앞지점이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대충 봐도 logistic regression이 사실에 근접하게 정확해 보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear regression 이 0.5 를 지난 지점 전 부분의 positive data 는 모두 에러처리가 되어버린다. (빨간 원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, logistic function 에러 처리되는 부분이 훨씬 적다. (초록 원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;negative data에서도 마찬가지다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;눈으로 봐도 S 커브를 사용하는 것이 더 효율적이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Sigmoid&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;S 커브를 좀 더 전문적으로 sigmoid 형태라고 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZsqZj/btrOSbrHZjz/KBeqTNmKuOPobEOo32Uwgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZsqZj/btrOSbrHZjz/KBeqTNmKuOPobEOo32Uwgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZsqZj/btrOSbrHZjz/KBeqTNmKuOPobEOo32Uwgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZsqZj%2FbtrOSbrHZjz%2FKBeqTNmKuOPobEOo32Uwgk%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;500&quot; height=&quot;250&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;250&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;sigmoid function 이란?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;bounded 되었다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;differentiable 하다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Real function 이다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 input 에 대해서 output이 특정 boundary 내에서 정의가 되어있어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;positive derivative 즉, 증가하는 형태여야 한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Logistic Function&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR4ayX%2FbtrOTiX58Tx%2FBf3U61Gtw08Konx10T4gMk%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;218&quot; height=&quot;231&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;231&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;span style=&quot;color: #000000;&quot;&gt;Logistic function 의 정의된 Y 영역을 보면 0 ~ 1 이다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른 sigmoid function들을 보면 -1 ~ 1 이라는 차이가 있다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 국가의 경제력과 같이 정체 중에 어떤 계기로 갑자기 성장하고 다시 정체되는 상황에 많이 사용된다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;sigmoid function 의 특징을 모두 가지고 있어서 사용하기 좋다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당연히 미분도 쉽다. 그러다보니 미분하여 극점 찾기도 용이하다.&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;Logistic Function 의 역함수는 &lt;b&gt;Logit function&lt;/b&gt; 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$f(x) = \log (\frac{x}{1-x})$$&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLgW15%2FbtrOQh7Z6E6%2FPNtmgGEDK5wWJ2P56KQfj1%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;214&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot; width=&quot;214&quot; height=&quot;214&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.8494%; margin-right: 10px;&quot; data-widthpercent=&quot;51.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLgW15/btrOQh7Z6E6/PNtmgGEDK5wWJ2P56KQfj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLgW15%2FbtrOQh7Z6E6%2FPNtmgGEDK5wWJ2P56KQfj1%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;300&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;231&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;48.55&quot; style=&quot;width: 47.9878%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR4ayX/btrOTiX58Tx/Bf3U61Gtw08Konx10T4gMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR4ayX%2FbtrOTiX58Tx%2FBf3U61Gtw08Konx10T4gMk%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;218&quot; height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logit function의 정의역 범위는 [0, 1]이다. 이에 따라 x 를 확률 값으로 보아 p 로 치환할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ f(x) = \log (\frac{x}{1-x}) \rightarrow x = log(\frac{p}{1-p})$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 logistic function 은 logit function의 역함수 이므로, p가 치역이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$x = log(\frac{p}{1-p}) \rightarrow ax+b $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logistic function 을 classification 하고자 하는 분포에 맞춰서 fitting을 해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbMkVI/btrO9BwZ1Wd/jeFA5D24JchT6ZytDtrQQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbMkVI/btrO9BwZ1Wd/jeFA5D24JchT6ZytDtrQQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbMkVI/btrO9BwZ1Wd/jeFA5D24JchT6ZytDtrQQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbMkVI%2FbtrO9BwZ1Wd%2FjeFA5D24JchT6ZytDtrQQ0%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;209&quot; height=&quot;462&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;fitting은 decision boundary의 위치를 이동 시키거나, 변화 과정을 압축하거나 넓힌다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;변화 과정을 압축, 넓힘: &lt;b&gt;a&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;decision boundary 이동: &lt;b&gt;b&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 해당 정보들을 control 하기 위한 매개변수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\rightarrow ax+b \rightarrow X \theta$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta$ 의 첫번째 paramter 는 특정 bias 에만 움직이도록 설정하였기에 b 가 반영되고 나머지는 a 부분을 반영한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(이 부분이 이해가 안간다면 그 전 글들을 읽고오시면 좋습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 부분은 linear regression 과 생김새가 굉장히 닮았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 linear regression의 방법으로 fitting을 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear regression의 방식으로 $P(Y | X)$ 를 fitting 하려고 한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이때 $X\theta = \log(\frac{p}{1-p})$ &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X가 주어진 상황에서 Y가 될 확률을 어떻게 정의할 수 있을까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실상 p는 우리가 관심있는 확률값 (inference 혹은 optimization을 하고자 하는) P(Y|X) 라고 써줘도 무방하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$X \theta = \log(\frac{P(Y|X)}{1 - P(Y|X)})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, $X \theta$ 를 통해 regression 임을 알 수 있는데, 모양을 살펴보면 logistic 한 형태임을 확인 할 수 있어서 logistic regression 임을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ 위 작업에서 왜 굳이 logit function으로부터 logsitic function fitting을 유도할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;f = theta * x 형태의 linear regression에서 linear function f를 근사하고 싶은 것처럼 logistic regression은 그 아래에 있는 logit 안의 p를 근사하는 과정 이라고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Logistic Regression&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Binomial, Multi-nomial 모두 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bernoulli 실험을 상기해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;관측값 x 가 주어졌을 때,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음의 확률을 따른다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(y|x) = \mu (x)^y (1 - \mu(x))^{1-y}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\mu(x)$ 를 logistic function으로 모델링 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\mu(x) = \frac{1}{1+e^{-\theta^{T} x}} = P(y = 1 | x)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(범위가 1에 속할 확률)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 살펴보았던 logistic regression의 &lt;i&gt;p&lt;/i&gt; 값을 $\mu(x)$ 혹은 $P(y|x)$와 동일하게 놓고 regression 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$-\theta^T x$ 는 그냥 $X \theta$ 이나, 한 instance에 대한 것이기에 $x \theta$ 로 표기한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$X \theta = \log(\frac{P(Y|X)}{ 1 - P(Y|X)})$ 이고 이 것을 다시 써보면&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y|X) = \frac{e^{X\theta}}{1 + e^{X\theta}}$ 로 정리된 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;학습시 X, Y는 주어졌으므로 우리가 모르는 $\theta$ 를 알아내는 방법이 logistic function 을 학습하고 paramter 를 inference 하는 과정이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(※추가적으로 $\frac{P(Y|X)}{ 1 - P(Y|X)})$ 형태는 Odd의 형태이기도 하다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Parameter $\theta$ 찾기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(이항 로지스틱 회귀의 경우)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Maximum Likelihood Estimation (MLE) of $\theta$&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;관측 데이터의 확률을 최대화 하는 $\theta$ 를 찾는 법&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\hat{\theta} = argmax_{\theta} P (D|\theta)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Maximum Conditional Likelihood Estimation of $\theta$ (MCLE)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = argmax_{\theta} P(D|\theta) = argmax_{\theta} \prod_{1 \leq i \leq N} P(Y_i | X_i ; \theta)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= argmax_{\theta} \log(\prod_{1 \leq i \leq N} P(Y_i | X_i ; \theta))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= argmax_{\theta} \sum_{1 \leq i \leq N} \log(P (Y_i|X_i ; \theta))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;순차적으로 살펴보자면, 각 $X_i$ 는 독립 시행이기에 곱셈으로 $argmax_{\theta}$를 구한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;log 를 취해줌으로써 덧셈으로 연산 과정을 간소화하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베르누이 모델&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(Y_i | X_i ; \theta) = \mu(X_i)^{Y_i} (1 - \mu(X_i))^{1-Y_i}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;양변에 log 를 취해준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\log(P(Y_i|X_i ; \theta)) = Y_i \log(\mu (X_i)) + (1 - Y_i) \log(1 - \mu(X_i))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$Y_i$로 묶어준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= Y_i\{\log(\mu(X_i)) - \log(1 - \mu(X_i)) \} + \log(1 - \mu(X_i))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= Y_i \log (\frac{\mu(X_i)}{1 - \mu(X_i)}) + \log(1 - \mu(X_i))$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ recall&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$X&amp;nbsp;\theta&amp;nbsp;=&amp;nbsp;\log(\frac{P(Y|X)}{&amp;nbsp;1&amp;nbsp;-&amp;nbsp;P(Y|X)})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\mu(x) = \frac{1}{1+e^{-\theta^{T} x}}$ (분자 분모에 $e^{X \theta}$ 를 곱한다.) $=&amp;nbsp;&amp;nbsp;\frac{e^{X\theta}}{1 + e^{X\theta}}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= Y_i X_i \theta + \log(1 - \mu(X_i)) = Y_iX_i\theta - \log(1 + e^{X_i \theta})$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 과정들은 연속형 숫자가 아닌 2개의 범주로 결과가 나와야 하기에 logistic regression이 필요한 것이고, 이를 적용하기 위해 최적화하여 추론할 $\theta$ 의 형태로 수식을 정리한 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta}= argmax_{\theta} \sum_{1 \leq i \leq N} \log(P (Y_i|X_i ; \theta))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ = argmax_{\theta} \sum_{1 \leq i \leq N}&amp;nbsp; \{ Y_iX_i\theta - \log(1 + e^{X_i \theta}) \} $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;미분을 통해 극점을 찾아 최적화를 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{\partial}{\partial \theta_j} \{ \sum_{1 \leq i \leq N}&amp;nbsp; \{ Y_iX_i\theta - \log(1 + e^{X_i \theta}) \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ = \{ \sum_{1 \leq i \leq N} Y_i X_{i,j}\} + \{ \sum_{1 \leq i \leq N} -\frac{1}{1+e^{X_i\theta}} \times e^{X_i \theta} \times X_{i,j} \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta$ 의 개별 element 로 미분을 취하기에 X 도 $X_{i,j}$ 로 표기한다.&amp;nbsp; 즉 $\theta_j$가 역할을 하는 term에 대해서만 미분이 가능 하기에 $X_{i,j}$는 $\theta_j$와 연결된 X tern만 살린다.&amp;nbsp; $X_i$가 $\theta_j$와 연결된 term이면 1, 아니면 0을 대입하여 수식을 이해하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\log(1+e^{X_i \theta})$ 의 미분은 log 의 합성 함수, $e^{x_i \theta}$ 에서 합성함수이므로 정리하면 $ \frac{1}{1+e^{X_i \theta}} \times e^{X_i \theta} \times X_{i,j}$ 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= \sum_{1 \leq i \leq N} X_{i,j} (Y_i - \frac{e^{X_i \theta}}{1 + e^{X_i \theta}}) = \sum_{1\leq i \leq N} X_{i,j}(Y_i - P(Y_i = 1|X_i ; \theta)) = 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제는 미분을 통해 $\hat{\theta} = $ 의 형태가 깔끔하게 딱 떨어지지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 이 방식을 통해 $\theta$ 를 closed form solution 을 구하는 것이 굉장히 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 open form solution 인 즉, approximation (근사)를 해야하는 형태로 나오게 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$\theta$ 의 잘 fitting 된 값을 구하기 위해 근사를 해보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ recall&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logistic regression 은 regression 을 통해 classification 즉 범주형 문제에서 사용하는 모델이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta$ 의 근사법으로 딥러닝에서 잘 알려진 gradient descent 가 등장한다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Gradient Descent&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Taylor Expansion&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Taylor series 는 하나의 함수에 대한 표현이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테일러 급수에 관한 내용은 아래 글을 참고하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자세한 내용은 생략하나, 다루기 어렵거나 잘 모르는 함수를 다루기 쉽고 이해하기 쉬운 다항함수로 근사하기 위해 사용한다는 점 정도만 알아두자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://darkpgmr.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://darkpgmr.tistory.com/59&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666782110569&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;테일러 급수의 이해와 활용 (Taylor series)&quot; data-og-description=&quot;테일러 급수(Taylor series)에 대한 내용은 이미 인터넷에 좋은 글들이 많습니다. 그럼에도 이렇게 다시 글을 쓰는 이유는 스스로도 애매한 부분이 많기 때문입니다. 그래서 공부하는 셈치고 관련 &quot; data-og-host=&quot;darkpgmr.tistory.com&quot; data-og-source-url=&quot;https://darkpgmr.tistory.com/59&quot; data-og-url=&quot;https://darkpgmr.tistory.com/59&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dzCmzn/hyQlwgDRzt/TCKEIzdaJwBeu6U6KE4ZR1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/71In9/hyQlwVhu3A/4Qf7rJktc3U6ZDgE8GbStK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://darkpgmr.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://darkpgmr.tistory.com/59&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dzCmzn/hyQlwgDRzt/TCKEIzdaJwBeu6U6KE4ZR1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/71In9/hyQlwVhu3A/4Qf7rJktc3U6ZDgE8GbStK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;테일러 급수의 이해와 활용 (Taylor series)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;테일러 급수(Taylor series)에 대한 내용은 이미 인터넷에 좋은 글들이 많습니다. 그럼에도 이렇게 다시 글을 쓰는 이유는 스스로도 애매한 부분이 많기 때문입니다. 그래서 공부하는 셈치고 관련&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;darkpgmr.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Taylor series&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$f(x) = f(a) + \frac{f'(a)}{1!}(x-a) +&amp;nbsp;&amp;nbsp;\frac{f''(a)}{2!}(x-a)^2 + ... + $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!} (x-a)^n$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a 가 0 일 때, $e^x$ 함수를 표현해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$e^x = 1 + \frac{e^0}{1!}(x-0)^1 + &amp;nbsp;\frac{e^0}{2!}(x-0)^2 + ...$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(1 은 0차항이라서 1이 된 것이다. 사실은 같은 형태)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n 의 차원에 따라 근사도가 달라진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-26 오후 8.35.14.png&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDyVzc/btrPGeAnQuL/TL5kjtZDRx2uASrropTSDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDyVzc/btrPGeAnQuL/TL5kjtZDRx2uASrropTSDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDyVzc/btrPGeAnQuL/TL5kjtZDRx2uASrropTSDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDyVzc%2FbtrPGeAnQuL%2FTL5kjtZDRx2uASrropTSDk%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;645&quot; height=&quot;201&quot; data-filename=&quot;스크린샷 2022-10-26 오후 8.35.14.png&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;log function 은 아래와 같이 근사된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvX4kX/btrPDAxY63j/kH5XI64FqBTPNAJX9VZYm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvX4kX/btrPDAxY63j/kH5XI64FqBTPNAJX9VZYm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvX4kX/btrPDAxY63j/kH5XI64FqBTPNAJX9VZYm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvX4kX%2FbtrPDAxY63j%2FkH5XI64FqBTPNAJX9VZYm1%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;300&quot; height=&quot;300&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, taylor expansion(확장)으로 만약 무한대 합을 볼 수 있는 가정 하에서는 원하는 함수를 동일하게 근사할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;taylor expansion 이 가능한 경우&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;infinitely differentiable 한데, real 혹은 complex number 로 만들어질 때&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 Taylor Expansion 으로 gradient descent 알고리즘을 정의해볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gradient Descent, Ascent&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;미분 가능한 함수 f(x) 가 주어지고, 초기 파라미터 $x_1$ 이 주어져야 한다. (여기서 $x_1$ 은 파라미터들의 초기 값이라는 뜻 벡터의 첫번째 값이 아니다.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파라미터를 반복적으로 f(x) 를 더 크게 하는 쪽 혹은 더 작게 하는 쪽으로 이동시킨다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;f(x) 를 음 혹은 양의 방향의 기울기로 이끈다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;딥러닝에서 워낙 여러번 정리 했던 내용이기에 부담은 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;방향과 속력이 중요하다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x) = f(a) + \frac{f'(a)}{1!}(x-a) + O(\big\rvert |x-a| \big\lvert^2)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 Big-Oh notation 이 등장한 이유는 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Big-Oh notation: x가 a에 가까워질 때, f(x)가 어떤 양수 M과 함수 g(x)에 의해 제한될 때를 의미한다. 이를 $ f(x)=O(g(x))$ 로 나타내고, 식으로 정의를 표현하면,&amp;nbsp; $|f(x)| \leq Mg(x) $ for&amp;nbsp; $ x \rightarrow a$ 로 나타낸다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 함수에서는 3 제곱 이후 영향력이 작아지기 때문에 x 가 a에 가까워질 때, $\big\rvert |x-a| \big\lvert^2$ 안에 제한될 수 있는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 여러 값들을 Big-oh notation의 g(x) 로 사용 가능하지만, 가장 간단하거나 tight 한 값을 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;taylor 급수는 특정한 지점 a 에 대한 deriviative 를 알 수 있어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$a = x_i$ 로 초기값을 잡는다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x = x_1 + hu$, $u$ 는 unit direction vector 로 즉 특정한 속력 h 를 가지고서 특정 u 방향으로 진행해 나가는 것이 gradient descent 의 핵심이다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;h 는&amp;nbsp; learning rate 라 사람이 manual 하게 정한다. 사실 정말 중요한 건 u 이다. 일단 방향이 맞아야 한다. 이 u 는 어떻게 정할까? &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x_1 + hu) = f(x_1) + hf'(x_1)u + h^2 O(1)$&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;($a = x_1, x-a = hu$, 3번째 항은 unit vector 의 제곱을 제외한 $h^2$ 만 살아남았다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x_1&amp;nbsp;+&amp;nbsp;hu)&amp;nbsp;-&amp;nbsp;f(x_1)&amp;nbsp;\approx&amp;nbsp;hf'(x_1)u$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h^2 O(1)$ 여기서 h 즉,&amp;nbsp; learning rate 는 주로 굉장히 작다. 굉장히 작은 h의 제곱 수는 더 작다. 이에 따라 해당 값은 무시한 후 $\approx $ 처리가 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$u^* = argmin_u \{ f(x_1 + hu) - f(x_1) \} = argmin_u hf'(x)u = - \frac{f'(x_1)}{|f'(x)|}$$&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 함수는 f function 을 한번 움직였을 때 감소 값을 최대화 해서 이동시키는 것이 목표이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x_1 + hu) - f(x_1)$ 값이 최소가 되도록 하는 $u$ 를 찾는 것이 목표이다. 위에서 근사한 값인 $hf'(x_1)u$ 대입한다. 여기서 확인할 수 있는 $h f'(x) u$ 가 바로 우리의 눈에 익숙한 gradient descent 의 편미분과 방향 벡터,&amp;nbsp; learning rate 의 관계이다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;u는 단위벡터이기 때문에 크기가 1이라는 사실을 알고 있다. 이때, $h f'(x_1)u$ 를 최소화를 어떻게 할까?&amp;nbsp; h는 일단, 상수이기 때문에 아무런 영향을 주지 못하고 오직 u에 의해서 결정된다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;그&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;렇다면, u 값을 통해 &lt;span style=&quot;background-color: #ffffff;&quot;&gt;$h f'(x_1)u$ 를 최소화 해야 한다. 이는&amp;nbsp;&lt;/span&gt;둘의 방향이 180도가 되면 된다. 즉, 내적의 값이 최소가 되도록 180도의 방향을 만들어주면 된다. 그러면 u의 값은 방향만 정 반대이고 크기는 동일한 $-f'(x_1)$이 된다. 하지만, u는 단위벡터로 크기가 1이니 $|f'(x_1)|$으로 나누어주면 주어진 $u* = -f'(x_1)/|f'(x_1)|$ 이 된다.&amp;nbsp; (크기만 나눔으로써 방향만 유지)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;이를 좀 더 수식적으로 자세히 설명해본다면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$f(x_1 + hu) \leq f(x_1)$ $\overrightarrow{a} \cdot \overrightarrow{b} = \overrightarrow{|a|} \overrightarrow{|b|} \cos{a}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 글을 읽는 사람들이라면 이미 익숙하겠지만 당연히 $\overrightarrow{|a|}&amp;nbsp;\overrightarrow{|b|}&amp;nbsp;\cos{a}$&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;는 내적이다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;$\cos $ 은 1에서 극대화 되고 -1 일 때 극소화 된다. 즉 -1 이 되는 180 도 지점, 기존 derivative 방향과 정 반대 방향이어야 한다. 이에 따라 &lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;$u* = -f'(x_1)/|f'(x_1)|$ 이 된다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OjJZu/btrPJMLbg7a/fdWXqaJrMUkju4k1iseKnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OjJZu/btrPJMLbg7a/fdWXqaJrMUkju4k1iseKnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OjJZu/btrPJMLbg7a/fdWXqaJrMUkju4k1iseKnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOjJZu%2FbtrPJMLbg7a%2FfdWXqaJrMUkju4k1iseKnk%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;558&quot; height=&quot;138&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이제 이동 방향은 정해져 있고, 이동 속력은 우리가 정하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;결과적으로 아래와 같은 식을 얻을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x_{t+1}&amp;nbsp;=&amp;nbsp;x_t&amp;nbsp;+&amp;nbsp;hu^*&amp;nbsp;=&amp;nbsp;x_t&amp;nbsp;-&amp;nbsp;h&amp;nbsp;f'(x_1)/|f'(x_1)|$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;직관적이어서 한번도 궁금해 하지 않았던 gradient descent 는 사실 taylor 확장으로부터 유도될 수 있었던 것이었다. (여기서 h 는 learning rate )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;※ learning rate 는 step size 라고 하기도 한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이와 관련하여 좀 더 자세한 내용이 궁금하면 아래 글을 읽어보면 좋다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;해당 글의 내용에 gradient descent 내용까지 잘 정리되어 있다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666866050542&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;경사하강법(gradient descent) - 공돌이의 수학정리노트&quot; data-og-description=&quot;&quot; data-og-host=&quot;angeloyeo.github.io&quot; data-og-source-url=&quot;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&quot; data-og-url=&quot;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://angeloyeo.github.io/2020/08/16/gradient_descent.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;경사하강법(gradient descent) - 공돌이의 수학정리노트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;angeloyeo.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 아래 글은 gradient descent 의 실제 적용 사례를 정리한 글이다. 위 글의 내용들이 정리 된 부분도 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/250&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://itforfun.tistory.com/250&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666889661600&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;머신 러닝 정리 6.5 - Gradient Descent 가 정말 잘 동작할까?&quot; data-og-description=&quot;Gradient Descent 에 대해 이론적으로 살펴볼 기회는 정말 많다. 하지만, 이게 정말 잘 동작하는지 눈으로 직접 비교하며 확인할 기회는 잘 없다. 그런 의미에서 간단하게 정리해놓는다. 본 내용은 모&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/250&quot; data-og-url=&quot;https://itforfun.tistory.com/250&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QbZk6/hyQmKrSSc2/9Uo9RHJaFjdyPxDAFRMq1K/img.png?width=800&amp;amp;height=79&amp;amp;face=0_0_800_79,https://scrap.kakaocdn.net/dn/x2P3G/hyQmHu8d7K/63DeweDFP4QvUY9lwzRNzK/img.png?width=800&amp;amp;height=79&amp;amp;face=0_0_800_79,https://scrap.kakaocdn.net/dn/j81ic/hyQmE6es7M/6kzX1NmuQbHNSlDYWsyREk/img.png?width=1122&amp;amp;height=566&amp;amp;face=0_0_1122_566&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/250&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/250&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QbZk6/hyQmKrSSc2/9Uo9RHJaFjdyPxDAFRMq1K/img.png?width=800&amp;amp;height=79&amp;amp;face=0_0_800_79,https://scrap.kakaocdn.net/dn/x2P3G/hyQmHu8d7K/63DeweDFP4QvUY9lwzRNzK/img.png?width=800&amp;amp;height=79&amp;amp;face=0_0_800_79,https://scrap.kakaocdn.net/dn/j81ic/hyQmE6es7M/6kzX1NmuQbHNSlDYWsyREk/img.png?width=1122&amp;amp;height=566&amp;amp;face=0_0_1122_566');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;머신 러닝 정리 6.5 - Gradient Descent 가 정말 잘 동작할까?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Gradient Descent 에 대해 이론적으로 살펴볼 기회는 정말 많다. 하지만, 이게 정말 잘 동작하는지 눈으로 직접 비교하며 확인할 기회는 잘 없다. 그런 의미에서 간단하게 정리해놓는다. 본 내용은 모&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 unit direction vector X stepsize(learning rate)&amp;nbsp; 로 점을 업데이트 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 logistic regression 으로 돌아오자.&amp;nbsp;&lt;/span&gt;&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;미분을 통해 극점을 통해 closed form 을 찾으려던 시도는 실패였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 gradient descent 를 통해 해결하고자 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(실제 실생활의 많은 모델들은 closed form 으로 찾기 어렵다. 또한 미분 계수를 구하기보다는 비교적 구현이 쉬운 gradient descent 를 택할 일이 많다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = argmax_{\theta} \sum_{1 \leq i \leq N} \log(P(Y_i | X_i ; \theta))$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;여기서는 gradient descent 가 아니라 gradient ascent 이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y_i | X_i ; \theta)$ 의 값을 키우면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, $u = + \frac{f'(x_1)}{|f'(x_1)|}$ 가 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기 parameter $\theta$ 의 값을 결정한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복적으로 $\theta_t$ 를 이동시켜 더 높은 $f(\theta_t)$ 값을 얻는다.&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;$$f(\theta) = \sum_{1 \leq i \leq N} \log(P(Y_i | X_i ; \theta))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{\partial f(\theta)}{\partial \theta_j} = \frac{\partial}{\partial \theta_j} \{ \sum_{1 \leq i \leq N} \log(P(Y_i | X_i ; \theta))\} = \sum_{1 \leq i \leq N} X_{i,j} (Y_i - P(y=1 | x ; \theta))$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;편미분 과정은 위에 자세하게 나와있으므로 참고&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f'(x)$ 를 이미 알고 있으므로 경사 상승법을 적용해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$x_{t+1} = x_t + hu^* = x_t + h \frac{f'(x_t)}{|f'(x_t)|}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\theta_j^{t+1} \leftarrow \theta_j^t + h \frac{\partial f(\theta^t)}{\partial \theta^t_j}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\theta^t_j + h \{ \sum_{1 \leq i \leq N} X_{i,j} (Y_i - P(Y=1 | X_i ; \theta^t)) \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ = \theta^t_j + \frac{h}{C} \{ \sum_{1 \leq i \leq N} X_{i,j} \bigg( Y_i - \frac{e^{X_i\theta^t}}{1+e^{X_i \theta^t}} \bigg) \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;C: C 는 unit vector 로 normalize 하는 값 (h 값이 작기때문에 없어도 큰 영향력이 없기도 하다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta^0_j 의 초기값은 임의로 선택하면 된다.$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기까지 Logistic Regression 에서 최적 해를 구하기 위한 방법인 gradient descent 가 무엇인지, 왜 gradient descent를 해야하는 이유와, 그리고 어떻게 하는지 알아보았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 사실 Gradient descent 미분을 통해 closed form을 쉽게 찾을 수 있는 경우에도 사용 되곤 한다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왜일까?&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&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;&lt;b&gt;Revisit Linear Regression&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear regression 의 최적 parameter $\theta$ 는 아래와 같은 것을 확인했었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta = (X^T X)^{-1} X^T Y$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;closed form 으로 구할 수 있어 간단하지만, 문제는 데이터셋의 크기가 너무 커지면 적용하기 어렵다는 것이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dimension 이 큰 X 의 역행렬을 구하는 것도 어렵지만, 큰 X 와 큰 Y 의 matrix multiplication 을 하는 것도 쉽지 않아진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇기에 큰 규모의 linear regression 을 할 때는 $\theta$ 를 approximation 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;워낙 수식도 간단하고, 편미분 과정도 위에서 충분히 언급했으므로 생략한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-28 오후 5.33.29.png&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kD49K/btrPOMyvDAu/ialokkON78NNvMlJAXvJjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kD49K/btrPOMyvDAu/ialokkON78NNvMlJAXvJjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kD49K/btrPOMyvDAu/ialokkON78NNvMlJAXvJjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkD49K%2FbtrPOMyvDAu%2FialokkON78NNvMlJAXvJjk%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;601&quot; height=&quot;170&quot; data-filename=&quot;스크린샷 2022-10-28 오후 5.33.29.png&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;500&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;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/251</guid>
      <comments>https://itforfun.tistory.com/251#entry251comment</comments>
      <pubDate>Fri, 28 Oct 2022 17:35:57 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 7.5 - Gradient Descent 가 정말 잘 동작할까?</title>
      <link>https://itforfun.tistory.com/250</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gradient Descent 에 대해 이론적으로 살펴볼 기회는 정말 많다. 하지만, 이게 정말 잘 동작하는지 눈으로 직접 비교하며 확인할 기회는 잘 없다. 그런 의미에서 간단하게 정리해놓는다. 본 내용은 모두 카이스트 문일철 교수님의 수업을 기반으로 하고 있음을 밝힌다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음의 Rosenbrock 함수가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.15.11.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOCrZ/btrPLVnddp5/VEq7uPvAl06PauBqsmPA20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOCrZ/btrPLVnddp5/VEq7uPvAl06PauBqsmPA20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOCrZ/btrPLVnddp5/VEq7uPvAl06PauBqsmPA20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOCrZ%2FbtrPLVnddp5%2FVEq7uPvAl06PauBqsmPA20%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;444&quot; height=&quot;44&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.15.11.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;워낙 간단한 함수라 미분으로 극점을 찾을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.15.42.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X544N/btrPJ30zVx7/pk4snwHy6yyx46i6RgqHhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X544N/btrPJ30zVx7/pk4snwHy6yyx46i6RgqHhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X544N/btrPJ30zVx7/pk4snwHy6yyx46i6RgqHhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX544N%2FbtrPJ30zVx7%2Fpk4snwHy6yyx46i6RgqHhk%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;474&quot; height=&quot;49&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.15.42.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.14.08.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dznU50/btrPJFr9UD8/qfUiz7MtvUuGba8V9CDyyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dznU50/btrPJFr9UD8/qfUiz7MtvUuGba8V9CDyyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dznU50/btrPJFr9UD8/qfUiz7MtvUuGba8V9CDyyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdznU50%2FbtrPJFr9UD8%2FqfUiz7MtvUuGba8V9CDyyK%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;320&quot; height=&quot;51&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.14.08.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;편미분 결과 global minimum = 0 at (1,1)&amp;nbsp; 을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비교를 위해 위 함수를 approximation 인 gradient descent 방법을 통해 알아낼 수 있을지 확인해 보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저&amp;nbsp;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;초기 parameter 값을 정한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x^0 = (x_1^0, x^0_2) = (-1.3, 0.9)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;derivative 의 반대방향으로 움직인다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(기울기의 정도가 극점으로부터 떨어진 거리의 정도임으로 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f'(x^0) = \bigg(\frac{\partial}{\partial x_1}f(x_1, x_2), \frac{\partial}{\partial x_2}f(x_1 ,x_2) \bigg) = (-415.4 , -158)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;작은 scale 로 편미분 값의 음의 방향으로 점을 업데이트 한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;h&lt;/i&gt; = 0.001&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x^1 \leftarrow x^0 - h \frac{f'(x^0)}{|f'(x^0)|}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$444.4335 = \sqrt{(-415.4)^2 + (-158)^2}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.43.02.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VQmQM/btrPKCPdqwg/B56Z8NH1VnuWvkbKkkoJPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VQmQM/btrPKCPdqwg/B56Z8NH1VnuWvkbKkkoJPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VQmQM/btrPKCPdqwg/B56Z8NH1VnuWvkbKkkoJPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVQmQM%2FbtrPKCPdqwg%2FB56Z8NH1VnuWvkbKkkoJPk%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;300&quot; height=&quot;48&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.43.02.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;= (-1.2991, 0.9004)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ $f'{x^0}{|f'(x^0)|}$ 가 정말 unit vector 인지 확인해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$(-415.4/444.4335)^2 + (-158/444.4335)^2 $&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$0.8736 + 0.126 \approx 1$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 과정들을 수렴할 때 까지 반복한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.55.20.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnrOIs/btrPIR1c8ze/bAPxOIhfyzOaCoW7dlrcEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnrOIs/btrPIR1c8ze/bAPxOIhfyzOaCoW7dlrcEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnrOIs/btrPIR1c8ze/bAPxOIhfyzOaCoW7dlrcEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnrOIs%2FbtrPIR1c8ze%2FbAPxOIhfyzOaCoW7dlrcEK%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;263&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.55.20.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;332&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;span style=&quot;color: #000000;&quot;&gt;(-1.3, 0.9) 지점에서 시작하여 점차적으로 (1, 1) 로 다가간다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 주어진 iteration 으로 (1, 1) 전에 다가지 못하고 멈췄다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;iteration 수를 늘리거나, step size 를 키워야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxrOLr/btrPKwVM5jw/7umekzxKkLIR46VS81Wa1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxrOLr/btrPKwVM5jw/7umekzxKkLIR46VS81Wa1k/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1126&quot; data-origin-height=&quot;540&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.58.18.png&quot; width=&quot;530&quot; height=&quot;254&quot; style=&quot;width: 33.6666%; margin-right: 10px;&quot; data-widthpercent=&quot;34.47&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxrOLr/btrPKwVM5jw/7umekzxKkLIR46VS81Wa1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxrOLr%2FbtrPKwVM5jw%2F7umekzxKkLIR46VS81Wa1k%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;1126&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgQosT/btrPIQVvETf/QuUFha4wZ8Yl7WTMljk6y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgQosT/btrPIQVvETf/QuUFha4wZ8Yl7WTMljk6y0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;566&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.58.32.png&quot; style=&quot;width: 32.006%; margin-right: 10px;&quot; data-widthpercent=&quot;32.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgQosT/btrPIQVvETf/QuUFha4wZ8Yl7WTMljk6y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgQosT%2FbtrPIQVvETf%2FQuUFha4wZ8Yl7WTMljk6y0%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;1122&quot; height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rGRQi/btrPHz0Znbn/MrYtj5ShRKwEBnlrDWJOaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rGRQi/btrPHz0Znbn/MrYtj5ShRKwEBnlrDWJOaK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;558&quot; data-filename=&quot;스크린샷 2022-10-27 오후 11.59.07.png&quot; style=&quot;width: 32.0019%;&quot; data-widthpercent=&quot;32.76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rGRQi/btrPHz0Znbn/MrYtj5ShRKwEBnlrDWJOaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrGRQi%2FbtrPHz0Znbn%2FMrYtj5ShRKwEBnlrDWJOaK%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;1106&quot; height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;iteration 수를 키우자 점차적으로 근처에 다가간다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇다면 step size 를 무지성으로 키우면 어떨까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실, step size 를 키워서 빠르게 다가가도록 하는 것도 좋은 방법 아닐까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 간과하면 안되는 점이 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;gradient descent 를 유도하는 과정에서&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x)&amp;nbsp;=&amp;nbsp;f(a)&amp;nbsp;+&amp;nbsp;\frac{f'(a)}{1!}(x-a)&amp;nbsp;+&amp;nbsp;O(\big\rvert&amp;nbsp;|x-a|&amp;nbsp;\big\lvert^2)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x_1 + hu) = f(x_1) + hf'(x_1)u + h^2 O(1)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x_1&amp;nbsp;+&amp;nbsp;hu)&amp;nbsp;-&amp;nbsp;f(x_1)&amp;nbsp;\approx&amp;nbsp;hf'(x_1)u$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h^2$ 를 step size 즉 learning rate 가 작다고 가정하고 제거하였는데 크기를 키우는 순간 무시할 수 없는 크기가 되어 버린다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇기에 이론적으로 우리는 step size 를 항상 작게 유지하는 것이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이와 같이 실제로 예상치 못한 상황들이 발생할 수 있으므로 항상 많은 실험이 필요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/250</guid>
      <comments>https://itforfun.tistory.com/250#entry250comment</comments>
      <pubDate>Fri, 28 Oct 2022 00:04:27 +0900</pubDate>
    </item>
    <item>
      <title>넛지, 넛징</title>
      <link>https://itforfun.tistory.com/249</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;UX 를 벗어난 영역에서 공부를 하다보니 소통 시 용어부터 부족하다는 것을 점점 깨닫게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 오늘부터 UX 용어들을 follow up 하고 정리하는 시간을 종종 가지려한다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;넛지 (Nudge)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;행동경제학에서 파생 된 용어로 '어떤 행동을 하도록 옆구리를 슬쩍 찌르는' 용어에서 파생되었다. 넛지를 활용한 기획을 통해 인간의 행동을 더 선한 쪽으로 유도하자는 선택 설계의 의미이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[넛지 사용의 세가지 원칙]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 모든 넛지는 투명해야 하고 절대로 상대방을 오도해서는 안 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 넛지에 참여하고 싶지 않다면 쉽게 빠져나올 수 있어야 하고, 마우스 클릭 한번만으로 그럴 수 있다면 가장 좋다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 넛지를 통해 유도된 행동이 그 영향을 받은 사람들의 삶을 더 낫게 만들 수 있다고 믿을 만한 충분한 근거가 있어야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRKxSW/btrPymz2v7a/UgwSiNUm8mKM3oNIpiAd01/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRKxSW/btrPymz2v7a/UgwSiNUm8mKM3oNIpiAd01/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRKxSW/btrPymz2v7a/UgwSiNUm8mKM3oNIpiAd01/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRKxSW%2FbtrPymz2v7a%2FUgwSiNUm8mKM3oNIpiAd01%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;355&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소변기 위의 파리가 넛지의 대표적 용어이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;손톱을 물어뜯는 사람들을 대비하여 쓴맛 나는 매니큐어도 넛지의 대표사례이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시카고에서는 사고를 줄이기 위해 커브 구간 진입시 도로에 가로 선을 긋 되, 점차적으로 그 간격을 줄여 그려서 운전자로 하여금 속도가 오르고 있다고 착각하게 만들었다. 이로 인해 사고가 36% 감소했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.07.14.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xZQdq/btrPyXfirkG/o6s8bwxnGdQtzeMsC7wAl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xZQdq/btrPyXfirkG/o6s8bwxnGdQtzeMsC7wAl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xZQdq/btrPyXfirkG/o6s8bwxnGdQtzeMsC7wAl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZQdq%2FbtrPyXfirkG%2Fo6s8bwxnGdQtzeMsC7wAl0%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;468&quot; height=&quot;350&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.07.14.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;넛지는 인간이 합리적인 존재라는 걸 부정하는 것부터 시작한다. 즉, 종종 감정적인 선택을 하며 때로는 오류도 저지른다고 믿기에 넛지를 통해 더 나은 선택으로 이끌 여지가 생긴다는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;똑똑하고 이기적인 존재라고 믿는 주류 경제학과 대비된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그렇기에, 가로 간격을 줄이는 것만으로도, 소변기 위의 파리만으로도 선한 방향으로 이끌 수 있다는 것이다. (누가봐도 인간을 낮게 판단한 것으로 보인다.)&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;기준점 효과(Anchoring Effect)&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;기준점 효과는 넛지를 이해하기 위한 중요한 심리적 용어이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사람이 최초에 무엇인가를 접하였을 때 그것에 대한 정보가 적어 똑똑한 판단을 내리기 어렵다는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 가장 먼저 제시 된 지점에서부터 판단을 시작하게 되기에 해당 지점이 한계점이 되어 판단에 왜곡이나 편파적인 영향을 끼친다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대형마트에서 할인 상품 옆에 원가를 적고 &lt;s&gt;줄을 그어&lt;/s&gt; 두면 &lt;b&gt;원가를 기준점&lt;/b&gt;으로 생각하게 되는 것이 그 예이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.13.06.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XrJ0f/btrPyHX3eZt/IktJWyK26tVFkdKUq8p2A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XrJ0f/btrPyHX3eZt/IktJWyK26tVFkdKUq8p2A1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XrJ0f/btrPyHX3eZt/IktJWyK26tVFkdKUq8p2A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXrJ0f%2FbtrPyHX3eZt%2FIktJWyK26tVFkdKUq8p2A1%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;565&quot; height=&quot;347&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.13.06.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;576&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;span style=&quot;color: #000000;&quot;&gt;애플이 아이폰 판매할 때, 첫 출시에 599 $, 몇달 후 399 $ 로 가격 인하하여 폭팔적인 판매 증가를 일으켰다. 최초 가격에 대한 기준점이 생기게 한 넛지 효과이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;최고가 옆에 standard 가격을 배치하여 가격을 낮게 보이게 하는 것도 그 한 예이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.14.28.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m63Xj/btrPzNwtdKP/TKVCjqjRgmXlgul8TK44QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m63Xj/btrPzNwtdKP/TKVCjqjRgmXlgul8TK44QK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m63Xj/btrPzNwtdKP/TKVCjqjRgmXlgul8TK44QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm63Xj%2FbtrPzNwtdKP%2FTKVCjqjRgmXlgul8TK44QK%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;613&quot; height=&quot;461&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.14.28.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1084&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다크 넛지&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 예시를 보면서, 넛지가 선한의도를 위해서만 사용되는 것이 아니라는 것을 느꼈을 것이다. 즉, 적재적소에 넛지를 배치하여 매출 증가를 기대하는 것도 기업의 역할 중 하나이다. 하지만, 이 의도자체가 기존 넛지와 다르므로 다크 넛지라고 부르기도 하는 듯 하다. 하지만 실제 기업에서는 &lt;b&gt;넛지를 &quot;디자이너가 어떠한 의도를 가지고 행동을 유도하는 방식&lt;/b&gt;&quot; 정도로 통일하여 해석하는 듯 하다. 음원 사이트에서 낮은 가격에 할인 프로모션을 구매하고, 정식 가격으로 넘어가게 한 디자인도 모바일로 가입했는데 탈퇴는 PC로만 가능 한 것도, 마지막으로 항공권 배너를 클릭 한 후 날짜 설정 시 가격 변동이 큰 것도 이에 해당한다. 에어비앤비 역시 보여지는 가격과 수수료, 청소비가 포함된 가격이 크게 달랐던 것도 그 예시이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.19.05.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xj5eI/btrPyLF2hYr/xPO2Auw6PRavEpGJLM1C9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xj5eI/btrPyLF2hYr/xPO2Auw6PRavEpGJLM1C9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xj5eI/btrPyLF2hYr/xPO2Auw6PRavEpGJLM1C9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxj5eI%2FbtrPyLF2hYr%2FxPO2Auw6PRavEpGJLM1C9k%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;459&quot; height=&quot;402&quot; data-filename=&quot;스크린샷 2022-10-25 오후 9.19.05.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;646&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;span style=&quot;color: #000000;&quot;&gt;넛지를 ing 를 붙여 넛징이라고 표현할 때도 있다. 이는 넛지가 본래 쓰이는 용어고, 넛징은 넛지를 시스템이나 ui에 넣는거라고 이해하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 글은 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://brunch.co.kr/@cliche-cliche/43&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://brunch.co.kr/@cliche-cliche/43&lt;/a&gt; 를 참고하여 작성했습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666700404097&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;03화 다크 넛지와 UX패턴&quot; data-og-description=&quot;윤리적 UX 디자인은 가능할까? | 우선, 넛지 넛지(Nudge)란 '행동경제학' 분야에서 파생된 용어로 '어떤 행동을 하도록 부추기며 옆구리를 슬쩍 찌르는 것'을 의미하는 영어단어다. 넛지의 기본 토&quot; data-og-host=&quot;brunch.co.kr&quot; data-og-source-url=&quot;https://brunch.co.kr/@cliche-cliche/43&quot; data-og-url=&quot;https://brunch.co.kr/@cliche-cliche/43&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2QTlM/hyQhwn3JC2/Rlt8fmZBCtSklMQSHpw481/img.png?width=1280&amp;amp;height=456&amp;amp;face=0_0_1280_456,https://scrap.kakaocdn.net/dn/LfpP8/hyQhEM8G3K/JYQ84RkKgJSKx6v54aexBK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/vyg3e/hyQlELtfOC/IBsjClDiqyKNVdrRmRkWzK/img.png?width=470&amp;amp;height=366&amp;amp;face=0_0_470_366&quot;&gt;&lt;a href=&quot;https://brunch.co.kr/@cliche-cliche/43&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://brunch.co.kr/@cliche-cliche/43&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2QTlM/hyQhwn3JC2/Rlt8fmZBCtSklMQSHpw481/img.png?width=1280&amp;amp;height=456&amp;amp;face=0_0_1280_456,https://scrap.kakaocdn.net/dn/LfpP8/hyQhEM8G3K/JYQ84RkKgJSKx6v54aexBK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/vyg3e/hyQlELtfOC/IBsjClDiqyKNVdrRmRkWzK/img.png?width=470&amp;amp;height=366&amp;amp;face=0_0_470_366');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;03화 다크 넛지와 UX패턴&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;윤리적 UX 디자인은 가능할까? | 우선, 넛지 넛지(Nudge)란 '행동경제학' 분야에서 파생된 용어로 '어떤 행동을 하도록 부추기며 옆구리를 슬쩍 찌르는 것'을 의미하는 영어단어다. 넛지의 기본 토&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;brunch.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 글에는 넛지의 다양한 패턴도 참고할 수 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>UX/용어</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/249</guid>
      <comments>https://itforfun.tistory.com/249#entry249comment</comments>
      <pubDate>Tue, 25 Oct 2022 21:21:04 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 6 - Naive Bayes Classifier (conditional Independence 조건부 독립)</title>
      <link>https://itforfun.tistory.com/248</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;Optimal Classification Concept&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Navie Bayes classifier&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Supervised Learning&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;supervised learning: 데이터와 레이블이 주어진 상태에서 학습을 진행&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;많은 경우 데이터와 동시에 레이블이 주어진다. 이 경우 레이블이 존재하므로 마치 주입식 학습처럼 데이터에 따른 레이블의 대세를 학습한다고 이해하면 좋다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 Classificaion 과 Regression 문제로 많이 나뉘는데, 현재 linear regression 을 한번 다루기도 했고 보통 classificaion 을 할줄 알면 regression은 따라오므로 본글은 classification을 위주로 내용이 전개된다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Optimal Classification&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Classificaion: &lt;/b&gt;X (데이터) 가 주어졌을 때 적절한 y 값을 예측 (아래의 예시를 살펴보자)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brNWDZ/btrOQhsK1I0/UZbUktkYxnuNFvdpv85AK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brNWDZ/btrOQhsK1I0/UZbUktkYxnuNFvdpv85AK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brNWDZ/btrOQhsK1I0/UZbUktkYxnuNFvdpv85AK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrNWDZ%2FbtrOQhsK1I0%2FUZbUktkYxnuNFvdpv85AK1%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;936&quot; height=&quot;272&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X라는 정보가 &lt;b&gt;조건&lt;/b&gt;으로 주어졌을 때,&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt; 초록 y&lt;/span&gt; 일지, &lt;span style=&quot;color: #ee2323;&quot;&gt;빨간 y&lt;/span&gt;&lt;/b&gt; 일지 예측하는 것이 (class가 2개인) classificaion 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X 의 관측 값에 따라 빨간 y 일지 초록 y 일지에 대한 확률을 얻게 되는데 이 때 &lt;b&gt;더 확률이 높은 쪽&lt;/b&gt;으로 분류하여 y 값을 결정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\rightarrow$ pdf 가 주어진다면 확률을 얻기 쉬워져 분류가 간단해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;pdf 를 어떻게 정의할 수 있을까?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Optimal predictor of Bayes classifier&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmin_f P(f(X) \neq Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\hat{Y}$ 과 $Y$ 를 최소로 하는 $f^*$ 를 찾아내는 것이 바로 최적화 과정이다. 즉 바로 머신러닝의 목적인 가장 현실과 유사한 함수를 근사하여 &lt;b&gt;optimal predictor&lt;/b&gt; 를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmax_{Y-y} P(Y = y | X = x)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다시 말하자면, 주어진 $x$에 대하여 y 값이 최대화 되도록 하는 함수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ recall&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 이항 분포에 대한 MLE, MAP 이다.&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;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MLE&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\hat{\theta} = argmax_{\theta} P(D|\theta)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식을 오해하면 안된다. 최고값 $\theta$ 가 주어졌을 때 D(관측값) 가 등장할 확률을 구하는 것이 아니라,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주어진&amp;nbsp;파라미터&amp;nbsp;(특정&amp;nbsp;분포)에서&amp;nbsp;관측값이&amp;nbsp;등장할 확률인 &quot;likelihood 값&quot;이 최대가 되는 즉, $\theta$값을 조정해가며 관측값이 주어졌을 때, 해당 관측이 등장할 확률이 최대가 되는 순간이 바로 MLE 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 $P(D| \theta)$ 값을 최대로 하는 $\hat{\theta}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(D| \theta) = \theta^{a_H} (1 - \theta)^{a_{\tau}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = \frac{a_H}{a_H + a_{\tau}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 공식이 이해가 안되면 아래 첨부된 MLE 정리 글을 읽고오자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MAP&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ \hat{\theta} = argmax_{\theta} P(\theta | D)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식의 의미는 Maximum a posteriori 즉, 사후 분포에서 최고점의 값이므로, 사후분포에 $argmax$ 가 붙어있다고 이해하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ P(\theta | D)\propto \theta^{a_{H}} (1 - \theta)^{a_{\tau}} \theta^{\alpha - 1} (1-\theta)^{\beta -1}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = \frac{a_{H}+\alpha -1}{a_{H} + \alpha + a_{\tau} + \beta - 2}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 공식이 이해가 안되면 아래 MAP 정리 글을 읽고오자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/242&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://itforfun.tistory.com/242&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665062912788&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;머신 러닝 정리 1 - MLE, MAP 정리&quot; data-og-description=&quot;베이즈는 이미 2번 정리를 했지만, 여러번 볼 수록 좋기에 한번 더 정리를 한다. Supervised Learning Unsupervised Learning Label이 있는 learning (분류, regression) label 없이 주어진 데이터로 패턴 파악(cl..&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/242&quot; data-og-url=&quot;https://itforfun.tistory.com/242&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DRqpU/hyP3E5JTOY/aqA3X3YGI4Ep9QxCKJsu7K/img.png?width=440&amp;amp;height=498&amp;amp;face=0_0_440_498,https://scrap.kakaocdn.net/dn/bG332j/hyP188sTXo/GKcEyCa3ma9tvpZoKKFsZk/img.png?width=440&amp;amp;height=498&amp;amp;face=0_0_440_498,https://scrap.kakaocdn.net/dn/c1LSl8/hyP2jvmAxo/gGDJN5EKJRCtCwvFcdZBQK/img.png?width=1442&amp;amp;height=508&amp;amp;face=0_0_1442_508&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/242&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/242&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DRqpU/hyP3E5JTOY/aqA3X3YGI4Ep9QxCKJsu7K/img.png?width=440&amp;amp;height=498&amp;amp;face=0_0_440_498,https://scrap.kakaocdn.net/dn/bG332j/hyP188sTXo/GKcEyCa3ma9tvpZoKKFsZk/img.png?width=440&amp;amp;height=498&amp;amp;face=0_0_440_498,https://scrap.kakaocdn.net/dn/c1LSl8/hyP2jvmAxo/gGDJN5EKJRCtCwvFcdZBQK/img.png?width=1442&amp;amp;height=508&amp;amp;face=0_0_1442_508');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;머신 러닝 정리 1 - MLE, MAP 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;베이즈는 이미 2번 정리를 했지만, 여러번 볼 수록 좋기에 한번 더 정리를 한다. Supervised Learning Unsupervised Learning Label이 있는 learning (분류, regression) label 없이 주어진 데이터로 패턴 파악(cl..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MLE, MAP 를 이용한 Optimal Classification and Bayes Risk&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/enDord/btrN0Egy99r/LDB6yTsLKNtDjH2lKRKkg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/enDord/btrN0Egy99r/LDB6yTsLKNtDjH2lKRKkg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/enDord/btrN0Egy99r/LDB6yTsLKNtDjH2lKRKkg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FenDord%2FbtrN0Egy99r%2FLDB6yTsLKNtDjH2lKRKkg1%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;590&quot; height=&quot;600&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2가지 클래스로 분류하기 위해 다음과 같은 pdf 가 있다고 하자. pdf 는 점선으로도, 실선으로도 표현이 가능하다. (추가적인 설명은 추후 기술된다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pdf 위의 한점 $x_1$ 에 대한 $p1, p2$는 더하면 1이 된다. (&lt;b&gt;y&lt;/b&gt;, &lt;b&gt;y&lt;/b&gt; 중 하나로 분류되어야 하므로)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 그래프에서 특이한 점은 파란점 $x_m$ 이다. 정확하게 0.5 로 나누어 떨어져 어느 한쪽으로 분류할 수 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 지점을 decision boundary라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아무래도 점선, 실선 중에서 '분류의 측면'에서 봤을 때 실선이 다음의 이유로 효용성이 높다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;점선에 비해 실선이 더욱 큰 확률 차이로 클래스를 구분한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;decision boundary를 기준으로 더욱 급격한 경사로 두 클래스를 명확하게 구분한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분류 과업은 조금이라도 확률이 더 높은 것을 선택한다. 즉, decision boundary 를 기준으로 왼쪽인&amp;nbsp;&lt;b&gt;y &lt;/b&gt;로 분류했다고 할 때 왼쪽에 존재하는 &lt;b&gt;빨간색 영역&lt;/b&gt;은 error 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이러다보니 점선보다 실선의 경우 error 영역이 (아래 표시된 영역 만큼) 더 작으므로 실선을 선택하는 것이 더 유익하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ohl3G/btrN0nMKD9k/amZ1OPFuR3o7KSRCEFmf30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ohl3G/btrN0nMKD9k/amZ1OPFuR3o7KSRCEFmf30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ohl3G/btrN0nMKD9k/amZ1OPFuR3o7KSRCEFmf30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fohl3G%2FbtrN0nMKD9k%2FamZ1OPFuR3o7KSRCEFmf30%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;594&quot; height=&quot;600&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;600&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;span style=&quot;color: #000000;&quot;&gt;error 영역을 &lt;b&gt;bayes risk&lt;/b&gt; 라 한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 내용으로 살펴봤을 때, optimal classifier 는 &lt;b&gt;bayes risk&lt;/b&gt; 이라고 불리는 error 영역을 줄이는 것을 목표로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, error 영역을 줄이기 위해 linear 한 pdf를 &amp;nbsp;어떻게든 &lt;i&gt;S &lt;/i&gt;커브 형태로 만들려고 한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가장 대표적인 것은 우리가 잘 아는 &lt;b&gt;logistic function&lt;/b&gt; 이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;logistic function을 직접적으로 다루기 전에 좀 더 개념 이해에 초점을 맞춰서 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 주어진 데이터만을 가지고서 확률을 이용해서 위와 같은 &lt;i&gt;S&lt;/i&gt; 커브 만들어보고, 커브가 classifier 의 성능을 어떻게 높히고 있는지 보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmax_{Y=y} P(Y = y | X = x)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 공식은 데이터에서 주어진 Y 와 예측한 y 가 최대한 같은 값이 되는 확률을 만드는 근사 함수를 뜻한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 공식은 bayes theorem 을 이용하여 아래와 같이 정리할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$= argmax_{Y=y} P(X = x | Y = y) P(Y = y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y&amp;nbsp;=&amp;nbsp;y)$&amp;nbsp;: Class Prior = Prior&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제는 Likelihood 경우 $x$ 변수의 개수에 따라 계산이 복잡해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 키에 따른 여자 친구 유무의 경우 처리가 변수가 1개여서 간단하지만,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;키, 나이, 재산, 지역, 종교 등 변수의 개수가 여러개일 때는 각 변수의 interaction이 복잡할 수 있어 이 때는 likelihood 계산이 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 Navie Bayes classifier 이 제안되었다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Navie Bayes classifier&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-08 오전 3.09.16.png&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdq8Vqh%2FbtrN4yH93Vv%2F0S6rbK0bzwCykXXyoG2Rpk%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;1654&quot; height=&quot;324&quot; data-filename=&quot;스크린샷 2022-10-08 오전 3.09.16.png&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;324&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;span style=&quot;color: #000000;&quot;&gt;주어진 X(날씨정보)를 통해 Y(외출 여부)를 판별하는 과업이 있다고 가정하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmax_{Y=y} P(X=x|Y=y)P(Y=y)$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식은 $f^* = argmax_{Y=y} P(Y=y | X=x)$ 를 bayes therom 으로 정리한 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 정리한 식이 실제 사례에 적용 가능한지 확인해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(X=x | Y=y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$= P(x_1 = \textrm{sunny}, x_2 \textrm{warm}, x_3 = \textrm{normal}, x_4 = \textrm{strong}, x_5 = \textrm{warm}, x_6 = \textrm{same} | y=\textrm{Yes})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y=y) = (y = \textrm{Yes})$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Prior 는 구하기 쉽다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Yes: $\frac{3}{4}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;No : $\frac{1}{4}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 class conditional density 인 likelihood 의 계산은 좀 복잡하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 잠시 언급했지만 class conditional density를 계산하기 위하여 몇개의 parameters 가 필요할까? 그리고 몇개의 관측치가 필요할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Prior 는 $P(Y=y) \,\, \textrm{for all y})$ 로 (클래스 개수 - 1) 즉 여기서는 1개의 parameter 만 필요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 $P(X=x | Y=y) \,\, \textrm{for all x,y}$ 는 각 $x_i$ 마다 2개의 선택지만 있다고 해도 $(2^4 - 1)$ * class 개수 (k개) 만큼이나 필요하다. 실제로 좀 더 복잡해지는 상황에서는 사용이 불가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^*&amp;nbsp;=&amp;nbsp;argmax_{Y=y}&amp;nbsp;P(X=x|Y=y)P(Y=y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현실 세계를 근사한 다음의 함수는 parameter의 수가 많다보니 현실세계를 잘 반영하기 위해서는 아주 큰 데이터가 필요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 위 함수(joint probability distribution) 를 어떻게든 조정을 해야만 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제 구간은 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(X=x | Y=y) \,\, \textrm{for all x,y} \rightarrow (2^d -1)k$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당연히 귀중한 data를 줄이는 것은 고려사항이 아니다. (데이터의 귀함)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 개수에 대한 보충 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://itforfun.tistory.com/254&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667303017299&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;머신러닝 정리 7.5(2) - Naive Bayes는 Generative Model&quot; data-og-description=&quot;Naive Bayes 가 Generative model 인 것을 확인하기 위하여 이전 글 에서 Generative Model에 대한 간략한 소개글을 작성했다. 해당 글을 원할하게 읽기 위해서는 이전 글을 간단하게 살펴보는 것을 추천한다.&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/254&quot; data-og-url=&quot;https://itforfun.tistory.com/254&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cFJXAW/hyQqP6SnhA/BMKehyiFbG1SnL1FeOdcCk/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/boC1Iw/hyQptK82bY/YKGKu2SnOgxOxZhTvKYTP0/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/bY85l9/hyQprGxGpb/GmlySIa3dqepjFZB5k7kK0/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/254&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cFJXAW/hyQqP6SnhA/BMKehyiFbG1SnL1FeOdcCk/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/boC1Iw/hyQptK82bY/YKGKu2SnOgxOxZhTvKYTP0/img.png?width=610&amp;amp;height=326&amp;amp;face=26_34_574_299,https://scrap.kakaocdn.net/dn/bY85l9/hyQprGxGpb/GmlySIa3dqepjFZB5k7kK0/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;머신러닝 정리 7.5(2) - Naive Bayes는 Generative Model&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Naive Bayes 가 Generative model 인 것을 확인하기 위하여 이전 글 에서 Generative Model에 대한 간략한 소개글을 작성했다. 해당 글을 원할하게 읽기 위해서는 이전 글을 간단하게 살펴보는 것을 추천한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Conditional Independence&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X 의 각 feature 들이 독립적이라고 가정 하여 연산 수를 줄이는 방법이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(X = &amp;lt; x_1, ... , x_i&amp;gt; | Y =y) \rightarrow \prod_i P(X_i =&amp;nbsp; x_i | Y = y)$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 여자친구가 입고오는 옷을 class variable 이라고 가정해보자. 이 때 X 는 키, 몸무게, 그날의 기분, 옷의 불편도라 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여자친구는 기분이 별로면 편한 옷을 입고 오는 경향이 있다. 이 말인 즉슨, 기분과 옷의 불편도는 높은 상관관계가 있다는 뜻이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 독립이라 가정하는 것이 실제 상황에서는 어렵다. 그럼에도 불구하고 직접 계산하는 것은 $2^d - 1$ 만큼의 계산이 필요하기에 억지스럽고 naive 하게 가정하여 처리하는 것이 naive bayse classifier 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;conditional independence는 아래와 같이 표기한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$( \forall x_1, x_2, y) $.&amp;nbsp; $P(x_1|x_2, y) = P(x_1|y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x_2$ 가 주어져도 주어지지 않은 것과 확률이 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(x_1, x_2|y) = P(x_1|y) P(x_2|y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이도 적을 수 있다. 우리에게 좀 더 익숙한 표기이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를들면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(\textrm{Thunder|Rain, Lightning}) = P(Thunder|Lightening) $&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Conditional 와 Marginal Independece 차이&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;각 independence 를 설명하기 전에 각 conditional, marginal probability 가 뭔지 간단하게 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Marginal Distribution 은&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/245&quot;&gt;이전 글&lt;/a&gt;에서 언급한 주변 확률 분포이므로 사실 글을 읽고 아래부분을 스킵하고 넘어가도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 3개의 binary random 변수가 있다고 가정하자. P (H,S,F)&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;$H (심장병) \,\,&amp;nbsp; \textrm{domain}(H) = {h, \neg h}$&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$S (담배) \,\,&amp;nbsp; \textrm{domain}(H) = {s, \neg s}$&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$F (비만) \,\,&amp;nbsp; \textrm{domain}(H) = {f, \neg f}$&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;&lt;span style=&quot;color: #000000;&quot;&gt;각 조건에 따른 확률이 아래와 같을 때&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.21.34.png&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pPDMA/btrN79gIX0K/nSMLt4hccxkLkzEDOdork1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pPDMA/btrN79gIX0K/nSMLt4hccxkLkzEDOdork1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pPDMA/btrN79gIX0K/nSMLt4hccxkLkzEDOdork1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpPDMA%2FbtrN79gIX0K%2FnSMLt4hccxkLkzEDOdork1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;166&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.21.34.png&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;374&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;span style=&quot;color: #000000;&quot;&gt;Marginalization 은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(H,S) = \sum_{x \in \textrm{domain}(F)} P(H,S,F = x)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(H)&amp;nbsp;=&amp;nbsp;&amp;nbsp;\sum_{x&amp;nbsp;\in&amp;nbsp;\textrm{domain}(S,&amp;nbsp;F)}&amp;nbsp;P(H,S&amp;nbsp;=&amp;nbsp;y,&amp;nbsp;F&amp;nbsp;=&amp;nbsp;x)&amp;nbsp;$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(S)&amp;nbsp;=&amp;nbsp;&amp;nbsp;\sum_{x&amp;nbsp;\in&amp;nbsp;\textrm{domain}(H,&amp;nbsp;F)}&amp;nbsp;P(H&amp;nbsp;=&amp;nbsp;z,S,&amp;nbsp;F&amp;nbsp;=&amp;nbsp;x)&amp;nbsp;$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.23.39.png&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDy8R/btrN5atVUFL/WTMCvmNa0IFWZFhz8JgDj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDy8R/btrN5atVUFL/WTMCvmNa0IFWZFhz8JgDj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDy8R/btrN5atVUFL/WTMCvmNa0IFWZFhz8JgDj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDy8R%2FbtrN5atVUFL%2FWTMCvmNa0IFWZFhz8JgDj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;249&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.23.39.png&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;454&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;span style=&quot;color: #000000;&quot;&gt;반면에 conditional probability 는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(S|H) = \frac{P(S,H)}{P(H)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, H 가 일어났다고 가정하기에 그냥 $P(S,H)$ 와는 차이가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.27.53.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnjkg5/btrN4ZzpStF/S6VhtKCl3SknvPETdEayy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnjkg5/btrN4ZzpStF/S6VhtKCl3SknvPETdEayy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnjkg5/btrN4ZzpStF/S6VhtKCl3SknvPETdEayy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnjkg5%2FbtrN4ZzpStF%2FS6VhtKCl3SknvPETdEayy1%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;524&quot; height=&quot;207&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.27.53.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 H 가 일어났을 때, S 의 경우는 일어나거나 안 일어나거나이므로, 합쳐서 값이 1 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 chain rule 을 살펴보면 흥미로운 사실을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(H,S,F) = P(H) \times P(S|H) \times P(F| H,S) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= P(H) \times \frac{P(S,H)}{P(H)} \times \frac{P(S,H,F)}{ P(S,H)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약분 되어 $P(S,H,F)$ 만 남는 것을 볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이즈 정리도 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(S|H) = \frac{P(S,H)}{P(H)}, \,\, P(H|S) = \frac{P(S,H)}{P(S)} $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식에서 두번째 식을 다시 쓰면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(H|S) \times P(S) = P(S,H)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 식을 위의 첫번째 식에 대입하면 아래와 같이 정리된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(S|H) = \frac{P(H|S) P(S)} {P(H)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Marginal Independence&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Y 값 에 대한 정보가 X 값에 대한 믿음에 영향을 전혀 끼치지 않는 경우에 우리는 랜덤 변수 X 가 랜덤 변수 Y에 대해 marignal independence 하다고 말한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단하게 아래와 같이 적을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\textrm{if, for all } x_i \in dom(X), y_k \in dom(Y), P(X= x_i | Y = y_k) = P(X= x_i) $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 이건 아래와 같이 정리될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(X) = P(X|Y) = \frac{P(X,Y)}{P(Y)}$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 또 아래와 같이 정리될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(X) \times P(Y) =&amp;nbsp; \frac{P(X,Y)}{P(Y)} \times P(Y)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(X)P(Y) = P(X,Y)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(X) \times P(Y) \times \frac{1}{P(X)} =&amp;nbsp; \frac{P(X,Y)}{P(Y)} \times \frac{1}{P(X)} \times P(Y)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(Y|X) = P(Y)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2번식을 참고해서 실제 예시를 들어보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(치통, 검진, 충치, 날씨) = P(치통, 검진, 충치) P(날씨)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아까 잠시 살펴보았던 심장병, 담배 예시를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.51.43.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SBV3E/btrN4EbadW2/n494dpsUaKBkUIkHWQtAS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SBV3E/btrN4EbadW2/n494dpsUaKBkUIkHWQtAS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SBV3E/btrN4EbadW2/n494dpsUaKBkUIkHWQtAS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSBV3E%2FbtrN4EbadW2%2Fn494dpsUaKBkUIkHWQtAS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;588&quot; data-filename=&quot;스크린샷 2022-10-09 오전 1.51.43.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P(S) 와 P(S|H) 결과 값이 다르므로 서로 marginally independece 하지 않다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;한마디로 marginal independence는 우리가 평상시에 생각하는 독립이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Conditional Independence&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 위에서 살펴봤듯이 marginal independence는 $O(2^n)$ 의 복잡도를 가진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 좀더 약한 독립 가정인 conditional independence 를 사용한다 .&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 예시를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;P(치통, 충치, 검진 성공)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1jmKv/btrN4kxjydA/uWKFtuBjXGHJZhrVfFiJek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1jmKv/btrN4kxjydA/uWKFtuBjXGHJZhrVfFiJek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1jmKv/btrN4kxjydA/uWKFtuBjXGHJZhrVfFiJek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1jmKv%2FbtrN4kxjydA%2FuWKFtuBjXGHJZhrVfFiJek%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;377&quot; height=&quot;206&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;충치와 검진 성공이 marginally independent 하지는 않다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 만약 내가 충치를 가지고 있다 할 때, 내가 치통의 유무에 따라 검진 성공 여부가 달라질까? 그렇지 않다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1) $P(검진성공 | 치통, 충치) = P(검진성공 | 충치)$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 충치가 없다해도 마찬가지이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2) $P(검진성공 | 치통, \neg 충치) = P(검진성공 | \neg 충치)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;치통이나 검진성공여부는 충치가 있을 때 둘다 일어나는 일이지만, 치통과 검진성공 여부는 서로 직접적인 영향이 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 충치라는 상태가 주어졌을 때 검진의 성공 여부는 치통과 &lt;b&gt;conditionally independent&lt;/b&gt; 하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(\textrm{검진성공 | 치통, 충치}) = P(\textrm{검진성공 | 충치})$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(\textrm{치통&amp;nbsp;|&amp;nbsp;검진성공,&amp;nbsp;충치})&amp;nbsp;=&amp;nbsp;P(\textrm{치통&amp;nbsp;|&amp;nbsp;충치})$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(\textrm{치통, 검진성공 | 충치}) = P(\textrm{치통 | 충치})P(\textrm{검진성공 | 충치}) \rightarrow P(X, Y |Z) = P(X|Z)P(Y|Z)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바로 세 번째 식은 조금 생소한데, 이에 대한 아래 증명을 참고하자.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JA912/btrN9kh0Mg8/pgIzLGrLhoMN1aN8U1oq01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JA912/btrN9kh0Mg8/pgIzLGrLhoMN1aN8U1oq01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JA912/btrN9kh0Mg8/pgIzLGrLhoMN1aN8U1oq01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJA912%2FbtrN9kh0Mg8%2FpgIzLGrLhoMN1aN8U1oq01%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;835&quot; height=&quot;231&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 두 변수가 marginally independent 하지 않더라도, 3번째 변수를 관측한 결과로써, 두 변수가 독립이 될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정의는 다음과 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;랜덤 변수 X 는 랜덤 변수 Z 가 주어졌을 때, Y에 대하여 conditionaly independent 하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\textrm{if, for all } x_i \in domain(X), y_k \in domain(Y), z_m \in domain(Z) \,\, P(X = x_i, Y = y_k, Z = z_m) = P(X=x_i, Z = z_m)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, Z 에 대한 정보가 주어졌을 때, Y의 값은 X 에 대한 믿음에 영향을 주지 못한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;conditional independence 를 사용하면 joint distribution 의 표현 크기를 획기적으로 줄여준다. (exponential n $\rightarrow$ linear n )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(치통 | 검진성공, 충치) P(검진성공 | 충치) P(충치)$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;marginally indepedent 하면 모두 독립이므로&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(치통) \times P(검진성공) \times P(충치)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;conditionally independent 하면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(치통| 충치) \times P(검진성공 | 충치) \times P(충치)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;참고글&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cs.ubc.ca/~carenini/TEACHING/CPSC322-10/SLIDES/lecture26-2010.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.cs.ubc.ca/~carenini/TEACHING/CPSC322-10/SLIDES/lecture26-2010.pdf&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Navie Bayes classifier&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-08 오전 3.09.16.png&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dq8Vqh/btrN4yH93Vv/0S6rbK0bzwCykXXyoG2Rpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdq8Vqh%2FbtrN4yH93Vv%2F0S6rbK0bzwCykXXyoG2Rpk%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;1654&quot; height=&quot;324&quot; data-filename=&quot;스크린샷 2022-10-08 오전 3.09.16.png&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^*&amp;nbsp;=&amp;nbsp;argmax_{Y=y}&amp;nbsp;P(X=x|Y=y)P(Y=y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 joint 과정에서 필요하던 parameter의 개수가 $2^d -1$ 였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기에 모든 $x_1 ... x_6$ 에 conditional indepdent assumption 을 적용해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y=y)$ prior 파트는 변함이 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 $P(X=x|Y=y)$ 해당 파트는 아래와 같이 곱샘으로 변하게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\prod_{1 \leq i \leq d} P(X_i = x_i | Y = y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$f^* \approx argmax_{Y=y}P(Y=y)\, \prod_{1 \leq i \leq d} P(X_i = x_i | Y = y)$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개수는 $(2-1)dk = dk$ 개로 줄어들게 된다. (d: feature 개수 k: prior 개수(answer))&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;conditional independent assumption 은 당연히 틀리다. 그럼에도 너무 많은 파라미터 학습을 피하기 위한 어쩔 수 없는 선택이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가정 자체가 너무 약하다보니 &lt;b&gt;Naive Bayes Classifier&lt;/b&gt; 라 명칭하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Given:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class Prior P(Y)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;d&lt;/i&gt;&lt;/b&gt; conditionally independent features &lt;b&gt;&lt;i&gt;X&amp;nbsp;&lt;/i&gt;&lt;/b&gt;given the class &lt;b&gt;&lt;i&gt;Y&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;For each $X_p$ we have the likelihood of $P(X_i | Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Naive Bayes Classifier Function&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f_{NB}(x) = argmax_{Y=y} P(Y=y) \, \prod_{1 \leq i \leq d} P(X_i = x_i | Y = y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes Classifier 도 output의 bayes risk를 줄이려고 한다는점에서 optimal classifier 긴 하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Navie Bayes Problems&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. Naive 가정&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현실에서 통용되지 않는 가정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 부정확한 확률 측정&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;관측못한 sparse 한 Input 케이스가 있는 경우에 관측을 못한다. navie bayes classifier 가 이때는 동작하지 못한다. 이로 인해 MLE 보다는 MAP 를 사용해서 개별 확률 값을 만들어줘야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MLE 는 관측되지 않은 내용에 대해 estimation이 제대로 안된다. 이로 인해 MAP 를 통해 사전 정보라도 줘서 계산을 해야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한번도 관측되지 않은 상태에 대하여 MLE 로 예측하면 확률값이 0 이 된다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Application&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Naive Bayes Classifier 의 실제 적용 사례를 살펴보며 익숙해지자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시는 아래에서 참고하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666011299655&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Naive Bayes Classifier Tutorial: with Python Scikit-learn&quot; data-og-description=&quot;Sklearn Naive Bayes Classifier Python. Learn how to build &amp;amp; evaluate a Gaussian Naive Bayes Classifier using Python's Scikit-learn package.&quot; data-og-host=&quot;www.datacamp.com&quot; data-og-source-url=&quot;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&quot; data-og-url=&quot;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.datacamp.com/tutorial/naive-bayes-scikit-learn&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Naive Bayes Classifier Tutorial: with Python Scikit-learn&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Sklearn Naive Bayes Classifier Python. Learn how to build &amp;amp; evaluate a Gaussian Naive Bayes Classifier using Python's Scikit-learn package.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.datacamp.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. feature가 한개인 경우&lt;/b&gt;&lt;/span&gt;&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-origin-width=&quot;751&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daahC5/btrOQh0CkIf/5dldHalE1iwfN4jOseoBe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daahC5/btrOQh0CkIf/5dldHalE1iwfN4jOseoBe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daahC5/btrOQh0CkIf/5dldHalE1iwfN4jOseoBe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaahC5%2FbtrOQh0CkIf%2F5dldHalE1iwfN4jOseoBe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;751&quot; height=&quot;411&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;411&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;날씨에 따라 나가 놀지 여부를 결정하는 데이터이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;날씨가 Overcast 인 날, 나가노는지 여부를 알고싶다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따른 공식은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사전 정보를 활용한 MAP 기법으로 계산을 해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 사용된 사전 정보란, 평상시에 얼마나 자주 나가 노는지에 대한 여부 정도가 될 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;날씨가 Overcast 인 날, 나가 놀 확률&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Yes | Overcast) = P(Overcast | Yes) P(Yes) / P (Overcast)&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;1. Prior 확률 구하기: &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Overcast) = 4/14 = 0.29 &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Yes)= 9/14 = 0.64 &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;2. Posterior 확률 구하기: &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Overcast |Yes) = 4/9 = 0.44&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;나가 논 날 줄, 날씨가 overcast 일 확률&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;3. 계산하기:&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P (Yes | Overcast) = 0.44 * 0.64 / 0.29 = 0.98(Higher)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 날씨가 overcast 한 경우, 나가 놀 확률은 0.98 로 예측된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;날씨가 Overcast 인 날, 나가 놀지 않을 확률&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(No&amp;nbsp;|&amp;nbsp;Overcast)&amp;nbsp;=&amp;nbsp;P(Overcast&amp;nbsp;|&amp;nbsp;No)&amp;nbsp;P(No)&amp;nbsp;/&amp;nbsp;P&amp;nbsp;(Overcast)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;1. Prior 확률 구하기:&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Overcast) = 4/14 = 0.29&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(No)= 5/14 = 0.36&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;2. Posterior 확률 구하기:&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Overcast |No) = 0/9 = 0&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나가 놀지 않은 날 중, 날씨가 Overcast 일 확률&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;3. 계산하기&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&amp;nbsp;P (No | Overcast) = 0 * 0.36 / 0.29 = 0&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 날씨가 overcadt 하지 않은 경우, 나가 놀 확률은 0 으로 예측된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 나가 놀 확률이 훨씬 높다고 결정할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. feature가 여러개인 경우&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-10-17 오후 4.37.39.png&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;1016&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x1lRk/btrOR3tBVFw/MAdo4tlKUaxK6T71X6eXy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x1lRk/btrOR3tBVFw/MAdo4tlKUaxK6T71X6eXy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x1lRk/btrOR3tBVFw/MAdo4tlKUaxK6T71X6eXy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx1lRk%2FbtrOR3tBVFw%2FMAdo4tlKUaxK6T71X6eXy1%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;209&quot; height=&quot;1016&quot; data-filename=&quot;edited_스크린샷 2022-10-17 오후 4.37.39.png&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;1016&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;span style=&quot;color: #000000;&quot;&gt;feature가 여러개인 경우 진가를 발휘한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;
&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;span style=&quot;color: #000000;&quot;&gt;날씨가 Overcast 하고, 온도가 Mild 한 날 나가놀지 아닐지를 분류해보자.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이즈 공식에 따라 작성해보면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;날씨가 Overcast 하고 온도가 Mild 할 때 나가 놀 확률&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Play= Yes | Weather=Overcast, Temp=Mild) = P(Weather=Overcast, Temp=Mild | Play= Yes)&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P(Play=Yes)&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;1. Prior 확률 구하기:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P(Yes)= 9/14 = 0.64&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;2. Posterior 확률 요소 구하기: &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P(Overcast |Yes) = 4/9 = 0.44 P(Mild |Yes) = 4/9 = 0.44 &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3. Posterior 확률을 계산하기:&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P(Weather=Overcast, Temp=Mild | Play= Yes) = 0.44 * 0.44 = 0.1936(Higher) &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;4. 계산하기:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P(Play= Yes | Weather=Overcast, Temp=Mild) = 0.1936*0.64 = 0.124&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;날씨가 Overcast 하고 온도가 Mild 할 때 나가 놀지 않을 확률&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Play= No | Weather=Overcast, Temp=Mild) = P(Weather=Overcast, Temp=Mild | Play= No)P(Play=No)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;1. Prior 확률 구하기: &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(No)= 5/14 = 0.36&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;2. Posterior 확률 요소 구하기:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Weather=Overcast |Play=No) = 0/9 = 0 P(Temp=Mild | Play=No)=2/5=0.4&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3. Posterior 확률을 계산하기:&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Weather=Overcast, Temp=Mild | Play= No) = 0 * 0.4= 0&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;4. 계산하기:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;P(Play= No | Weather=Overcast, Temp=Mild) = 0*0.36=0&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;확률 비교를 통해 Overcast 날씨와 Mild 온도에 나가노는 것으로 확인되었다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;feature가 1 개일 때는 분모가 존재했는데 feature가 여러개가 되고, conditional independence를 가정하자 갑자기 분모가 사라졌다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 내용을 recall 해 보면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmin_f P(f(X) \neq Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f^* = argmax_{Y-y} P(Y = y | X = x)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bayes Theorem 에 의해 아래와 같이 정리했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$= argmax_{Y=y} P(X = x | Y = y) P(Y = y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실 조건부 확률에 따르면 아래 인것이 자명하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(Y | X) = \frac{P(X|Y) P(Y)} {P(X)}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼 왜 분모를 생략하게 되었을까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오랜 고민끝 아래의 결과에 이르렀다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;argmax_{Y=y} 에서 분모는 상수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상수를 생략해도 Y가 나올 확률을 최대화 하는 상황은 같으므로 생략한 것으로 보인다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래는 위키백과를 참고하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-17 오후 9.48.22.png&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EfVny/btrOP3IBbrG/3BptgEIRkvjLktwzNWwYbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EfVny/btrOP3IBbrG/3BptgEIRkvjLktwzNWwYbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EfVny/btrOP3IBbrG/3BptgEIRkvjLktwzNWwYbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEfVny%2FbtrOP3IBbrG%2F3BptgEIRkvjLktwzNWwYbK%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;1828&quot; height=&quot;268&quot; data-filename=&quot;스크린샷 2022-10-17 오후 9.48.22.png&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;268&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;ul style=&quot;list-style-type: disc;&quot; data-v-b86d8914=&quot;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-v-b86d8914=&quot;&quot;&gt;
&lt;div data-v-b86d8914=&quot;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이즈 정리의 분모에 해당하는 부분은 가능도를 구할 때 조건으로 걸린 사건(위의 예의 경우, (실제 병의 유무와는 상관 없이) '양성 판정이 나올 확률')의 확률이다. 기능적으로는 사후 확률이 확률의 정의(0 이상 1 이하여야 한다)를 충족시키도록 사전확률과 가능도의 곱을 보정해주는 역할을 한다. 위와 같은 예에서는 쉽게 계산할 수 있고 엄밀하게 사후확률을 구하려면 반드시 필요한 부분이지만, 실제로 생각보다 계산이 까다로울 경우 등식을 비례 관계로 바꾸고 생략할 수도 있다.&lt;/span&gt;&lt;/div&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;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 분류에 있어서 분모는 중요하지 않다. 그리고 애초에 conditional indenpendence 가정 자체가 확률을 구할 때 정확하지 않지 않은가?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/248</guid>
      <comments>https://itforfun.tistory.com/248#entry248comment</comments>
      <pubDate>Mon, 17 Oct 2022 21:57:58 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 구현 - 거리두기 확인하기</title>
      <link>https://itforfun.tistory.com/247</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다.&lt;br /&gt;&lt;br /&gt;코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼&lt;br /&gt;아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대기실은 5개이며, 각 대기실은 5x5 크기입니다.&lt;/li&gt;
&lt;li&gt;거리두기를 위하여 응시자들 끼리는 맨해튼 거리&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/81302#fn1&quot;&gt;1&lt;/a&gt;가 2 이하로 앉지 말아 주세요.&lt;/li&gt;
&lt;li&gt;단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;/p&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dn/M9byI/btrNXZeLBWY/vzNkVqLLVWHd0auwTvliT1/img.png&quot; /&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxdj3b/btrNXJJ4cAG/RdrsUUDxdSDIkLJLD3k2XK/img.png&quot; /&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqBLty/btrNWpL2Oj7/dcNbHFlMGlIJ4ZYoLHy9z1/img.png&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;위 그림처럼 자리 사이에 파티션이 존재한다면 맨해튼 거리가 2여도 거리두기를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;지킨 것입니다.&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;위 그림처럼 파티션을 사이에 두고 앉은 경우도 거리두기를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;지킨 것입니다.&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;위 그림처럼 자리 사이가 맨해튼 거리 2이고 사이에 빈 테이블이 있는 경우는 거리두기를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;지키지 않은 것입니다.&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;응시자가 앉아있는 자리(P)를 의미합니다.&lt;/td&gt;
&lt;td&gt;빈 테이블(O)을 의미합니다.&lt;/td&gt;
&lt;td&gt;파티션(X)을 의미합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5개의 대기실을 본 죠르디는 각 대기실에서 응시자들이 거리두기를 잘 기키고 있는지 알고 싶어졌습니다. 자리에 앉아있는 응시자들의 정보와 대기실 구조를 대기실별로 담은 2차원 문자열 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;places가 매개변수로 주어집니다. 각 대기실별로 거리두기를 지키고 있으면 1을, 한 명이라도 지키지 않고 있으면 0을 배열에 담아 return 하도록 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;제한사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;places의 행 길이(대기실 개수) = 5
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;places의 각 행은 하나의 대기실 구조를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;places의 열 길이(대기실 세로 길이) = 5&lt;/li&gt;
&lt;li&gt;places의 원소는&lt;span&gt;&amp;nbsp;&lt;/span&gt;P,O,X로 이루어진 문자열입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;places&lt;span&gt;&amp;nbsp;&lt;/span&gt;원소의 길이(대기실 가로 길이) = 5&lt;/li&gt;
&lt;li&gt;P는 응시자가 앉아있는 자리를 의미합니다.&lt;/li&gt;
&lt;li&gt;O는 빈 테이블을 의미합니다.&lt;/li&gt;
&lt;li&gt;X는 파티션을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;입력으로 주어지는 5개 대기실의 크기는 모두 5x5 입니다.&lt;/li&gt;
&lt;li&gt;return 값 형식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1차원 정수 배열에 5개의 원소를 담아서 return 합니다.&lt;/li&gt;
&lt;li&gt;places에 담겨 있는 5개 대기실의 순서대로, 거리두기 준수 여부를 차례대로 배열에 담습니다.&lt;/li&gt;
&lt;li&gt;각 대기실 별로 모든 응시자가 거리두기를 지키고 있으면 1을, 한 명이라도 지키지 않고 있으면 0을 담습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-06 오후 5.15.52.png&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ebxu/btrNYUjuP7l/gp7Ik35krRtG6TaMU4BwUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ebxu/btrNYUjuP7l/gp7Ik35krRtG6TaMU4BwUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ebxu/btrNYUjuP7l/gp7Ik35krRtG6TaMU4BwUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ebxu%2FbtrNYUjuP7l%2Fgp7Ik35krRtG6TaMU4BwUk%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;1130&quot; height=&quot;450&quot; data-filename=&quot;스크린샷 2022-10-06 오후 5.15.52.png&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;문제 자체는 이해가 빨리 되었으나 구현에서 좀 더 효율적으로 짜기위해 고민하다가 시간을 많이 썼다.&amp;nbsp;&lt;/div&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;div&gt;
&lt;pre id=&quot;code_1665044261316&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(places):
    answer = [];
    
    #place를 하나씩 확인
    for p in places:
        
        #거리두기가 지켜지지 않음을 확인하면 바로 반복을 멈추기 위한 key
        key = False;
        nowArr = [];
        
        #이번 place를 nowArr에 담아줍니다.
        for n in p:
            nowArr.append(list(n));
        
        #이중 for문을 이용해 하나씩 확인합니다.
        for i in range(5):
            if key:
                break;
                
            for j in range(5):
                if key:
                    break;
                
                #사람을 찾아내면 판단을 시작합니다.
                if nowArr[i][j] == &quot;P&quot;:
                    
                    if i+1&amp;lt;5:
                    	#만약 바로 아랫부분에 사람이 존재하면 break
                        if nowArr[i+1][j] == &quot;P&quot;:
                            key = True;
                            break;
                        #만약 아랫부분이 빈테이블이고 그 다음에 바로 사람이 있다면 한칸 떨어져 있더라도 맨허튼 거리는 2이므로 break
                        if nowArr[i+1][j] == &quot;O&quot;:
                            if i+2&amp;lt;5:
                                if nowArr[i+2][j] == &quot;P&quot;:
                                    key = True;
                                    break;
                    #바로 오른쪽 부분에 사람이 존재하면 break    
                    if j+1&amp;lt;5:
                        if nowArr[i][j+1] == &quot;P&quot;:
                            key = True;
                            break;
                         #만약 오른쪽 부분이 빈테이블이고 그 다음에 바로 사람이 있다면 한칸 떨어져 있더라도 맨허튼 거리는 2이므로 break   
                        if nowArr[i][j+1] == &quot;O&quot;:
                            if j+2&amp;lt;5:
                                if nowArr[i][j+2] == &quot;P&quot;:
                                    key = True;
                                    break;
                    #우측 아래 부분입니다.
                    if i+1&amp;lt;5 and j+1&amp;lt;5:
                    	#만약 우측 아래가 사람이고, 오른 쪽 또는 아랫부분중 하나라도 빈테이블이면 break
                        if nowArr[i+1][j+1] == &quot;P&quot; and (nowArr[i+1][j] == &quot;O&quot; or nowArr[i][j+1] == &quot;O&quot;):
                            key = True;
                            break;
                    
                    #좌측 아래부분입니다.
                    if i+1&amp;lt;5 and j-1&amp;gt;=0:
                    	#만약 좌측 아래가 사람이고, 왼쪽 또는 아랫부분중 하나라도 빈테이블이면 break
                        if nowArr[i+1][j-1] == &quot;P&quot; and (nowArr[i+1][j] == &quot;O&quot; or nowArr[i][j-1] == &quot;O&quot;):
                            key = True;
                            break;
        
        #위의 for문동안 key가 True로 변경되었다면 거리두가기 지켜지지 않은것 이므로 0을 answer에 추가
        if key:
            answer.append(0);
        else:
        #key가 false로 끝났다면 거리두기가 지켜졌으므로 1 추가
            answer.append(1);

    #끝!
    return answer;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1665044281389&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def check(data, y, x):
    dx = [1,0,-1]
    dy = [0,1,0]
    mark = [0,0,0,0] 
    tmp = False 
    
    for i in range(3):
        nx = x + dx[i]
        ny = y + dy[i]
        if 0 &amp;lt;= ny &amp;lt; len(data) and 0 &amp;lt;= nx &amp;lt; len(data[0]):
            if data[ny][nx] == 'P':
                return False 
            elif data[ny][nx] == 'X':
                mark[i] = 1 
            elif data[ny][nx] == 'O' and dx[i] | dy[i] &amp;gt; 0:
                if ny + dy[i] &amp;lt; len(data) and nx + dx[i] &amp;lt; len(data[0]):
                    if data[ny + dy[i]][nx + dx[i]] == 'P':
                        return False 
    
        if i == 1:
            if mark[i] &amp;amp; mark[i-1] != 1:
                if 0 &amp;lt;= y + 1 &amp;lt; len(data) and 0 &amp;lt;= x + 1 &amp;lt; len(data[0]):
                    if data[y+1][x+1] == 'P':
                        return False       
        elif i == 2:
            if mark[i] &amp;amp; mark[i-1] != 1:
                if 0 &amp;lt;= y + 1 &amp;lt; len(data) and 0 &amp;lt;= x - 1 &amp;lt; len(data[0]):
                    if data[y+1][x-1] == 'P':
                        return False 
        
    return True
                

def solution(places):
    ans = []
    for place in places:
        tmp = 1 
        for i, row in enumerate(place):
            for j, element in enumerate(row): 
                if element == 'P':
                    tmp = tmp &amp;amp; check(place, i, j)
        if tmp == 1:
            ans.append(1)
        else:
            ans.append(0)

        
    return ans&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 살펴보면 똑같은 과정이나 내 구현은 이래저래 실수할 여지가 좀 더 많이 보인다.&amp;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;추가적으로 dx, dy 를 따로 선언하지 않고 필요한 부분들을 직접 더하고 빼서 접근하니 보기 좋다.&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-origin-width=&quot;112&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5M9N/btrNWqdalO7/BrAGUCUgB8VI0q9ykx2jk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5M9N/btrNWqdalO7/BrAGUCUgB8VI0q9ykx2jk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5M9N/btrNWqdalO7/BrAGUCUgB8VI0q9ykx2jk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5M9N%2FbtrNWqdalO7%2FBrAGUCUgB8VI0q9ykx2jk1%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;122&quot; data-origin-width=&quot;112&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 확인해야 할 영역을 오른쪽, 아래, 2칸 오른쪽, 2칸 아래, 대각 (오른쪽) 이라고 생각했는데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고보니 대각 (왼쪽) 도 고려 대상이다. 앞으로는 이런 케이스들을 놓치지 않기 위해서 좀 더 hard 한 case 를 상상해보며 구현 계획을 먼저 짜야겠다.&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/247</guid>
      <comments>https://itforfun.tistory.com/247#entry247comment</comments>
      <pubDate>Thu, 6 Oct 2022 17:22:28 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 5 - Linear Regression</title>
      <link>https://itforfun.tistory.com/246</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;머신러닝은 궁극적으로 우리가 찾고자 하는 함수를 근사하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Linear Regression &lt;/b&gt;은 그 중 아주 간단하고, 강력한 방법론 중 하나이다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이름 그대로 &lt;b&gt;linear&lt;/b&gt; 한 형태로 함수를 근사한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리의 가설은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h : \hat{f}(x ; \theta) = \theta_0 + \sum^{n}_{i=1} \theta_i x_i = \sum^{n}_{i=0} \theta_i x_i$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;n&lt;/i&gt;&lt;/b&gt; 은 feature value 의 개수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear를 유지해야 하기 때문에 $x$ 는 건들지 않고 $\theta$ 값을 잘 조정하여 함수를 근사한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;($x$를 건들지 않고에 대해 이해가 잘 안간다면 일단 $x$ 는 관측 데이터라 생각만 하고 넘어가자.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 전에 공식을 정리해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$&amp;nbsp;\theta_0&amp;nbsp;+&amp;nbsp;\sum^{n}_{i=1}&amp;nbsp;\theta_i&amp;nbsp;x_i&amp;nbsp;=&amp;nbsp;\sum^{n}_{i=0}&amp;nbsp;\theta_i&amp;nbsp;x_i$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 $\theta_0$ 를 정리하고, 식을 $\hat{f} = X\theta$ 로 간소화하기 위하여 아래와 같이 정리한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;$X = \begin{pmatrix} 1&amp;nbsp; &amp;amp; \cdots &amp;amp; x^1_{n} \\ \vdots&amp;nbsp;&amp;nbsp;&amp;amp; \ddots &amp;amp; \vdots&amp;nbsp;&amp;nbsp;\\ 1 &amp;amp; \cdots &amp;amp; x^D_{n} \end{pmatrix} , \theta =&amp;nbsp; \begin{pmatrix} \theta_0 \\ \theta_1 \\ \cdots \\ \theta_n \end{pmatrix}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현실은 noisy 하다. 이에 따라 true 값은 예상치 못한 error 을 포함해야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f(x;\theta) = \sum^{n}_{i=0} \theta_i x_i + e = y \rightarrow f = X\theta + e = Y$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 우리가 근사하는 함수는 error를 반영할 수 없으므로 $\hat{f}$ 로 표기한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\hat{\theta} = argmin_\theta (f - \hat{f})^2 = argmin_\theta (Y - X\theta)^2$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이미 데이터 X 와 결과값 Y 는 제공되어 있다. 우리가 모르는 값은 $\theta$ 이기에 해당 값만 구해주면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ = argmin_\theta (Y - X\theta)^T(Y - X\theta) = argmin_\theta(\theta^T X^T X\theta - 2 \theta^T X^T Y + Y^T Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$Y^T Y$ 는 상수이므로, 빼고 고려할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ argmin_\theta(\theta^T X^T X\theta - 2 \theta^T X^T Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식을 최적화 하기 위해서는 극점을 찾도록 $\theta$에 대해 미분을 수행하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\nabla _\theta (\theta^T X^T X\theta - 2 \theta^T X^T Y) = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$2X^T X\theta - 2X^T Y = 0$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 미분 과정을 아래 짧게 서술한다.&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ 스칼라함수를 벡터로 미분한 경우&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\frac{\partial}{\partial x}(x^T A x) = x^T(A^T + A)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$A = X^T X$ 로 치환하여 적용하면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta^T&amp;nbsp;X^T&amp;nbsp;X\theta&amp;nbsp;=&amp;nbsp;\theta^T&amp;nbsp;A&amp;nbsp;\theta$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ \theta^T (X^T X + X^T X) = 2 \theta^T(X^T X)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\frac{\partial}{\partial x}(a^T x) = \frac{\partial}{\partial x}(x^T a) = a^T$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$-2\theta^T X^T Y = -2 X^T Y$&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;따라서, $\theta = (X^T X)^{-1} X^T Y$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X,Y 를 앎므로 $\theta $ 를 구할 수 있다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Housing dataset&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&quot;&gt;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664990025494&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Index of /ml/machine-learning-databases/housing&quot; data-og-description=&quot;&quot; data-og-host=&quot;archive.ics.uci.edu&quot; data-og-source-url=&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&quot; data-og-url=&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&quot; data-source-url=&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/housing/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Index of /ml/machine-learning-databases/housing&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;archive.ics.uci.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;13 numerical independent values&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1 numerical dependent value&amp;nbsp;&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-06 오전 2.13.14.png&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YtGlK/btrNUFUrsta/wUVEz5bM3zqEGmJEM6Dff0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YtGlK/btrNUFUrsta/wUVEz5bM3zqEGmJEM6Dff0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YtGlK/btrNUFUrsta/wUVEz5bM3zqEGmJEM6Dff0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYtGlK%2FbtrNUFUrsta%2FwUVEz5bM3zqEGmJEM6Dff0%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;231&quot; height=&quot;207&quot; data-filename=&quot;스크린샷 2022-10-06 오전 2.13.14.png&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;13개의 Housing feature 중 한가지만을 사용하여 나타낸 plot 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\theta = (X^T X)^{-1} X^T Y$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X 값과 Y 값 (빨간 점)을 통해 위 공식에서 $\theta$를 구한 후, X 값에 대한 $\hat{Y}$ 를 구한 결과(파란점) 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;feature 의 개수를 단지 dimension 을 올리는 것과 같은 방식으로 증가시켜볼 수 있다. (linear regression 에서는 x 를 건들지 않는다고 사전에 언급했었는데, dimension을 올리는 것이 x를 건든다는 것의 한 예이다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 $x^2, x^3, x^4 ... $ 와 같이 x의 차원을 뻥튀기를 해보는 방법이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h: \hat{f} (x; \theta) = \sum^{n}_{i=0} \sum^m_{j=1} \theta_{i,j} \phi_j (x_i)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-06 오전 2.29.36.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KPwdi/btrNSD4SiuU/DAqoKyF1j7ieqhC88YUGD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KPwdi/btrNSD4SiuU/DAqoKyF1j7ieqhC88YUGD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KPwdi/btrNSD4SiuU/DAqoKyF1j7ieqhC88YUGD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKPwdi%2FbtrNSD4SiuU%2FDAqoKyF1j7ieqhC88YUGD0%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;251&quot; height=&quot;138&quot; data-filename=&quot;스크린샷 2022-10-06 오전 2.29.36.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 경우 위와 같이 현재 데이터에 대해서는 마치 관측이 잘 된 것 처럼 보이지만, overfitting 의 가능성이 높다는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linear regression 은 아주 간단한 모델이지만, 실제 세상에서 데이터를 예측하는데 여전히 많이 사용되는 좋은 모델이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만, 당연히 linear 한 특성이 강점이 되기도 하지만, 많은 경우 제약이 되기도 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/246</guid>
      <comments>https://itforfun.tistory.com/246#entry246comment</comments>
      <pubDate>Thu, 6 Oct 2022 02:32:08 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 4- Decision Tree</title>
      <link>https://itforfun.tistory.com/245</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현실 세계에서는 rule base 가 완벽하게 동작하기 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 결정이 consistent 한 것이 아니다. (오늘은 비가 오지만 나가고 싶을 수 있다.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;error 가 관측치에 있기도 하다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 정보를 다 보기도 어렵다.&amp;nbsp; (놓친 feature)&lt;/span&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;edited_스크린샷 2022-09-29 오후 5.23.52.png&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ3yWF/btrNpIKMqOV/qucCLaVhcAznW8BnFpsLc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ3yWF/btrNpIKMqOV/qucCLaVhcAznW8BnFpsLc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ3yWF/btrNpIKMqOV/qucCLaVhcAznW8BnFpsLc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ3yWF%2FbtrNpIKMqOV%2FqucCLaVhcAznW8BnFpsLc0%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;1066&quot; height=&quot;312&quot; data-filename=&quot;edited_스크린샷 2022-09-29 오후 5.23.52.png&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;312&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;span style=&quot;color: #000000;&quot;&gt;그렇다면 우선, error 가 있는 경우에 통계적 기법을 가미해서 learning 을 할 수 있는 방법은 무엇이 있을까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Decision Tree&lt;/b&gt; 를 통해 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사전 version space를 통해 만들어진 결과물로 &lt;b&gt;decision tree&lt;/b&gt; 를 만들 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot;&gt;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664440815692&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;UCI Machine Learning Repository: Credit Approval Data Set&quot; data-og-description=&quot;Credit Approval Data Set Download: Data Folder, Data Set Description Abstract: This data concerns credit card applications; good mix of attributes Data Set Characteristics:&amp;nbsp;&amp;nbsp; Multivariate Number of Instances: 690 Area: Financial Attribute Characteristics&quot; data-og-host=&quot;archive.ics.uci.edu&quot; data-og-source-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; data-og-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://archive.ics.uci.edu/ml/datasets/Credit+Approval&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;UCI Machine Learning Repository: Credit Approval Data Set&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Credit Approval Data Set Download: Data Folder, Data Set Description Abstract: This data concerns credit card applications; good mix of attributes Data Set Characteristics:&amp;nbsp;&amp;nbsp; Multivariate Number of Instances: 690 Area: Financial Attribute Characteristics&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;archive.ics.uci.edu&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 credit card approval 데이터 셋을 얻을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;690 Instances total&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;307 positive instance&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;credit card 신청인 총 690 인 중, 307 명만 허가된 데이터 셋이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;A1 ~ A15 features&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664441093246&quot; class=&quot;groovy&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;A1: b, a.
A2: continuous.
A3: continuous.
A4: u, y, l, t.
A5: g, p, gg.
A6: c, d, cc, i, j, k, m, r, q, w, x, e, aa, ff.
A7: v, h, bb, j, n, z, dd, ff, o.
A8: continuous.
A9: t, f.
A10: t, f.
A11: continuous.
A12: t, f.
A13: g, p, s.
A14: continuous.
A15: continuous.
A16: +,- (class attribute)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;A1 feature&amp;nbsp;&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;98 positive when a&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;112 negative when a&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;206 positive when b&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;262 negative when b&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3 positive when ?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;9 negative when ?&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;A9 feature&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;284 positive when t&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;77 negative when t&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;23 positive when f&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;306 negative when f&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A1 으로만 판결을 내리면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.48.27.png&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/psgRM/btrNmx4T49c/iEssLoi1rY7bleJsH0SrnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/psgRM/btrNmx4T49c/iEssLoi1rY7bleJsH0SrnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/psgRM/btrNmx4T49c/iEssLoi1rY7bleJsH0SrnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpsgRM%2FbtrNmx4T49c%2FiEssLoi1rY7bleJsH0SrnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;160&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.48.27.png&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A1 의 특성만으로 판결을 내리는 것은 무리가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.49.57.png&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YcGgu/btrNlQDwxwl/KrnrB1T0yn5jMi6U6fQt91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YcGgu/btrNlQDwxwl/KrnrB1T0yn5jMi6U6fQt91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YcGgu/btrNlQDwxwl/KrnrB1T0yn5jMi6U6fQt91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYcGgu%2FbtrNlQDwxwl%2FKrnrB1T0yn5jMi6U6fQt91%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;478&quot; height=&quot;158&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.49.57.png&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A9 특성을 사용하면 A1 보다는 더 좋은 결과를 내나, 여전히 많이 틀리긴 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 본격적으로 Decision Tree 를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;드디어 Entropy에 대해 정리할 기회가 왔다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Entropy&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떤 &lt;b&gt;특성&lt;/b&gt;을 더 잘 확인할 수 있을지 알려주는 지표&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;머신 러닝에서 중요한 목표중 하나는 바로&lt;b&gt; uncertainty &lt;/b&gt;를 줄이는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(A1 보다 A9 의 uncertainty 가 적은건 자명해보인다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이러한 uncertainty 는 어떻게 정량화 할 수 있을까?&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;entropy 가 높을 수록 uncertainty도 높다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;엔트로피에 대한 정리&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://bskyvision.com/389&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bskyvision.com/389&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664467278438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[정보이론] 정보량과 엔트로피의 의미&quot; data-og-description=&quot;정보이론은 신호에 존재하는 정보의 양을 측정하는 이론이다. 정보이론의 핵심은 잘 발생하지 않는 사건은 자주 발생하는 사건보다 정보량이 많다는 것이다. 정보량이란 우선 정보이론에서 '정&quot; data-og-host=&quot;bskyvision.com&quot; data-og-source-url=&quot;https://bskyvision.com/389&quot; data-og-url=&quot;https://bskyvision.com/entry/%EC%A0%95%EB%B3%B4%EC%9D%B4%EB%A1%A0-%EC%A0%95%EB%B3%B4%EB%9F%89%EA%B3%BC-%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BC%EC%9D%98-%EC%9D%98%EB%AF%B8&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmLmTw/hyPXI8RT6q/4L4ObjZgs8qbpEVKvFFUuK/img.jpg?width=570&amp;amp;height=428&amp;amp;face=0_0_570_428,https://scrap.kakaocdn.net/dn/uheqF/hyPXJ009u0/M1c84ax4YCUSTD1Ykh308K/img.jpg?width=570&amp;amp;height=428&amp;amp;face=0_0_570_428,https://scrap.kakaocdn.net/dn/674DF/hyPXNPSXvC/klb7x4Vjh0LArOfs0ZDkH1/img.jpg?width=752&amp;amp;height=344&amp;amp;face=0_0_752_344&quot;&gt;&lt;a href=&quot;https://bskyvision.com/389&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bskyvision.com/389&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmLmTw/hyPXI8RT6q/4L4ObjZgs8qbpEVKvFFUuK/img.jpg?width=570&amp;amp;height=428&amp;amp;face=0_0_570_428,https://scrap.kakaocdn.net/dn/uheqF/hyPXJ009u0/M1c84ax4YCUSTD1Ykh308K/img.jpg?width=570&amp;amp;height=428&amp;amp;face=0_0_570_428,https://scrap.kakaocdn.net/dn/674DF/hyPXNPSXvC/klb7x4Vjh0LArOfs0ZDkH1/img.jpg?width=752&amp;amp;height=344&amp;amp;face=0_0_752_344');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[정보이론] 정보량과 엔트로피의 의미&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;정보이론은 신호에 존재하는 정보의 양을 측정하는 이론이다. 정보이론의 핵심은 잘 발생하지 않는 사건은 자주 발생하는 사건보다 정보량이 많다는 것이다. 정보량이란 우선 정보이론에서 '정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bskyvision.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://memesoo99.tistory.com/38&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://memesoo99.tistory.com/38&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664467283538&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Information Theory 이해하기 - 정보량과 Entropy&quot; data-og-description=&quot;딥러닝을 공부하다보면 KL-divergence, JSD-divergence같이 확률분포를 판단하는 척도들을 종종 접하게 된다. 그리고 그런 척도들의 기본이론이 바로 Information Theory, 정보이론이다. 정보량 정보이론의 &quot; data-og-host=&quot;memesoo99.tistory.com&quot; data-og-source-url=&quot;https://memesoo99.tistory.com/38&quot; data-og-url=&quot;https://memesoo99.tistory.com/38&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxO9ql/hyPXESV0Ex/5pDo1oF1odFpU2UaTv7yjK/img.png?width=244&amp;amp;height=306&amp;amp;face=0_0_244_306,https://scrap.kakaocdn.net/dn/bhigNk/hyPXP70grS/JTVskhdOF1WIyDQQjAMzo1/img.png?width=244&amp;amp;height=306&amp;amp;face=0_0_244_306,https://scrap.kakaocdn.net/dn/cxgyMR/hyPXIgLqZV/URURx9b9zWRFUYurxBcDzK/img.jpg?width=1044&amp;amp;height=1044&amp;amp;face=0_0_1044_1044&quot;&gt;&lt;a href=&quot;https://memesoo99.tistory.com/38&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://memesoo99.tistory.com/38&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxO9ql/hyPXESV0Ex/5pDo1oF1odFpU2UaTv7yjK/img.png?width=244&amp;amp;height=306&amp;amp;face=0_0_244_306,https://scrap.kakaocdn.net/dn/bhigNk/hyPXP70grS/JTVskhdOF1WIyDQQjAMzo1/img.png?width=244&amp;amp;height=306&amp;amp;face=0_0_244_306,https://scrap.kakaocdn.net/dn/cxgyMR/hyPXIgLqZV/URURx9b9zWRFUYurxBcDzK/img.jpg?width=1044&amp;amp;height=1044&amp;amp;face=0_0_1044_1044');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Information Theory 이해하기 - 정보량과 Entropy&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;딥러닝을 공부하다보면 KL-divergence, JSD-divergence같이 확률분포를 판단하는 척도들을 종종 접하게 된다. 그리고 그런 척도들의 기본이론이 바로 Information Theory, 정보이론이다. 정보량 정보이론의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;memesoo99.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3줄 정리&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. 정보량: 놀람의 정도 수치화, 단일 사건에 대한 정보량&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$$I(x_j) = -\log_a p(x_j)$$ &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;확률이 1에 가까워 질 수록 정보량은 0, 0에 가까워 질 수록 무한대로 수렴 즉 확률이 낮을 수록 놀랍다. (놀랍다 = 정보량이 많다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. 엔트로피는 어떤 사건에 대한 확률 분포의 정보량&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$$\sum^N_{i=1} -P(x_i)\log P(x_i)$$&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 사건의 정보량 $I(a)$ 에해당 정보가 등장할 확률$P(a)$를 곱해준다(사건을&amp;nbsp;표현하기&amp;nbsp;위해&amp;nbsp;요구되는&amp;nbsp;평균&amp;nbsp;자원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Entropy&lt;/b&gt;&amp;nbsp;H&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Features 은 random variables 이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$H(X) = - \sum_x P(X=x) \log_a P(X=x)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JjiM1/btrYRxsGPQ2/wWKCPzJTjJGgXPlUTO12kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JjiM1/btrYRxsGPQ2/wWKCPzJTjJGgXPlUTO12kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JjiM1/btrYRxsGPQ2/wWKCPzJTjJGgXPlUTO12kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJjiM1%2FbtrYRxsGPQ2%2FwWKCPzJTjJGgXPlUTO12kk%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;1232&quot; height=&quot;342&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;342&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Joint Entropy&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;결합 entropy 는 의미도 이름 그 자체라 어렵지 않다. 아래 링크 참고 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://bskyvision.com/604&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bskyvision.com/604&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664467718025&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[정보이론] 결합(joint) 엔트로피와 조건부(conditional) 엔트로피&quot; data-og-description=&quot;결합(joint), 조건부(conditional)라는 단어는 확률에서 많이 쓰이는 용어다. 엔트로피 역시 확률을 이용한 것이므로 결합 엔트로피와 조건부 엔트로피가 존재한다. 엔트로피에 대해 잠시 복습하자. &quot; data-og-host=&quot;bskyvision.com&quot; data-og-source-url=&quot;https://bskyvision.com/604&quot; data-og-url=&quot;https://bskyvision.com/entry/%EC%A0%95%EB%B3%B4%EC%9D%B4%EB%A1%A0-%EA%B2%B0%ED%95%A9joint-%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BC%EC%99%80-%EC%A1%B0%EA%B1%B4%EB%B6%80conditional-%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZo4E0/hyPXIufLzK/X9Dl3vkEKxVZhvE0XnhE00/img.png?width=422&amp;amp;height=298&amp;amp;face=0_0_422_298,https://scrap.kakaocdn.net/dn/Cvqd8/hyPXErSwNI/kyMClNFscSMIjCpgdO2de1/img.png?width=422&amp;amp;height=298&amp;amp;face=0_0_422_298,https://scrap.kakaocdn.net/dn/bJwqxH/hyPXH3cfY6/WpLMcdsPxzYcoM0saLrGS1/img.png?width=575&amp;amp;height=417&amp;amp;face=0_0_575_417&quot;&gt;&lt;a href=&quot;https://bskyvision.com/604&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bskyvision.com/604&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZo4E0/hyPXIufLzK/X9Dl3vkEKxVZhvE0XnhE00/img.png?width=422&amp;amp;height=298&amp;amp;face=0_0_422_298,https://scrap.kakaocdn.net/dn/Cvqd8/hyPXErSwNI/kyMClNFscSMIjCpgdO2de1/img.png?width=422&amp;amp;height=298&amp;amp;face=0_0_422_298,https://scrap.kakaocdn.net/dn/bJwqxH/hyPXH3cfY6/WpLMcdsPxzYcoM0saLrGS1/img.png?width=575&amp;amp;height=417&amp;amp;face=0_0_575_417');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[정보이론] 결합(joint) 엔트로피와 조건부(conditional) 엔트로피&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;결합(joint), 조건부(conditional)라는 단어는 확률에서 많이 쓰이는 용어다. 엔트로피 역시 확률을 이용한 것이므로 결합 엔트로피와 조건부 엔트로피가 존재한다. 엔트로피에 대해 잠시 복습하자.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bskyvision.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Conditional Entropy&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;사전 지식&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;확률 질량 함수&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이산 확률 변수의 확률 분포를 나타내는 함수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;확률 밀도 함수&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;연속 확률 변수의 확률 분포를 나타내는 함수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;결합 확률 질량 함수&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 이산 확률 변수 X, Y 가 각각 아래와 같이 존재할 때, X 가 $x_i$ 의 값을 갖고 Y 가 $y_j$의 값을 가질 확률은 다음과 같이 나타낼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P( X = x_i, Y = y_j) = p_{i,j} (i = 1,2,3,4 ...,m, j = 1,2,3,4 ..., n)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$p_{i,j}$ 를 이산확률변수 X,Y 의 결합 확률 질량 함수라 한다. X, Y 각각 특정한 값을 가질 때 확률을 뜻한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 예시를 살펴보자&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;조건: 3개의 빨간 공, 2개의 노란 공, 4개의 초록 공이 들어있는 주머니&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;행위: 임의로 2개의 공을 꺼낸다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;뽑은 빨간 공의 개수: 확률변수 X, 뽑은 노란 공의 개수: 확률변수 Y&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X,Y 로 이루어진 순서쌍: (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (2, 0) 총 6개&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;분모는 9개중 2개를 뽑는 경우 즉, 9개 중 2개를 뽑는 가능성이 전체의 경우&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1) 빨간 공 0개, 노란 공 0개, (초록 공 2개)를 뽑는 경우의 확률:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;166&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2Xm9F/btrNqNFCoDr/6hMXpBIvcxGd6zs5jbpMZk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2Xm9F/btrNqNFCoDr/6hMXpBIvcxGd6zs5jbpMZk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2Xm9F/btrNqNFCoDr/6hMXpBIvcxGd6zs5jbpMZk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/c2Xm9F/btrNqNFCoDr/6hMXpBIvcxGd6zs5jbpMZk/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;166&quot; height=&quot;48&quot; data-origin-width=&quot;166&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2) 빨간 공 0개, 노란 공 1개, (초록&amp;nbsp;공 1개)를 뽑는 경우의 확률:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzqMd4/btrNoD4XoBK/2VLKJpfEaZxplVRJsniev1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzqMd4/btrNoD4XoBK/2VLKJpfEaZxplVRJsniev1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzqMd4/btrNoD4XoBK/2VLKJpfEaZxplVRJsniev1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bzqMd4/btrNoD4XoBK/2VLKJpfEaZxplVRJsniev1/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;225&quot; height=&quot;48&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&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;span style=&quot;color: #000000;&quot;&gt;3) 빨간 공 0개, 노란 공 2개, (초록 공 0개)를 뽑는 경우의 확률:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qRlwJ/btrNqbGKM4q/74kmulXWCzkJkTyujv89Bk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qRlwJ/btrNqbGKM4q/74kmulXWCzkJkTyujv89Bk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qRlwJ/btrNqbGKM4q/74kmulXWCzkJkTyujv89Bk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/qRlwJ/btrNqbGKM4q/74kmulXWCzkJkTyujv89Bk/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;177&quot; height=&quot;48&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;48&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;span style=&quot;color: #000000;&quot;&gt;4) 빨간 공 1개, 노란 공 0개, (초록 공 1개)를 뽑는 경우의 확률:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZXEYc/btrNo75MwHJ/4S4UsrK0fKklwks4kyyMyK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZXEYc/btrNo75MwHJ/4S4UsrK0fKklwks4kyyMyK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZXEYc/btrNo75MwHJ/4S4UsrK0fKklwks4kyyMyK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ZXEYc/btrNo75MwHJ/4S4UsrK0fKklwks4kyyMyK/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;225&quot; height=&quot;48&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&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;span style=&quot;color: #000000;&quot;&gt;5) 빨간 공 1개, 노란 공 1개, (초록 공 0개)를 뽑는 경우의 확률:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnIafv/btrNoJDZEwR/cETfxY4ZNhSEiH5rDkbLH0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnIafv/btrNoJDZEwR/cETfxY4ZNhSEiH5rDkbLH0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnIafv/btrNoJDZEwR/cETfxY4ZNhSEiH5rDkbLH0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cnIafv/btrNoJDZEwR/cETfxY4ZNhSEiH5rDkbLH0/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;225&quot; height=&quot;48&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;48&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;span style=&quot;color: #000000;&quot;&gt;6) 빨간 공 2개, 노란 공 0개, (초록 공 0개)를 뽑는 경우의 확률:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJGNp/btrNqL8SWVX/ocEW9Spx609DFKYspMadB0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJGNp/btrNqL8SWVX/ocEW9Spx609DFKYspMadB0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJGNp/btrNqL8SWVX/ocEW9Spx609DFKYspMadB0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/mJGNp/btrNqL8SWVX/ocEW9Spx609DFKYspMadB0/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;177&quot; height=&quot;48&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;결합확률분포표&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DuXS9/btrNqtHgDB3/gYUdxGir4C8A8rxolhRkl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DuXS9/btrNqtHgDB3/gYUdxGir4C8A8rxolhRkl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DuXS9/btrNqtHgDB3/gYUdxGir4C8A8rxolhRkl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDuXS9%2FbtrNqtHgDB3%2FgYUdxGir4C8A8rxolhRkl1%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;292&quot; height=&quot;207&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 확률을 더하면 당연히 1이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQf1rc/btrNosvIwD2/Gyx2uPcAOXpCkyvBYbGJEK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQf1rc/btrNosvIwD2/Gyx2uPcAOXpCkyvBYbGJEK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQf1rc/btrNosvIwD2/Gyx2uPcAOXpCkyvBYbGJEK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cQf1rc/btrNosvIwD2/Gyx2uPcAOXpCkyvBYbGJEK/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;516&quot; height=&quot;45&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;결합 확률 밀도 함수&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 개의 연속확률변수 X와 Y가 존재할 때, X가 a이상 b이하이면서 Y가 c이상 d이하일 확률은 다음과 같이 나타낸다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cosOkb/btrNreCZa2H/QGhxwGbKKDRCcJkdjGUJFK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cosOkb/btrNreCZa2H/QGhxwGbKKDRCcJkdjGUJFK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cosOkb/btrNreCZa2H/QGhxwGbKKDRCcJkdjGUJFK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cosOkb/btrNreCZa2H/QGhxwGbKKDRCcJkdjGUJFK/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;440&quot; height=&quot;54&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 $f(x, y)$를 연속확률변수 X, Y의&amp;nbsp;&lt;b&gt;결합확률밀도함수&lt;/b&gt;라고&amp;nbsp;부른다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;임의로 선택한 30세 성인의 키를 연속확률변수 X라고 하면 키가 170-175cm일 확률&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh04eO/btrNsE2mDtE/ID0AP2JM5UAeHmNBzQIVwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh04eO/btrNsE2mDtE/ID0AP2JM5UAeHmNBzQIVwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh04eO/btrNsE2mDtE/ID0AP2JM5UAeHmNBzQIVwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh04eO%2FbtrNsE2mDtE%2FID0AP2JM5UAeHmNBzQIVwk%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;317&quot; height=&quot;55&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$f(x)$는 연속확률변수 X의 확률밀도함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;0세 성인의 키가 170cm이상 175cm이하이면서 동시에 몸무게가 80kg 이상 85kg이하일 확률은&lt;b&gt; 결합확률밀도함수&lt;/b&gt;를 사용&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cr9H2w/btrNqsuNXT3/jCCS33GH80G6dGmrPG2UBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr9H2w/btrNqsuNXT3/jCCS33GH80G6dGmrPG2UBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr9H2w/btrNqsuNXT3/jCCS33GH80G6dGmrPG2UBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr9H2w%2FbtrNqsuNXT3%2FjCCS33GH80G6dGmrPG2UBK%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;530&quot; height=&quot;55&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;키와 몸무게는 완전히 독립적이라고 볼 수 없기 때문이다. 두 확률변수가 만약에 서로 통계적으로 독립이라면 아래와 같이 단순히 두 확률을 곱하는 것으로 확률을 구할&amp;nbsp;수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;19&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCfFF/btrNnrxjVPx/K5db5Oq1eKq4ejlIAm4AYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCfFF/btrNnrxjVPx/K5db5Oq1eKq4ejlIAm4AYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCfFF/btrNnrxjVPx/K5db5Oq1eKq4ejlIAm4AYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCfFF%2FbtrNnrxjVPx%2FK5db5Oq1eKq4ejlIAm4AYK%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;550&quot; height=&quot;19&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;19&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주변확률질량함수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;질량이라는 단어로 이산확률변수와 관련된 것임을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 개 확률변수의 결합확률질량함수가 주어진 상황에서 오직 한가지 확률변수의 확률함수만을 알고 싶은 경우가 있다. 이산확률변수 X, Y의 결합확률질량함수가 $p(x, y)$라고 하자. 이 결합확률질량함수로부터 알고 싶은 것이 오직 확률변수 X의 확률함수라면 Y에 대한 정보는 필요없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이산확률변수&amp;nbsp;X,&amp;nbsp;Y의&amp;nbsp;결합확률질량함수가&amp;nbsp;주어진&amp;nbsp;상황에서&amp;nbsp;X와&amp;nbsp;Y의&amp;nbsp;주변확률질량함수는&amp;nbsp;각각&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;구한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$p_X(x) = \sum_{all y} p(x, y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$p_Y(y) = \sum_{all x}p(x,y)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 각 확률 변수가 특정한 값을 가질 때 다른 확률 변수가 가질 수 있는 모든 값들의 확률을 더한 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주변확률밀도함수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;밀도라는 단어로 연속확률변수와 관련된 것임을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;결합확률밀도함수도 마찬가지로 주어진 상황에서 오직 한가지 확률변수의 확률함수만을 알고 싶은 경우에 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f_X(x) = \int^{\infty}_{- \infty} f(x,y) dy$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$f_Y(y) = \int^{\infty}_{- \infty} f(x,y) dx$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제를 통해 살펴보자. 아래와 같이 이산 확률 변수를 갖는 결합 확률 분포표가 있다고 하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AhPcC/btrNvybVbMq/fusRyXQQXPrXUbaHr8v3pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AhPcC/btrNvybVbMq/fusRyXQQXPrXUbaHr8v3pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AhPcC/btrNvybVbMq/fusRyXQQXPrXUbaHr8v3pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAhPcC%2FbtrNvybVbMq%2FfusRyXQQXPrXUbaHr8v3pK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;325&quot; height=&quot;230&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주변확률 질량함수는 어떻게 구할까? 간단하게 X = 0 일 때, 가능한 모든 Y 의 값을 더해주면 X = 0 일때의 주변질량함수의 값이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3sWW/btrNwn8w3b8/g7GCZmRlS5ZyVmt5DY4s61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3sWW/btrNwn8w3b8/g7GCZmRlS5ZyVmt5DY4s61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3sWW/btrNwn8w3b8/g7GCZmRlS5ZyVmt5DY4s61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3sWW%2FbtrNwn8w3b8%2Fg7GCZmRlS5ZyVmt5DY4s61%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;525&quot; height=&quot;270&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정리하면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bujtQZ/btrNw9ontEE/bLJ5fS8AspgSoPJTFtKaw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bujtQZ/btrNw9ontEE/bLJ5fS8AspgSoPJTFtKaw1/img.png&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;167&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.2702%; margin-right: 10px;&quot; data-widthpercent=&quot;49.85&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bujtQZ/btrNw9ontEE/bLJ5fS8AspgSoPJTFtKaw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbujtQZ%2FbtrNw9ontEE%2FbLJ5fS8AspgSoPJTFtKaw1%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;698&quot; height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bocsts/btrNu7MnWrm/hAN81p5rtOlIoPEVmqP43K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bocsts/btrNu7MnWrm/hAN81p5rtOlIoPEVmqP43K/img.png&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;166&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.567%;&quot; data-widthpercent=&quot;50.15&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bocsts/btrNu7MnWrm/hAN81p5rtOlIoPEVmqP43K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbocsts%2FbtrNu7MnWrm%2FhAN81p5rtOlIoPEVmqP43K%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;698&quot; height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;길고 긴 사전 배경을 살펴보았다. 이제 &lt;b&gt;조건부 엔트로피&lt;/b&gt;에 대해 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;표현식은 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$H(Y | X) = \sum_{x} p_{X}(x)H(Y|X = x) = \sum_{x}p_{X}(x)\sum_{y}p_{Y|X}(y|x)\log_2 \frac{1}{p_{Y|X}(y|x)}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X가 주어졌을 때 Y의 엔트로피 $H(Y|X)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;식만 주어졌을 때는 도통 감이 안온다. 아래를 통해 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특정 상황에 대한 결합 분포표를 통해 주변 확률질량함수를 구했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dla3X1/btrNwpedsDn/fTafbyWkvBVQKOXYhoS6d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dla3X1/btrNwpedsDn/fTafbyWkvBVQKOXYhoS6d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dla3X1/btrNwpedsDn/fTafbyWkvBVQKOXYhoS6d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdla3X1%2FbtrNwpedsDn%2FfTafbyWkvBVQKOXYhoS6d1%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;383&quot; height=&quot;278&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;417&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;span style=&quot;color: #000000;&quot;&gt;$H(Y|X)$&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKryX0/btrNyFAD4L2/eoxWLbHwXikR0bw9cJvVA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKryX0/btrNyFAD4L2/eoxWLbHwXikR0bw9cJvVA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKryX0/btrNyFAD4L2/eoxWLbHwXikR0bw9cJvVA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKryX0%2FbtrNyFAD4L2%2FeoxWLbHwXikR0bw9cJvVA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;204&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$H(X|Y)$&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nCIJN/btrNvNGAYOF/Q4S6gPSaiISSVk6HRLr0Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nCIJN/btrNvNGAYOF/Q4S6gPSaiISSVk6HRLr0Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nCIJN/btrNvNGAYOF/Q4S6gPSaiISSVk6HRLr0Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnCIJN%2FbtrNvNGAYOF%2FQ4S6gPSaiISSVk6HRLr0Kk%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;589&quot; height=&quot;189&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;H(Y|X)와 H(X|Y)는 일반적으로 다른 값을 갖는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이 수식으로 보면 이해가 좀 어렵다. 아래의 예시를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(아래 예시는 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://wooono.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wooono.tistory.com/104&lt;/a&gt; 블로그의 내용을 발췌했음을 밝힘)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qxUs1/btrNLA76X8n/ZZHPCoNNdXkzTniJHcvvM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qxUs1/btrNLA76X8n/ZZHPCoNNdXkzTniJHcvvM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qxUs1/btrNLA76X8n/ZZHPCoNNdXkzTniJHcvvM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqxUs1%2FbtrNLA76X8n%2FZZHPCoNNdXkzTniJHcvvM1%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;419&quot; height=&quot;374&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Decision Tree 를 구성 단계&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;decision tree 를 구성하는 방식은 다양하다. 그러하니 여기서는 가장 간단한 &lt;b&gt;&lt;i&gt;ID3 algorithm &lt;/i&gt;&lt;/b&gt;을 다룬다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Root 노드의 불순도 계산&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;나머지 속성에 대해 분할 후 자식노드의&amp;nbsp;불순도&amp;nbsp;계산&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;각 속성에 대한 Information&amp;nbsp;Gain&amp;nbsp;계산 후 Information&amp;nbsp;Gain(Root노드와 자식노드의 불순도 차이)이 최대가 되는 분기조건을 찾아 분기&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;모든&amp;nbsp;leaf 노드의 불순도가 0이 될때까지 2,3을 반복 수행한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ Information Gain 이란?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분기 이전의 불순도와 분기 이후의 불순도의 차이를 정보 획득이라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;불순도가 1인 상태에서 0.7인 상태로 바뀌었다면 정보 획득(information gain)은 0.3이다. 아래의 예시를 통해 경험적으로 개념을 습득해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;※ 불순도란?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분기기준을 선택하기 위해서는 불순도(impurity)라는 개념을 사용. 복잡성을 의미하며, 해당 범주 안에 서로 다른 데이터가 얼마나 섞여 있는지를 뜻한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Entropy, Gini 등 여러 함수가 해당 될 수 있다. (Entropy Gini 차이: Gini 가 속도가 더 빠르나, Entropy 가 비교적 정확하게 분류한다고 알려져있다.)&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. Root 노드의 불순도 계산&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JlYZp/btrNNZsehjb/8nAw48APWvZ1T5X8vuaNDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JlYZp/btrNNZsehjb/8nAw48APWvZ1T5X8vuaNDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JlYZp/btrNNZsehjb/8nAw48APWvZ1T5X8vuaNDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJlYZp%2FbtrNNZsehjb%2F8nAw48APWvZ1T5X8vuaNDk%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;497&quot; height=&quot;75&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;경기의 참가 여부로 먼저 Root 노드를 설정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. 나머지&amp;nbsp;속성에&amp;nbsp;대해 분할 후 자식노드의&amp;nbsp;불순도 계산&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;날씨&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqvHRh/btrNNNlccOl/CMswkzEZdbXX8ClbVhtAQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqvHRh/btrNNNlccOl/CMswkzEZdbXX8ClbVhtAQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqvHRh/btrNNNlccOl/CMswkzEZdbXX8ClbVhtAQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqvHRh%2FbtrNNNlccOl%2FCMswkzEZdbXX8ClbVhtAQ0%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;860&quot; height=&quot;262&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;온도&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kw6zT/btrNOfoeoO9/I6o07yRFNcKdERAgXEjth0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kw6zT/btrNOfoeoO9/I6o07yRFNcKdERAgXEjth0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kw6zT/btrNOfoeoO9/I6o07yRFNcKdERAgXEjth0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkw6zT%2FbtrNOfoeoO9%2FI6o07yRFNcKdERAgXEjth0%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;860&quot; height=&quot;261&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;습도&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf0DPW/btrNKWQZSRW/5r8MHfLPS5IRcqizjZzrb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf0DPW/btrNKWQZSRW/5r8MHfLPS5IRcqizjZzrb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf0DPW/btrNKWQZSRW/5r8MHfLPS5IRcqizjZzrb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf0DPW%2FbtrNKWQZSRW%2F5r8MHfLPS5IRcqizjZzrb1%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;860&quot; height=&quot;265&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;바람&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IeIAe/btrNNNeqDpu/dkJiepYhnA6yM9PjIfDgU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IeIAe/btrNNNeqDpu/dkJiepYhnA6yM9PjIfDgU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IeIAe/btrNNNeqDpu/dkJiepYhnA6yM9PjIfDgU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIeIAe%2FbtrNNNeqDpu%2FdkJiepYhnA6yM9PjIfDgU0%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;860&quot; height=&quot;260&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3. 각 속성에 대한 Information Gain 계산 후 Information Gain(Root노드와 자식노드의 불순도 차이)이 최대가 되는 분기조건을 찾아 분기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ukEoF/btrNLCktnzN/TayKQ8Ii8oNFdyWL3yg1H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ukEoF/btrNLCktnzN/TayKQ8Ii8oNFdyWL3yg1H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ukEoF/btrNLCktnzN/TayKQ8Ii8oNFdyWL3yg1H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FukEoF%2FbtrNLCktnzN%2FTayKQ8Ii8oNFdyWL3yg1H0%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;625&quot; height=&quot;222&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. 모든&amp;nbsp;leaf&amp;nbsp;노드의&amp;nbsp;불순도가&amp;nbsp;0이&amp;nbsp;될때까지&amp;nbsp;2,3을&amp;nbsp;반복&amp;nbsp;수행한다.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;&quot;맑음&quot;으로&amp;nbsp;분류된&amp;nbsp;노드는&amp;nbsp;&quot;날씨&amp;nbsp;=&amp;nbsp;맑음&quot;&amp;nbsp;인&amp;nbsp;데이터만&amp;nbsp;가지고&amp;nbsp;와서&amp;nbsp;다시&amp;nbsp;분할&amp;nbsp;전&amp;nbsp;엔트로피를&amp;nbsp;계산한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b69kmP/btrNILvuCt3/8tEsBzVe0bsHIp6pu6Aek1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b69kmP/btrNILvuCt3/8tEsBzVe0bsHIp6pu6Aek1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b69kmP/btrNILvuCt3/8tEsBzVe0bsHIp6pu6Aek1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb69kmP%2FbtrNILvuCt3%2F8tEsBzVe0bsHIp6pu6Aek1%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;560&quot; height=&quot;149&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k2HIE/btrNL9WPVC2/9oXpnQBe9HgTtauU28gaBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k2HIE/btrNL9WPVC2/9oXpnQBe9HgTtauU28gaBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k2HIE/btrNL9WPVC2/9oXpnQBe9HgTtauU28gaBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk2HIE%2FbtrNL9WPVC2%2F9oXpnQBe9HgTtauU28gaBk%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;643&quot; height=&quot;390&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvMWug/btrNPzmdwf8/8AGC9ku0RxcCYh0ziT8uN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvMWug/btrNPzmdwf8/8AGC9ku0RxcCYh0ziT8uN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvMWug/btrNPzmdwf8/8AGC9ku0RxcCYh0ziT8uN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvMWug%2FbtrNPzmdwf8%2F8AGC9ku0RxcCYh0ziT8uN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;122&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zaMk6/btrNPi5Voi7/hnG4aAYd1Bj5YbA5ze3vbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zaMk6/btrNPi5Voi7/hnG4aAYd1Bj5YbA5ze3vbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zaMk6/btrNPi5Voi7/hnG4aAYd1Bj5YbA5ze3vbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzaMk6%2FbtrNPi5Voi7%2FhnG4aAYd1Bj5YbA5ze3vbK%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;439&quot; height=&quot;289&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;567&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;최종결과&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cje9el/btrNPikxpwl/7X8v15lHuc0fdCCZpWVkn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cje9el/btrNPikxpwl/7X8v15lHuc0fdCCZpWVkn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cje9el/btrNPikxpwl/7X8v15lHuc0fdCCZpWVkn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcje9el%2FbtrNPikxpwl%2F7X8v15lHuc0fdCCZpWVkn0%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;496&quot; height=&quot;263&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;일반화&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGB8Os/btrNQpMfOKx/ywzwQ7W2W64kX5ohrlQd80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGB8Os/btrNQpMfOKx/ywzwQ7W2W64kX5ohrlQd80/img.png&quot; data-alt=&quot;깊어질 수록 train,test 셋에 대한 accuracy&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGB8Os/btrNQpMfOKx/ywzwQ7W2W64kX5ohrlQd80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGB8Os%2FbtrNQpMfOKx%2FywzwQ7W2W64kX5ohrlQd80%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;510&quot; height=&quot;291&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;깊어질 수록 train,test 셋에 대한 accuracy&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위&amp;nbsp;구성방법을&amp;nbsp;사용하여&amp;nbsp;트리를&amp;nbsp;형성하게&amp;nbsp;되면,&amp;nbsp;leaf&amp;nbsp;노드가&amp;nbsp;순도&amp;nbsp;100%의&amp;nbsp;한가지&amp;nbsp;범주만을&amp;nbsp;가지게&amp;nbsp;되는&amp;nbsp;Full&amp;nbsp;tree(최대&amp;nbsp;트리)를&amp;nbsp;형성하게&amp;nbsp;된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만&amp;nbsp;이러한&amp;nbsp;최대&amp;nbsp;트리는&amp;nbsp;새로운&amp;nbsp;데이터에&amp;nbsp;적용할&amp;nbsp;때&amp;nbsp;과적합&amp;nbsp;문제(Overfitting)가&amp;nbsp;발생하여&amp;nbsp;일반화&amp;nbsp;성능이&amp;nbsp;떨어지게&amp;nbsp;된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;따라서&amp;nbsp;형성된&amp;nbsp;결정트리에&amp;nbsp;대해&amp;nbsp;가지치기(Pruning)를&amp;nbsp;수행하여&amp;nbsp;일반화&amp;nbsp;성능을&amp;nbsp;높힌다.&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;가지치기 (pruning)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bneDq5/btrNNnAjW5P/jeobUihj31kmhZSMCkqw41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bneDq5/btrNNnAjW5P/jeobUihj31kmhZSMCkqw41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bneDq5/btrNNnAjW5P/jeobUihj31kmhZSMCkqw41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbneDq5%2FbtrNNnAjW5P%2FjeobUihj31kmhZSMCkqw41%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;371&quot; height=&quot;214&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;682&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;span style=&quot;color: #000000;&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;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더&amp;nbsp;많은&amp;nbsp;가지가&amp;nbsp;생기지&amp;nbsp;않도록&amp;nbsp;최대&amp;nbsp;깊이,&amp;nbsp;leaf&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;b&gt;제한이&amp;nbsp;가능&lt;/b&gt;하다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;가지치기의 비용함수&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;의사결정나무는&amp;nbsp;아래 비용함수를 최소로 하는 분기를 찾아내도록 학습된다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$CC(T) = Err(T) + \alpha &amp;times; L(T)$&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$CC(T)$&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의사결정나무의 비용 복잡도&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오류가 적으면서 terminal&amp;nbsp;node 수가 적은 단순한 모델일 수록 작은 값&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$ERR(T)$&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;검증데이터에 대한 오분류율&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$L(T)$&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;terminal node의 수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구조의 복잡도&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$\a&lt;/b&gt;&lt;b&gt;lpha$&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERR(T)와 L(T)를 결합하는 가중치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자에 의해 부여됨, 보통 0.01~0.1의 값을 씀&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단한 수식이다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Decision Tree의 장단점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터의 전처리 (정규화, 결측치, 이상치 등) 를 하지 않아도 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;수치형과 범주형 변수를 한꺼번에 다룰 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;한계&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 샘플의 사이즈가 크면 효율성 및 가독성이 떨어진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;과적합으로 알고리즘 성능이 떨어질 수 있다.&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이를 극복하기 위해서 트리의 크기를 사전에 제한하는 튜닝이 필요하다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;한 번에 하나의 변수만을 고려하므로 변수간 상호작용을 파악하기가 어렵다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결정트리는 Hill Climbing 방식 및 Greedy 방식을 사용하고 있다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적인 Greedy 방식의 알고리즘이 그렇듯이 이 방식은 최적의 해를 보장하지는 못한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;약간의 차이에 따라 (레코드의 개수의 약간의 차이) 트리의 모양이 많이 달라질 수 있다.&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 변수가 비슷한 수준의 정보력을 갖는다고 했을 때, 약간의 차이에 의해 다른 변수가 선택되면 이 후의 트리 구성이 크게 달라질 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이같은 문제를 극복하기 위해 등장한 모델이 바로 랜덤포레스트이다.&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;같은 데이터에 대해 의사결정나무를 여러 개 만들어 그 결과를 종합해 예측 성능을 높이는 기법이다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div id=&quot;aswift_2_host&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단순하게 살펴보아도 변수간의 상관관계는 전혀 반영되지 않으며, Greedy 알고리즘 특성상 최적의 해가 아니라는 것을 알 수 있다. 또한 과적합이 일어나기도 쉽다. 그러나 랜덤포레스트의 기반이 됨과 동시에 수학적으로 살펴볼 구석들이 있었다는 점에서 꼭 살펴보고 넘어가야 한다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/245</guid>
      <comments>https://itforfun.tistory.com/245#entry245comment</comments>
      <pubDate>Wed, 5 Oct 2022 17:45:51 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 3 - 룰 베이스 알고리즘이란?</title>
      <link>https://itforfun.tistory.com/244</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;머신러닝이란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;경험에 의해 배우는 프로그램&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;경험에 의해 &lt;b&gt;특정 테스크&lt;/b&gt;의 수행능력이 점차 향상 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 더 많은 경험이 쌓이면 (혹은 더 많은 사전 지식) 머신러닝의 성능이 점차 좋아질 것이라 기대된다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Rule Based Learning&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이상적인 세상 가정&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;관측 에러 X&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 것은 일관적 관측&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 종류만으로 결과를 완벽하게 설명 가능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Sky&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Temp&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Humid&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Wind&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Water&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Forecast&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;EnjoySpt&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sunny&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Normal&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Strong&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Same&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sunny&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;High&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Strong&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Same&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rainy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cold&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;High&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Strong&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Change&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sunny&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Warm&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;High&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Strong&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cool&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Change&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Yes&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Function Approximation&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;머신러닝의 목표라고도 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현실을 잘 반영하는 함수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Instance &lt;i&gt;&lt;b&gt;X&lt;/b&gt;&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Features: O : &amp;lt;Sunny, Warm, Normal, Strong, Warm, Same&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Label: Y: &amp;lt;Yes&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Training Dataset &lt;b&gt;&lt;i&gt;D&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Instance 관측치 모음&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Hypothesis &lt;b&gt;&lt;i&gt;H&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;X 를 Y 로 변환하는 잠재적으로 가능한 함수&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_i$: &amp;lt;Sunny, Warm, ?, ?, ?, Same&amp;gt; $\rightarrow$ Yes&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다양한 가설이 가능하다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Target Function &lt;b&gt;&lt;i&gt;c&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;알지 못하나, 데이터를 통해 추론해서 목표로하는 함수 즉 &lt;b&gt;&lt;i&gt;h 를 c 로 만드는 것이 목표&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-29 오전 2.55.56.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U5SSK/btrNi4nnd3g/dCHfOKqGVqmhFcEwfMIJik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U5SSK/btrNi4nnd3g/dCHfOKqGVqmhFcEwfMIJik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U5SSK/btrNi4nnd3g/dCHfOKqGVqmhFcEwfMIJik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU5SSK%2FbtrNi4nnd3g%2FdCHfOKqGVqmhFcEwfMIJik%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;693&quot; height=&quot;286&quot; data-filename=&quot;스크린샷 2022-09-29 오전 2.55.56.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 그림을 살펴보자. 위 그림의 오른 쪽 Hypothesis H $h_i$ 에 해당하는 Instance X $x_i$ 를 확인해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 가설에 따라 해당하는 instance를 확인할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 그림이 룰 베이스를 설명한다. 즉, 룰베이스는 필터링 마냥 각각의 룰에 해당하는 것을 거르고 걸러 우리가 원하는 값을 찾을 수 있는 함수를 근사하는 것이다.&amp;nbsp;&lt;/span&gt;&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;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Find-S Algorithm&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가설 h 에 대하여,&amp;nbsp;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;D 의 instance &lt;b&gt;&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; 가 만약 positive 이면,&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;instance x 의 feature f 가 가설 h 에 해당되는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약, 포함되지 않으면 $h \cup f_i \in x$&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한마디로 정리하자면, instance &lt;b&gt;&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; 가 positive 임에도 가설에서 해당되지 않던 내역을 가지고 있으면 가설에 추가하게 되는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 예시를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Instances&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x_1$ : &amp;lt;Sunny, Warm, Normal, Strong, Warm, Same&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x_2$ : &amp;lt;Sunny, Warm, Normal, Light, Warm, Same&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$x_4$: &amp;lt;Sunny, Warm, Normal, Strong, Warm, Change&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Hypotheses&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_0$ = &amp;lt;$\emptyset, \emptyset, \emptyset, \emptyset, \emptyset, \emptyset$&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_1$ = &amp;lt;Sunny, Warm, Normal, Strong, Warm, Same&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기 instance $x_1$ 에 대하여 update&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_{0,1,2}$ = &amp;lt;Sunny, Warm, Normal, ?, Warm, Same&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;instance $x_2$ 로 인해 Strong 이 아닌 Light 여도 postivie 임을 확인 (합집합)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_{0,1,2,4}$ = &amp;lt;Sunny, Warm, Normal, ?, Warm, ?&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;instance $x_4$ 로 인해 Same 이 아닌 Change 여도 postivie 임을 확인 (합집합)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$h_{0, 1,2, 4}$ 가 실제 함수를 올바르게 근사할까? 사실 알 수 없다. 다른 feature들도 여러 요소를 허용할 수도 있기에, 가능한 가설이 다양하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Version Space&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가능한 여러 가설을 하나로 정리하기 어렵다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이에 따라 범위를 찾아내는 방법이 제시되었다. 이를 version space라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;범위를 제안하기 위하여 boundary 설정이 필요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;General Boundary &lt;b&gt;&lt;i&gt;G&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;set of the maximally &lt;b&gt;general hypotheses&lt;/b&gt; of the version space&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Specific Boundary&lt;b&gt;&lt;i&gt;&amp;nbsp;S&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;set of the maximally &lt;b&gt;specific hypotheses&lt;/b&gt; of the version space&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Every Hypothesis &lt;b&gt;&lt;i&gt;h,&amp;nbsp;&lt;/i&gt;&lt;/b&gt;satisfies&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\textrm{VS}_{H,D} = \{ h \in H | \exists s \in S, \exists g \in G, g \leq h \leq s \}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정의만 봤을 때는 &lt;b&gt;&lt;i&gt;G 와 h &lt;/i&gt;&lt;/b&gt;&lt;i&gt;의 차이&lt;/i&gt;가 직관적으로 다가오지 않는다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 도표를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-29 오후 4.28.54.png&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzh5LD/btrNo8Qhbpz/kCSigzOrP4Yh2qu875PLt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzh5LD/btrNo8Qhbpz/kCSigzOrP4Yh2qu875PLt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzh5LD/btrNo8Qhbpz/kCSigzOrP4Yh2qu875PLt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzh5LD%2FbtrNo8Qhbpz%2FkCSigzOrP4Yh2qu875PLt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;221&quot; data-filename=&quot;스크린샷 2022-09-29 오후 4.28.54.png&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직관적으로 넓게 잡은 범위는 가능한 상황을 모두 가능하다고 가설을 세우는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 좀 좁게 잡은 범위는 가능한 상황이 더 있더라도 specific 하게 예측할 수 있는 경우는 specific 하게 가설을 세우는 것이다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Candidate Elimination Algorithm&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Version space를 만들기 위해서 가장 General, Specific 한 가설을 생성한 후, 점점 좁혀나가서 특정 version space 만을 찾아내는 알고리즘이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;S 를 가능한 specific 하게 초기화 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\textrm{S0}$ : {&amp;lt; $\emptyset, \emptyset, \emptyset, \emptyset, \emptyset, \emptyset $ &amp;gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;G 를 가능한 general 하게 초기화 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\textrm{G0}$ : {&amp;lt; $?, ?, ?, ?, ?, ?$&amp;nbsp;&amp;gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;D 에 있는 각각의 instance &lt;i&gt;x &lt;/i&gt;를&amp;nbsp; 통하여 타겟 값을 좁혀나간다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;만약 &lt;i&gt;x &lt;/i&gt;의 label y 가 postive 라면,&amp;nbsp;&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;S 를 최대한 x 를 포함하는 general 한 범위로 일반화한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;label 을 추론하는데 해당되지 않는 즉, $h(o) != y$인 h를 G 에서 제거한다.&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;만약&amp;nbsp;&lt;i&gt;x&amp;nbsp;&lt;/i&gt;의 label y 가 negative 라면,&amp;nbsp;&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;x의 o(feature) G에서 제거할 수 있는 만큼 제거한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;S 에 속한 $h(0) = y$ 의 h 를 제거한다.&amp;nbsp;&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;&lt;span style=&quot;color: #000000;&quot;&gt;$\exists s \in S, \exists g \in G, g \leq h \leq s$ 를 만족하는 &lt;b&gt;&lt;i&gt;h&lt;/i&gt;&lt;/b&gt; 를 생성한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래를 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Candidate Elimination Algorithm 의 과정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-09-29 오후 5.06.43.png&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbpzZm/btrNotHpUjN/OhXH2tZAUFi2F6xNNDkXn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbpzZm/btrNotHpUjN/OhXH2tZAUFi2F6xNNDkXn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbpzZm/btrNotHpUjN/OhXH2tZAUFi2F6xNNDkXn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbpzZm%2FbtrNotHpUjN%2FOhXH2tZAUFi2F6xNNDkXn1%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;1172&quot; height=&quot;550&quot; data-filename=&quot;edited_스크린샷 2022-09-29 오후 5.06.43.png&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Specific, Generalize 하게 업데이트 되는 것을 확인할 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-09-29 오후 5.08.43.png&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3kpv9/btrNjTm3Bdz/KKJLlvkk5NtC6EuNEf68Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3kpv9/btrNjTm3Bdz/KKJLlvkk5NtC6EuNEf68Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3kpv9/btrNjTm3Bdz/KKJLlvkk5NtC6EuNEf68Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3kpv9%2FbtrNjTm3Bdz%2FKKJLlvkk5NtC6EuNEf68Dk%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;1115&quot; height=&quot;550&quot; data-filename=&quot;edited_스크린샷 2022-09-29 오후 5.08.43.png&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Negative 한 케이스가 업데이트 되는 것도 확인할 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다만, 어떠한 요소때문에 Negative 가 된지 알 수 없으므로 위와 같이 &lt;b&gt;&lt;i&gt;G &lt;/i&gt;&lt;/b&gt;가 결정된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.11.12.png&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D1uzb/btrNpJizDrh/YklnBBkQY1rBnFf1cmki3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D1uzb/btrNpJizDrh/YklnBBkQY1rBnFf1cmki3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D1uzb/btrNpJizDrh/YklnBBkQY1rBnFf1cmki3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD1uzb%2FbtrNpJizDrh%2FYklnBBkQY1rBnFf1cmki3k%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;1218&quot; height=&quot;716&quot; data-filename=&quot;스크린샷 2022-09-29 오후 5.11.12.png&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마지막 케이스를 통해 업데이트를 마쳤다. 그러나 여전히 &lt;i&gt;&lt;b&gt;G 과 S 사이에&lt;/b&gt;&lt;/i&gt; 여러 가설이 존재할 수 있다. 이 중 하나가 True 값일것이라 기대하며 learning 하는 것이 rule based 방법이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추가적으로 새로운 instance 가 들어오면 version space 를 점점 더 narrow down 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 version space를 기반으로 classification 이 가능해진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Specific Boundary &lt;b&gt;&lt;i&gt;S&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{&amp;lt;Sunny, Warm, ?, Strong, ?, ?&amp;gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;General Boundary &lt;b&gt;&lt;i&gt;G&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{ &amp;lt;Sunny, ?, ?, ?, ?, ? &amp;gt;, &amp;lt;?, Warm, ?, ?, ?, ?&amp;gt; }&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;b&gt;new instance&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&amp;lt;Sunny, Warm, Normal, Strong, Cool, Change&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;i&gt;S&lt;/i&gt;&lt;/b&gt; 도 통과했으므로 OK&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&amp;lt;Rainy, Cold, Normal, Light, Warm, Same&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;G&lt;/b&gt; 도 통과하지 못하므로&lt;i&gt; NO&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&amp;lt;Sunny, Warm, Normal, Light, Warm, Same&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;b&gt;S&lt;/b&gt; 는 통과하지 못하나 &lt;b&gt;G&lt;/b&gt; 는 통과한다. 즉 해당 instance 는 결정을 못내리는 상황이다. Rule based learning 은 이러한 문제점을 가지고 있다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;위에서 살펴본 Candidate - elimination algorithm 은 아주 이상적인 세상에서만 사용가능하다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;데이터가 계속 들어오면 이상적인 세상에서는 True function 으로 converge 하게 될 것이다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;이상적인 세상의 조건은 상단에서 언급했다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;즉, 현실에서는 노이즈가 낀다는 것을 감안해야하고, Decision factor(feature) 또한 관측하지 못한 것이 있을 수 있다.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/244</guid>
      <comments>https://itforfun.tistory.com/244#entry244comment</comments>
      <pubDate>Thu, 29 Sep 2022 17:22:29 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 2 - 확률 분포</title>
      <link>https://itforfun.tistory.com/243</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;확률이란?&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$P(E) \in R$ : 확률이란 함수 형태를 가지고 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;$P(E) \geq 0$ : 모든 각 사건은 확률이 0 이상이다. (음수는 없다.)&lt;/li&gt;
&lt;li&gt;$P(\omega) = 1$ : 모든 경우를 합치면 1이다.&amp;nbsp;&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;오메가에 대한 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ P(E_1 \cup E_2 \cup ...) = \sum^{\infty}_{i=1} P(E_i) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;if&lt;/b&gt; $A \subseteq B$ &lt;b&gt;then&lt;/b&gt; $P(A) \leq P(B)$&amp;nbsp;&lt;/li&gt;
&lt;li&gt;$P(\emptyset) = 0$&lt;/li&gt;
&lt;li&gt;$0 \leq P(E) \leq 1$&lt;/li&gt;
&lt;li&gt;$P(A \cup B) = P(A) + P(B) - P(A \cup B)$&lt;/li&gt;
&lt;li&gt;$P(E^C) = 1- P(E)$&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;조건부 확률&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$P(A | B) = \frac{P(A \cap B)}{P(B)}$$&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-28 오후 5.30.55.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8ljKy/btrNiguhMVC/bEYypqQQiWibdEBmt5AbjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8ljKy/btrNiguhMVC/bEYypqQQiWibdEBmt5AbjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8ljKy/btrNiguhMVC/bEYypqQQiWibdEBmt5AbjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8ljKy%2FbtrNiguhMVC%2FbEYypqQQiWibdEBmt5AbjK%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;341&quot; height=&quot;134&quot; data-filename=&quot;스크린샷 2022-09-28 오후 5.30.55.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B 가 주어졌을 때 A 가 성립할 확률, 즉 A와 B 가 동시에 성립해야 하며 이를 B 전체로 나눠줘야 한다.&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;$P(A \cap B) = P(B \cap A)$ 이므로 아래도 성립한다.&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;$P(B | A) = \frac{P(A | B) P(B)}{P(A)}$&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;&lt;b&gt;확률 분포&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사건(event)이 확률에 맵핑되는 함수를 확률 분포라고 한다.&amp;nbsp;&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;&lt;b&gt;예시) &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확률 함수&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$$f(x) = \frac{1}{\sqrt{2\pi}} \exp\left( -\frac{1}{2}\left(x\right)^{\!2}\,\right)$$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x 가 사건(event)&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8uWUV/btrNgcNfhe2/s0mIeECnzoqV8zB44Ulur0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8uWUV/btrNgcNfhe2/s0mIeECnzoqV8zB44Ulur0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8uWUV/btrNgcNfhe2/s0mIeECnzoqV8zB44Ulur0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8uWUV%2FbtrNgcNfhe2%2Fs0mIeECnzoqV8zB44Ulur0%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;270&quot; height=&quot;173&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;173&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsJRjj/btrNhczwck7/uTvtp8mF516uSynHVi12KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsJRjj/btrNhczwck7/uTvtp8mF516uSynHVi12KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsJRjj/btrNhczwck7/uTvtp8mF516uSynHVi12KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsJRjj%2FbtrNhczwck7%2FuTvtp8mF516uSynHVi12KK%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;275&quot; height=&quot;141&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분포의 모양을 조정할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;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. 공식자체를 수정하여 분포를 바꿀 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 공식마다 이름이 있다. (normal, poisson, beta .. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.parameter 값을 조정하여 바꿀 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;normal distribuion&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZY40/btrNhejOB4m/ceI3WJpmFGurK2f6NgSmZ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZY40/btrNhejOB4m/ceI3WJpmFGurK2f6NgSmZ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZY40/btrNhejOB4m/ceI3WJpmFGurK2f6NgSmZ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZY40%2FbtrNhejOB4m%2FceI3WJpmFGurK2f6NgSmZ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;286&quot; height=&quot;176&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f(x;mu,&amp;nbsp;\sigma)&amp;nbsp;=&amp;nbsp;\frac{1}{\sigma\sqrt{2\pi}}&amp;nbsp;\exp\left(&amp;nbsp;-\frac{1}{2}\left(\frac{x-\mu}&amp;nbsp;{\sigma}\right)^{\!2}\,\right)$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Notaion : $N(\mu, \sigma^2)$&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mean: $\mu$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Variance: $\sigma^2$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Beta distribution&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mOTJ0/btrNigHQxyD/C5wDbFx29iPQ3NCZfR4ss1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mOTJ0/btrNigHQxyD/C5wDbFx29iPQ3NCZfR4ss1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mOTJ0/btrNigHQxyD/C5wDbFx29iPQ3NCZfR4ss1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmOTJ0%2FbtrNigHQxyD%2FC5wDbFx29iPQ3NCZfR4ss1%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;251&quot; height=&quot;201&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;normal distribution 은 양쪽에 long-tail이 끝없이 존재한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, beta distribution은 tail 없이 연속적인 값 [0,1] 내에 존재한다.&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;확률또한 범위가 정해져 있으므로 확률을 모델링 할 때 beta distribution 이 많이 사용된다.&amp;nbsp;&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;$$P(\theta) = \frac{\theta^{\alpha - 1} (1-\theta)^{\beta -1}}{B(\alpha, \beta)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$B(\alpha, \beta) = \frac{\Gamma(\alpha) \Gamma(\beta)}{\Gamma{\alpha+\beta}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\Gamma(\alpha) = (\alpha-1)!$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\alpha \in N^{+}$$&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;Notation: $\textrm{Beta}(\alpha, \beta)$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mean: $\frac{\alpha}{\alpha+\beta}$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Variance: $\frac{\alpha \beta}{(\alpha+\beta)^2 (\alpha + \beta + 1)}$&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Binomial Distribution&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mffpw/btrNjz1faCW/Mg4X6G5yyHZ3jnpdhOoYrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mffpw/btrNjz1faCW/Mg4X6G5yyHZ3jnpdhOoYrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mffpw/btrNjz1faCW/Mg4X6G5yyHZ3jnpdhOoYrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmffpw%2FbtrNjz1faCW%2FMg4X6G5yyHZ3jnpdhOoYrK%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;300&quot; height=&quot;200&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f(\theta;&amp;nbsp;n,&amp;nbsp;p)&amp;nbsp;=&amp;nbsp;{N\choose&amp;nbsp;k}&amp;nbsp;p^k(1-p)^{n-k},&amp;nbsp;{N\choose&amp;nbsp;k}&amp;nbsp;=&amp;nbsp;\frac{n!}{k!(n-k)!}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Notation:&lt;/b&gt; $B(n, p)$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;mean:&lt;/b&gt; $np$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Variance:&lt;/b&gt; $np(1-p)$&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Multinomial Distribution&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞과 뒤 처럼 2가지가 아닌 그 이상의 선택지가 있는 경우에는 다른 분포가 필요하다. 그 때 사용할 수 있는 분포이다.&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;binomial distribution의 일반화&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Word Selection (말을 하고나서 다음 단어를 선택하는 경우), Cluster Selection&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;$f(x_1, ..., x_k; n, p_1, ..., p_k) = \frac{n!}{x_1! ... x_k!} p_1^{x_1} ... p_k^{x_k}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Notation: $\textrm{Mult}(P), P = &amp;lt; p_1, ..., p_k &amp;gt;$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mean: $\textrm{E}(x_i) = np_i $&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Variance: $\textrm{Var}(x_i) = np_i(1-p_i)$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/243</guid>
      <comments>https://itforfun.tistory.com/243#entry243comment</comments>
      <pubDate>Thu, 29 Sep 2022 00:45:10 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 정리 1 - MLE, MAP 정리</title>
      <link>https://itforfun.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이즈는 이미 2번 정리를 했지만, 여러번 볼 수록 좋기에 한번 더 정리를 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.697%; height: 125px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Supervised Learning&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Unsupervised Learning&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Label이 있는 learning (&lt;b&gt;분류&lt;/b&gt;, &lt;b&gt;regression&lt;/b&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;label 없이 주어진 데이터로 패턴 파악(&lt;b&gt;clustering, Filtering&lt;/b&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&amp;nbsp;&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;span style=&quot;color: #000000;&quot;&gt;Unsupervised Learning 예시: 주어진 신문기사 4만개에서 10개로 분류해보아라.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;labeling 과정을 거칠 필요가 없이 clsutering 하면 된다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이항 분포&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이산 확률 분포&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\textrm{n번중 k번 성공}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$f(k;n,p) = P( K = k ) = \binom{n}{k} \, p^k (1-p)^{n-k}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\binom{n}{k} = \frac{n!}{k! (n-k)!} = \, ^n C_{k} $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\rightarrow \textrm{독립시행}$$&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;독립시행&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;독립시행에 대한 이해가 필요&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주사위 던지기&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A: 6의 양의 약수가 나오는 사건 {1, 2, 3, 6}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(A) = \frac{n(A)}{n(S)} = \frac{4}{6} = \frac{2}{3}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5번의 시행에서 사건 A가 3번 일어날 확률&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단순하게 생각하면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{2}{3}^3 \times \frac{1}{3}^2$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-27 오전 1.19.50.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4IS5W/btrKFTiIQAk/DFhkEybsXHkg5AvWH73wO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4IS5W/btrKFTiIQAk/DFhkEybsXHkg5AvWH73wO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4IS5W/btrKFTiIQAk/DFhkEybsXHkg5AvWH73wO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4IS5W%2FbtrKFTiIQAk%2FDFhkEybsXHkg5AvWH73wO1%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;207&quot; height=&quot;498&quot; data-filename=&quot;스크린샷 2022-08-27 오전 1.19.50.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 5번의 시행에서 사건 A가 3번 일어날 경우가 한가지만 있는 것이 아니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제는 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ ^n C_{r} $&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;순서를 고려하지 않는 조합이다.&amp;nbsp;(매 시행시 일어날 확률이 P인 사건. n회의 시행 중 r번 일어날 확률)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$\rightarrow$ $^n C_{r}$ $p^r$&amp;nbsp; $(1-p)^{n-r}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;조합 (Combination):&lt;/b&gt; 순서를 고려하지 않음&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;순열 (Permutation):&lt;/b&gt; 순서를 고려&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MLE&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = argmax_{\theta} P(D \, |\, \theta \,) = argmax_{\theta} \, \theta^{a_H} (1 - \theta) ^{a_{\tau}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= argmax_{\theta} \ln \{ \theta^{a_H} (1 - \theta) ^{a_{\tau}} \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$= argmax_{\theta} \{ \, a_{H} \ln{\theta} + a_{\tau} \ln{(1 - \theta)}&amp;nbsp; \}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;log function 은 monotonous 하게 증가하기 때문에 log를 mapping 한 후 구한 최댓값이 기존 &lt;b&gt;최댓값(최대화 되는 점)&lt;/b&gt;과 동일하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{\partial}{\partial \theta} (a_{H} \ln{\theta} + a_{\tau} \ln{(1 - \theta)})$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;미분을 하는 이유는 그냥 &lt;b&gt;극점&lt;/b&gt;을 찾기 위함이다. 변화율이 0으로 떨어질때가 극점이기 때문&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\ln{x}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\lim_{x \to \infty} (1 + \frac{1}{x})^x$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;각각의 미분법 혹은 극한 잊고 있으면 한번에 과정이 보이지 않는다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{\partial }{\partial x} \ln{x} = \frac{1}{x}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TM38U/btrKIxZIKSF/IN3YeMB6sUvC6LcpsisQfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TM38U/btrKIxZIKSF/IN3YeMB6sUvC6LcpsisQfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TM38U/btrKIxZIKSF/IN3YeMB6sUvC6LcpsisQfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTM38U%2FbtrKIxZIKSF%2FIN3YeMB6sUvC6LcpsisQfK%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;265&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$(1+0)^{\infty} = e \,\,\,&amp;nbsp; \textrm{0과} \, \infty \textrm{처럼 역수를 이루고 있어야 한다.}$$&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://itforfun.tistory.com/220&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://itforfun.tistory.com/220&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662548101325&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;ln (x-1) 의 미분&quot; data-og-description=&quot;필자에게 자신을 돌아볼 충격적인 일이 있었다. ln(x - 1)을 미분하는데, 두가지 방법에 따라 결과값이 다르게 나온 것이다. 1) 합성 함수의 미분 $$\ln(x-1)' = g'(f(x))f'(x) $$ $$\ln(x-1)' = \ln'(x-1)(x-1)'..&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/220&quot; data-og-url=&quot;https://itforfun.tistory.com/220&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/E4ZUX/hyPIN3rGPn/KhYGY5o9dHdKSt3DK5DKBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dq2rAt/hyPIzc2JW9/oJpzHrfkMQJIQrrOjASfH0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/kd8yb/hyPIK6Iwzj/KmHbk4VaFoG63UTmRGMO5k/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/220&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/220&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/E4ZUX/hyPIN3rGPn/KhYGY5o9dHdKSt3DK5DKBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dq2rAt/hyPIzc2JW9/oJpzHrfkMQJIQrrOjASfH0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/kd8yb/hyPIK6Iwzj/KmHbk4VaFoG63UTmRGMO5k/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ln (x-1) 의 미분&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;필자에게 자신을 돌아볼 충격적인 일이 있었다. ln(x - 1)을 미분하는데, 두가지 방법에 따라 결과값이 다르게 나온 것이다. 1) 합성 함수의 미분 $$\ln(x-1)' = g'(f(x))f'(x) $$ $$\ln(x-1)' = \ln'(x-1)(x-1)'..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{\partial}{\partial \theta} (a_{H} \ln{\theta} + a_{\tau} \ln{(1 - \theta)}) = 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\frac{a_H}{\theta} - \frac{a_{\tau}}{1-\theta} = 0$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\theta = \frac{a_{H}}{a_{\tau}+a_{H}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MLE 측면에서 추정된 값은 $\hat{\theta} = \frac{a_{H}}{a_{\tau}+a_{H}}$ 이다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$\hat{\theta}$ 는 파라미터의 추정값이지 파라미터가 아니다. 이에 따라 시행의 숫자가 많아질 수록 error 확률이 떨어진다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;에러 Bound&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(| \hat{\theta} - \theta^{*}| \geq \epsilon) \leq 2 e^{-2N\epsilon^2}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;N 이 커지면 커질 수록 Error bound 는 작아진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이를 역산하여 error term 인 $\epsilon$ 과 그때의 확률을 구해볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 시행을 100번하여 $\epsilon$ 이 0.1 일 때의 실제 에러가 0.1 보다 클 확률은 0.0338338208 보다 낮다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이를 PAC (Probably Approximate Correct learning) 이라 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MLE 깔끔한 정리 블로그&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://techblog-history-younghunjo1.tistory.com/70&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://techblog-history-younghunjo1.tistory.com/70&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662574054322&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[ML] 데이터 학습방법으로서 MLE, MAP&quot; data-og-description=&quot;※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다. 이번 포스팅에서는 간단한 주제를 다룰텐데, 바로 &quot; data-og-host=&quot;techblog-history-younghunjo1.tistory.com&quot; data-og-source-url=&quot;https://techblog-history-younghunjo1.tistory.com/70&quot; data-og-url=&quot;https://techblog-history-younghunjo1.tistory.com/70&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cNduSF/hyPIyZPA8v/8kbC2dDwPEVeQrKV0bw2JK/img.jpg?width=800&amp;amp;height=249&amp;amp;face=0_0_800_249,https://scrap.kakaocdn.net/dn/wKxRK/hyPILdMTsX/zMJbDKTbxLC233R5NrDKjk/img.jpg?width=800&amp;amp;height=249&amp;amp;face=0_0_800_249,https://scrap.kakaocdn.net/dn/bzDvIA/hyPIOavPlQ/z8MLOb4dH8kolt6qvA7CvK/img.jpg?width=1440&amp;amp;height=1273&amp;amp;face=0_0_1440_1273&quot;&gt;&lt;a href=&quot;https://techblog-history-younghunjo1.tistory.com/70&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://techblog-history-younghunjo1.tistory.com/70&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cNduSF/hyPIyZPA8v/8kbC2dDwPEVeQrKV0bw2JK/img.jpg?width=800&amp;amp;height=249&amp;amp;face=0_0_800_249,https://scrap.kakaocdn.net/dn/wKxRK/hyPILdMTsX/zMJbDKTbxLC233R5NrDKjk/img.jpg?width=800&amp;amp;height=249&amp;amp;face=0_0_800_249,https://scrap.kakaocdn.net/dn/bzDvIA/hyPIOavPlQ/z8MLOb4dH8kolt6qvA7CvK/img.jpg?width=1440&amp;amp;height=1273&amp;amp;face=0_0_1440_1273');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[ML] 데이터 학습방법으로서 MLE, MAP&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다. 이번 포스팅에서는 간단한 주제를 다룰텐데, 바로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;techblog-history-younghunjo1.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한마디로 정리하자면:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;likelihood 는 주어진 파라미터 (특정 분포)에서 관측값이 등장할 확률이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MLE 는 &quot;어떤 파라미터&quot; 가 가장 많은 관측값을 포함하는가.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, likelihood 는 아래 이미지 같이 파라미터 마다 관측 값이 등장할 확률이 다르다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-08 오전 3.12.24.png&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w5JHe/btrLFgJDph8/Ke8ThdF33ms6TqgLIKt9N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w5JHe/btrLFgJDph8/Ke8ThdF33ms6TqgLIKt9N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w5JHe/btrLFgJDph8/Ke8ThdF33ms6TqgLIKt9N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw5JHe%2FbtrLFgJDph8%2FKe8ThdF33ms6TqgLIKt9N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;590&quot; data-filename=&quot;스크린샷 2022-09-08 오전 3.12.24.png&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-08 오전 3.15.09.png&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mTKTK/btrLF3JR3CM/KFQCSjXC3bUOYa3ng95BT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mTKTK/btrLF3JR3CM/KFQCSjXC3bUOYa3ng95BT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mTKTK/btrLF3JR3CM/KFQCSjXC3bUOYa3ng95BT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmTKTK%2FbtrLF3JR3CM%2FKFQCSjXC3bUOYa3ng95BT1%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;655&quot; height=&quot;345&quot; data-filename=&quot;스크린샷 2022-09-08 오전 3.15.09.png&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러므로, likelihood 를 미분하여 극점을 찾으면 그때의 파라미터가 MLE 이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MAP&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bayes 가 말하길,&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;사전에 가지고 있던 &lt;b&gt;&quot;사전 정보&quot;&lt;/b&gt;를 파라미터 추정 과정에 가미할 수 있다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(\theta | D) = \frac{P(D|\theta) P(\theta)}{ P(D)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\textrm{Posterior} = \frac{ \textrm{Likelihood} \times \textrm{Prior Knowledge} }{ \textrm{Normalizing Constant} }$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ \frac{ \theta에 대한 사전정보 \times \theta 가 주어졌을 때 데이터를 관측할 \, \textrm{likelihood}}{데이터가 존재할 확률} $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※Likelihood: 어떤 값이 관측되었을 때 이것이 특정 분포에서 왔을지에 대한 확률 고정 값이 관측 값이다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MLE, Likelihood 에 대한 정리&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://jjangjjong.tistory.com/41&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jjangjjong.tistory.com/41&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662568880849&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;확률(probability)과 가능도(likelihood) 그리고 최대우도추정(likelihood maximization)&quot; data-og-description=&quot;* 우선 본 글은 유투브 채널StatQuest with Josh Starmer 님의 자료를 한글로 정리한 것 입니다. 만약 영어듣기가 되신다면 아래 링크에서 직접 보시는 것을 추천드립니다. 이렇게 깔끔하게 설명한 자료&quot; data-og-host=&quot;jjangjjong.tistory.com&quot; data-og-source-url=&quot;https://jjangjjong.tistory.com/41&quot; data-og-url=&quot;https://jjangjjong.tistory.com/41&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vpEZv/hyPIIVDrmN/rqzbsDVjhjWRymUHGAiKq0/img.png?width=320&amp;amp;height=128&amp;amp;face=0_0_320_128,https://scrap.kakaocdn.net/dn/ckF88y/hyPIzxEHn5/pjwIisEUfVrKLxozFYPgy1/img.png?width=320&amp;amp;height=128&amp;amp;face=0_0_320_128,https://scrap.kakaocdn.net/dn/vqTwj/hyPIOImryw/s1k6QTfKTRDauvCMBDCcCk/img.png?width=700&amp;amp;height=376&amp;amp;face=0_0_700_376&quot;&gt;&lt;a href=&quot;https://jjangjjong.tistory.com/41&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jjangjjong.tistory.com/41&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vpEZv/hyPIIVDrmN/rqzbsDVjhjWRymUHGAiKq0/img.png?width=320&amp;amp;height=128&amp;amp;face=0_0_320_128,https://scrap.kakaocdn.net/dn/ckF88y/hyPIzxEHn5/pjwIisEUfVrKLxozFYPgy1/img.png?width=320&amp;amp;height=128&amp;amp;face=0_0_320_128,https://scrap.kakaocdn.net/dn/vqTwj/hyPIOImryw/s1k6QTfKTRDauvCMBDCcCk/img.png?width=700&amp;amp;height=376&amp;amp;face=0_0_700_376');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;확률(probability)과 가능도(likelihood) 그리고 최대우도추정(likelihood maximization)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;* 우선 본 글은 유투브 채널StatQuest with Josh Starmer 님의 자료를 한글로 정리한 것 입니다. 만약 영어듣기가 되신다면 아래 링크에서 직접 보시는 것을 추천드립니다. 이렇게 깔끔하게 설명한 자료&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jjangjjong.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-08 오전 1.36.59.png&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsY3t/btrLDXdqSeT/G0mVXUGApxkoyQrz3Loju1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsY3t/btrLDXdqSeT/G0mVXUGApxkoyQrz3Loju1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsY3t/btrLDXdqSeT/G0mVXUGApxkoyQrz3Loju1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsY3t%2FbtrLDXdqSeT%2FG0mVXUGApxkoyQrz3Loju1%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;642&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2022-09-08 오전 1.36.59.png&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLIVSA/btrLFIsklMd/1fsmmLz2TscErbLMDlk5LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLIVSA/btrLFIsklMd/1fsmmLz2TscErbLMDlk5LK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;410&quot; data-filename=&quot;스크린샷 2022-09-08 오전 1.37.16.png&quot; style=&quot;width: 54.0758%; margin-right: 10px;&quot; data-widthpercent=&quot;54.71&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLIVSA/btrLFIsklMd/1fsmmLz2TscErbLMDlk5LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLIVSA%2FbtrLFIsklMd%2F1fsmmLz2TscErbLMDlk5LK%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;1406&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZA6im/btrLF3wjFXn/BsNOwDKazjAIqH56jWRpCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZA6im/btrLF3wjFXn/BsNOwDKazjAIqH56jWRpCk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;508&quot; data-filename=&quot;스크린샷 2022-09-08 오전 1.37.25.png&quot; style=&quot;width: 44.7614%;&quot; data-widthpercent=&quot;45.29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZA6im/btrLF3wjFXn/BsNOwDKazjAIqH56jWRpCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZA6im%2FbtrLF3wjFXn%2FBsNOwDKazjAIqH56jWRpCk%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;1442&quot; height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000;&quot;&gt;$P(\theta | D) \propto P(D | \theta) P(\theta)$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(D | \theta) = \theta^{a_{H}} (1 - \theta)^{a_{\tau}}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(\theta) = ?$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Beta distribution&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(\theta) = \frac{\theta^{\alpha - 1} (1-\theta)^{\beta -1}}{B(\alpha, \beta)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$B(\alpha, \beta) = \frac{\Gamma(\alpha) \Gamma(\beta)}{\Gamma{\alpha+\beta}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\Gamma(\alpha) = (\alpha-1)!$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$&amp;nbsp;P(\theta&amp;nbsp;|&amp;nbsp;D)&amp;nbsp;\propto&amp;nbsp;P(D&amp;nbsp;|&amp;nbsp;\theta)&amp;nbsp;P(\theta)&amp;nbsp;$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$&amp;nbsp;\propto&amp;nbsp;\theta^{a_{H}}&amp;nbsp;(1&amp;nbsp;-&amp;nbsp;\theta)^{a_{\tau}}&amp;nbsp;\theta^{\alpha&amp;nbsp;-&amp;nbsp;1}&amp;nbsp;(1-\theta)^{\beta&amp;nbsp;-1}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어차피 betsa distribution 의 $B(\alpha, \beta)$ 는 $\alpha, \beta$ 값에 의해 정해지는 상수이다. 이에 따라 생략한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MLE 과정에서 극점을 통해 미분한 결과 다음과 같은 결과를 얻었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(D | \theta) = \theta^{a_{H}}(1-\theta)^{a_{\tau}}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$$\hat{\theta} = \frac{a_{H}}{a_{\tau}+a_{H}}$$&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;MAP 에서 구하고자 하는 $\theta$ 는 $\hat{\theta} = argmax_{\theta} P(\theta | D)$ 이므로&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$ P(\theta | D)\propto \theta^{a_{H}} (1 - \theta)^{a_{\tau}} \theta^{\alpha - 1} (1-\theta)^{\beta -1}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\hat{\theta} = \frac{a_{H}+\alpha -1}{a_{H} + \alpha + a_{\tau} + \beta - 2}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 MAP 를 정리할 수 있다. 즉 $\alpha, \beta$ 값을 조정해보며 (prior knowledge) MLE 와 다른 결과값을 만들어 볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 시행이 무수히 많아지게 되면 MLE 와 동일한 값이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/242</guid>
      <comments>https://itforfun.tistory.com/242#entry242comment</comments>
      <pubDate>Wed, 28 Sep 2022 17:12:04 +0900</pubDate>
    </item>
    <item>
      <title>베이지안 PYMC3</title>
      <link>https://itforfun.tistory.com/240</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;베이지안 라이브러리가 필요한 이유&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;베이지안이 어려운 이유는 실제로 conjugate distribution 을 찾기 어렵기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이로 인해 MCMC 샘플링을 사용하는 방식을 많이 사용하고 대표적인 library 로 PYMC3 가 있다. 복잡한 과정을 모두 대신해준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생각보다 듀토리얼이 없어서 아주 간단한 이론적 배경과 사용법을 정리해본다. &lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;해당 글을 읽었을 때의 유익&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;저자는 본 글을 읽고나서 베이지안 사고방식이 어떤 의미인지, 그리고 해당 사고방식을 어떻게 접목해야하는지 깨달을 수 있는 기회가 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 내용은 &lt;a style=&quot;color: #000000;&quot; href=&quot;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664265977870&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Jupyter Notebook Viewer&quot; data-og-description=&quot;The above code has just gathered 200,000 credible samples of $\mu$ by traversing over the areas of high likelihood of the posterior distribution of $\mu$. The below plot (left) shows the distribution of values collected for $\mu$. The mean of this distribu&quot; data-og-host=&quot;nbviewer.org&quot; data-og-source-url=&quot;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&quot; data-og-url=&quot;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nbviewer.org/github/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%201.%20Estimating%20model%20parameters.ipynb&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Jupyter Notebook Viewer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The above code has just gathered 200,000 credible samples of $\mu$ by traversing over the areas of high likelihood of the posterior distribution of $\mu$. The below plot (left) shows the distribution of values collected for $\mu$. The mean of this distribu&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nbviewer.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 대부분 참고하였다. 본 글이 이해가 잘 가지 않는다면 위 글을 읽는 것을 추천한다.&amp;nbsp;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;베이지안 통계학자들은 어떤 사고방식을 가지고 있을까?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 시나리오가 있다고 생각해보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 소년이 집 앞을 지나가는 자동차를 매일 관찰하였다. 그는 매일 스쳐간 자동차의 수를 노트에 기록하였고 한주가 지나자 소년의 노트에는 2, 33, 20, 29, 20, 30, 18 의 수가 기록되었다.&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터가 관측이 완료되었다. 즉, 이로 인해 생성되는 parameter는 고정되었고 그 값이 바뀌지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만, 베이지안 통계학자들은 확률 분포를 사용하여 데이터를 통해 고정된 파라미터의 &lt;b&gt;uncertainty 를 나타내고자 한다.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소년의 행위는 포아산 분포를 통해 데이터를 모델링 할 수 있는 흔한 상황이다. (포아산 분포에 대해서는 따로 언급하지 않는다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포아산 분포는 $\mu$ 라는 parameter 하나로 데이터의 평균과 분산 모두를 설명한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$p(x \ | \ \mu) = \frac{e^{-\mu}\mu^{x}} {x!} \mbox{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} x = 0, 1, 2, \cdots$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래는 각각 다른 $\mu$ 를 가진 세 가지의 포아산 분포 예시이다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664266655334&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fig = plt.figure(figsize=(11,3))
ax = fig.add_subplot(111)
x_lim = 60
mu = [5, 20, 40]
for i in np.arange(x_lim):
    plt.bar(i, stats.poisson.pmf(mu[0], i), color=colors[3])
    plt.bar(i, stats.poisson.pmf(mu[1], i), color=colors[4])
    plt.bar(i, stats.poisson.pmf(mu[2], i), color=colors[5])
    
_ = ax.set_xlim(0, x_lim)
_ = ax.set_ylim(0, 0.2)
_ = ax.set_ylabel('Probability mass')
_ = ax.set_title('Poisson distribution')
_ = plt.legend(['$\mu$ = %s' % mu[0], '$\mu$ = %s' % mu[1], '$\mu$ = %s' % mu[2]])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ce6tmv/btrM8IFRK19/blJotcFKKvZ45XHz7wpdyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ce6tmv/btrM8IFRK19/blJotcFKKvZ45XHz7wpdyK/img.png&quot; data-alt=&quot;각 $\mu$ 값에 의해 결정된 평균과 분산을 확인할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ce6tmv/btrM8IFRK19/blJotcFKKvZ45XHz7wpdyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fce6tmv%2FbtrM8IFRK19%2FblJotcFKKvZ45XHz7wpdyK%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;942&quot; height=&quot;294&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;각 $\mu$ 값에 의해 결정된 평균과 분산을 확인할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이제 실전으로 들어가보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주어진 데이터: 메세지를 응답하는데 걸리는 시간과 걸린 시간에 따른 답장 메세지 개수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리는 이 데이터로 포아산 분포를 모델링 하고, parameter $\mu$를 찾을 수 있다. 해당 parameter를 추정할 수 있는 두가지 방식이 있다: 빈도주의 방식, 베이지안 방식. 두 방식으로 parameter를 추정해보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664267171176&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fig = plt.figure(figsize=(11,3))
_ = plt.title('Frequency of messages by response time')
_ = plt.xlabel('Response time (seconds)')
_ = plt.ylabel('Number of messages')
_ = plt.hist(messages['time_delay_seconds'].values, 
             range=[0, 60], bins=60, histtype='stepfilled')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCXI1s%2FbtrNba9LZzI%2F684OmJVad1iXOKtj0pAxwk%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;929&quot; height=&quot;318&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;318&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$\mu$ 를 추정하는 빈도주의적 방법&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;빈도주의자는 포아산 분포의 $\mu$ 를 어떻게 추정할까?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서는 함수의 likelihood를 최대로 하기 위하여 최적화 테크닉을 사용한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 &lt;b&gt;poisson_logprob()&lt;/b&gt; 함수는 &lt;b&gt;포아산 모델과&lt;/b&gt;&amp;nbsp;&lt;b&gt;parameter 값이 주어질 때&lt;/b&gt;&amp;nbsp;관측된 데이터의 총 likelihood를 return 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;opt.minimize_scalar &lt;/b&gt;함수는 주어진 관측 데이터로부터 가장 신뢰할 만한 $\mu$ (log likelihood 를 최대화하는) 를 찾는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 최적화 테크닉은 가능한 $\mu$를 interate하며 가장 높은 likelihood를 갖는 최적의 $\mu$ 를 찾아낸다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664267715344&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y_obs = messages['time_delay_seconds'].values

def poisson_logprob(mu, sign=-1):
    return np.sum(sign*stats.poisson.logpmf(y_obs, mu=mu))

freq_results = opt.minimize_scalar(poisson_logprob)
%time print(&quot;The estimated value of mu is: %s&quot; % freq_results['x'])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;출력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;The estimated value of mu is: 18.2307692324
CPU times: user 90 &amp;micro;s, sys: 45 &amp;micro;s, total: 135 &amp;micro;s
Wall time: 101 &amp;micro;s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;측정된 $\mu$ 는 &lt;span style=&quot;background-color: #ffffff;&quot;&gt;18.0413533867 이다. 이 최적화 테크닉은 매우 효율적으로 특정 값을 찾아 제공한다. 다만 &lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;b&gt;uncertainty&lt;/b&gt; 에 대한 지표는 제공하지 못한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;(stats.poisson.logpmf 는 포아산 질량 함수에 log 를 취한 값을 return 한다. 각 값을 joint probability 한 결과를 얻는 것과 동일한데, log 를 취했다보니 곱대신 합이다. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;바로 아래의 포아산 질량 함수를 참고해보자.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$p(x \ | \ \mu) = \frac{e^{-\mu}\mu^{x}} {x!} \mbox{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} x = 0, 1, 2, \cdots$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 차트는 우리가 최적화 하는 함수를 시각화한 결과이다. 주어진 데이터와 모델에서 $\mu$ 의 값의 변화에 따른 log probability 를 확인할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;optimizer 는 마치 언덕을 올라가듯 작동한다 - 커브의 랜덤한 점에서 시작하여 더 올라갈 수 없는 지점까지 점진적으로 등산한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664268218586&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;x = np.linspace(1, 60)
y_min = np.min([poisson_logprob(i, sign=1) for i in x])
y_max = np.max([poisson_logprob(i, sign=1) for i in x])
fig = plt.figure(figsize=(6,4))
_ = plt.plot(x, [poisson_logprob(i, sign=1) for i in x])
_ = plt.fill_between(x, [poisson_logprob(i, sign=1) for i in x], 
                     y_min, color=colors[0], alpha=0.3)
_ = plt.title('Optimization of $\mu$')
_ = plt.xlabel('$\mu$')
_ = plt.ylabel('Log probability of $\mu$ given data')
_ = plt.vlines(freq_results['x'], y_max, y_min, colors='red', linestyles='dashed')
_ = plt.scatter(freq_results['x'], y_max, s=110, c='red', zorder=3)
_ = plt.ylim(ymin=y_min, ymax=0)
_ = plt.xlim(xmin=1, xmax=60)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba2ehS/btrNa2cRpf8/kScPuokH0MAzF82cZ6mfFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba2ehS/btrNa2cRpf8/kScPuokH0MAzF82cZ6mfFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba2ehS/btrNa2cRpf8/kScPuokH0MAzF82cZ6mfFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba2ehS%2FbtrNa2cRpf8%2FkScPuokH0MAzF82cZ6mfFK%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;584&quot; height=&quot;398&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 과정은 parameter $\mu$ 를 &lt;b&gt;18로 추정&lt;/b&gt;하였다. 포아산 분포의 parameter $\mu$ 는 &lt;b&gt;평균과 분산&lt;/b&gt;을 &lt;b&gt;동시에&lt;/b&gt; 나타낸다. 아래 차트는 해당 분포를 시각화한 결과이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664268337911&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fig = plt.figure(figsize=(11,3))
ax = fig.add_subplot(111)
x_lim = 60
mu = np.int(freq_results['x'])
for i in np.arange(x_lim):
    plt.bar(i, stats.poisson.pmf(mu, i), color=colors[3])
    
_ = ax.set_xlim(0, x_lim)
_ = ax.set_ylim(0, 0.1)
_ = ax.set_xlabel('Response time in seconds')
_ = ax.set_ylabel('Probability mass')
_ = ax.set_title('Estimated Poisson distribution for Hangout chat response time')
_ = plt.legend(['$\lambda$ = %s' % mu])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLYfyH/btrNb8Kp1Nb/uXj8cmtlUcOcX9FMfRREo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLYfyH/btrNb8Kp1Nb/uXj8cmtlUcOcX9FMfRREo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLYfyH/btrNb8Kp1Nb/uXj8cmtlUcOcX9FMfRREo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLYfyH%2FbtrNb8Kp1Nb%2FuXj8cmtlUcOcX9FMfRREo1%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;942&quot; height=&quot;318&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포아산 모델과 측정된 $\mu$ 는 &lt;b&gt;10보다 작거나 30보다 큰 관측치&lt;/b&gt;가 낮은 확률로 존재할 수도 있다는 것을 보여준다. 대부분의 확률 밀도는 10과 30 사이에 위치한다. 하지만, 우리는 이 결과가 우리가 관측한 결과와 다르다는 것을 알 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CXI1s/btrNba9LZzI/684OmJVad1iXOKtj0pAxwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCXI1s%2FbtrNba9LZzI%2F684OmJVad1iXOKtj0pAxwk%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;929&quot; height=&quot;318&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$\mu$ 를 추정하는 베이지안 방법&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$\overbrace{p(\mu \ |\ Data)}^{\text{posterior}} = \dfrac{\overbrace{p(Data \ | \ \mu)}^{\text{likelihood}} \cdot \overbrace{p(\mu)}^{\text{prior}}}{\underbrace{p(Data)}_{\text{marginal likelihood}}}$$a&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;간단하게 위 식에 대해 이해해보자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(marginal likelihood 는 발생할 수 있는 &lt;b&gt;모든 경우의 확률&lt;/b&gt;을 의미한다. 즉 발생할 수 있는 모든 경우를 분포로 그려본다면 이 때 해당하는 너비이다. )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TqcGP/btrNdqciU8V/WDkTpArjGxc9Wz3a52fYR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TqcGP/btrNdqciU8V/WDkTpArjGxc9Wz3a52fYR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TqcGP/btrNdqciU8V/WDkTpArjGxc9Wz3a52fYR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTqcGP%2FbtrNdqciU8V%2FWDkTpArjGxc9Wz3a52fYR0%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;473&quot; height=&quot;484&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;762&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림은 다음과 같이 해석될 수 있다. (위 그림의 아래부터 대응된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관측을 통해 데이터를 얻는다. ($y_{i}$)&lt;/li&gt;
&lt;li&gt;관측된 데이터는 알 수 없는 어떠한 과정을 통해 생성 되었다. 하지만 우리는 이 과정이 포아산 분포를 통해 나타낼 수 있다고 믿는다. (Likelihood)&lt;/li&gt;
&lt;li&gt;포아산 분포는 parameter를 한개 갖는다. ($\mu$ ) $\mu$는 0 ~ 60 사이 값이다. (Prior)&lt;/li&gt;
&lt;li&gt;우리는 Prior $\mu$ 를 uniform 분포로 모델링한다. 이는 $\mu$ 가 해당 범위내 어디쯤에 어느정도 위치할지 예상할 수 없기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;놀라운 MCMC 의 메커니즘&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The process of Markov Chain Monte Carlo (MCMC) is nicely illustrated in the below animation. The MCMC sampler draws parameter values from the prior distribution and computes the likelihood that the observed data came from a distribution with these parameter values.&lt;/p&gt;
&lt;div&gt;Markov Chain Monte Carlo (MCMC)의 과정은 아래 에니메이션 시각화를 통해 살펴볼 수 있다. MCMC &lt;b&gt;sampler&lt;/b&gt;는 prior 분포로부터 parameter 값들을 뽑고 이 파라미터 값들을 갖는 분포로부터 관측한 데이터가 나올 수 있는 likelihood를 계산한다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$$\overbrace{p(\mu&amp;nbsp;\&amp;nbsp;|\&amp;nbsp;Data)}^{posterior}&amp;nbsp;\varpropto&amp;nbsp;\overbrace{p(Data&amp;nbsp;\&amp;nbsp;|&amp;nbsp;\&amp;nbsp;\mu)}^{likelihood}&amp;nbsp;\cdot&amp;nbsp;\overbrace{p(\mu)}^{prior}$$&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 공식은 MCMC sampler 을 이끄는 한줄기 빛 역할을 한다. MCMC sampler 가 prior 에서 &lt;b&gt;parameters&lt;/b&gt; 를 뽑아낸 이후,&amp;nbsp; 주어진 데이터에 대하여 prior에서 뽑아낸&amp;nbsp;&lt;b&gt;parameters&lt;/b&gt;의 likelihood를 계산한다. (그리고 sampler를 더 높은 확률의 영역으로 향하도록 이끈다.)&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;사전에 언급했던 빈도주의적 최적화 테크닉과 개념적으로 유사한 면이 있다. MCMC sampler 도 더 높은 확률의 likelihood 영역을 향해 해맨다. 그러나 베이지안 방법은 절대적 최대치 값을 찾는 것보다 확률이 가장 높은 영역의 sample들을 탐색하고 모으는 것에 관심이 있다. 이렇게 하여 얻은 모든 sample들은 믿을 만한 parameter로 고려된다.&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;mcmc-animate.gif&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5NPmA/btrNbXo6HI2/rBwhgIiql2IraPqdXFhHP1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5NPmA/btrNbXo6HI2/rBwhgIiql2IraPqdXFhHP1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5NPmA/btrNbXo6HI2/rBwhgIiql2IraPqdXFhHP1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/5NPmA/btrNbXo6HI2/rBwhgIiql2IraPqdXFhHP1/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;700&quot; height=&quot;350&quot; data-filename=&quot;mcmc-animate.gif&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1664275704256&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;with pm.Model() as model:
    mu = pm.Uniform('mu', lower=0, upper=60)
    likelihood = pm.Poisson('likelihood', mu=mu, observed=messages['time_delay_seconds'].values)
    
    start = pm.find_MAP()
    step = pm.Metropolis()
    trace = pm.sample(200000, step, start=start, progressbar=True)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Applied interval-transform to mu and added transformed mu_interval_ to model.
  2%|▏         | 3769/200000 [01:13&amp;lt;1:05:21, 50.04it/s]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;( 정리하자면, 만약 사전분포의 분산이 커서 precision 이 낮아지게 되면 prior 에서 뽑는 parameter 의 value 의 범위도 넓어지게 되고, 이러면 관측 데이터의 likelihood를 찾을 수 있는 범위가 넓어져 관측 데이터에 영향을 더욱 많이 받게 되는 것으로 보인다. 반면 분산이 작아 precision 이 크게되면 prior 에서 뽑는 parameter 의 value 의 범위도 좁아지고 관측 데이터의 likelihood를 찾을 수 있는 범위도 좁아져 관측 데이터에 영향을 거의 받지 않고 사전 정보에 남아있게 되는 것으로 보인다. )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;상단의 코드는 높은 likelihood의 $\mu$ 사후 분포를 탐색하여 200,000개의 믿을만한 $\mu$ sample 을 수집했다. 하단의 왼쪽 차트는 $\mu$ 를 위해 수집된 분포를 보여준다. 해당 분포의 평균은 빈도주의 방식의 예측값과 거의 동일하다. 그러나, 이 뿐 만이 아니라 uncertainty 측정값 또한 얻을 수 있고, 이를 통해 $\mu$는 17 ~ 19 사이에 충분히 믿을 만한 값들이 존재함을 알 수 있다. 추후 다루겠지만 uncertainty 값은 정말 중요하다.&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&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;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;초기 sample 버리기&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 MCMC code 의 pm.find_MAP() 에 대하여 간략하게 설명해본다. MAP 은 Maximum a posteriori estimation 을 뜻한다. MCMC sampler 가 sampling을 시작하기 좋은 위치를 찾을 수 있도록 돕는다. 이상적으로는 likelihood 가 높은 영역에서 모델을 시작하지만, 때때로는 이런 일은 일어나지 않는다. 이에 따라, 초기에 수집된 samples 은 종종 버려진다. (이를 burnin samples 라 한다.)&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1664277770218&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;_ = pm.traceplot(trace, varnames=['mu'], lines={'mu': freq_results['x']})&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1664277778547&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fig = plt.figure(figsize=(11,3))
plt.subplot(121)
_ = plt.title('Burnin trace')
_ = plt.ylim(ymin=16.5, ymax=19.5)
_ = plt.plot(trace.get_values('mu')[:1000])
fig = plt.subplot(122)
_ = plt.title('Full trace')
_ = plt.ylim(ymin=16.5, ymax=19.5)
_ = plt.plot(trace.get_values('mu'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjGqrA/btrNdrvKzyC/krphTkg2TnwvE2fNcvjUEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjGqrA/btrNdrvKzyC/krphTkg2TnwvE2fNcvjUEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjGqrA/btrNdrvKzyC/krphTkg2TnwvE2fNcvjUEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjGqrA%2FbtrNdrvKzyC%2FkrphTkg2TnwvE2fNcvjUEk%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;671&quot; height=&quot;211&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;211&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;h3 id=&quot;Model-convergence&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Model convergence&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 모델이 $\mu$의 값을 추정했다고 해서 모델이 꼭 주어진 데이터에 대해서 좋은 결과를 찾았다는 뜻은 아니다. 몇가지 추천할만한 확인 과정이 있다. 첫번째로, output 의 trace 를 확인해본다. trace가 확확 뛰어야 하며 마치 송충이 같아 보여야한다. 만약 trace 가 위아래로 움직이는 뱀 흔적처럼 보이거나 한 곳에 갇힌것처럼 보이면 수렴 문제가 있거나, MCMC sampler 의 결과물이 믿을 만 하지 않은 것일 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;Autocorrelation-plot&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Autocorrelation plot&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 확인 해볼 수 있는 방법은 autocorrelation test 이다. 이는 연속적인 MCMC sampling chain 의 sample들 간의 correlation을 측정하는 방법이다. sample들이 서로 낮은 correlation을 가지고 있으면 높은 correlation을 일 때보다 parameter 측정 값에 새로운 정보를 더하는 모양이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시각적으로 보면 상대적으로 빠르게 0으로 감소한 다음 0 상관관계 위아래로 진동하는 autocorrelation 차트가 우리가 원하는 결과이다. 만약 autocorrelation 차트가 떨어지지 않으면 주로 혼합 불량 신호이므로 모델을 다시 선정하고 (ex. likelihood) 샘플링 방식 (ex. matropolis)도 다시 고려해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;_ = pm.autocorrplot(trace[:2000], varnames=['mu'])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O2s5C/btrNcZTOdlq/qiGQDQk7BzfhvNCxclliKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O2s5C/btrNcZTOdlq/qiGQDQk7BzfhvNCxclliKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O2s5C/btrNcZTOdlq/qiGQDQk7BzfhvNCxclliKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO2s5C%2FbtrNcZTOdlq%2FqiGQDQk7BzfhvNCxclliKk%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;736&quot; height=&quot;174&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;174&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;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/240</guid>
      <comments>https://itforfun.tistory.com/240#entry240comment</comments>
      <pubDate>Tue, 27 Sep 2022 20:59:44 +0900</pubDate>
    </item>
    <item>
      <title>베이즈 아주 얕은 정리</title>
      <link>https://itforfun.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이즈를 활용해서 연구도 해봤고, 어느정도 이해했다고는 생각하지만 항상 약간만 깊이 들어가면 내가 아무것도 모르는 구나를 깨닫게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이론적으로 완벽할 필요는 없지만 어느정도 구조에 대한 파악이 필요하다고 생각한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 블로그는 웹서핑 과정 중에서 만난 여지껏 어떤 블로그보다 베이즈에 대한 개괄을 잘 작성해놓은 블로그이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 글은 내 &lt;b&gt;사전지식&lt;/b&gt;에 맞춰 좀 덜거나 더해 작성되었기에 해당 글을 읽는 것보다 아래의 블로그 글을 읽는 것이 더 좋을 것 같다. 물론 나랑 사전 지식이 비슷하다면 이 글이 오히려 좋을 수도 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://posterior.egloos.com/9606941&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://posterior.egloos.com/9606941&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663226029381&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;베이즈 정리 (일반적 형태)&quot; data-og-description=&quot;앞의 글들에서 베이즈 정리의 의미와 그 사용 예시를 살펴보았다. 이제 본격적인 베이지안 추론의 예를 접하기 전에, 베이즈 정리의 형태를 일반적인 경우로 확장할 필요가 있다.&amp;nbsp; 앞의 글에서&quot; data-og-host=&quot;posterior.egloos.com&quot; data-og-source-url=&quot;http://posterior.egloos.com/9606941&quot; data-og-url=&quot;http://posterior.egloos.com/9606941&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvNKtp/hyPMYFg4vr/fTE2E835NEoh6MLU7T6R8K/img.png?width=412&amp;amp;height=123&amp;amp;face=0_0_412_123&quot;&gt;&lt;a href=&quot;http://posterior.egloos.com/9606941&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://posterior.egloos.com/9606941&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvNKtp/hyPMYFg4vr/fTE2E835NEoh6MLU7T6R8K/img.png?width=412&amp;amp;height=123&amp;amp;face=0_0_412_123');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;베이즈 정리 (일반적 형태)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;앞의 글들에서 베이즈 정리의 의미와 그 사용 예시를 살펴보았다. 이제 본격적인 베이지안 추론의 예를 접하기 전에, 베이즈 정리의 형태를 일반적인 경우로 확장할 필요가 있다.&amp;nbsp; 앞의 글에서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;posterior.egloos.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;대부분 글의 표현과 이미지는 위 블로그에서 가져온 것임을 먼저 밝힌다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;베이지안 추론&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이지안 추론은 '주관적 확률'을 사용할 수 있다는 점에서 전통적 절차와 큰 차이점을 지닌다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※&lt;span style=&quot;background-color: #ffffff;&quot;&gt;주관적 확률이란&amp;nbsp;&lt;/span&gt;&lt;b&gt;어떤 사건의 발생 또는 어떤 명제가 참임에 대한 믿음의 정도&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;(degree of belief) 를 0 에서 1 사이의 숫자로 나타낸 것이다. &lt;span style=&quot;background-color: #ffffff;&quot;&gt;이를테면 동전을 하나 던졌을 때 앞면이 나올 확률이 0.5라고 말하는 것은 '앞면과 뒷면이 나올 가능성은 동일하다' 라는 믿음을 반영하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;배경 지식을 반영할 수 있다는 엄청난 이점과, 이를 통해 여러 '주관적 확률 가설' 중 어느것이 더 확률적으로 그럴듯한지 비교해볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;대표적인 예시로 장마철 기상청은 장마 시기의 비올 확률이라는 사전 지식을 예측에 활용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;최근 예측 결과가 좀 좋지 않은데 여러 가설을 이용해보거나, 아예 사전 지식을 빼보면 어떨까?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;베이즈 정리&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;모든&amp;nbsp;&lt;b&gt;베이지안&amp;nbsp;통계분석&amp;nbsp;절차&lt;/b&gt;는&amp;nbsp;&lt;b&gt;베이즈&amp;nbsp;정리&lt;/b&gt;의 특수한 적용 사례에 불과하다. &lt;span style=&quot;background-color: #ffffff;&quot;&gt;베이즈정리의 토대가 되는 개념인&amp;nbsp;&lt;/span&gt;&lt;b&gt;조건부확률&lt;/b&gt;을 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;※&lt;span style=&quot;background-color: #ffffff;&quot;&gt;조건부확률이란 어떤 사건(명제)이'참'일 때 다른 사건(명제)이 참일 확률을 의미한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;'동전이 공평함' 이라는 전제 하에 동전이 앞면이 나올 확률이 0.5&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;P('앞면'&amp;nbsp;|&amp;nbsp;'공평한&amp;nbsp;동전')&amp;nbsp;=&amp;nbsp;0.5&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;'동전이 심하게 굽음' 전제 하에 앞면이 나올 확률이 0.8&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;P('앞면' | '굽은 동전') = 0.8&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;조건부확률의&amp;nbsp;개념을&amp;nbsp;토대로,&amp;nbsp;베이즈정리는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;공식으로&amp;nbsp;표현된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(A|B) = \frac{ P(B|A) \times P(A) }{ P(B) }$$&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$P(A|B)$ : &lt;b&gt;사후 확률&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$P(A)$ :&amp;nbsp; B가 참임을 알기 전에 A에 대해 갖고 있던 믿음(확률)을 의미, &lt;b&gt;사전확률&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$P(B|A)$ : &lt;b&gt;우도&lt;/b&gt;, Likelihood&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$P(B)$ : 증거, &lt;b&gt;evidence&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시) &lt;b&gt;동전은 공평한가?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;가설이 두개밖에 없다고 가정하자.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 동전이 공평하다면, 그것이 앞면이 나올 확률은 0.5이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 동전이 공평하지 않다면, 그것이 앞면이 나올 확률은 0.4이다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;2번의 시행에서 뒷면, 뒷면의 결과를 얻었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 동전이 공평할 확률은?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(A|B)$ :&amp;nbsp;&lt;b&gt;사후 확률&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(A)$ :&amp;nbsp; 0.5&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(B|A)$ : 0.5 X 0.5 = 0.25&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$P(B)$ : 0.5 X 0.25 + 0.5 X 0.36&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;분모의 계산은 분자보다 다소 까다롭다. P(B)가 의미하는 것은 'B가 일어날 확률' 인데, 이것을 조금 확장하여 생각하면&amp;nbsp;&lt;/span&gt;&lt;b&gt;모든 가능한 상황에서 B가 일어날(참일) 확률의 합&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이라 볼 수 있다. 그런데 위 경우에서 모든 가능한 상황이란 단 두 가지, 즉 동전이 앞면이 나올 확률이 0.5이거나 0.6인 경우로 제한되었다. 따라서 각각의 상황에서 뒷면이 두 번 나올 확률을 계산하여 더해야 한다. 하지만 여기서 주의할 것은 확률을 그냥 더하면 되는 것이 아니고,&amp;nbsp;&lt;/span&gt;&lt;b&gt;각각의 우도에 사전확률을 가중치로 곱하여 더해야 한다.&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이것은 각각의 가능성에 대한 사전믿음을 반영하는 것이다.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(A|B) = \frac{ P(B|A) \times P(A) }{ P(B) } = \frac{0.5 \times 0.25}{ 0.5 \times 0.25 + 0.5 \times 0.36} \approx 0.41 $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동전이 공평하다는 가능성인 사후확률이 0.41 임을 확인하였다. 상단에서 제시하였지만 사후확률은 여러 가설 중 어떤 가설이 얼마나 현상을 잘 설명하는 가에 대한 지표이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;앞면이 나올 사전 믿음이 0.4인 경우&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$$P(A|B) = \frac{ P(B|A) \times P(A) }{ P(B) } = \frac{0.4 \times 0.36}{ 0.4 \times 0.25 + 0.4 \times 0.36} \approx 0.59 $$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;앞면이 나올 확률이 0.4 라고 믿는 경우가 0.5 라고 믿는 경우보다 뒷면이 2번 연속 나온 것을 (0.59 - 0.41) 만큼 더 잘 설명한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;위 예시는 동전이 앞면이 나올 확률은 0.5이거나 0.6인 경우밖에 없으며, 그 외의 값은 갖지 않는다고 간주했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;그러나 실제로 베이지안 데이터분석을 할 때는 가설이 이와 같이 뚝뚝 떨어진 (이산적인) 경우는 흔치 않다.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;이를테면 동전이 앞면이 나올 확률은 0에서 1 사이의 어느 값이나 가능다고 가정한다. 이런 경우에는 앞에서 설명한 방식으로 베이즈 정리를 사용하는 것은 불가능하다. 따라서 이번 글에서는 그러한 경우에도 일반적으로 사용할 수 있는 베이즈 정리의 형태를 알아보자.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;베이즈 정리의 일반적 형태&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$$P(H|D) = \frac{P(H) P(D|H)} {P(D)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;통계분석 장면에서&amp;nbsp;&lt;/span&gt;&lt;b&gt;가설은 모수치에 대한 어떤 명제를 의미한다. 더 쉽게 말하자면, 통계적 가설은 다음과 같은 형태를 갖는다: '신약의 치료효과는 0과 같다.' '동전이 앞면이 나올 확률은 0.5보다 크다.' 여기서 '신약의 치료효과', '동전이 앞면이 나올 확률' 등은 모수치에 관한 진술로 바꿀 수 있다. 전자의 경우에는 '신약의 치료효과' 를&amp;nbsp;&lt;b&gt;&amp;theta;&lt;/b&gt;로 나타내기로 하면 가설을&amp;nbsp;'&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;theta;=0' 과 같이 나타낼 수 있다. 후자의 경우에도 비슷하게 'p &amp;gt; 0.5' 와 같이 나타낼 수 있다. 다시 말해,&amp;nbsp;&lt;b&gt;가설(H)은 모수치(&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;b&gt;&amp;theta;)에 관한 진술&lt;/b&gt;이다. 따라서 위의 베이즈 정리를 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;$$P(\theta|D) = \frac{P(\theta) P(D|\theta)} {P(D)}$$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OmEAD/btrMdNt7n55/kuWufE3ff7aeCaRvZLdQ5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OmEAD/btrMdNt7n55/kuWufE3ff7aeCaRvZLdQ5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OmEAD/btrMdNt7n55/kuWufE3ff7aeCaRvZLdQ5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOmEAD%2FbtrMdNt7n55%2FkuWufE3ff7aeCaRvZLdQ5k%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;76&quot; data-origin-width=&quot;600&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;위 공식의&amp;nbsp;&lt;/span&gt;&lt;b&gt;분모 P(D) 는 추론 과정에서 중요한 역할을 하지 않는 경우가 많는데,&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; 상수로 취급되기 때문이다. (아마도 적분해서 1) 경우에 따라서는 중요하기도 하다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;P(&amp;theta;|D)는 사후확률(posterior),&amp;nbsp;P(&amp;theta;)는 사전확률(prior), P(D|&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;b&gt;&amp;theta;)는 우도(likelihood)&lt;/b&gt;&amp;nbsp;임을 언급했다. 따라서 분모를 비례상수로 취급하면, 다음과 같은 표현을 얻게 된다:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCPO6H/btrMedsd63B/ZmK8bwbnsI0f6Z292MLnlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCPO6H/btrMedsd63B/ZmK8bwbnsI0f6Z292MLnlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCPO6H/btrMedsd63B/ZmK8bwbnsI0f6Z292MLnlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCPO6H%2FbtrMedsd63B%2FZmK8bwbnsI0f6Z292MLnlK%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;480&quot; height=&quot;55&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;정규분포 베이지안 업데이팅&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;베이지안에서 가장 흔하고, 가장 간단한 형태인 정규- 정규 모형을 살펴보자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이 글에서는&amp;nbsp;&lt;/span&gt;&lt;b&gt;모분산을 이미 알고 있다고 가정하고, 단 하나의 자료를 관측했을 때&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; 모평균에 대한 베이지안 추론을 한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;평균이&amp;nbsp;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;theta;, 분산이&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;sigma;의 제곱인&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;정규분포 확률밀도함수는 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOQGW1/btrMfD4OuSp/He7fiTkpeSikHFhlbQWD7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOQGW1/btrMfD4OuSp/He7fiTkpeSikHFhlbQWD7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOQGW1/btrMfD4OuSp/He7fiTkpeSikHFhlbQWD7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOQGW1%2FbtrMfD4OuSp%2FHe7fiTkpeSikHFhlbQWD7k%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;420&quot; height=&quot;104&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://itforfun.tistory.com/236&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;u&gt;간단하게 수식을 통해 증명 과정&lt;/u&gt;&lt;/a&gt;을 살펴봤으나 생각보다 깨닫게 되는 점은 적다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 우도 (likelihood)에 해당된다. (우도는 P(D|&amp;theta;)로 표현되었음을 상기하자.) 다시 말해 우도는 &lt;b&gt;모수치&lt;/b&gt;가 주어졌을 때 &lt;b&gt;자료(x)의 확률&lt;/b&gt;을 계산하는 데 사용되는 함수이다. (MLE 가 주어진 자료를 가장 잘 관찰할 수 있는 likelihood 를 말한다는 것을 떠올려보라!)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그런데 여기서는 분산이 상수라고 가정했기 때문에, 좌변에서 시그마(&amp;sigma;)를 생략해도 무방하다. 따라서 다음과 같이 다시 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT2Le6/btrMlkko2eG/lF3J7eiVwLrs3FkVxI5eL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT2Le6/btrMlkko2eG/lF3J7eiVwLrs3FkVxI5eL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT2Le6/btrMlkko2eG/lF3J7eiVwLrs3FkVxI5eL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT2Le6%2FbtrMlkko2eG%2FlF3J7eiVwLrs3FkVxI5eL1%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;407&quot; height=&quot;104&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사후확률(사후분포) 을 계산하기 위해서는 사전확률도 필요하다. 사전 확률은 분석가가 사전에 할당하는 내용이다. 우도가&amp;nbsp;정규분포일&amp;nbsp;때&amp;nbsp;흔히&amp;nbsp;사용되는&amp;nbsp;&lt;b&gt;정규사전분포&lt;/b&gt;(normal&amp;nbsp;prior)를&amp;nbsp;사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEPK48/btrMkM2zlOk/jsqpTxw3DkkVvOwRdkOLM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEPK48/btrMkM2zlOk/jsqpTxw3DkkVvOwRdkOLM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEPK48/btrMkM2zlOk/jsqpTxw3DkkVvOwRdkOLM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEPK48%2FbtrMkM2zlOk%2FjsqpTxw3DkkVvOwRdkOLM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;375&quot; height=&quot;106&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위&amp;nbsp;식은&amp;nbsp;모평균(&amp;theta;)에&amp;nbsp;대한&amp;nbsp;사전믿음을&lt;b&gt;&amp;nbsp;평균이&amp;nbsp;m,&amp;nbsp;표준편차가&amp;nbsp;s&lt;/b&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;m이라&amp;nbsp;믿으며,&amp;nbsp;그&amp;nbsp;불확실성이&amp;nbsp;대략&amp;nbsp;s만큼이라고&amp;nbsp;믿는다는&amp;nbsp;것을&amp;nbsp;의미한다.&amp;nbsp;분석가가&amp;nbsp;&lt;b&gt;s에&amp;nbsp;작은&amp;nbsp;값&lt;/b&gt;을&amp;nbsp;할당한다면&amp;nbsp;그것은&amp;nbsp;모평균이&amp;nbsp;&lt;b&gt;m이라는&amp;nbsp;것에&amp;nbsp;대해&amp;nbsp;확신&lt;/b&gt;이&amp;nbsp;있다는&amp;nbsp;것을&amp;nbsp;의미하는&amp;nbsp;것이다.&amp;nbsp;반대로&amp;nbsp;&lt;b&gt;큰&amp;nbsp;s의&amp;nbsp;값은&amp;nbsp;모평균이&amp;nbsp;m이라는&amp;nbsp;믿음에&amp;nbsp;대해&amp;nbsp;확신이&amp;nbsp;그만큼&amp;nbsp;없다는&amp;nbsp;것&lt;/b&gt;을&amp;nbsp;의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;위와 같이 정규분포 우도함수에 정규사전분포를 함께 사용하는 통계모형을&amp;nbsp;&lt;b&gt;정규-정규 모형(normal-normal model)&lt;/b&gt;이라 부른다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래의 식을 상기해보자.&amp;nbsp;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bN9z4W/btrMlUlyoca/vL9wYVnkg2NGVyr66BKemk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bN9z4W/btrMlUlyoca/vL9wYVnkg2NGVyr66BKemk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bN9z4W/btrMlUlyoca/vL9wYVnkg2NGVyr66BKemk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbN9z4W%2FbtrMlUlyoca%2FvL9wYVnkg2NGVyr66BKemk%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;480&quot; height=&quot;55&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 표현을 위에 적용하면 다음과 같은 결과를 얻게 된다. 편의상 사전분포와 우도의 순서를 바꾸었다. (x가 데이터, D에 해당된다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKxwtG/btrMkOeZYKE/OOarBLUT4kEn2s4f11bark/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKxwtG/btrMkOeZYKE/OOarBLUT4kEn2s4f11bark/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKxwtG/btrMkOeZYKE/OOarBLUT4kEn2s4f11bark/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKxwtG%2FbtrMkOeZYKE%2FOOarBLUT4kEn2s4f11bark%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;89&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 식을&amp;nbsp;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;theta;에 대한 함수(확률밀도함수)로 보&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;고, 이런저런 복잡한 계산과정을 거치면 다음과 같이 정리가 된다. (구체적인 계산 과정은 생략한다. )&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zxR6Z/btrMjuaOfhr/65H95jKnrBujZ4FtsXsDfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zxR6Z/btrMjuaOfhr/65H95jKnrBujZ4FtsXsDfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zxR6Z/btrMjuaOfhr/65H95jKnrBujZ4FtsXsDfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzxR6Z%2FbtrMjuaOfhr%2F65H95jKnrBujZ4FtsXsDfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;111&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;수식이 매우 복잡하게 보인다. 하지만 개념적으로만 접근해 보자. 위 식 자체도 사실 정규분포의 공식처럼 보인다. 좀 더 구체적으로는, 위 식은 &lt;b&gt;x가 주어졌을 때&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;b&gt;&amp;theta; 가 정규분포를 따른다&lt;/b&gt;는 것을 의미하는데, 이는 &lt;b&gt;모평균에 대한 사후믿음이 정규분포임을 의미한다.&lt;/b&gt; (이는 사전분포로 정규분포를 사용한 결과다.)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;(정규분포 확률밀도함수랑 비교했을 때 $\sqrt{2\pi}$ 가 생략되었으나 아래 글에 따르면 이는 normalizing constant 라 한다.)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://math.stackexchange.com/questions/3181774/what-is-the-purpose-of-frac1-sigma-sqrt2-pi-in-frac1-sigma-sqrt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://math.stackexchange.com/questions/3181774/what-is-the-purpose-of-frac1-sigma-sqrt2-pi-in-frac1-sigma-sqrt&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(정규분포 밀도함수 숨은 의미)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://basicstatistics.tistory.com/entry/%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC%EC%9D%98-%ED%99%95%EB%A5%A0%EB%B0%80%EB%8F%84%ED%95%A8%EC%88%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://basicstatistics.tistory.com/entry/%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC%EC%9D%98-%ED%99%95%EB%A5%A0%EB%B0%80%EB%8F%84%ED%95%A8%EC%88%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;한편 정규분포 공식(밀도함수)의 형태를 참조하면, 위 식에서 &lt;b&gt;사후분포의 평균과 분산&lt;/b&gt;은 다음과 같음을 알 수 있다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W0M1q/btrMlcGJ2Je/9YvsrVHwz7WNHWsJHPZyXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W0M1q/btrMlcGJ2Je/9YvsrVHwz7WNHWsJHPZyXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W0M1q/btrMlcGJ2Je/9YvsrVHwz7WNHWsJHPZyXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW0M1q%2FbtrMlcGJ2Je%2F9YvsrVHwz7WNHWsJHPZyXk%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;300&quot; height=&quot;194&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;m' 은 사후분포의 평균,&amp;nbsp;s' 은 사후분포의 분산을 나타낸다. 다시 말해, x라는 하나의 데이터를 관찰했을 때, 우리의 모평균(&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;theta;) 에 대한 믿음은 다시 정규분포로 기술될 수 있으며, 그 평균과 분산은 각각 m' 와 s' 가 된다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실 위 업데이트 과정은 베이지안 추론 일반에 적용되는 아주 중요한 의미를 담고 있다.&amp;nbsp;&lt;b&gt;베이지안 추론은 사전믿음(사전분포)와 데이터에서 획득된 정보 사이의 타협이라는 것이다.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;베이지안&amp;nbsp;업데이팅에&amp;nbsp;내포된&amp;nbsp;의미&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Precision&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;베이지안 통계학에서는 정규분포에 대해 이야기할 때,&amp;nbsp;&lt;/span&gt;&lt;b&gt;precision&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;이라는 개념을 분산 대신 사용할 때가 많다. 여기서는 이를 '정밀도' 와 비슷한 개념이라 생각하기로 하자.&amp;nbsp;&lt;/span&gt;&lt;b&gt;precision은 분산의 역수&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;로 정의한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSApYC/btrMkNApIDe/KCG8g4hmQZSZkFMGfcMd80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSApYC/btrMkNApIDe/KCG8g4hmQZSZkFMGfcMd80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSApYC/btrMkNApIDe/KCG8g4hmQZSZkFMGfcMd80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSApYC%2FbtrMkNApIDe%2FKCG8g4hmQZSZkFMGfcMd80%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;305&quot; height=&quot;138&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff;&quot;&gt;통계학에서는 흔히 분산을 불확실성의 척도로 본다. 그런데 위 식을 보면 알 수 있지만, 분산이 커질수록 precision은 감소한다. 극단적인 경우, 분산이 무한대가 되면 precision은 0이 되고, 반대로 분산이 0에 가까워지면 precision은 무한대가 된다. 따라서&amp;nbsp;&lt;/span&gt;&lt;b&gt;precision이 클수록 불확실성이 작다&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 의미가 된다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그런데 앞의 글에서 베이지안 업데이팅에 대해 이야기할 때, &lt;b&gt;모평균에 대한 분산의 업데이트 결과&lt;/b&gt;는 다음과 같다는 것을 확인했다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bonJZg/btrMlWcAofA/ERp9eOmKakd5tmFgiHWOi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bonJZg/btrMlWcAofA/ERp9eOmKakd5tmFgiHWOi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bonJZg/btrMlWcAofA/ERp9eOmKakd5tmFgiHWOi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbonJZg%2FbtrMlWcAofA%2FERp9eOmKakd5tmFgiHWOi1%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;288&quot; height=&quot;119&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사후분산(s' 의 제곱)의 역수는 &lt;b&gt;사전분산&lt;/b&gt;(s의 제곱)의 역수에 &lt;b&gt;자료 분산&lt;/b&gt;의 역수를 더한 것과 같다. 그런데 방금 precision은 분산의 역수라고 말했다. 따라서 앞의 진술을 다시 표현하면, 사후분포의 precision은 사전분포의 precision 과 자료의 precision의 합으로 나타낼 수 있다. (&lt;b&gt;precision은 가법적 additive 이다.&lt;/b&gt;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이것의 함의는 무엇인가? 만약 자료의 precision에 비해 사전분포의 precision 이 매우 크다면, 자료의 precision(분산)은 사후분포의 precision에 별 영향을 끼치지 못할 것이다. 그런데 큰 precision은 사전분포에 대한 강한 믿음을 반영한다. 이는&amp;nbsp;&lt;b&gt;강한 사전믿음일수록(사전분포가 강할수록) 자료에 의해 영향을 덜 받는다&lt;/b&gt;는 것을 의미한다. 반대로 사전분포에 대한 확신이 작다면 사전분포의 precision은 작아질 것이고, 따라서 사후 precision은 사전 precision보다는 자료의 precision에 더 큰 영향을 받게 된다. 이 사실은 향후에 사전분포를 만드는 방법에 대해 논의할 때 다시 등장하게 될 것이다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번에는 모평균에 대한 사후분포의 평균을 살펴보자. 정규-정규 모형에서 사후분포의 평균 (m') 은 다음과 같았다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqi4p/btrMjEdpSk3/B6MI1oViaSFLLC8KnwaiI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqi4p/btrMjEdpSk3/B6MI1oViaSFLLC8KnwaiI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqi4p/btrMjEdpSk3/B6MI1oViaSFLLC8KnwaiI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqqi4p%2FbtrMjEdpSk3%2FB6MI1oViaSFLLC8KnwaiI1%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;284&quot; height=&quot;145&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 분자를 좀 더 자세히 들여다보자. 분자는 다음과 같이 다시 표현할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/82olI/btrMjcgbxaG/JpmdM45kalTXzKqG3hKQy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/82olI/btrMjcgbxaG/JpmdM45kalTXzKqG3hKQy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/82olI/btrMjcgbxaG/JpmdM45kalTXzKqG3hKQy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F82olI%2FbtrMjcgbxaG%2FJpmdM45kalTXzKqG3hKQy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;283&quot; height=&quot;131&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이것은 무엇을 의미하는가? 사후분포의 평균은 결국 자료(x)와 사전분포의 평균(m)에 의해 결정되는데, 각각에는 가중치가 곱해진다. 그런데 그 가중치들을 자세히 보면, 결국 앞서 이야기했던 precision 들이다. x와 m은 각각의 precision을 가중치로 받는 것이다. 또한 사전분포의 precision 이 클수록 사전평균(m)이 사후평균에 기여하는 정도가 커지고, 자료의 precision이 클수록 자료(x)가 사후평균에 기여하는 정도가 커진다. 따라서 이것은&amp;nbsp;&lt;b&gt;사전분포나 자료에 대한 확신이 강할수록 그것이 사후적 판단에 끼치는 영향이 더 커야 한다&lt;/b&gt;는 우리의 직관을 잘 반영한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 가지 더 확인할 수 있는 것은 이 글 서두에서 말한,&amp;nbsp;&lt;b&gt;베이지안 업데이팅은 자료와 사전믿음 사이의 타협&lt;/b&gt;이라는 것이다. 위 식이 의미하는 것은, 결국 사후믿음(분포)은 자료와 사전믿음의 가중된 합이라는 것이다. 극단적인 경우, 자료의 precision이 0인 경우에는 사후평균은 전적으로 사전평균에 의해 결정된다. 반대로 사전분포의 precision이 0인 경우에는 사후평균은 자료에 의해 전적으로 결정된다. 그러나 두 precision이 모두 0이 아니라면, 사후평균은 x와 m 사이의 어떤 값이 될 것이다. 이는 베이지안 업데이팅이 자료와 사전믿음 사이의 타협이라는 결과를 낳음을 보여 준다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 결과는 앞으로도 반복하여 등장할, 베이지안 통계에 내재되어 있는 일종의 '철학' 이라고 간주해도 좋다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여러 자료로 구성된 표본을 갖고 있는 경우에 대해 예를 들어보자. (이 자료들은 공통의 정규분포에 왔으며, 각각은 독립이라고 가정한다.)&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;언제나 그렇듯, 베이지안 통계분석의 출발은 아래의 표현이다:&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/163kS/btrMkRivVx0/uJJwFnbXTbDHskoLYKZCk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/163kS/btrMkRivVx0/uJJwFnbXTbDHskoLYKZCk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/163kS/btrMkRivVx0/uJJwFnbXTbDHskoLYKZCk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F163kS%2FbtrMkRivVx0%2FuJJwFnbXTbDHskoLYKZCk0%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;508&quot; height=&quot;78&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시를 위해 정규분포에서 온 크기가 5인 표본 (5.1, 4.8, 4.9, 5.5, 5.3) 이 있다고 하자. 그리고 모분산은 0.1로 알려져 있다고 가정하자. 이 상황에서 &lt;b&gt;정규-정규 모형&lt;/b&gt;을 이용하여 모평균에 대해 베이지안 업데이팅을 하려고 한다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 사전분포를 설정해야 하는데,&amp;nbsp;&lt;b&gt;사전분포의 평균이 4&lt;/b&gt;라고 가정하자. 그리고&amp;nbsp;사전분포의 자의성이 분석에 미치는 영향을 최소화하기 위해 &lt;b&gt;precision 을 아주 작게&lt;/b&gt; 잡도록 하자. 이를테면 여기서는 0.001 로 잡겠다. 이는 모평균이 4라는 믿음에 대한 확신이 비교적 작음을 의미한다. (앞으로도 이와 같이 약한 사전분포를 사용하는 것을 자주 볼 것이다.)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 모평균&amp;nbsp;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;theta;&amp;nbsp;&lt;/span&gt;에 대한 사전믿음(분포)을 다음과 같이 나타낼 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7znn2/btrMjWx4vVq/fZZIGfGYBdR2kbaxVs7Dik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7znn2/btrMjWx4vVq/fZZIGfGYBdR2kbaxVs7Dik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7znn2/btrMjWx4vVq/fZZIGfGYBdR2kbaxVs7Dik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7znn2%2FbtrMjWx4vVq%2FfZZIGfGYBdR2kbaxVs7Dik%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;340&quot; height=&quot;111&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제는 우도를 결정해야 한다. 그런데 정규분포에서 온 자료가 있을 때, 이 자료가 모평균에 대해 주는 정보는 표본평균(sample mean)에 모두 들어 있다. 이와 같이 어떤 표본이 있을 때,&amp;nbsp;&lt;b&gt;표본이&amp;nbsp;모수치에 대해 제공하는 모든 정보를 담고 있는 통계량을 충분통계량(sufficient statistic) 이라 부르며, 베이지안 통계에서 중요한 위치를 차지한다.&lt;/b&gt; 대개 어떤 자료가 있을 때, 그것을 이용하여 모수치에 대한 추론을 할 때는 전체 자료 대신 &lt;b&gt;충분통계량&lt;/b&gt;만 사용하면 되는 경우가 많다. 충분통계량에 대한 자세한 수학적 묘사는 생략한다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한편 앞서의 글들에서 베이지안 업데이팅의 결과는 다음과 같다고 언급했었다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwArnH/btrMjRDzihF/2e3C1k4mZDQAc2KUQDkxI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwArnH/btrMjRDzihF/2e3C1k4mZDQAc2KUQDkxI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwArnH/btrMjRDzihF/2e3C1k4mZDQAc2KUQDkxI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwArnH%2FbtrMjRDzihF%2F2e3C1k4mZDQAc2KUQDkxI0%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;301&quot; height=&quot;119&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZCqtf/btrMi3Rfamq/vno0rTfEcRolcmwkke4zZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZCqtf/btrMi3Rfamq/vno0rTfEcRolcmwkke4zZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZCqtf/btrMi3Rfamq/vno0rTfEcRolcmwkke4zZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZCqtf%2FbtrMi3Rfamq%2Fvno0rTfEcRolcmwkke4zZ1%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;310&quot; height=&quot;128&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 이 공식을 이용하여 베이지안 업데이팅을 해 보자. (위 공식에서 &lt;b&gt;x 대신 표본평균&lt;/b&gt;이 들어갈 것이다.) 사후분산 (s') 은 이미 알려진 숫자들을 이용하여 쉽게 구할 수 있다. 자료의 분산은 0.1로 이미 알려져 있다고 가정했으므로 크기가 5인 자료의&lt;b&gt; 표본평균의 분산은 이것을 자료 크기로 나눈 0.02&lt;/b&gt;가 된다. 따라서 자료의 precision은 1/0.02=50 이 된다. 한편 &lt;b&gt;사전분포의 precision은 0.001&lt;/b&gt;로 가정했다. 따라서 사후 &lt;b&gt;precision은 50+0.001 = 50.001&lt;/b&gt; 이 된다. 수학적 표현은 다음과 같다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9o1Rb/btrMjW514tw/JxuYlVSvcsvNmlyoKUnsSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9o1Rb/btrMjW514tw/JxuYlVSvcsvNmlyoKUnsSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9o1Rb/btrMjW514tw/JxuYlVSvcsvNmlyoKUnsSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9o1Rb%2FbtrMjW514tw%2FJxuYlVSvcsvNmlyoKUnsSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;95&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 m' 을 업데이트해 보자. 자료가 여러 개 있을 때, 이 값의 분자에는 다소의 수정이 가해진다.&amp;nbsp;&lt;b&gt;x가 더이상 하나의 숫자가 아닌 표본평균(충분통계량) 이 되고, 그 precision도 재조정되어 표본평균의 분산의 역수가 된다.&lt;/b&gt;&amp;nbsp;따라서 다음과 같은 형태가 된다.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPcRz0/btrMksXFKhF/jRA4FIs4667AijTjgnct50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPcRz0/btrMksXFKhF/jRA4FIs4667AijTjgnct50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPcRz0/btrMksXFKhF/jRA4FIs4667AijTjgnct50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPcRz0%2FbtrMksXFKhF%2FjRA4FIs4667AijTjgnct50%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;347&quot; height=&quot;152&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한편 자료의 평균은 5.12 이다. 이제 사후평균을 구하기 위한 준비는 모두 끝났다. 한 가지 팁이라면, 사후평균의 분모는 사후 precision 과 같다는 것이다. 이제 숫자들을 대입해 보자.&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doV2Hi/btrMmh8Toeh/W3GoAnVFrTFQVgG3ikY4fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doV2Hi/btrMmh8Toeh/W3GoAnVFrTFQVgG3ikY4fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doV2Hi/btrMmh8Toeh/W3GoAnVFrTFQVgG3ikY4fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoV2Hi%2FbtrMmh8Toeh%2FW3GoAnVFrTFQVgG3ikY4fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;116&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사전분포에 대한 믿음을 아주 약하게 주었기 때문에, 사후평균은 표본평균에 아주 가까운 것을 확인할 수 있다. 이제 사후분포를 확정해 보자. 위에서 구한 사후평균과 사후 precision을 활용하면 된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/72jtu/btrMjCzXX9C/NUOX6IkdNirwx5x8GtfeDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/72jtu/btrMjCzXX9C/NUOX6IkdNirwx5x8GtfeDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/72jtu/btrMjCzXX9C/NUOX6IkdNirwx5x8GtfeDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F72jtu%2FbtrMjCzXX9C%2FNUOX6IkdNirwx5x8GtfeDk%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;481&quot; height=&quot;103&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;103&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그런데 만약 사전분포에 대한 믿음이 강했다면, 다시 말해 사전 precision이 컸다면 결과는 어땠을까? precision을 0.001에서 10으로 늘려 보도록 하자. 그러면 사후분포의 평균에 대한 베이지안 업데이팅 결과는 다음과 같이 바뀐다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/stfKW/btrMkRpgPBw/IsioFWIJBiEiACE2M4CN3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/stfKW/btrMkRpgPBw/IsioFWIJBiEiACE2M4CN3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/stfKW/btrMkRpgPBw/IsioFWIJBiEiACE2M4CN3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FstfKW%2FbtrMkRpgPBw%2FIsioFWIJBiEiACE2M4CN3k%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;530&quot; height=&quot;124&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이전의 업데이팅 결과에 비해 사전평균 (4) 쪽으로 좀 더 옮겨간 것을 확인할 수 있다. 이 사례는 베이지안 통계절차가 사전믿음과 자료 사이의 타협이며, 양자에 대한 확신의 강도에 의해 사후 판단이 영향을 받을 수 있다는 것을 잘 보여준다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한가지 명확하게 하고 싶은 점은, 왜 표본 평균과 표본 평균의 분산을 사용했다는 점이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위글을 읽고 아래의 글을 읽으면 정리하는데 도움이 된다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663481282343&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;최대 우도 추정과 베이즈 정리의 간단한 수학적 증명&quot; data-og-description=&quot; &quot; data-og-host=&quot;zzaebok.github.io&quot; data-og-source-url=&quot;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&quot; data-og-url=&quot;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bHaXIe/hyPQnQCoBb/cpc7HtNffqq0RTwD9L5swK/img.png?width=801&amp;amp;height=398&amp;amp;face=0_0_801_398,https://scrap.kakaocdn.net/dn/bJ6LfG/hyPOQmzjGu/egJgFquvrhCtzsfnsY6wZk/img.png?width=605&amp;amp;height=256&amp;amp;face=0_0_605_256,https://scrap.kakaocdn.net/dn/ESkXY/hyPQkTTxeq/beOqiQzWcLwLEJk3B2DHFk/img.png?width=591&amp;amp;height=235&amp;amp;face=0_0_591_235&quot;&gt;&lt;a href=&quot;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zzaebok.github.io/machine_learning/mle-bayes-mathematical-proof/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bHaXIe/hyPQnQCoBb/cpc7HtNffqq0RTwD9L5swK/img.png?width=801&amp;amp;height=398&amp;amp;face=0_0_801_398,https://scrap.kakaocdn.net/dn/bJ6LfG/hyPOQmzjGu/egJgFquvrhCtzsfnsY6wZk/img.png?width=605&amp;amp;height=256&amp;amp;face=0_0_605_256,https://scrap.kakaocdn.net/dn/ESkXY/hyPQkTTxeq/beOqiQzWcLwLEJk3B2DHFk/img.png?width=591&amp;amp;height=235&amp;amp;face=0_0_591_235');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;최대 우도 추정과 베이즈 정리의 간단한 수학적 증명&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zzaebok.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664257639347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;기초 베이지안 이론 (Basic Bayesian Theory)&quot; data-og-description=&quot;gaussian37's blog&quot; data-og-host=&quot;gaussian37.github.io&quot; data-og-source-url=&quot;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&quot; data-og-url=&quot;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ckcghm/hyPViwzEi5/hkj4v2DCjGvx1F5NuTHwR1/img.png?width=941&amp;amp;height=286&amp;amp;face=0_0_941_286,https://scrap.kakaocdn.net/dn/d2wWQq/hyPWFKsjF8/mrxnlrv8QhrmAoyCnLWEwK/img.png?width=3575&amp;amp;height=1132&amp;amp;face=0_0_3575_1132,https://scrap.kakaocdn.net/dn/b0eI5d/hyPVlGNqUs/n1eVtE6RkFfyS4yf57E6V0/img.png?width=1214&amp;amp;height=1955&amp;amp;face=0_0_1214_1955&quot;&gt;&lt;a href=&quot;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gaussian37.github.io/ml-concept-basic_bayesian_theory/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ckcghm/hyPViwzEi5/hkj4v2DCjGvx1F5NuTHwR1/img.png?width=941&amp;amp;height=286&amp;amp;face=0_0_941_286,https://scrap.kakaocdn.net/dn/d2wWQq/hyPWFKsjF8/mrxnlrv8QhrmAoyCnLWEwK/img.png?width=3575&amp;amp;height=1132&amp;amp;face=0_0_3575_1132,https://scrap.kakaocdn.net/dn/b0eI5d/hyPVlGNqUs/n1eVtE6RkFfyS4yf57E6V0/img.png?width=1214&amp;amp;height=1955&amp;amp;face=0_0_1214_1955');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;기초 베이지안 이론 (Basic Bayesian Theory)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;gaussian37's blog&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gaussian37.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/markdregan/Bayesian-Modelling-in-Python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/markdregan/Bayesian-Modelling-in-Python&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664257642417&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - markdregan/Bayesian-Modelling-in-Python: A python tutorial on bayesian modeling techniques (PyMC3)&quot; data-og-description=&quot;A python tutorial on bayesian modeling techniques (PyMC3) - GitHub - markdregan/Bayesian-Modelling-in-Python: A python tutorial on bayesian modeling techniques (PyMC3)&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/markdregan/Bayesian-Modelling-in-Python&quot; data-og-url=&quot;https://github.com/markdregan/Bayesian-Modelling-in-Python&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/x66Mp/hyPWGbwaXn/yHVcWsknrWYSkBKMS3TVoK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/markdregan/Bayesian-Modelling-in-Python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/markdregan/Bayesian-Modelling-in-Python&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/x66Mp/hyPWGbwaXn/yHVcWsknrWYSkBKMS3TVoK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - markdregan/Bayesian-Modelling-in-Python: A python tutorial on bayesian modeling techniques (PyMC3)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A python tutorial on bayesian modeling techniques (PyMC3) - GitHub - markdregan/Bayesian-Modelling-in-Python: A python tutorial on bayesian modeling techniques (PyMC3)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;켤레 사전 분포&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;우도함수(데이터 생성모형)가 있을 때, 사전분포를 적절히 설정하면&amp;nbsp;&lt;/span&gt;&lt;b&gt;사후분포가 사전분포와 같도록&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;만들 수 있다. 이러한 사전분포를&lt;/span&gt;&lt;b&gt;&amp;nbsp;'켤레사전분포' (Conjugate prior distribution)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;라 부르며, 베이지안 통계에서 흔히 사용한다. 켤레사전분포를 사용하면 사후분포가 우리가 잘 아는 분포가 되기 때문에 사후평균, 사후분산 등을 매우 쉽게 구할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;켤레사전분포를 사용하는 이유는&amp;nbsp;&lt;/span&gt;&lt;b&gt;계산이 편해지기 때문이다. &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이를테면 정규-정규 모형에서 우도함수의 분산을 이미 안다고 가정하는 경우, 모평균의 기댓값에 대한 업데이팅은 다음과 같이 이루어짐을 이미 확인하였다:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ns6R3/btrMjWkV7OK/SYU6bvUKJZomFxS0xV0DVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ns6R3/btrMjWkV7OK/SYU6bvUKJZomFxS0xV0DVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ns6R3/btrMjWkV7OK/SYU6bvUKJZomFxS0xV0DVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fns6R3%2FbtrMjWkV7OK%2FSYU6bvUKJZomFxS0xV0DVk%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;310&quot; height=&quot;128&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 과정에는 어떠한 프로그래밍이나 시뮬레이션도 필요하지 않으며, 단지 이미 아는 숫자들을 대입하기만 하면 된다. 사실 분산을 모른다고 가정하는 경우에도 &lt;b&gt;분산에 대해 사전믿음을 켤레사전분포로 설정&lt;/b&gt;하면, 일련의 수학적 증명을 통해 분산이 어떻게 업데이트되는지 보일 수 있다. 이 과정에서도 단지 몇 가지의 간단한 숫자나 통계량(표본분산) 등을 대입하기만 하면 된다. (참고로 정규-정규 모형에서 분산에 대한 켤레사전분포로는 흔히 감마분포나 역감마분포, 역카이제곱분포라는 이름의 분포들을 즐겨 사용한다.)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 사전분포가 켤레사전분포가 아니라면 수학적으로만 사후분포를 얻는 것은 매우 어려운데, 사후분포를 친숙한 분포의 형태로 구하는 것이 난해하기 때문이다. 따라서 사후분포로부터 평균이나 분산 등의 통계치를 얻기를 원하거나, 사후분포를 시각화하려는 경우에는 컴퓨터 시뮬레이션의 힘을 빌릴 수밖에 없다. 1990년대 이전에는 이것은 매우 어려웠다. 이론적으로도 힘들었거니와 당대의 컴퓨터의 성능이 이와 같은 복잡한 시뮬레이션을 수행하기에는 부족했기 때문이다. 그러나 기술의 눈부신 발전과 이론적 발전에 힘입어, 최근 들어서는 사전분포가 켤레사전분포가 아닌 경우에도 비교적 짧은 시간 안에 사후분포에 대한 시뮬레이션 결과를 얻을 수 있게 되었다. 이는 베이지안 통계학이 주류로 들어올 수 있게 해 준 중요한 계기가 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 최근에도 켤레사전분포의 사용은 계속되고 있는데, 이는 켤레사전분포를 사용이 시뮬레이션 방법의 사용을 줄일 수 있게 해 주며 따라서 각종 시간적, 계산적 비용을 절감해줄 수 있기 때문이다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/머신러닝</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/238</guid>
      <comments>https://itforfun.tistory.com/238#entry238comment</comments>
      <pubDate>Mon, 19 Sep 2022 22:04:04 +0900</pubDate>
    </item>
    <item>
      <title>정규분포 확률밀도함수 유도</title>
      <link>https://itforfun.tistory.com/236</link>
      <description>&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;a href=&quot;https://www.youtube.com/watch?v=sFMjrnI93b4&quot;&gt;https://www.youtube.com/watch?v=sFMjrnI93b4&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=sFMjrnI93b4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/vypl1/hyPNZQEtGh/ITJRlqkAgDtmGI74TMXjd0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/sFMjrnI93b4&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;아래와 같은 과녁 중심을 향해 화살을 쏜다고 가정하자.&amp;nbsp;&lt;/b&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 floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.50.56.png&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bY2kgW/btrMgm9A2mD/wmNmIsZm1kdI2RiPmSCMYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bY2kgW/btrMgm9A2mD/wmNmIsZm1kdI2RiPmSCMYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bY2kgW/btrMgm9A2mD/wmNmIsZm1kdI2RiPmSCMYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbY2kgW%2FbtrMgm9A2mD%2FwmNmIsZm1kdI2RiPmSCMYK%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;265&quot; height=&quot;644&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.50.56.png&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표가 과녁 중심이기에 아래가 성립한다.&amp;nbsp;&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;1. 과녁의 중심에서 멀어지면 &lt;b&gt;확률이 낮다&lt;/b&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 중심에서 거리가 같은 곳에 맞출 확률은 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. x좌표와 y좌표는 독립적이다.&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&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.53.30.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/meTsH/btrMdEc4ZVB/fO5K1gsQrKSlAjpY9k4sp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/meTsH/btrMdEc4ZVB/fO5K1gsQrKSlAjpY9k4sp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/meTsH/btrMdEc4ZVB/fO5K1gsQrKSlAjpY9k4sp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmeTsH%2FbtrMdEc4ZVB%2FfO5K1gsQrKSlAjpY9k4sp0%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;270&quot; height=&quot;680&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.53.30.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; x, y 좌표에 의해 확률이 정해지므로&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;$f(x,y)$ : &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;(빨간 점에 맞을 확률)&lt;/span&gt;&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;(x, y는 서로 독립이므로)&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;$f(x,y) = f(x \cap y) = f(x)f(y)$&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&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.56.34.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxd64O/btrMcS3FI1M/zfp2YXffklY45u6EKet7h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxd64O/btrMcS3FI1M/zfp2YXffklY45u6EKet7h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxd64O/btrMcS3FI1M/zfp2YXffklY45u6EKet7h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdxd64O%2FbtrMcS3FI1M%2Fzfp2YXffklY45u6EKet7h1%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;277&quot; height=&quot;666&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.56.34.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과녁을 중심으로 같은거리의 점들은 모두 맞을 확률이 같으므로,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;반지름 r 만으로 확률이 정해진다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빨간점에 맞을 확률: $g(r)$&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&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.59.03.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sHJLH/btrMd6NCODB/aROjtfmH3Gbjt8KmpyNtK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sHJLH/btrMd6NCODB/aROjtfmH3Gbjt8KmpyNtK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sHJLH/btrMd6NCODB/aROjtfmH3Gbjt8KmpyNtK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsHJLH%2FbtrMd6NCODB%2FaROjtfmH3Gbjt8KmpyNtK1%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;279&quot; height=&quot;596&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.59.03.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(x, y는 서로 독립이므로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f(x,y) = f(x\cap y) = f(x)f(y)$&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;$x = r \cos \theta$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$y = r \sin \theta$&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;$f(x,y) = f(x)f(y) = g(r)$&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 style=&quot;text-align: center;&quot; 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;$$f(x,y) = f(x)f(y) = g(r)$$&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;$x = r \cos \theta \rightarrow \frac{\partial x}{\partial \theta} = -r \sin \theta $&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$y = r \sin \theta \rightarrow \frac{\partial y}{\partial \theta} = r \cos \theta$&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;확률 밀도함수를 구하기 위한 식을 $\theta$ 에 대해 미분하면,&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;$\{f(x)g(x)\}' = f'(x)g(x) + f(x)g'(x)$&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;$$ 0 = \frac{\partial f(x)}{\partial \theta} \times f(y) + f(x) \times \frac{\partial f(y)}{\partial \theta}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$= \frac{\partial f(x)}{\partial x} \times \frac{\partial x}{\partial \theta} \times f(y) + f(x) \times \frac{\partial f(y)}{\partial y} \times \frac{\partial y}{ \partial \theta}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ 0 = f'(x) \times (-r \sin \theta) \times f(y) + f(x) \times f'(y) \times r \cos \theta$$&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;스크린샷 2022-09-15 오후 10.13.37.png&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pxie6/btrMdEYtUsU/gIYEbz32aVCAezlDCD6Ij1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pxie6/btrMdEYtUsU/gIYEbz32aVCAezlDCD6Ij1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pxie6/btrMdEYtUsU/gIYEbz32aVCAezlDCD6Ij1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpxie6%2FbtrMdEYtUsU%2FgIYEbz32aVCAezlDCD6Ij1%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;234&quot; height=&quot;292&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.13.37.png&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 x,y 에 대해서 이 등식이 성립해야 하므로 이 값은 상수밖에 될 수 없다.&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;※ $(\ln (x))' = \frac{1}{x} $&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;$(\ln(|f(x)|))' = &amp;nbsp;\ln'(f(x))(f(x))' = f'(x) \times \frac{1}{f(x)} = \frac{f'(x)}{f(x)}$&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.18.59.png&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNTPcl/btrMe8441AK/WHVRlOy4uwgKXOQmOK9vy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNTPcl/btrMe8441AK/WHVRlOy4uwgKXOQmOK9vy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNTPcl/btrMe8441AK/WHVRlOy4uwgKXOQmOK9vy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNTPcl%2FbtrMe8441AK%2FWHVRlOy4uwgKXOQmOK9vy0%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;520&quot; height=&quot;242&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.18.59.png&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.19.30.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQjlVL/btrMdFCZq6r/bZ4m9kxNuUKyOemO85CuD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQjlVL/btrMdFCZq6r/bZ4m9kxNuUKyOemO85CuD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQjlVL/btrMdFCZq6r/bZ4m9kxNuUKyOemO85CuD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQjlVL%2FbtrMdFCZq6r%2FbZ4m9kxNuUKyOemO85CuD0%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;514&quot; height=&quot;421&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.19.30.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$A = \sqrt{\frac{k}{2 \pi}}$$&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-17 오후 9.11.47.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL7sdc/btrMkFWQxLA/xpwjkvrcn1VcN7LdurDTr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL7sdc/btrMkFWQxLA/xpwjkvrcn1VcN7LdurDTr1/img.png&quot; data-alt=&quot;https://math.stackexchange.com/questions/2693076/simplifying-square-of-integral-in-general&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL7sdc/btrMkFWQxLA/xpwjkvrcn1VcN7LdurDTr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL7sdc%2FbtrMkFWQxLA%2Fxpwjkvrcn1VcN7LdurDTr1%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;311&quot; height=&quot;69&quot; data-filename=&quot;스크린샷 2022-09-17 오후 9.11.47.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://math.stackexchange.com/questions/2693076/simplifying-square-of-integral-in-general&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.47.33.png&quot; data-origin-width=&quot;1204&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A27IT/btrMeEJYvUV/F6EZpF8jhVBfmJBsP6SDAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A27IT/btrMeEJYvUV/F6EZpF8jhVBfmJBsP6SDAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A27IT/btrMeEJYvUV/F6EZpF8jhVBfmJBsP6SDAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA27IT%2FbtrMeEJYvUV%2FF6EZpF8jhVBfmJBsP6SDAK%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;636&quot; height=&quot;373&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.47.33.png&quot; data-origin-width=&quot;1204&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.02.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfCtmw/btrMcP0jmgW/jr5LrQmDXTlI5GKfNz1Lo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfCtmw/btrMcP0jmgW/jr5LrQmDXTlI5GKfNz1Lo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfCtmw/btrMcP0jmgW/jr5LrQmDXTlI5GKfNz1Lo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfCtmw%2FbtrMcP0jmgW%2Fjr5LrQmDXTlI5GKfNz1Lo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;664&quot; height=&quot;330&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.02.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.37.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhwY3x/btrMdN1WFeT/HCE4KkQOWufKEKsklwFE2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhwY3x/btrMdN1WFeT/HCE4KkQOWufKEKsklwFE2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhwY3x/btrMdN1WFeT/HCE4KkQOWufKEKsklwFE2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhwY3x%2FbtrMdN1WFeT%2FHCE4KkQOWufKEKsklwFE2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;328&quot; height=&quot;397&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.37.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.56.png&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m8IZk/btrMdEjU5nE/AmzBfc1ASHrf39qEdRGhDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m8IZk/btrMdEjU5nE/AmzBfc1ASHrf39qEdRGhDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m8IZk/btrMdEjU5nE/AmzBfc1ASHrf39qEdRGhDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm8IZk%2FbtrMdEjU5nE%2FAmzBfc1ASHrf39qEdRGhDk%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;628&quot; height=&quot;330&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.48.56.png&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.49.41.png&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4eDBo/btrMdNnnjSx/9qi0gq7al6p9TIlZP8oFuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4eDBo/btrMdNnnjSx/9qi0gq7al6p9TIlZP8oFuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4eDBo/btrMdNnnjSx/9qi0gq7al6p9TIlZP8oFuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4eDBo%2FbtrMdNnnjSx%2F9qi0gq7al6p9TIlZP8oFuk%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;715&quot; height=&quot;347&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.49.41.png&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.49.56.png&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9CjWG/btrMd6NFq9q/ckS9buan1U3oKKoDyHrFnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9CjWG/btrMd6NFq9q/ckS9buan1U3oKKoDyHrFnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9CjWG/btrMd6NFq9q/ckS9buan1U3oKKoDyHrFnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9CjWG%2FbtrMd6NFq9q%2FckS9buan1U3oKKoDyHrFnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;369&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.49.56.png&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpYaix/btrMfNM6NYh/gZq2dwtIdZkPVJTHhtTS5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpYaix/btrMfNM6NYh/gZq2dwtIdZkPVJTHhtTS5K/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;688&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.51.33.png&quot; style=&quot;width: 40.9707%; margin-right: 10px;&quot; data-widthpercent=&quot;41.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpYaix/btrMfNM6NYh/gZq2dwtIdZkPVJTHhtTS5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpYaix%2FbtrMfNM6NYh%2FgZq2dwtIdZkPVJTHhtTS5K%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;910&quot; height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwRhYS/btrMe8cX3l8/FNkcxEs2cxszqp3u0K1Ac1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwRhYS/btrMe8cX3l8/FNkcxEs2cxszqp3u0K1Ac1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;728&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.51.43.png&quot; style=&quot;width: 57.8665%;&quot; data-widthpercent=&quot;58.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwRhYS/btrMe8cX3l8/FNkcxEs2cxszqp3u0K1Ac1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwRhYS%2FbtrMe8cX3l8%2FFNkcxEs2cxszqp3u0K1Ac1%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;728&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.52.00.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4pneL/btrMe846vWT/JJLNnT6ed4VqxsyOzZLJfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4pneL/btrMe846vWT/JJLNnT6ed4VqxsyOzZLJfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4pneL/btrMe846vWT/JJLNnT6ed4VqxsyOzZLJfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4pneL%2FbtrMe846vWT%2FJJLNnT6ed4VqxsyOzZLJfK%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;484&quot; height=&quot;224&quot; data-filename=&quot;스크린샷 2022-09-15 오후 10.52.00.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/236</guid>
      <comments>https://itforfun.tistory.com/236#entry236comment</comments>
      <pubDate>Thu, 15 Sep 2022 22:55:54 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 다이나믹 프로그래밍 동전 1</title>
      <link>https://itforfun.tistory.com/235</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span&gt;동전 1&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.5 초 (추가 시간 없음)&lt;/td&gt;
&lt;td&gt;4 MB&lt;/td&gt;
&lt;td&gt;45880&lt;/td&gt;
&lt;td&gt;20871&lt;/td&gt;
&lt;td&gt;15733&lt;/td&gt;
&lt;td&gt;45.615%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 n, k가 주어진다. (1 &amp;le; n &amp;le; 100, 1 &amp;le;&amp;nbsp;k &amp;le; 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 경우의 수를 출력한다. 경우의 수는 231보다 작다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;3 10
1
2
5
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;10&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 개수라고 하니 당연히 dfs 로 풀어야 할 것 같았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 문제 시간이 0.5 초라 dfs 로는 불가능할 것임을 짐작할 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;combination 으로 푸는 것은 개수가 10개가 넘어서 절대 불가능하고, 애초에 dfs 로 안되는 시점에서 combination은 불가능하다.&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;dp 로만 풀 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제보다 약간 더 hard case 인 k =20, coin = 2, 5, 12 인 경우이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 3.23.01.png&quot; data-origin-width=&quot;2738&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rJ8QA/btrMedkIMjU/ZVMQlDGMw6iivirIyFZK2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rJ8QA/btrMedkIMjU/ZVMQlDGMw6iivirIyFZK2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rJ8QA/btrMedkIMjU/ZVMQlDGMw6iivirIyFZK2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrJ8QA%2FbtrMedkIMjU%2FZVMQlDGMw6iivirIyFZK2k%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;2738&quot; height=&quot;160&quot; data-filename=&quot;스크린샷 2022-09-15 오후 3.23.01.png&quot; data-origin-width=&quot;2738&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제의 알고리즘은 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 코인으로 k 를 몇개 만들 수 있는 가 + 현재 주어진 코인으로 k 를 만들 수 있는가?&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 주어진 코인으로 k 를 만들 수 있는가는&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663223108442&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dp[index - coin]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;으로 간단하게 이전 index에서 가능했나 확인하면 된다.&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;다른 코인으로 k 를 몇개 만들 수 있는가는 dp 의 특성인 반복해서 array를 업데이트 함으로써 확인 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;위 표를 보며 아래 설명을 읽어보자.&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 숫자 10은 coin 2 로 만들 수 있어서 1 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 10은 coin 5로도 만들 수 있다.&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;이에 따라 1 + 1 로 경우의 수는 2 이다.&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;예를 들어 숫자 15는 coin 2로 만들 수 없어서 0 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 15는 5로 만들 수 있다.&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;10을 만드는 경우의 수는 아래 2개 였다.&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;2 coin X 5&amp;nbsp;&lt;/li&gt;
&lt;li&gt;5 coin X 2&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5는 이 경우의 수를 그대로 이어 받는다.&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;2 coin X 5 + coin 5&lt;/li&gt;
&lt;li&gt;5 coin X 2&amp;nbsp; + coin 5 (5 coin X 3)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 다른 코인으로는 15를 바로 만들 수 없으나, 10을 이어받은 5는 만들 수 있기에 경우의 수는 2 이다.&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;pre id=&quot;code_1663222885447&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 

n,k = map(int,input().split())

coin = [0] * n

for i in range(n):
    coin[i] = int(input())

dp = [0] * (k+1)

for i in range(1,n+1):
    for j in range(coin[i-1], k+1):
        if j == coin[i-1]:
            dp[j] = dp[j-coin[i-1]] + dp[j] + 1
        else:
            dp[j] = dp[j-coin[i-1]] + dp[j]


print(dp[k])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 개선&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663223451757&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if j == coin[i-1]:
	dp[j] = dp[j-coin[i-1]] + dp[j] + 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 공식이 필요하지 않다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663223470940&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dp[0] = 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처리하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, dp[0] 은 항상 dp 를 만들어나갈 때 초석이 되는 element 로 활용된다는 것을 기억하면 앞으로 문제에서 이번같이 비효율적으로 코드를 작성할 일이 없어진다.&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/235</guid>
      <comments>https://itforfun.tistory.com/235#entry235comment</comments>
      <pubDate>Thu, 15 Sep 2022 15:31:52 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 다이나믹 프로그래밍 동전 2</title>
      <link>https://itforfun.tistory.com/234</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;동전 2&lt;/span&gt;&lt;span style=&quot;color: #000000; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 초 (추가 시간 없음)&lt;/td&gt;
&lt;td&gt;128 MB&lt;/td&gt;
&lt;td&gt;52312&lt;/td&gt;
&lt;td&gt;15520&lt;/td&gt;
&lt;td&gt;10880&lt;/td&gt;
&lt;td&gt;28.955%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 n, k가 주어진다. (1 &amp;le;&amp;nbsp;n &amp;le; 100, 1 &amp;le; k &amp;le; 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다.&amp;nbsp;동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주어질 수도 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 사용한 동전의 최소 개수를 출력한다. 불가능한 경우에는 -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;3 15
1
5
12
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&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;문제의 동전 예시는 1, 5, 12 로 굉장히 easy 한 케이스라 조금 더 복잡한 케이스를 생성해서 아이디에이션을 해보았다.&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;n = 3, k = 20&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2, 5, 12 인 경우,&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;첫번째로 동전을 채우는 과정을 dfs 로 풀려 했는데 당연히 시간 초과가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재귀함수로 3곳을 다 방문하도록 했는데 이는 방문 횟수가 너무 많다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;easy case 에서도 약 7~ 8 배 차이는 난 것 같다. 복잡해질 수록 이 수는 더 증가한다.&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;스크린샷 2022-09-14 오후 8.38.04.png&quot; data-origin-width=&quot;2600&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK6Fzb/btrMacNdlrl/TP74nORWqJc1kEJG0E5jCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK6Fzb/btrMacNdlrl/TP74nORWqJc1kEJG0E5jCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK6Fzb/btrMacNdlrl/TP74nORWqJc1kEJG0E5jCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK6Fzb%2FbtrMacNdlrl%2FTP74nORWqJc1kEJG0E5jCk%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;2600&quot; height=&quot;124&quot; data-filename=&quot;스크린샷 2022-09-14 오후 8.38.04.png&quot; data-origin-width=&quot;2600&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 순서로 알고리즘이 작동한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 표는 순서대로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째줄: index&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째줄: coin 2&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째줄: coin 5&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네 번째줄: coin 12 이다.&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;pre id=&quot;code_1663155686564&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if index % coin == 0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같이 나눠서 0으로 떨어지는 경우를 확인하도록 했는데 이렇게 접근해서는 지금 알고리즘에 도달하기 쉽지 않다.&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;처음 coin 으로 각 값을 만드는데 필요한 개수를 업데이트를 한다.&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;그 다음 coin 으로 새롭게 업데이트를 하고 싶다. (이 부분이 골자이다.)&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;예를 들어 coin 2로 먼저 채우고서 5로 새롭게 업데이트를 하면 우리 머리속에서는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;min(coin 2로 채운 값, 5 * x (몇번째 5 coin인가)+ 2 * y(5로 채운 이후 index)) &lt;/b&gt;로 개수를 업데이트 하게 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 동전의 개수가 늘어나게 되면 그 개수에 따라 더욱 복잡한 문제가 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;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;이를 해결하기 위해서 dp 문제에서는 업데이트 되는 array 의 값을 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;min(coin 2로 채운 값, 5 * x (몇번째 5 coin인가)+ 2 * y(5로 채운 이후 index))&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;와 유사한 알고리즘이나, 업데이트 되는 array 의 값을 이용하면 동전이 아무리 여러개여도 가장 최근에 업데이트 한 array 값을 사용하기에 array 에 작성된 최소 값에만 집중하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;이를 구현하기 위해서는 array 값만을 이용해서 coin 개수를 업데이트 할 수 있어야 한다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구현이 바로 아래와 같다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663156227066&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dp[j] = min(dp[j - coin[i-1]] + 1, dp[j])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;array 에는 현재 가능한 최소 값이 기입되어 있으므로 여기서 coin 의 크기만큼 1개를 더해준 것과, 원래 array 에 기입되어 있던 최소 개수를 비교하면 어떤 것이 최소 개수 인지 알 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고보면 어렵지는 않지만 우리 삶에서 찾아볼 수 없는 형태이기에 떠올리기 어려운 알고리즘 이었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 min 으로 업데이트 해야 하기에 초기 값은 큰 수로 설정해야 하고 array 의 첫 index 값만 0으로 설정해줘야&lt;/p&gt;
&lt;pre id=&quot;code_1663156391349&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dp[index - coin 크기] + 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;또한 각 coin 의 크기에 따라 dp 에 접근하는 index 의 초기값을 coin 의 크기로 설정해줘야 한다.&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;pre id=&quot;code_1663156482614&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 

n,k = map(int,input().split())

coin = [0] * n
for i in range(n): coin[i] = int(input())
dp = [10001] * (k+1)
dp[0] = 0

for i in range(1, n+1):
    for j in range(coin[i-1], k+1):
        cnt+=1 
        dp[j] = min(dp[j - coin[i-1]] + 1, dp[j]) 

print(dp[k] if dp[k] != 10001 else -1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/234</guid>
      <comments>https://itforfun.tistory.com/234#entry234comment</comments>
      <pubDate>Wed, 14 Sep 2022 20:54:55 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 다이나믹 프로그래밍 LCS</title>
      <link>https://itforfun.tistory.com/232</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span&gt;LCS&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.1 초 (&lt;a href=&quot;https://www.acmicpc.net/problem/9251#&quot;&gt;하단 참고&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;256 MB&lt;/td&gt;
&lt;td&gt;56865&lt;/td&gt;
&lt;td&gt;23037&lt;/td&gt;
&lt;td&gt;16944&lt;/td&gt;
&lt;td&gt;40.292%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;ebnf&quot;&gt;&lt;code&gt;ACAYKP
CAPCAK
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;4
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출처&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Knapsack &lt;/b&gt;문제이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ACA&lt;/b&gt;Y&lt;b&gt;K&lt;/b&gt;P&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C&lt;b&gt;A&lt;/b&gt;P&lt;b&gt;CAK&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와같이 연속되지 않은 경우 어떻게 해야 겹치는 개수를 카운트 할 수 있을까?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;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;&lt;a href=&quot;https://myjamong.tistory.com/317&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://myjamong.tistory.com/317&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662971709332&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;백준 9251 파이썬 - LCS - 동적 계획법&quot; data-og-description=&quot;백준 9251 파이썬 https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는..&quot; data-og-host=&quot;myjamong.tistory.com&quot; data-og-source-url=&quot;https://myjamong.tistory.com/317&quot; data-og-url=&quot;https://myjamong.tistory.com/317&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d3zx0g/hyPLchKDeW/Z31AH4nA6Bjtl9h7l9Tfn1/img.png?width=324&amp;amp;height=222&amp;amp;face=0_0_324_222,https://scrap.kakaocdn.net/dn/Jmzss/hyPLdVgOQc/5gH2KslG4uKN418SrPlE31/img.png?width=324&amp;amp;height=222&amp;amp;face=0_0_324_222,https://scrap.kakaocdn.net/dn/s2KBG/hyPJ5ds87E/DilCTarJX1CwRAUYTI7OT1/img.png?width=268&amp;amp;height=442&amp;amp;face=0_0_268_442&quot;&gt;&lt;a href=&quot;https://myjamong.tistory.com/317&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://myjamong.tistory.com/317&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d3zx0g/hyPLchKDeW/Z31AH4nA6Bjtl9h7l9Tfn1/img.png?width=324&amp;amp;height=222&amp;amp;face=0_0_324_222,https://scrap.kakaocdn.net/dn/Jmzss/hyPLdVgOQc/5gH2KslG4uKN418SrPlE31/img.png?width=324&amp;amp;height=222&amp;amp;face=0_0_324_222,https://scrap.kakaocdn.net/dn/s2KBG/hyPJ5ds87E/DilCTarJX1CwRAUYTI7OT1/img.png?width=268&amp;amp;height=442&amp;amp;face=0_0_268_442');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;백준 9251 파이썬 - LCS - 동적 계획법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;백준 9251 파이썬 https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;myjamong.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-12 오후 5.35.13.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfxHQZ/btrLNqfuDWB/chZBzDbREJiy19UZdgXWVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfxHQZ/btrLNqfuDWB/chZBzDbREJiy19UZdgXWVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfxHQZ/btrLNqfuDWB/chZBzDbREJiy19UZdgXWVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfxHQZ%2FbtrLNqfuDWB%2FchZBzDbREJiy19UZdgXWVK%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;506&quot; height=&quot;566&quot; data-filename=&quot;스크린샷 2022-09-12 오후 5.35.13.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겹친 순간 부터 뒤 까지 모두 겹친 수를 반영해준다. 이로써 추후 업데이트가 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적으로 이 문제의 경우 밑에서 올라오는 수가 기존 값을 넘어설 수 있으므로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그전 값에서 업데이트 되는 값과 이번에 새롭게 올라온 값의 비교를 해주어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662971814534&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;A = input().rstrip()
B = input().rstrip()

a = len(A)
b = len(B)
dp = [[0] * (len(B)+1) for _ in range(len(A)+1)]


for i in range(1, a+1):
    for j in range(1, b+1):
            if A[i-1] == B[j-1]: 
                dp[i][j] = dp[i-1][j-1] + 1 
            else:
                dp[i][j] = max(dp[i][j-1], dp[i-1][j])

print(dp)
print(dp[len(A)][len(B)])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그리고 항상 캐시를 초기화 할 때 크기를 N 에 맞춰서 하고 싶은 마음이 있는데, 이 경우 index 0 이전 즉, 오히려 최종 index 에 접근하게 된 경우 예상치 못한 값을 반영할 수 있기 때문에 유의해줘야한다.&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;&lt;b&gt;다만 이 문제에서는&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://itforfun.tistory.com/231&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://itforfun.tistory.com/231&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662972029223&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[백준] 다이나믹 프로그래밍 - 평범한 가방&quot; data-og-description=&quot;평범한 배낭 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 512 MB 75395 27716 18066 35.260% 문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여&quot; data-og-host=&quot;itforfun.tistory.com&quot; data-og-source-url=&quot;https://itforfun.tistory.com/231&quot; data-og-url=&quot;https://itforfun.tistory.com/231&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e4op7/hyPLlseR2F/Cq8d2SRZTZRUx7qZQWGMFk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/mxnwn/hyPLdVg3GC/r8Kvi7sKgKC6j0oTv6UkOK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/RNnno/hyPLp9eVx4/thiNG0Y50EtpWVv61ZWHek/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751&quot;&gt;&lt;a href=&quot;https://itforfun.tistory.com/231&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://itforfun.tistory.com/231&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e4op7/hyPLlseR2F/Cq8d2SRZTZRUx7qZQWGMFk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/mxnwn/hyPLdVg3GC/r8Kvi7sKgKC6j0oTv6UkOK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/RNnno/hyPLp9eVx4/thiNG0Y50EtpWVv61ZWHek/img.jpg?width=815&amp;amp;height=751&amp;amp;face=0_0_815_751');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[백준] 다이나믹 프로그래밍 - 평범한 가방&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;평범한 배낭 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 512 MB 75395 27716 18066 35.260% 문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;itforfun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제에서는 할 수 없었던 배열 1개 이용하여 업데이트가 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 단어가 겹치는 경우에 무조건 cnt 가 더 업데이트 되어 있기 때문이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662972905467&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
read = sys.stdin.readline

word1, word2 = read().strip(), read().strip()
l1, l2 = len(word1), len(word2)
cache = [0] * l2

for i in range(l1):
    cnt = 0
    for j in range(l2):
        if cnt &amp;lt; cache[j]:
            cnt = cache[j]
        elif word1[i] == word2[j]:
            cache[j] = cnt + 1
print(max(cache))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 시간 차이는 별로 없고, 이 경우는 모든 경우에 적용 가능한 것이 아니므로 1번을 더 잘 알고 있는 것이 좋은 것 같다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;ACAYKP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;C&lt;/b&gt;APCAK&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 7.45.16.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blKezo/btrMdExee4e/jFmZtCkCd17TX5SDj7brAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blKezo/btrMdExee4e/jFmZtCkCd17TX5SDj7brAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blKezo/btrMdExee4e/jFmZtCkCd17TX5SDj7brAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblKezo%2FbtrMdExee4e%2FjFmZtCkCd17TX5SDj7brAK%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;1622&quot; height=&quot;98&quot; data-filename=&quot;스크린샷 2022-09-15 오후 7.45.16.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;98&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;ACAYKP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C&lt;b&gt;A&lt;/b&gt;PCAK&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-09-15 오후 7.45.24.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKZOvo/btrMcQY2fQA/ETikxKGhQ5PKeFDWLbSxeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKZOvo/btrMcQY2fQA/ETikxKGhQ5PKeFDWLbSxeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKZOvo/btrMcQY2fQA/ETikxKGhQ5PKeFDWLbSxeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKZOvo%2FbtrMcQY2fQA%2FETikxKGhQ5PKeFDWLbSxeK%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;1616&quot; height=&quot;144&quot; data-filename=&quot;edited_스크린샷 2022-09-15 오후 7.45.24.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ACAYKP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAPCA&lt;b&gt;K&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-15 오후 7.46.40.png&quot; data-origin-width=&quot;1618&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xO5gA/btrMfdSCKmo/rUQuH4tORIiqmsvYuanw1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xO5gA/btrMfdSCKmo/rUQuH4tORIiqmsvYuanw1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xO5gA/btrMfdSCKmo/rUQuH4tORIiqmsvYuanw1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxO5gA%2FbtrMfdSCKmo%2FrUQuH4tORIiqmsvYuanw1k%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;1618&quot; height=&quot;340&quot; data-filename=&quot;스크린샷 2022-09-15 오후 7.46.40.png&quot; data-origin-width=&quot;1618&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한칸씩 돈다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 가장 길게 유지되고 있는 길이가 몇인지 확인할 수 있어야 한다.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;새롭게 일치하게 되면 그전까지 index의 값들보다 1이 커진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;새롭게 일치해지면 당연히 그 이후 index의 값들도 앞선 index 의 크기가 커진만큼 커져야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LCS 2&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;스크린샷 2022-09-15 오후 9.00.28.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs2UH7/btrMej6Zcy0/uWm25rhJqkrQ7NNgXqPYt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs2UH7/btrMej6Zcy0/uWm25rhJqkrQ7NNgXqPYt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs2UH7/btrMej6Zcy0/uWm25rhJqkrQ7NNgXqPYt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs2UH7%2FbtrMej6Zcy0%2FuWm25rhJqkrQ7NNgXqPYt1%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;1622&quot; height=&quot;394&quot; data-filename=&quot;스크린샷 2022-09-15 오후 9.00.28.png&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/232</guid>
      <comments>https://itforfun.tistory.com/232#entry232comment</comments>
      <pubDate>Mon, 12 Sep 2022 17:55:26 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 다이나믹 프로그래밍 - 평범한 가방</title>
      <link>https://itforfun.tistory.com/231</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span&gt;평범한 배낭&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2 초&lt;/td&gt;
&lt;td&gt;512 MB&lt;/td&gt;
&lt;td&gt;75395&lt;/td&gt;
&lt;td&gt;27716&lt;/td&gt;
&lt;td&gt;18066&lt;/td&gt;
&lt;td&gt;35.260%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 아주 평범한 배낭에 관한 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는&amp;nbsp;배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 줄에 물품의 수 N(1 &amp;le; N &amp;le; 100)과 준서가 버틸 수 있는 무게 K(1 &amp;le; K &amp;le; 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 &amp;le; W &amp;le; 100,000)와 해당 물건의 가치 V(0 &amp;le; V &amp;le; 1,000)가 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력으로 주어지는 모든 수는 정수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄에 배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;4 7
6 13
4 8
3 6
5 12
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;14&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;b&gt;Knapsack&amp;nbsp;&lt;/b&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;첫 번째로 해당 문제를 만약 brute force 로 돌면 최악의 경우 N = 100 * K = 100,000 로 약 천만번을 돌아야한다는 생각에 index 에 바로 접근할 수 있는 dictionary 사용을 고려했다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662964066278&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
from collections import defaultdict 
import copy
input = sys.stdin.readline
N, K = map(int, input().split())

dp = defaultdict(lambda: 0)

for i in range(N):
    W, V = map(int,input().split())
    if dp[W] &amp;lt; V:
        dp[W] = V
    tmp = copy.deepcopy(dp)
    for w,v in tmp.items():
        if w != W and w+W &amp;lt; K+1:
            dp[w+W] = max(dp[w+W], v+V)


print(max(dp.values()))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 코드를 짜고서 당당하게 제출했으나 약 80%정도에서 틀렸다.&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;우선 2D list 를 만들어 각 스텝별로 나눈다.&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;&lt;a href=&quot;https://ca.ramel.be/33&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ca.ramel.be/33&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662964365086&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;백준 12865번: 평범한 배낭 (Python, PyPy3)&quot; data-og-description=&quot;접근 대표적인 동적 계획법(Dynamic Programming) 문제 중 Knapsack 문제이다. 일단 (N + 1) * (K + 1) 행렬을 준비하여 문제를 풀게 된다. 행 별로 채워가면서 해당 무게별 채울 수 있는 가장 큰 값을 채워나&quot; data-og-host=&quot;ca.ramel.be&quot; data-og-source-url=&quot;https://ca.ramel.be/33&quot; data-og-url=&quot;https://ca.ramel.be/33&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dOoOjF/hyPLiPKVHC/iEcMNrCYQFDBMBUMv4MxQk/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703,https://scrap.kakaocdn.net/dn/gSxvz/hyPJVPoCSo/kGtJI3YH8yL5UOhYuJOHHK/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703,https://scrap.kakaocdn.net/dn/c9cEXT/hyPJ4r2KJC/JL4K23C35WChLnpjTKMCh0/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703&quot;&gt;&lt;a href=&quot;https://ca.ramel.be/33&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ca.ramel.be/33&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dOoOjF/hyPLiPKVHC/iEcMNrCYQFDBMBUMv4MxQk/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703,https://scrap.kakaocdn.net/dn/gSxvz/hyPJVPoCSo/kGtJI3YH8yL5UOhYuJOHHK/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703,https://scrap.kakaocdn.net/dn/c9cEXT/hyPJ4r2KJC/JL4K23C35WChLnpjTKMCh0/img.png?width=673&amp;amp;height=703&amp;amp;face=0_0_673_703');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;백준 12865번: 평범한 배낭 (Python, PyPy3)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;접근 대표적인 동적 계획법(Dynamic Programming) 문제 중 Knapsack 문제이다. 일단 (N + 1) * (K + 1) 행렬을 준비하여 문제를 풀게 된다. 행 별로 채워가면서 해당 무게별 채울 수 있는 가장 큰 값을 채워나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ca.ramel.be&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 블로그에 너무 잘 정리되어 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662964377382&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N,K = map(int,input().split())

dp = [[0] * (K+1) for i in range(N+1)]
w = [0]
v = [0]
for i in range(N):
    W, V = map(int, input().split())
    w.append(W)
    v.append(V)

for i in range(1,N+1):
    for j in range(1,K+1):
        if j &amp;gt;= w[i]:
            dp[i][j] = max(dp[i-1][j-w[i]] + v[i], dp[i-1][j])
        else:
            dp[i][j] = dp[i-1][j]

print(dp[N][K])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/231</guid>
      <comments>https://itforfun.tistory.com/231#entry231comment</comments>
      <pubDate>Mon, 12 Sep 2022 15:33:10 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 다이나믹 프로그래밍 병사 배치하기, 가장 긴 증가하는 부분 수열 2</title>
      <link>https://itforfun.tistory.com/230</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span&gt;병사 배치하기&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 초&lt;/td&gt;
&lt;td&gt;256 MB&lt;/td&gt;
&lt;td&gt;6064&lt;/td&gt;
&lt;td&gt;2393&lt;/td&gt;
&lt;td&gt;1834&lt;/td&gt;
&lt;td&gt;41.093%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N명의 병사가 무작위로 나열되어 있다. 각 병사는 특정한 값의 전투력을 보유하고 있으며, 병사를 배치할 때는 전투력이 높은 병사가 앞쪽에 오도록 내림차순으로 배치를 하고자 한다. 다시 말해&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;span&gt;&amp;nbsp;&lt;/span&gt;N=7일 때 나열된 병사들의 전투력이 다음과 같다고 가정하자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1618&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czWa6f/btrLLWZc6hO/DlBunNJNAbSuGTy6VUUyt0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czWa6f/btrLLWZc6hO/DlBunNJNAbSuGTy6VUUyt0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czWa6f/btrLLWZc6hO/DlBunNJNAbSuGTy6VUUyt0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczWa6f%2FbtrLLWZc6hO%2FDlBunNJNAbSuGTy6VUUyt0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1618&quot; height=&quot;191&quot; data-origin-width=&quot;1618&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 3번 병사와 6번 병사를 열외시키면, 다음과 같이 남아있는 병사의 수가 내림차순의 형태가 되며 5명이 된다. 이는 남아있는 병사의 수가 최대가 되도록 하는 방법이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byapZ9/btrLLy5k03O/N1vb6hHR5LYvtxogrs4Cwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byapZ9/btrLLy5k03O/N1vb6hHR5LYvtxogrs4Cwk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byapZ9/btrLLy5k03O/N1vb6hHR5LYvtxogrs4Cwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyapZ9%2FbtrLLy5k03O%2FN1vb6hHR5LYvtxogrs4Cwk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1232&quot; height=&quot;191&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;병사에 대한 정보가 주어졌을 때, 남아있는 병사의 수가 최대가 되도록 하기 위해서 열외해야 하는 병사의 수를 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에&lt;span&gt;&amp;nbsp;&lt;/span&gt;N이 주어진다. (1 &amp;le;&amp;nbsp;N&amp;nbsp;&amp;le; 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 남아있는 병사의 수가 최대가 되도록 하기 위해서 열외해야 하는 병사의 수를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;7
15 11 4 8 5 2 4
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;2
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LIS , 즉 증가하는 가장 긴 수열이라는 알고리즘은 사실 그냥 떠올리는 것도 어렵지 않다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제도 그냥 떠올려서 풀었다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662793783119&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 

N = int(input())
sol = list(map(int,input().split()))
sol = [[1,i] for i in sol]

for i in range(1, N):
    for j in range(i-1,-1,-1):
        if sol[i][1] &amp;lt; sol[j][1]:
            sol[i][0] = max(sol[i][0], sol[j][0]+1)


print(N-max([i[0] for i in sol]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;증가하는 가장 긴 수열이 아니라 감소하는 가장 긴 수열로 풀었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 원소마다 그전의 길이를 참고하여 최대 길이를 업데이트 하는 방식이다.&amp;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;사람들이 나보다 약 20배의 빠른 속도로 문제를 해결했다.&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;살펴보니, binary search 를 사용하여 문제를 해결할 수 있다는 것을 확인했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 문제보다 input 값이 훨씬 많고, 동시에 구하고자 하는 것이 단지 길이일 때 binary search 를 통해 해결 가능하다.&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;이해한 알고리즘은 아래와 같다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 3 5 9&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;추후 들어오는 수가 1 ~ 9 사이의 값이라면 input 값 보다 값이 크면서 가장 가까운 수를 선택해서 input값으로 대체한다.&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;1 3 5 9 에 2가 들어왔다고 예를 들어보자.&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;이 경우 1 2 5 9 가 된다. 이는 2를 그냥 대체하는 것은 실제 구하게 될 수열과 다르다고 할 수 있으나, 길이는 동일하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추후 3이 들어오게되면 기존에는 3 이후 5 위치에 들어올 수 없었으나 이제 들어올 수 있다.&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;1 2 3 9&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;추후 4,5 와 같이 3보다 큰 숫자만 들어오면 이어붙여서 가장 긴 수열을 이어나갈 수 있도록 한다.&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;div&gt;
&lt;h1&gt;&lt;span&gt;가장 긴 증가하는 부분 수열 2&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 초&lt;/td&gt;
&lt;td&gt;512 MB&lt;/td&gt;
&lt;td&gt;30486&lt;/td&gt;
&lt;td&gt;12399&lt;/td&gt;
&lt;td&gt;8658&lt;/td&gt;
&lt;td&gt;42.092%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수열 A가 주어졌을 때, 가장 긴 증가하는&amp;nbsp;부분&amp;nbsp;수열을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분&amp;nbsp;수열은&amp;nbsp;A = {&lt;b&gt;10&lt;/b&gt;,&amp;nbsp;&lt;b&gt;20&lt;/b&gt;, 10,&amp;nbsp;&lt;b&gt;30&lt;/b&gt;, 20,&amp;nbsp;&lt;b&gt;50&lt;/b&gt;} 이고, 길이는 4이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수열 A의 크기 N (1 &amp;le; N &amp;le; 1,000,000)이 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 &amp;le; Ai&amp;nbsp;&amp;le; 1,000,000)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;6
10 20 10 30 20 50
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;4&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;binary search 를 수행하며 다음의 경우가 필요할 때가 있다.&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;찾는 값이 없으나 찾고자 하는 값보다 크면서 가장 가까운 값&amp;nbsp;&lt;/li&gt;
&lt;li&gt;찾는 값이 없으나 찾고자 하는 값보다 작으면서 가장 가까운 값&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제는 찾는 값이 없으나 찾고자 하는 값보다 크면서 가장 가까운 값을 찾으면 된다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 블로그에 잘 정리되어있다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yiyj1030.tistory.com/230&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yiyj1030.tistory.com/230&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662795284031&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;이진 검색 binary search의 여러 가지 형태(파이썬 코드)&quot; data-og-description=&quot;1. 다음은 가장 잘 알려진 이진 검색 코드다. 찾으려는 값을 target으로 넣어주면 그 값에 해당하는 인덱스를 빠르게 찾아 리턴한다. a= [1,4,5,8,12] def binary_search(target): left = 0 right = len(a)-1 whil..&quot; data-og-host=&quot;yiyj1030.tistory.com&quot; data-og-source-url=&quot;https://yiyj1030.tistory.com/230&quot; data-og-url=&quot;https://yiyj1030.tistory.com/230&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cRK9gE/hyPJYjWHsy/EwUpDdEVlnrkAhGksFcWR0/img.png?width=673&amp;amp;height=447&amp;amp;face=0_0_673_447,https://scrap.kakaocdn.net/dn/eAVxc/hyPJ1ucfLq/YKgsPzQSNfrvpZ07hp3271/img.png?width=673&amp;amp;height=447&amp;amp;face=0_0_673_447&quot;&gt;&lt;a href=&quot;https://yiyj1030.tistory.com/230&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yiyj1030.tistory.com/230&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cRK9gE/hyPJYjWHsy/EwUpDdEVlnrkAhGksFcWR0/img.png?width=673&amp;amp;height=447&amp;amp;face=0_0_673_447,https://scrap.kakaocdn.net/dn/eAVxc/hyPJ1ucfLq/YKgsPzQSNfrvpZ07hp3271/img.png?width=673&amp;amp;height=447&amp;amp;face=0_0_673_447');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;이진 검색 binary search의 여러 가지 형태(파이썬 코드)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 다음은 가장 잘 알려진 이진 검색 코드다. 찾으려는 값을 target으로 넣어주면 그 값에 해당하는 인덱스를 빠르게 찾아 리턴한다. a= [1,4,5,8,12] def binary_search(target): left = 0 right = len(a)-1 whil..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yiyj1030.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 위 블로그에서 틀린 부분이 있어서 수정.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662963600604&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 

N = int(input())
lst = list(map(int,input().split()))
dp = [lst[0]] 


def bisearch(dp, c):
    start = 0 
    end = len(dp)-1

    while(start &amp;lt;= end):
        mid = (start + end) // 2
        if dp[mid] == c:
            return mid 
        elif dp[mid] &amp;gt; c:
            result = mid 
            end = mid -1 
        elif dp[mid] &amp;lt; c: 
            start = mid + 1

    return result 


for i,c in enumerate(lst[1:]):
    if c &amp;gt; dp[-1]:
        dp.append(c)
    else:
        idx = bisearch(dp, c)
        dp[idx] = c


print(len(dp))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘의 골자는 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 알고리즘은 &lt;b&gt;개수를&amp;nbsp;&lt;/b&gt;구할 때만 사용 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 원소를 리스트에 추가한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt; input 원소가 리스트의 최종 원소보다 크면 추가한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만약 최종 원소보다 input원소가 작으면 리스트내 &lt;b&gt;input 원소보다 크면서 가장 가까운 원소를 택하여 값을 교체&lt;/b&gt;한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 골자는 &lt;b&gt;input 원소보다 크면서 가장 가까운 원소를 택하여 값을 교체 이 부분이 왜 가능하냐이다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한마디로만 적자면, input 원소로 대체하여도 어차피 뒤에 있는 원소들이 더 크기가 크기에 원소 대소 비교하여 추가하는 상황에서 문제가 발생하지 않고, 교체하여 리스트가 전반적으로 달라지면 실제로 해당 원소들로 리스트를 꾸릴 수 있는 상황이다.&amp;nbsp;&lt;/b&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;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/230</guid>
      <comments>https://itforfun.tistory.com/230#entry230comment</comments>
      <pubDate>Mon, 12 Sep 2022 15:25:26 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 다이나믹프로그래밍 정수 삼각형</title>
      <link>https://itforfun.tistory.com/228</link>
      <description>&lt;div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림은 크기가 5인 정수 삼각형의 한 모습이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에&amp;nbsp;합이 최대가 되는 경로에 있는 수의 합을 출력한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;30
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 삼각형 문제를 풀 때면 항상 input 을 어떻게 받는 것이 효율적일까에 대한 고민을 많이 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 아래와 같이 input 을 받았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-09 오후 5.14.04.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTsGAm/btrLKtKd8qS/XaE0xkAUdaj26mdkU7Oepk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTsGAm/btrLKtKd8qS/XaE0xkAUdaj26mdkU7Oepk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTsGAm/btrLKtKd8qS/XaE0xkAUdaj26mdkU7Oepk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTsGAm%2FbtrLKtKd8qS%2FXaE0xkAUdaj26mdkU7Oepk%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;546&quot; height=&quot;290&quot; data-filename=&quot;스크린샷 2022-09-09 오후 5.14.04.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 2N + 1의 크기로 모든 array 를 받고, 말그대로 직관적으로 indexing 을 하는 것이다.&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;pre id=&quot;code_1662711336567&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline 

N = int(input())

tri = [[0] * (2*N+1) for _ in range(N)]

for i in range(N):
    tmp = list(map(int, input().split()))
    for j,c in enumerate(tmp):
        tri[i][N-(i)+j*2] = c 

for i in range(1, N):
    for j in range(N-(i), N+(i+1), 2):
            tri[i][j] = tri[i][j] + max(tri[i-1][j-1], tri[i-1][j+1])


print(max([max(i) for i in tri]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나쁜 코드는 아니다. 직관적이다. 하지만 위 코드를 자세히보면 생각보다 인덱싱이 좀 까다로운 것을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662711404790&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
dp = []

for i in range(N):
    dp.append(list(map(int, input().split())))

for i in range(1, N):
    for j in range(i+1):
        up_left = 0 if j == 0 else dp[i-1][j-1]  
        up_right = 0 if j == i else dp[i-1][j]
        dp[i][j] = dp[i][j] + max(up_left, up_right)

print(max(dp[-1]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 위와 같이 array를 만들지 않아도 index 를 벗어날 경우를 예외 처리하고, 왼쪽 위, 오른쪽 위 index 를 접근하는 것이 각각 &lt;b&gt;current x 좌표 -1, current x 좌표&lt;/b&gt; 라는 것을 알면 더 간단하게 코딩하고 정신적 로드도 훨씬 덜하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심지어 메모리도 아끼고, 속도도 빠르다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/228</guid>
      <comments>https://itforfun.tistory.com/228#entry228comment</comments>
      <pubDate>Fri, 9 Sep 2022 17:18:25 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 이진탐색 공유기 설치</title>
      <link>https://itforfun.tistory.com/226</link>
      <description>&lt;h1&gt;&lt;span&gt;공유기 설치&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는&amp;nbsp;x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 집의 개수 N (2 &amp;le; N &amp;le; 200,000)과 공유기의 개수 C (2 &amp;le; C &amp;le; N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi&lt;span&gt;&amp;nbsp;&lt;/span&gt;(0 &amp;le; xi&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 1,000,000,000)가 한 줄에 하나씩 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에&amp;nbsp;가장 인접한 두 공유기 사이의 최대 거리를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에&amp;nbsp;가장 인접한 두 공유기 사이의 최대 거리를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;5 3
1
2
8
4
9
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;힌트&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_hint&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공유기를 1, 4, 8 또는 1, 4, 9에 설치하면 가장 인접한 두 공유기 사이의 거리는 3이고, 이 거리보다 크게 공유기를 3개 설치할 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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;a href=&quot;https://my-coding-notes.tistory.com/119&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://my-coding-notes.tistory.com/119&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1662361561090&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[ 1 / 백준 2110 / 파이썬] 공유기 설치&quot; data-og-description=&quot;2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 &amp;le; N &amp;le; 200,000)과 공유기의 개수 C (2 &amp;le; C &amp;le; N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 &amp;le; &quot; data-og-host=&quot;my-coding-notes.tistory.com&quot; data-og-source-url=&quot;https://my-coding-notes.tistory.com/119&quot; data-og-url=&quot;https://my-coding-notes.tistory.com/119&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kz6cF/hyPF7CmoRx/phoK35E5k9k01ZC1lLpoR1/img.png?width=793&amp;amp;height=60&amp;amp;face=0_0_793_60,https://scrap.kakaocdn.net/dn/cQdIOe/hyPHuJqm68/OkndhnKjKojcuxpxIg35G0/img.png?width=793&amp;amp;height=60&amp;amp;face=0_0_793_60&quot;&gt;&lt;a href=&quot;https://my-coding-notes.tistory.com/119&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://my-coding-notes.tistory.com/119&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kz6cF/hyPF7CmoRx/phoK35E5k9k01ZC1lLpoR1/img.png?width=793&amp;amp;height=60&amp;amp;face=0_0_793_60,https://scrap.kakaocdn.net/dn/cQdIOe/hyPHuJqm68/OkndhnKjKojcuxpxIg35G0/img.png?width=793&amp;amp;height=60&amp;amp;face=0_0_793_60');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[ 1 / 백준 2110 / 파이썬] 공유기 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 &amp;le; N &amp;le; 200,000)과 공유기의 개수 C (2 &amp;le; C &amp;le; N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 &amp;le;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;my-coding-notes.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;결론적으로 정리하자면 공유기를 C개 설치하고자 하는데, 이 중 인접한 두 공유기 사이의 거리를 최대로 하는 경우를 찾아야 한다.&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;1) 최초 포인트(1)을 잡는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) C 개에 맞춰 얼추 어느정도 거리를 최초점(직전점)으로부터 띄어서 잡는다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 2번 반복&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;즉 최초포인트로부터 일정 크기 만큼 떨어지기 잡은 포인트들이 총 C개인지 그리고 적절하게 떨어졌는지가 문제해결의 포인트다.&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;두 점 사이의 거리를 조정하며 포인트가 총 C 개가 될 수 있는 상황 중, 인접한 두 공유기 사이의 거리인 최소 거리를 최대로 하는 경우를 찾아야 한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662471690972&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline

N, C = map(int,input().split())

cord = [0] * N

for i in range(N):
    cord[i] = int(input())

cord.sort()

print(cord)

start, end = 1, cord[-1] - cord[0]

if C == 2:
    print(cord[-1] - cord[0])
    exit()

while (start &amp;lt;= end): 
    mid = (start + end) // 2
    tmp = cord[0]
    cnt = 1 
    for i in range(1, N):
        if tmp  + mid &amp;lt;= cord[i]:
            cnt += 1 
            tmp = cord[i]
    if cnt &amp;gt;= C:
        result = mid 
        start = mid + 1 
    else: 
        end = mid - 1

print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당 문제 풀이에서는 중요하게 고려해야 하는 부분이 있다.어쩌면 당연하게 받아들여야 하는 부분인데 내가 받아들이지 못하는 것일 수도 있다. 다만, 나와 같이 오인한 경우에는 해당 문제를 풀 수 없기에 글을 남긴다.&amp;nbsp;&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;집에 공유기 C개를 설치하려고 한다. &lt;b&gt;최대한 많은 곳&lt;/b&gt;에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, &lt;b&gt;가장 인접한 두 공유기 사이의 거리를 가능한 크게&lt;/b&gt; 하여 설치하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.&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;문제를 해결할 때 사용하는 gap 은 인터넷 수신 거리가 아니다. 애초에 인터넷 수신 거리는 아예 제공된 정보가 아니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 gap 을 인터넷 수신 거리로 오인해서 문제를 해결하려고 하니 접근이 어려웠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 전 + gap &amp;lt;= 이후 는 최소한으로 되어야 gap 이 수신기 사이 최소거리로 인정받을 수 있다.&amp;nbsp;&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;&lt;b&gt;간단한 문제도 오인하면 굉장히 어렵게 느껴진다는 것을 배웠다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/226</guid>
      <comments>https://itforfun.tistory.com/226#entry226comment</comments>
      <pubDate>Wed, 7 Sep 2022 01:39:18 +0900</pubDate>
    </item>
    <item>
      <title>Python Collections</title>
      <link>https://itforfun.tistory.com/223</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Python Collections Libaray&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1662032764248&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import Counter&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Counter 는 원소의 개수를 세서 dictionary 로 return 해준다.&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;아주 유용한 기능은 str 의 경우에도 처리가 가능하다는것.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662032866220&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if key in dict:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 안해도 한줄로 str 의 모든 단어도 count 할 수 있다.&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;pre id=&quot;code_1662032754049&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import defaultdict&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dictionary 에서 만약 접근한 key 값이 존재하지 않을 때 key error 를 내는 것이 아니라 사전 설정해놓은 값으로 설정&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662032949201&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;defaultdict(lambda: 0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 설정 가능&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662032772152&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;queue 를 호출&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원소의 개수가 많아질 수록 list의 append pop 이 아닌, queue 의 사용은 필수이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는 list 의 append 와 pop 은 list 의 크기를 조정하는데 비용이 발생하기 때문이다.&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>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/223</guid>
      <comments>https://itforfun.tistory.com/223#entry223comment</comments>
      <pubDate>Thu, 1 Sep 2022 20:50:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - DFS 연산자 끼워넣기</title>
      <link>https://itforfun.tistory.com/222</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span&gt;연산자 끼워넣기&lt;/span&gt;&amp;nbsp;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;시간 제한메모리 제한제출정답맞힌 사람정답 비율
&lt;table id=&quot;problem-info&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2 초&lt;/td&gt;
&lt;td&gt;512 MB&lt;/td&gt;
&lt;td&gt;68464&lt;/td&gt;
&lt;td&gt;35831&lt;/td&gt;
&lt;td&gt;22847&lt;/td&gt;
&lt;td&gt;49.465%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(&amp;times;) 1개, 나눗셈(&amp;divide;) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+2+3-4&amp;times;5&amp;divide;6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식의 계산은 연산자 우선 순위를 무시하고 앞에서부터 진행해야 한다. 또, 나눗셈은 정수 나눗셈으로 몫만 취한다. 음수를 양수로 나눌 때는 C++14의 기준을 따른다. 즉, 양수로 바꾼 뒤 몫을 취하고, 그 몫을 음수로 바꾼 것과 같다.&amp;nbsp;이에 따라서, 위의 식 4개의 결과를 계산해보면 아래와&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;1+2+3-4&amp;times;5&amp;divide;6 = 1&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6 = 12&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6 = 5&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6 = 7&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수와 N-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,&amp;nbsp;곱셈(&amp;times;)의 개수, 나눗셈(&amp;divide;)의 개수이다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 만들 수 있는 식의 결과의 최댓값을, 둘째 줄에는 최솟값을 출력한다. 연산자를 어떻게 끼워넣어도&amp;nbsp;항상 -10억보다 크거나 같고, 10억보다 작거나 같은 결과가 나오는 입력만 주어진다. 또한, 앞에서부터 계산했을 때, 중간에 계산되는 식의 결과도 항상 -10억보다 크거나 같고, 10억보다 작거나 같다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;2
5 6
0 0 1 0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;30
30
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot;&gt;&lt;code&gt;3
3 4 5
1 0 1 0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;35
17
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 3&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-3&quot; class=&quot;basic&quot;&gt;&lt;code&gt;6
1 2 3 4 5 6
2 1 1 1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 3&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-3&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;54
-24&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;1) 단순 구현으로 brute force 로 풀 수 있는가?&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;2) 풀 수 없다면 어떤 방법으로 풀어야 하는가?&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1) Brute Force&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Brute force 로 풀기 위해서는 연산자를 각각 자리에 끼워맞춰 봐야 한다.&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;먼저 permutation 과 combination의 차이를 생각해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아래의 글은 기본 이해를 돕는다.&amp;nbsp;&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;&lt;b&gt;&lt;a href=&quot;https://mathbang.net/547&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mathbang.net/547&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661936999707&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;순열과 조합 - 조합이란&quot; data-og-description=&quot;순열에 이어 조합이에요. 조합과 순열은 너무 비슷해서 구분하기 어려워요. 정확히 말하면&amp;nbsp;문제를 푸는 식이 특별히 어려운 게 아닌데 서술형으로 된 문제를&amp;nbsp;읽고 순열로 풀어야 하는지 조합&quot; data-og-host=&quot;mathbang.net&quot; data-og-source-url=&quot;https://mathbang.net/547&quot; data-og-url=&quot;https://mathbang.net/547&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brfC5P/hyPENIDh5Z/k3WLuDZxk2n3ZCEyVFPytk/img.png?width=310&amp;amp;height=172&amp;amp;face=0_0_310_172,https://scrap.kakaocdn.net/dn/b3ZQiN/hyPC90QbNf/rp9GA3DXF7co3ebdDFTmN1/img.png?width=310&amp;amp;height=172&amp;amp;face=0_0_310_172&quot;&gt;&lt;a href=&quot;https://mathbang.net/547&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mathbang.net/547&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brfC5P/hyPENIDh5Z/k3WLuDZxk2n3ZCEyVFPytk/img.png?width=310&amp;amp;height=172&amp;amp;face=0_0_310_172,https://scrap.kakaocdn.net/dn/b3ZQiN/hyPC90QbNf/rp9GA3DXF7co3ebdDFTmN1/img.png?width=310&amp;amp;height=172&amp;amp;face=0_0_310_172');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;순열과 조합 - 조합이란&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;순열에 이어 조합이에요. 조합과 순열은 너무 비슷해서 구분하기 어려워요. 정확히 말하면&amp;nbsp;문제를 푸는 식이 특별히 어려운 게 아닌데 서술형으로 된 문제를&amp;nbsp;읽고 순열로 풀어야 하는지 조합&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mathbang.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eiNSzH/btrK30gVyUJ/ZzkNni6Il9vjVwoEe44cBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eiNSzH/btrK30gVyUJ/ZzkNni6Il9vjVwoEe44cBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eiNSzH/btrK30gVyUJ/ZzkNni6Il9vjVwoEe44cBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeiNSzH%2FbtrK30gVyUJ%2FZzkNni6Il9vjVwoEe44cBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;440&quot; height=&quot;498&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번의 시행에서 사건&lt;span&gt;&amp;nbsp;&lt;/span&gt;A가 3번 일어날 확률을 구한다고 가정하자.&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;$ ^n C_{r} $&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;하지만 우리의 경우에는 10번의 시행에서 가지고 있는 모든 경우의 수가 일어나야 한다.&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;즉 10번의 시행에서 주어진 연산자가 모두 시행되어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 (a,b,c,d) 와 (b,c, a,d) 를 같은 것으로 보는 것이 조합이므로 10번의 시행에서 10개 연산자를 모두 시행하는 경우의 수는 단 1개이다.&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;10번의 시행에서 10개의 연산자의 순서를 섞어 시행하는 경우를 구하려면 바로 permutation 이 필요하고 이는 10! 번의 시행이다. ($10 \times 9 \times 8 \times ... 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;다만, 동일한 연산자가 동일 위치에 들어가는 경우는 고려하지 않아도 되므로&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661937310379&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;set(permutations(lst, n))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;set 처리하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661938685476&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import permutations

N = int(input())
lst = list(map(int,input().split()))

#+ - x //
opers = list(map(int,input().split()))
new_opers = []

new_opers += ['+'] * opers[0]
new_opers += ['-'] * opers[1]
new_opers += ['*'] * opers[2]
new_opers += ['//'] * opers[3]

ans = set(permutations(new_opers ,N-1))

ops = {&quot;+&quot;: (lambda x,y: x+y), &quot;-&quot;: (lambda x,y: x-y), &quot;*&quot;: (lambda x,y : x*y), &quot;//&quot;: (lambda x,y: x//y if x &amp;gt; 0 else -(-x // y))}

result_min = 1e9
result_max = -1e9

for Noper in ans:
    result = lst[0]
    for i,j in zip(lst[1:], Noper):
        result = ops[j](result, i)
    result_min = min(result, result_min)
    result_max = max(result, result_max)

print(result_max)
print(result_min)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 구현 센스라면 수와 연산자를 zip 처리하여 한줄로 깔끔하게 구현할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 list 를 돌지말고 queue 를 선언하면 더 빠를까 싶어서 사용해봤는데 끽해야 원소 개수가 11개인 해당 문제에서는 queue 생성 시간이 더 걸린다. queue 생성 시간은 얼추 20ms 로 생각보다 빠르다는 것을 확인했다. (물론 길이가 길 수록 시간이 더 걸리긴 하겠지만..)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-31 오후 6.37.42.png&quot; data-origin-width=&quot;2518&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIZb8h/btrK6cArCnt/KxoDVdNkqEkKL33uNKy42K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIZb8h/btrK6cArCnt/KxoDVdNkqEkKL33uNKy42K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIZb8h/btrK6cArCnt/KxoDVdNkqEkKL33uNKy42K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIZb8h%2FbtrK6cArCnt%2FKxoDVdNkqEkKL33uNKy42K%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;2518&quot; height=&quot;252&quot; data-filename=&quot;스크린샷 2022-08-31 오후 6.37.42.png&quot; data-origin-width=&quot;2518&quot; data-origin-height=&quot;252&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;permutations vs combinations&amp;nbsp;&lt;/li&gt;
&lt;li&gt;set 의 사용&amp;nbsp;&lt;/li&gt;
&lt;li&gt;lambda 의 사용으로 깔끔한 코드 정리&amp;nbsp;&lt;/li&gt;
&lt;li&gt;zip을 사용함으로써 깔끔한 코드 정리&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2) DFS&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제를 DFS 로도 해결이 가능하다는데 도저히 감이 안와서 블로그 글을 참고한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://data-flower.tistory.com/72&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://data-flower.tistory.com/72&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661938948561&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[백준 14888번] 연산자 끼워넣기 - 파이썬&quot; data-og-description=&quot;문제 링크: https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai &amp;le; 100) 셋째 줄에는 합이 N-..&quot; data-og-host=&quot;data-flower.tistory.com&quot; data-og-source-url=&quot;https://data-flower.tistory.com/72&quot; data-og-url=&quot;https://data-flower.tistory.com/72&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kWuUv/hyPC9sZ83H/UMkRPc2UTBkmqb5HBvmI20/img.png?width=310&amp;amp;height=163&amp;amp;face=0_0_310_163,https://scrap.kakaocdn.net/dn/dbuart/hyPEIm19Hf/VRpimyUhtuWjExXcMvUlY0/img.png?width=310&amp;amp;height=163&amp;amp;face=0_0_310_163,https://scrap.kakaocdn.net/dn/kJdPu/hyPDfUmcs4/zvHkL3gETWHERYM1tQQBY1/img.jpg?width=1280&amp;amp;height=961&amp;amp;face=0_0_1280_961&quot;&gt;&lt;a href=&quot;https://data-flower.tistory.com/72&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://data-flower.tistory.com/72&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kWuUv/hyPC9sZ83H/UMkRPc2UTBkmqb5HBvmI20/img.png?width=310&amp;amp;height=163&amp;amp;face=0_0_310_163,https://scrap.kakaocdn.net/dn/dbuart/hyPEIm19Hf/VRpimyUhtuWjExXcMvUlY0/img.png?width=310&amp;amp;height=163&amp;amp;face=0_0_310_163,https://scrap.kakaocdn.net/dn/kJdPu/hyPDfUmcs4/zvHkL3gETWHERYM1tQQBY1/img.jpg?width=1280&amp;amp;height=961&amp;amp;face=0_0_1280_961');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[백준 14888번] 연산자 끼워넣기 - 파이썬&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;문제 링크: https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai &amp;le; 100) 셋째 줄에는 합이 N-..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;data-flower.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1662024360299&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
lst = list(map(int,input().split()))

#+ - x // N-1 
opers = list(map(int,input().split()))

ans = lst[0]

result_max = -1e9
result_min = 1e9

def dfs(k, ans):
    global result_max, result_min
    if k == N:
        result_max = max(result_max, ans)
        result_min = min(result_min, ans)

    if opers[0] != 0:
        opers[0] -= 1
        dfs(k+1, ans + lst[k])
        opers[0] += 1
    if opers[1] != 0:
        opers[1] -= 1
        dfs(k+1, ans - lst[k])
        opers[1] += 1
    if opers[2] != 0:
        opers[2] -= 1
        dfs(k+1, ans * lst[k])
        opers[2] += 1
    if opers[3] != 0: 
        opers[3] -= 1
        dfs(k+1, ans // lst[k] if ans &amp;gt;0 else -(-ans // lst[k]) )
        opers[3] += 1

dfs(1, ans)

print(result_max)
print(result_min)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제는 생각해보면 brute force 로 푼 내 풀이방법도 궁극적으로는 재귀로 구현을 못해서 돌려 구현한 샘이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brute force에 set 을 적용한다는 것이 재귀로 각 연산자를 위치에 반복되지 않게 배치할 방법을 구현못한다는 뜻이다.&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;DFS 에 대한 올바른 이해가 없었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 DFS 를 노드 방문 문제에서만 풀다보니 DFS 가 정확히 어떤 알고리즘인지 몰랐던 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DFS의 깊이 우선 탐색을 한다는 것은 목적지까지 한번 방문하고, 한번씩 전 단계로 돌리면서 방문할 수 있는 모든 경우의 수를 확인하는 알고리즘이다.&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;pre id=&quot;code_1662025291559&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;opers[1] += 1 
recursion
opers[1] -= 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같은 테크닉을 사용해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 문제와 같이 모든 경우의 수를 확인하는 경우 문제들이 종종 있는데 이때 DFS 로 해결가능하다는 것을 기억하자.&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/222</guid>
      <comments>https://itforfun.tistory.com/222#entry222comment</comments>
      <pubDate>Thu, 1 Sep 2022 18:42:31 +0900</pubDate>
    </item>
    <item>
      <title>ln (x-1) 의 미분</title>
      <link>https://itforfun.tistory.com/220</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;필자에게 자신을 돌아볼 충격적인 일이 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ln(x - 1)을 미분하는데, 두가지 방법에 따라 결과값이 다르게 나온 것이다.&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;1) 합성 함수의 미분&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\ln(x-1)' = g'(f(x))f'(x) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\ln(x-1)' = \ln'(x-1)(x-1)' $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\ln(x-1)' = \frac{1}{x-1} (-1)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$-\frac{1}{x-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;2) 미분 계수 정의 이용&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \frac{\ln(x-1+h) - \ln(x-1)}{h}$$&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;$$\lim_{h \to 0} \frac{1}{h} \ln{(\frac{(1-x)+h}{1-x})}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \frac{1}{h} \ln{(1 + \frac{h}{1-x})}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \ln{(1 + \frac{h}{1-x})^{\frac{1}{h}}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \ln{ \{ (1 + \frac{h}{1-x})^{\frac{1-x}{h}} \} ^{\frac{1}{1-x}}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\frac{1}{1-x} \ln{e} = \frac{1}{1-x}$$&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) 미분 계수 정의를 활용한 것에 어떤 문제도 못 느끼고 있었는데, 문뜩 내가 ln 을 함수로 생각하고 있지 않다는 것을 깨달았다.&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;결론만 말하자면 ln 함수안에 x-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;미분 계수 정의를 활용해서 합성함수를 다시 증명해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$i(x)$ 는 합성함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \frac{i(x+h) - i(x))}{x+h - x}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \frac{g(f(x+h)) - g(f(x))}{f(x+h) - f(x)} \cdot \frac{f(x+h) -f(x)}{x+h - x}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\rightarrow \textrm{x+h -x 를 옆으로 미루고, 서로 소거되는 f(x+h) - f(x)를 생성} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\textrm{위 과정으로 인하여} = g'(f(x)) \cdot f'(x)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\textrm{위 과정과 동일하게} \lim_{h \to 0} \frac{ln(1-x+h) - ln(1-x)}{x+h - x}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\lim_{h \to 0} \frac{ln(1-x-h) - ln(1-x)}{1-x-h - (1-x)} \cdot \frac{1-x-h - (1-x)}{x+h - x} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ln'(1-x) \cdot -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;이렇게 증명이 된다.&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;&lt;a href=&quot;https://www.youtube.com/watch?v=cLdXZNo2dxs&quot;&gt;https://www.youtube.com/watch?v=cLdXZNo2dxs&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=cLdXZNo2dxs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dB2Ett/hyPBJl5c36/ku7Qb4Cap2gYZYqTJUEuUk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/cLdXZNo2dxs&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상을 추천한다.&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/AI 수학</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/220</guid>
      <comments>https://itforfun.tistory.com/220#entry220comment</comments>
      <pubDate>Sun, 28 Aug 2022 01:14:26 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - BFS 특정 거리의 도시 찾기</title>
      <link>https://itforfun.tistory.com/219</link>
      <description>&lt;h1&gt;&lt;span&gt;특정 거리의 도시 찾기&lt;/span&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 나라에는 1번부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;N번까지의 도시와&amp;nbsp;M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 특정한 도시&lt;span&gt;&amp;nbsp;&lt;/span&gt;X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히&lt;span&gt;&amp;nbsp;&lt;/span&gt;K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오.&amp;nbsp;또한 출발 도시&lt;span&gt;&amp;nbsp;&lt;/span&gt;X에서 출발 도시&lt;span&gt;&amp;nbsp;&lt;/span&gt;X로 가는 최단 거리는&amp;nbsp;항상 0이라고 가정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;span&gt;&amp;nbsp;&lt;/span&gt;N=4,&lt;span&gt;&amp;nbsp;&lt;/span&gt;K=2,&lt;span&gt;&amp;nbsp;&lt;/span&gt;X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUAEd8/btrKGREh9pc/eY8KDc8Ci5eYUApjvtxLbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUAEd8/btrKGREh9pc/eY8KDc8Ci5eYUApjvtxLbk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUAEd8/btrKGREh9pc/eY8KDc8Ci5eYUApjvtxLbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUAEd8%2FbtrKGREh9pc%2FeY8KDc8Ci5eYUApjvtxLbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;401&quot; height=&quot;399&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;/figure&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번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다. &amp;nbsp;2번과 3번 도시의 경우, 최단 거리가 1이기 때문에 출력하지 않는다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 도시의 개수&lt;span&gt;&amp;nbsp;&lt;/span&gt;N,&amp;nbsp;도로의 개수&lt;span&gt;&amp;nbsp;&lt;/span&gt;M, 거리 정보&lt;span&gt;&amp;nbsp;&lt;/span&gt;K, 출발 도시의 번호&lt;span&gt;&amp;nbsp;&lt;/span&gt;X가 주어진다. (2 &amp;le;&amp;nbsp;N&amp;nbsp;&amp;le; 300,000, 1 &amp;le;&amp;nbsp;M&amp;nbsp;&amp;le; 1,000,000, 1 &amp;le;&amp;nbsp;K&amp;nbsp;&amp;le; 300,000, 1 &amp;le;&amp;nbsp;X&amp;nbsp;&amp;le;&amp;nbsp;N) 둘째 줄부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;M개의 줄에 걸쳐서 두 개의 자연수&lt;span&gt;&amp;nbsp;&lt;/span&gt;A,&lt;span&gt;&amp;nbsp;&lt;/span&gt;B가 공백을 기준으로 구분되어 주어진다. 이는&lt;span&gt;&amp;nbsp;&lt;/span&gt;A번 도시에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;B번 도시로 이동하는 단방향 도로가 존재한다는 의미다. (1 &amp;le;&amp;nbsp;A,&lt;span&gt;&amp;nbsp;&lt;/span&gt;B&amp;nbsp;&amp;le;&amp;nbsp;N) 단,&lt;span&gt;&amp;nbsp;&lt;/span&gt;A와&lt;span&gt;&amp;nbsp;&lt;/span&gt;B는 서로 다른 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;X로부터 출발하여 도달할 수 있는 도시 중에서, 최단 거리가&lt;span&gt;&amp;nbsp;&lt;/span&gt;K인 모든 도시의 번호를 한 줄에 하나씩 오름차순으로 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 도달할 수 있는 도시 중에서, 최단 거리가&lt;span&gt;&amp;nbsp;&lt;/span&gt;K인 도시가 하나도 존재하지 않으면 -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;4 4 2 1
1 2
1 3
2 3
2 4
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;4&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;b&gt;1) 시작점이 1이 아닐 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 출력시 오름차순으로 하나씩 해야한다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 대부분의 최단 거리 문제들이 이와 같을 수 있는데, 문제 푼 경험이 별로 없어서 한 삽질 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;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) 최단 거리를 찾는 문제에서는 DFS 는 사용 불가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DFS 는 깊이 우선 탐색 과정에서 특정 노드를 먼저 방문해버릴 가능성이 있다. 그렇게 되면, 해당 노드로부터 다른 노드까지의 최단 거리가 미리 업데이트 되어 실제로는 최단이 아닌 거리가 반영될 가능성이 있다. (뭐 전체를 매번 돌아보게 한다면 가능하겠지만 이는 너무 너무 비효율적이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 최단 거리에서는 BFS 를 사용해야 하나, 최단 거리에서 BFS 의 경우 사용할 수 있는 경우도 한정이 되어있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. undirected graph 인 경우&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. weight 가 고정값인 경우&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;&lt;a href=&quot;https://nulls.co.kr/graph/141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://nulls.co.kr/graph/141&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661518708430&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[그래프] 27. BFS로 찾은 경로가 최단 경로인 이유&quot; data-og-description=&quot;BFS 알고리즘을 이용한 predecessor 방식이 진짜 최단 경로가 맞는지 어떻게 확신할 수 있을까? 이번 장에서는 증명해보겠다. &amp;nbsp; 이것을 이해하기&quot; data-og-host=&quot;nulls.co.kr&quot; data-og-source-url=&quot;https://nulls.co.kr/graph/141&quot; data-og-url=&quot;https://nulls.co.kr/graph/141&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iRz2E/hyPAnDW8P0/InBFaK7zO8yBtKkvkewzJk/img.png?width=339&amp;amp;height=299&amp;amp;face=0_0_339_299,https://scrap.kakaocdn.net/dn/bjytlK/hyPAseaQsx/VVWfP67BnyO78gXKPf3th0/img.png?width=645&amp;amp;height=362&amp;amp;face=0_0_645_362,https://scrap.kakaocdn.net/dn/dRusOq/hyPAsrIJzb/YuIVNRnAQUBKZR6SxoElW1/img.png?width=537&amp;amp;height=282&amp;amp;face=0_0_537_282&quot;&gt;&lt;a href=&quot;https://nulls.co.kr/graph/141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nulls.co.kr/graph/141&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iRz2E/hyPAnDW8P0/InBFaK7zO8yBtKkvkewzJk/img.png?width=339&amp;amp;height=299&amp;amp;face=0_0_339_299,https://scrap.kakaocdn.net/dn/bjytlK/hyPAseaQsx/VVWfP67BnyO78gXKPf3th0/img.png?width=645&amp;amp;height=362&amp;amp;face=0_0_645_362,https://scrap.kakaocdn.net/dn/dRusOq/hyPAsrIJzb/YuIVNRnAQUBKZR6SxoElW1/img.png?width=537&amp;amp;height=282&amp;amp;face=0_0_537_282');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[그래프] 27. BFS로 찾은 경로가 최단 경로인 이유&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;BFS 알고리즘을 이용한 predecessor 방식이 진짜 최단 경로가 맞는지 어떻게 확신할 수 있을까? 이번 장에서는 증명해보겠다. &amp;nbsp; 이것을 이해하기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nulls.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661518798069&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;최단거리 문제 알고리즘에 대한 궁금증 정리&quot; data-og-description=&quot;DFS, BFS와 다익스트라 알고리즘에 대한 여러가지 의문점&quot; data-og-host=&quot;jypthemiracle.medium.com&quot; data-og-source-url=&quot;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&quot; data-og-url=&quot;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jypthemiracle.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;최단거리 문제 알고리즘에 대한 궁금증 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;DFS, BFS와 다익스트라 알고리즘에 대한 여러가지 의문점&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jypthemiracle.medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/219</guid>
      <comments>https://itforfun.tistory.com/219#entry219comment</comments>
      <pubDate>Fri, 26 Aug 2022 22:00:20 +0900</pubDate>
    </item>
    <item>
      <title>백준 - 구현 뱀</title>
      <link>https://itforfun.tistory.com/218</link>
      <description>&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임은 NxN 정사각&amp;nbsp;보드위에서 진행되고, 몇몇 칸에는&amp;nbsp;사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 뱀은 몸길이를 늘려&amp;nbsp;머리를&amp;nbsp;다음칸에 위치시킨다.&lt;/li&gt;
&lt;li&gt;만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다.&lt;/li&gt;
&lt;li&gt;만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 보드의 크기 N이 주어진다. (2 &amp;le; N &amp;le; 100) 다음 줄에 사과의 개수&amp;nbsp;K가 주어진다. (0 &amp;le; K &amp;le; 100)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 K개의 줄에는 사과의 위치가 주어지는데, 첫 번째 정수는&amp;nbsp;행, 두 번째 정수는&amp;nbsp;열 위치를 의미한다.&amp;nbsp;사과의 위치는 모두 다르며, 맨 위 맨 좌측 (1행 1열) 에는 사과가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 줄에는 뱀의 방향 변환 횟수 L 이 주어진다. (1 &amp;le; L &amp;le; 100)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 L개의 줄에는 뱀의 방향 변환 정보가 주어지는데, &amp;nbsp;정수 X와 문자 C로 이루어져 있으며. 게임 시작 시간으로부터 X초가 끝난 뒤에 왼쪽(C가 'L') 또는 오른쪽(C가 'D')로 90도 방향을 회전시킨다는 뜻이다. X는 10,000 이하의 양의 정수이며, 방향 전환 정보는 X가 증가하는 순으로 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&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;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;6
3
3 4
2 5
5 3
3
3 D
15 L
17 D
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;9&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;# 종료 조건: 뱀이 자신의 몸에 부딪치거나, 벽에 부딪치면 종료&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;# 사과먹으면 몸이 길어짐, 사과 못 먹으면 길이 유지 (꼬리쪽 길이 없어지고 사과 없는 쪽은 늘어남)&lt;/div&gt;
&lt;div&gt;# 즉 일단 늘리고, 사과가 없는 경우 줄이기&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;# 뱀이 몸을 꺾는 위치가 기록되어 있다.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;# 간단하게 &lt;b&gt;board 를 감싸는 벽&lt;/b&gt;을 만들고, 뱀의 위치에도 표기를 한다. 벽 혹은 뱀을 만나면 게임은 종료&lt;/div&gt;
&lt;div&gt;$\rightarrow$ board 를 감싸는 벽을 꼭 만들 필요는 없긴하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;#뱀이 꺾는 순간은 2가지로 구현 가능&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;1. 회전 행렬&amp;nbsp;&lt;/div&gt;
&lt;div&gt;뭔가 최근에 회전 행렬을 공부하기도 했고, 쉬울 것 같아서 회전 행렬로 구현하였다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1661441888717&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline
from collections import deque 

N = int(input())
K = int(input())

board = [[0] * (N+2) for _ in range(N+2)]

for i in range(N+2):
    for j in range(N+2):
        if i == 0 or i == N+1 or j == 0 or j == N+1:
            board[i][j] = 2 

for i in range(K):
    r, c = map(int, input().split())
    board[r][c] = 1 
    
L = int(input())

change = []
for i in range(L):
    n, direction = input().split()
    change.append((int(n), direction))
    
time = 0 
i, j = 1, 1
last_i, last_j = 1, 1
time = 0 

board[1][1] = 2
queue = deque([[1,1]])


while(True):
    time += 1 
    j += 1                
   
    if board[i][j] == 1:
        board[i][j] = 2
        queue.append([i,j])
        
    elif board[i][j] == 0:
        board[i][j] = 2 
        queue.append([i,j])
        last_i, last_j = queue.popleft()
        board[last_i][last_j] = 0     

    elif board[i][j] == 2:
        break
        
    for n, direction in change:
        if n == time:
            if direction == 'L':
                board = list(map(list,zip(*board[::-1])))
                i,j = j,i 
                j = N+1 - j 

                queue = deque([[last_j, N+1 - last_i] for last_i, last_j in queue])

            elif direction == 'D':
                board = list(zip(*board[::-1]))
                board = list(zip(*board[::-1]))
                board = list(map(list,zip(*board[::-1])))
                i,j = j,i 
                i = N+1 - i 
                queue = deque([[N+1 - last_j, last_i] for last_i, last_j in queue])
                
print(time)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;하지만 회전 행렬로 구현을 하면 다음과 같은 문제가 발생했다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;회전 시키면 기존 index 의 위치도 회전을 시켜줘야 한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;뱀의 길이가 줄어 들기위해 저장해놓은 위치는 회전에 회전을 거듭한다. 그렇기 때문에 자료구조에 저장을 해놓고 회전할때마다 index 를 변경해줘야한다. 이를 위해 queue 를 사용했다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면 회전을 시키는 것 뿐만 아니라 indexing 을 동시에 하고 있을 때는 회전 행렬을 사용하는 것이 쉽지 않다는 것을 깨달았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러번의 회전이 중첩되면서 indexing 이 아예 꼬이는 경우가 발생할 수 있다는 것을 알았다.&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;회전 행렬로도 문제를 잘 해결했지만, 이 문제는 방향으로 구현할 때 훨씬 수월하다는 것을 배웠다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;2. 방향으로 구현&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1661445889676&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline
from collections import deque 

N = int(input())
K = int(input())

board = [[0] * (N+2) for _ in range(N+2)]

for i in range(N+2):
    for j in range(N+2):
        if i == 0 or i == N+1 or j == 0 or j == N+1:
            board[i][j] = 2 

for i in range(K):
    r, c = map(int, input().split())
    board[r][c] = 1 
    
L = int(input())

change = []

for i in range(L):
    n, direction = input().split()
    change.append((int(n), direction))

dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1] 

idx = 0
y = 1
x = 1
time = 0
board[y][x] = 2

tail = deque([[1,1]])


while True: 
    x += dx[idx]
    y += dy[idx]

    time += 1
    print(board)

    if board[y][x] == 1:
        board[y][x] = 2
        tail.append([y,x])

    elif board[y][x] == 0 :
        board[y][x] = 2 
        tail.append([y,x])
        t_y, t_x = tail.popleft()
        board[t_y][t_x] = 0
    
    elif board[y][x] == 2:
        break

    for n, direction in change: 
        if time == n:
            if direction == 'D':
                idx = (idx+1) % 4
            elif direction == 'L':
                idx = (idx+3) % 4
            
print(time)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;훨씬 더 빠르게 구현할 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 동작 속도나 메모리 사용은 유사하다.&amp;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;※목표:&lt;/b&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;1)아래의 사진처럼 나는 board 를 감싸는 벽을 만들었으나, 최적 코드는 벽을 감싸지 않고 그냥 0 $\leq$ N 로 구현하였다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-25 오후 4.03.01.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rq4YS/btrKE5Q5upJ/TzBB0Kh12bi3vhnB6oEQMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rq4YS/btrKE5Q5upJ/TzBB0Kh12bi3vhnB6oEQMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rq4YS/btrKE5Q5upJ/TzBB0Kh12bi3vhnB6oEQMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frq4YS%2FbtrKE5Q5upJ%2FTzBB0Kh12bi3vhnB6oEQMk%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;512&quot; height=&quot;358&quot; data-filename=&quot;스크린샷 2022-08-25 오후 4.03.01.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;358&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;2) for 문으로 방향을 트는 시간이 되었는지 확인하는 건 readability 가 떨어진다. direction 과 time 을 따로저장하거나 dictionary 에 저장하여 in 으로 확인하는 것이 더 좋아보인다.&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/218</guid>
      <comments>https://itforfun.tistory.com/218#entry218comment</comments>
      <pubDate>Fri, 26 Aug 2022 01:49:02 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 구현 - 자물쇠와 열쇠</title>
      <link>https://itforfun.tistory.com/217</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제 요약&amp;nbsp; &lt;/b&gt;&lt;b&gt;자물쇠와 열쇠&lt;/b&gt;&lt;/h4&gt;
&lt;div&gt;&lt;br /&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;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1 인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&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;br /&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;열쇠의 돌기와 자물쇠의 돌기가 만나서는 안 된다. 자물쇠 모든 홈을 채워 비워있는 곳이 없어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biW0N0/btrKwWENVAf/2o62RUCGsj7crf0v8i0pU0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biW0N0/btrKwWENVAf/2o62RUCGsj7crf0v8i0pU0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biW0N0/btrKwWENVAf/2o62RUCGsj7crf0v8i0pU0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiW0N0%2FbtrKwWENVAf%2F2o62RUCGsj7crf0v8i0pU0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;536&quot; height=&quot;536&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;아이디어&lt;/b&gt; &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;&lt;a href=&quot;https://itforfun.tistory.com/20?category=917395&quot;&gt;회전 행렬&lt;/a&gt; 에대한 개념이 필요하다. &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2D 리스트의 index 에 대한 이해가 필요하다. (어떤 기능이 가능하고 불가능한지 numpy와 혼동하기 쉽다.)&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;Lock 에 Key 를 각각 껴보기 위해서는 Key 의 블록들이 이동해야한다. 하지만 각 원소를 이동시키는 것은 구현이 어렵다. 간단하게&amp;nbsp;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Lock의 크기를 키워서 key 를 커진 Lock을 순회하며 껴보면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ 주의 사항: 더 큰 list 에 작은 list 의 값들을 복사하기 위해서는 전체 원소를 돌며 복사해야 한다. 한번에 복사하는 방법은 list에 없다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661339174150&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import copy

def check(tmp_ex_lock, N, M):
    for i in range(N):
        for j in range(N):
            if tmp_ex_lock[N+i][N+j] != 1:
                return False
    return True
        

def solution(key, lock):
    answer = False
    
    M = len(key)    
    N = len(lock)
    ex_lock = [[0]*(3*N) for i in range(3*N)]
    
    for i in range(N):
        for j in range(N):
            ex_lock[N+i][N+j] = lock[i][j]
            
    for k in range(4):
        key = list(zip(*key[::-1]))    
        for i in range(2*N):
            for j in range(2*N):  
                tmp_ex_lock = copy.deepcopy(ex_lock)
                for r in range(M):
                    for c in range(M):
                        tmp_ex_lock[i+r][j+c] += key[r][c]
                if check(tmp_ex_lock, N, M):
                    answer = True
                    return answer
    return answer&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/217</guid>
      <comments>https://itforfun.tistory.com/217#entry217comment</comments>
      <pubDate>Wed, 24 Aug 2022 20:16:20 +0900</pubDate>
    </item>
    <item>
      <title>구현 - 문자열 압축</title>
      <link>https://itforfun.tistory.com/215</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문자열 압축&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 풀었던 문제라 간단하게 해결하고 싶었으나 엄청나게 해맸다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ababcdcdababcdcd&lt;/li&gt;
&lt;li&gt;2ab2cd2ab2cd : 2개 단위&lt;/li&gt;
&lt;li&gt;2ababcdcd : 8개 단위&lt;/li&gt;
&lt;li&gt;문자열을 1개 이상 단위로 압축 할 때 가장 짧은 것의 길이를 return&lt;/li&gt;
&lt;li&gt;문자열은 제일 앞부터 정해진 길이만큼 잘라야 한다. 따라서 주어진 문자열을 x/ ababcdcd / ababcdcd 로 자르는 것은 불가능&lt;/li&gt;
&lt;li&gt;한번만 나타난 경우 1 은 생략&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;반복이 될 수 있는 경우는 글자 1개 ~ 총 글자 // 2 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 글자 // 2 를 넘어선 순간 반복하면 총 글자 수를 넘어가서 반복이 불가능하다.&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;문제에서 구하고자 하는 답은 &quot;반복 하는 경우 중 가장 글자 수가 적은 경우&quot; 이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 &lt;span&gt;반복이 될 수 있는 경우는 글자 1개 ~ 총 글자 // 2&lt;span&gt;&amp;nbsp; 중 가장 총 글자 수가 적은 경우를 찾아야 한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞 뒤 반복을 확인하며 다음의 경우가 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 몇번 반복되었느냐에 단어의 수가 결정된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 반복이 멈추는 경우가 앞선 반복 단어의 수가 결정되는 순간이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 반복을 확인 할 때 앞 단어 그 다음 단어를 비교해서 결정하다 보니 최종 반복 단어는 비교할 다음 단어가 없어 누락될 수 있다.&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;4) 반복 수에서 남는 글자들은 나열되므로 총 단어수 % 반복 수로 그 수를 더해준다.&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;문제 풀이&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661172559327&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;S = input().rstrip()

lst = []

for i in range(1, len(S)//2 +1):
    first = S[0:i]
    ans = 0
    cnt = 0
    for j in range(i, len(S) -i+1, i):
        next_ = S[j:j+i]
        if first == next_:
            cnt += 1 
        else:
            if cnt != 0:
                ans += (i+1)
                cnt = 0 
            else:
                ans += i

        first = next_
    ans += (i+1) if cnt != 0 else i
    ans += (len(S)%i)
    lst.append(ans)

print(lst)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧지만 가독성도 떨어지고 생각보다 예외처리 및 구현에 어려움을 겪었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;&lt;b&gt;개선된 풀이방법&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661172567965&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    if len(s) == 1: return 1 

    lst = []
    for i in range(1, len(s)//2+1):
        lst.append([s[j : j + i] for j in range(0, len(s) - i + 1, i)])
    
    answer = []
    for i in lst:
        tmp = 1
        tmp_ans = ''
        for a,b in zip(i, i[1:]+['']):
            if a == b:
                tmp += 1 
            else: 
                tmp_ans += (str(tmp) + a) if tmp &amp;gt; 1 else a
                tmp = 1 
        
        tmp_ans += s[len(''.join(i)):]    
        answer.append(len(tmp_ans))
    
    return min(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 zip 으로 풀 생각은 해봤으나 반복되는 수도 바뀌고 항목을 접근 할 때 어떻게 반복 되는 글자들을 묶어줄지 아이디어가 안떠올랐는데, 그 당시의 나는 떠올랐었던듯 하다. 다만 당시에는 구하고자 하는 정답이 길이임을 고려하여 길이만 처리했으면 되는데 굳이 문자열을 만들고자 했었다. 하지만 사실 반복되는 횟수가 2자리를 넘어갈 수도 있기때문에 이는 문자열을 만드는 것이 유리한 문제였다.&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;zip 으로 풀때의 장점은 총 두가지이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 코드의 readability 가 높다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 최종 case 에 대한 처리를 따로 안해줘도 되게 짤 수 있다. - 하지만 이는 경우에 따라 다르긴하다.&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;※ 부록&lt;/p&gt;
&lt;pre id=&quot;code_1661244262028&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(S):
    if len(S) == 1: return 1 
    lst = []

    for i in range(1, len(S)//2 +1):
        lst.append([S[j: j+i] for j in range(0, len(S)-i+1 ,i)])


    result = 10e9
    
    for data in lst:
        cnt = 0
        ans = 0 
        for first, second in zip(data, data[1:] + [' ']):
            if first == second:
                cnt += 1 
            else: 
                ans += (len(first) + 1) if cnt != 0 else len(first) 
                cnt = 0
        result = min(ans, result)
    
    return result&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 풀이법으로 개수만 구해서 풀어보려 했으나 많은 경우 실패&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교책이 한개 더 많아져서 첫번 째 겪었던 문제와 유사한 문제 발생.&amp;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;또한 반복된 문자가 10개 넘어가면 반복 문자 길이 + &lt;b&gt;1 에서 1 이 2 가 되어야 한다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;즉, 해당 문제는 문자열로 해결하는 것이 가장 지혜롭다.&amp;nbsp;&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;&lt;b&gt;두 가지 비교&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661247349716&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rest = len(S) % len(first) 
if len(ans) + rest&amp;lt; result:
    result = len(ans) + rest&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1661247354818&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ans += S[len(''.join(data)):]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/06ZpP/btrKqELnvOt/eKFmbR1FPo7qvLDftU6t11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/06ZpP/btrKqELnvOt/eKFmbR1FPo7qvLDftU6t11/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;448&quot; data-filename=&quot;스크린샷 2022-08-23 오후 6.36.08.png&quot; style=&quot;width: 50.4601%; margin-right: 10px;&quot; data-widthpercent=&quot;51.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/06ZpP/btrKqELnvOt/eKFmbR1FPo7qvLDftU6t11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F06ZpP%2FbtrKqELnvOt%2FeKFmbR1FPo7qvLDftU6t11%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;530&quot; height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnNjre/btrKpSpIxDu/0s8m6u9ecNfHkv9kO5LjZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnNjre/btrKpSpIxDu/0s8m6u9ecNfHkv9kO5LjZ1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;462&quot; data-filename=&quot;스크린샷 2022-08-23 오후 6.36.40.png&quot; style=&quot;width: 48.3771%;&quot; data-widthpercent=&quot;48.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnNjre/btrKpSpIxDu/0s8m6u9ecNfHkv9kO5LjZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnNjre%2FbtrKpSpIxDu%2F0s8m6u9ecNfHkv9kO5LjZ1%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;524&quot; height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;%가 꽤 빠를 줄 알았는데 비슷하다.&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/215</guid>
      <comments>https://itforfun.tistory.com/215#entry215comment</comments>
      <pubDate>Tue, 23 Aug 2022 12:58:10 +0900</pubDate>
    </item>
    <item>
      <title>그리디 기출 문제 06 무지의 먹방 라이브</title>
      <link>https://itforfun.tistory.com/214</link>
      <description>&lt;div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;회전판 위 N 개의 음식&lt;/li&gt;
&lt;li&gt;각 음식은 1 ~ N 까지의 번호&lt;/li&gt;
&lt;li&gt;각 음식 섭취에는 일정 시간 소요&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다음의 방법으로 음식 섭취&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 무지는 1번 음식부터 먹는다. 회전판 번호가 증가하는 순서대로 음식을 무지 앞으로 가져다 놓는다. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 마지막 번호의 음식 섭취 후 회전판에 의해 다시 1번 음식이 무지 앞으로 온다. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 무지는 음식 하나를 1초 동안 섭취한 후 남은 음식은 그대로 두고, 다음 음식을 섭취 (다음 음식이란 아직 남은 음식 중 가장 가까운 번호의 음식)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 회전판이 다음 음식을 무지 앞으로 가져오는데 걸리는 시간은 없다. &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1660995243458&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 

food_times = list(map(int,input().split()))
k = int(input())

n = len(food_times)
tmp = 0 

for i in range(k):
    if food_times[(i+tmp)%n] == 0 :
        tmp += 1 
    food_times[(i+tmp)%n] -= 1 

print(food_times)
print((i+tmp+1)%n +1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 음식 섭취 시간 리스트를 돌며 답을 구했는데, 정답지는 다른 답을 요구한다.&amp;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;food_times 의 길이가 1 이상 200,000 이하이고&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;1이상 100,000,000 이하의 자연수,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 k는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1이상 2 x 10의 13 승 이하의 자연수 라는 것을 고려하자.&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;그냥 brute force 로 도는 것은 시간적으로 문제가 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작은걸 먼저 처리해야 하지 않을까 라는 생각은 했지만 구체적인 알고리즘까지는 잘 연결되지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 풀이를 위한 알고리즘은 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 음식 섭취 시간에 따라 우선순위 queue 에 넣는다.&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;그 후 우선 순위 queue 에서 첫번째 즉 가장 작은 시간이 걸리는 원소를 뽑아내고 전체 음식 개수를 곱한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 3 이 가장 작은 시간이라하고 전체 음식 개수가 5개라 할 때 가장 작은 시간이 0 되는 기점은 3 X 5 = 15 만큼 지난 시점이라는 것을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K 값에 따라 다르지만 만약 K 값이 굉장이 큰 경우, 다음과 같이 접근을 해야 문제 풀이가 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K 값이 작은 경우 예를 들어 4정도라고 생각해보자. 그 때는 간단한 문제이므로 나열식으로 하나씩 접근하면 어려울 것이 없다.&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;pre id=&quot;code_1661063309205&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys 
input = sys.stdin.readline 
import heapq
food_times = list(map(int,input().split()))
K = int(input())
heap = []

for i in range(1, len(food_times)):
    heapq.heappush(heap, (food_times[i-1] , i))

n = 0
tmp = 0



while(heap):
    t, idx = heapq.heappop(heap)
    if K - t * len(heap)+1 &amp;gt;= 0:
        K -= t * len(heap)+1
        food_times = [i - K for i in food_times]
    else:
        for i in food_times:
            if i == 0:
                continue
            else:
                tmp += 1 
        tmp = tmp % (len(heap))
        break 

print(tmp+1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답지의 구현 방식을 한번 참고해본다.&amp;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;우선 전체 음식을 먹는 시간보다 k 가 크거나 같은 경우의 처리이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661063371620&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if sum(food_times) &amp;lt;= k:
	return -1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;queue 에서 빼서 줄인 음식 시간 만큼 다른 음식 시간에서도 빼줘야 한다.&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;pre id=&quot;code_1661064337963&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sum_value = 0 # 먹기 위해 사용한 시간
previous = 0 # 직전에 다 먹은 음식 시간 


length = len(food_times)

while sum_value + (heap[0][0] - previous) * length &amp;lt;= K: 
    now = heapq.heappop(heap)[0]
    sum_value = (now - previous) * length 
    length -= 1
    previous = now&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당의 경우 K 변수를 건드리지 않기 위해서 sum_value 라는 변수를 사용했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 length 변수를 사용했다. 하지만 sum_value 는 K 로 대체 가능하고, len(heap)이 length 변수를 대체할 수 있다.&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;pre id=&quot;code_1661064909962&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while K - heap[0][0] * len(heap) &amp;gt; 0:
    tmp = heapq.heappop(heap)[0]
    K -= (tmp - previous) * (len(heap)+1) 
    previous = tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 최종 나열을 위해서 내 구현과 같이 복잡하게 for 문을 돌 필요가 없다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661065784229&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;heap.sort(key = lambda x: x[1])
print(heap[(K-1) % len(heap)][1])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0인 경우 뛰어넘는다는 뜻은 해당 값을 빼버리면 된다는 뜻이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 idx 를 기준으로 sort 해주면 해결된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;for 문을 도는게 조금 더 빠를 수 있지만, 어차피 몇개 안되기 때문에 sort 를 쓰는 것이 깔끔하다.&amp;nbsp;&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;&lt;b&gt;※여기서는 왜 sort대신 heap sort 를 사용할까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661065850973&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Python heapq vs. sorted complexity and performance&quot; data-og-description=&quot;I'm relatively new to python (using v3.x syntax) and would appreciate notes regarding complexity and performance of heapq vs. sorted. I've already implemented a heapq based solution for a greedy '...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&quot; data-og-url=&quot;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/syBJy/hyPvYd19ge/5aQ0F8VrBh4rwXNaaRXKG1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/24666602/python-heapq-vs-sorted-complexity-and-performance&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/syBJy/hyPvYd19ge/5aQ0F8VrBh4rwXNaaRXKG1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Python heapq vs. sorted complexity and performance&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I'm relatively new to python (using v3.x syntax) and would appreciate notes regarding complexity and performance of heapq vs. sorted. I've already implemented a heapq based solution for a greedy '...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;heapq&lt;span&gt;&amp;nbsp;&lt;/span&gt;is faster than&lt;span&gt;&amp;nbsp;&lt;/span&gt;sorted&lt;span&gt;&amp;nbsp;&lt;/span&gt;in case if you need to add elements on the fly i.e. additions and insertions could come in &lt;b&gt;unspecified&lt;/b&gt; order. Adding new element preserving inner order in any heap is faster than resorting array after each insertion.&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;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;sorted&lt;span&gt;&amp;nbsp;&lt;/span&gt;is faster if you will need to retrieve all elements in order later.&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;즉 정렬 된 list 에 새로운 원소를 집어넣는 경우 heap 은 넣기만 하면 되는데 sort 는 다시 sort 를 사용해야 하므로 더 오래 걸린다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당 문제는 반복해서 sort 를 할 필요는 없으므로 그냥 sort 를 쓰는 것이 우선순위 큐를 쓰는 것보다 빠를 수 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/214</guid>
      <comments>https://itforfun.tistory.com/214#entry214comment</comments>
      <pubDate>Sun, 21 Aug 2022 16:14:13 +0900</pubDate>
    </item>
    <item>
      <title>그리디 기출 문제 05 볼링공 고르기</title>
      <link>https://itforfun.tistory.com/213</link>
      <description>&lt;h4 id=&quot;-문제&quot; data-ke-size=&quot;size20&quot;&gt;문제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A,B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다.&lt;br /&gt;예를 들어 N이 5이고, M이 3이며 각각의 무게가 차례대로 1,3,2,3,2일 때 각 공의 번호가 차례대로 1번부터 5번까지 부여됩니다. 이때 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1번, 2번), (1번, 3번), (1번, 4번), (1번, 5번), (2번, 3번), (2번, 5번), (3번, 4번), (4번, 5번)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 두 사람이 공을 고르는 경우의 수는 8가지입니다. N개의 공의 무게가 각각 주어질 때, 두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요.&lt;/p&gt;
&lt;h4 id=&quot;입력&quot; data-ke-size=&quot;size20&quot;&gt;입력&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M이 공백으로 구분되어 각각 자연수 형태로 주어집니다. (1&amp;lt;=N&amp;lt;=1,000 ,1&amp;lt;=M&amp;lt;=10)&lt;/li&gt;
&lt;li&gt;둘째 줄에 각 볼링공의 무게 K가 공백으로 구분되어 순서대로 자연수 형태로 주어집니다. (1&amp;lt;=K&amp;lt;=M)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입력&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660990403028&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;5 3 
1 3 2 3 2&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1660990415577&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;8 5 
1 5 4 3 2 4 5 2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660990427516&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;8&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1660990432027&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;25&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;풀이:&amp;nbsp;&lt;/b&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;1) 순서 신경 안쓴다. 2) 같은 무게 불가능&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 적용해서 조합을 만들고 거기서 같은 수가 반복된 경우를 제거했다&lt;/p&gt;
&lt;pre id=&quot;code_1660990507634&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import time
import sys 
input = sys.stdin.readline 
from itertools import combinations

N, M = map(int, input().split())

lst = list(map(int, input().split()))
save = [0] * (M+1)

start = time.time()
ans = list(combinations(lst, 2))

answer = len(ans)
for i in range(len(ans)):
     a,b = ans[i]
     if a == b:
         answer -= 1

print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1660990564270&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; ans = 0

 for i in range(len(lst)-1):
     for j in range(i+1, len(lst)):
         if lst[i] == lst[j]:
             continue 
         ans += 1
         #ans.append((lst[i],lst[j]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for 문을 돌리면 다음과 같다.&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;pre id=&quot;code_1660990750819&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in lst:
    save[i] += 1 

answer = 0
for i in range(1, M+1):
    N -= save[i]
    answer += (N * save[i])
    
print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 풀이는 원소가 8개 일 때&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8 + 7 + ... 1 = 36 이다.&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;8 + 5 = 13 약 2~ 3 배정도 효율적이다.&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;A , B 가 선택을 할 때 A 의 선택에 따라 남는 것이 B의 선택이 된다는 논리이다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;1번 볼링&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;2번 볼링&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;3번 볼링&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;4번 볼링&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;5번 볼링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 볼링 1개를 선택하면 총 볼링에서 7개가 남는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번 볼링 2개를 선택하면 총 볼링에서 5개가 남는다. (순서는 신경쓰지 않으므로 7 - 2 = 5)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번 볼링 1개를 선택하면 총 볼링에서 4개가 남는다. (순서는 신경쓰지 않으므로 5 - 1 = 4)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번 볼링 2개를 선택하면 총 볼링에서 2개가 남는다. (순서는 신경쓰지 않으므로 2 - 2 = 2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번 볼링 2개를 선택하면 총 볼링에서 0개가 남는다. (순서는 신경쓰지 않으므로 2 - 2 = 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;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트총정리</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://itforfun.tistory.com/213</guid>
      <comments>https://itforfun.tistory.com/213#entry213comment</comments>
      <pubDate>Sat, 20 Aug 2022 19:31:50 +0900</pubDate>
    </item>
  </channel>
</rss>