<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Chat HoPT 5</title>
    <link>https://hithisis05.tistory.com/</link>
    <description>ML/AI/Deep Learning 공부 일지</description>
    <language>ko</language>
    <pubDate>Sun, 10 May 2026 20:42:25 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>thisis05</managingEditor>
    <image>
      <title>Chat HoPT 5</title>
      <url>https://tistory1.daumcdn.net/tistory/6961638/attach/5ec582839b744b15803a3f3b130ea731</url>
      <link>https://hithisis05.tistory.com</link>
    </image>
    <item>
      <title>[Paper Review] Sequences of Sets (KDD 2018)</title>
      <link>https://hithisis05.tistory.com/4</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;논문 링크&amp;nbsp; : &lt;a href=&quot;https://www.cs.cornell.edu/~arb/papers/sequences-of-sets-KDD-2018.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.cs.cornell.edu/~arb/papers/sequences-of-sets-KDD-2018.pdf&lt;/a&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 논문은 데이터 마이닝과 머신러닝에서 인간 행동을 모델링하는 연구의 중요성을 강조한다. 특히, 사용자가 특정 항목을 반복적으로 소비하는 행동을 예측하는 데 초점을 맞추고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이전 연구들은 주로 어떤 하나의 아이템에 대한 반복적인 connection에 중점을 두었지만, 이 논문은 여러 항목과 동시에 connection하는, 즉 집합 측면에서 repetition에 주목한다. 예를 들어, 이메일은 여러 수신자에게 발송될 수 있고, 학술 논문은 여러 공동 저자와 함께 작성되는 것처럼, 부분적 혹은 완전한 집합의 반복이 이뤄지기 마련이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 논문은 특정 Sets들의 sequence K개가 주어졌을 때, K+1 time에 Set에 들어갈 성분 중에서도 novel이 아닌 repeated items들을 예측하는 데 주목하고 있다. 또한 이러한 예측을 위해 dataset의 특징을 고려한 모델인 Correlated Repeated Unions (CRU)를 소개하고 있다.&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;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Data Analysis&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHgtiK/btsG0STpk7a/1gLsY5nID6jrIJOlJLk680/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHgtiK/btsG0STpk7a/1gLsY5nID6jrIJOlJLk680/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHgtiK/btsG0STpk7a/1gLsY5nID6jrIJOlJLk680/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHgtiK%2FbtsG0STpk7a%2F1gLsY5nID6jrIJOlJLk680%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;281&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 논문에선 sets이 sequential 하게 나타나는, 즉 ordered sequence set data가 존재하는 총 4개 domain의 8개 dataset을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 분석의 통일화를 위해 한 set의 size는 5개 이하로 통일한다. (tag data가 set에 최대 5개만 들어갈 수 있음) 이 경우 data의 loss가 어느정도 일어나는 지 확인해봤을 때, set size가 5개를 넘어가는 경우는 data의 극히 일부에 불과하기 때문에 거의 없다고 볼 수 있다. 또한 sequence에 set이 적어도 10개이상 존재하는 경우를 고려한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) Repeat behavior&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;1280&quot; data-origin-height=&quot;916&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lQc27/btsGY0rQW8i/3xuozxqB3eu2UDJjFeodnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lQc27/btsGY0rQW8i/3xuozxqB3eu2UDJjFeodnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lQc27/btsGY0rQW8i/3xuozxqB3eu2UDJjFeodnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlQc27%2FbtsGY0rQW8i%2F3xuozxqB3eu2UDJjFeodnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;443&quot; height=&quot;317&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;916&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Sequence 내에선 위와 같은 노드의 등장이 나타날 수 있다.&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;font-family: 'Nanum Gothic';&quot;&gt;(1) set 전체가 정확하게 반복&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) set 중 일부가 반복&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(3) prior set을 포함하는 super set이 나타나는 경우&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(4) 전체 다 새로운 item이 나타나는 경우&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 (4)의 경우의 fraction, 즉 새로운 Set이 등장할 때 전체 다 새로운 노드로 구성되어 있는 경우는 많이 없다고 볼 수 있다. Figure B 또한 set size가 커질 때마다 이러한 비율은 줄어든다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Figure A, C를 통해 모든 new set은 거의 exactly repeat이거나 일부 repeat일 경우가 많다는 것을 알 수 있다. 즉, Figure D처럼 sequence 상에서 등장하는 set들은 이전 set의 super set일 경우가 많다는 것을 의미하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉 본 연구에서는 시간에 따라 repeat elements의 분포가 어떠한 지를 살펴본다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) Subset correlation&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v5fTp/btsG0eCsT9t/NMT3tdFTXCoOnf2DZx29a1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v5fTp/btsG0eCsT9t/NMT3tdFTXCoOnf2DZx29a1/img.png&quot; data-alt=&quot;어떤 set에 repeated elements가 존재할 때, repeated elements의 수의 분포&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v5fTp/btsG0eCsT9t/NMT3tdFTXCoOnf2DZx29a1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv5fTp%2FbtsG0eCsT9t%2FNMT3tdFTXCoOnf2DZx29a1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;259&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;어떤 set에 repeated elements가 존재할 때, repeated elements의 수의 분포&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 번째로 볼 것은, 단순 element가 반복되는 것이 아니라, subset이 함께 반복되는 경우가 많다는 것이다. 즉, 어떤 set 내의 원소들은 서로 연관이 있으므로 반복될 때도 같이 반복되는 경향이 있다는 것이다. &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;1280&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7eAdO/btsGZx3CSOU/8zNhdZkrDxIOWY4qHiLkE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7eAdO/btsGZx3CSOU/8zNhdZkrDxIOWY4qHiLkE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7eAdO/btsGZx3CSOU/8zNhdZkrDxIOWY4qHiLkE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7eAdO%2FbtsGZx3CSOU%2F8zNhdZkrDxIOWY4qHiLkE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;67&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 현재 j번째까지 나타난 집합들의 부분집합의 개수를 세고 평균을 내보면 아래와 같은 결과가 나타난다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mj9pI/btsGZZMfHmW/PdUZJjp9KFQrUNa2BUMZKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mj9pI/btsGZZMfHmW/PdUZJjp9KFQrUNa2BUMZKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mj9pI/btsGZZMfHmW/PdUZJjp9KFQrUNa2BUMZKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmj9pI%2FbtsGZZMfHmW%2FPdUZJjp9KFQrUNa2BUMZKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;451&quot; height=&quot;231&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉, size 2 or size 3의 subset이 함께 중복되어서 나타나는 경우가 많다는 것이다. null model의 경우 sequence 내의 sets의 size는 동일하게 유지하면서 elements들을 랜덤하게 섞을 경우의 sequence이다. 즉, 이렇게 할 경우 단순 element들이 반복하여 등장하는 것인지, 아니면 set 내에서의 어떤 element들끼리의 correlation이 존재하고 이를 기반으로 반복되는 것이지를 평가할 수 있다. 위 table에서 나온 것처럼 일종의 correlation이 존재한다고 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉 이러한 분석을 통해서, 어떤 element가 반복되는 지 따로따로 보기보다는 sets 내의 어떤 subset이 반복되고 있는지를 기반으로 보려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(3) Recency bias&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 분석을 통해 확인한 결과 repeat set은 최근 set의 정보를 좀 더 반영하여 repeat하는 것으로 확인되었다. 즉 recency bias가 존재하는 것이다.&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;1280&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PROt4/btsGY9aWYdi/guyZ3WxrAKpZRcoBWc6JOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PROt4/btsGY9aWYdi/guyZ3WxrAKpZRcoBWc6JOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PROt4/btsGY9aWYdi/guyZ3WxrAKpZRcoBWc6JOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPROt4%2FbtsGY9aWYdi%2FguyZ3WxrAKpZRcoBWc6JOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;56&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위와 같이 Jacard Index를 이전 set들과 계산한 결과 가장 최근의 set가 가장 유사한 것으로 나타났다.&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;1280&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdROpl/btsGZTFkxdN/Kk1MBtMaCpDDYgHq1IDIEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdROpl/btsGZTFkxdN/Kk1MBtMaCpDDYgHq1IDIEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdROpl/btsGZTFkxdN/Kk1MBtMaCpDDYgHq1IDIEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdROpl%2FbtsGZTFkxdN%2FKk1MBtMaCpDDYgHq1IDIEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;255&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 다음 set의 repeat elements를 예측할 때 위를 고려하여 예측이 진행되어야 할 것으로 보인다.&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;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. The Correlated Repeated Unions Model (CRU)&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 연구에서는 (2) Subset correlation을 고려하여 시퀀스 내에서 이전 Set인 $S_i$에서 각 element들이 뽑힐 확률을 $p$로 설정하고, (3) Recency bias를 고려하여 $S_i$를 뽑을 확률을 $w_i$ : recency bias weight로 설정한다. recency bias의 경우 가장 최근 set을 더 많이 가중하여 뽑을 수 있도록 weight를 조정한다. 우리는 최종적으로 시퀀스 상 다음 set에 올 repeat elements를 예측하고 이를 기반으로 w, p를 조정하여 최적 파라미터를 찾아내는 것을 기본 구조로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) Algorithm 설명&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러면 위 세가지 요소를 반영하여 repeat consumption을 modeling 해보자.&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;1280&quot; data-origin-height=&quot;1239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M415R/btsGZuMH2Te/oiHdEiwujpCwPjmEV0AKe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M415R/btsGZuMH2Te/oiHdEiwujpCwPjmEV0AKe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M415R/btsGZuMH2Te/oiHdEiwujpCwPjmEV0AKe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM415R%2FbtsGZuMH2Te%2FoiHdEiwujpCwPjmEV0AKe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;437&quot; height=&quot;423&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일단은 기본적으로 하고자 하는 건 $S_{k+1}$에 나타나는 Repeat elements $R_{k+1}$에 대한 probability distribution을 구하는 것이다.&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;font-family: 'Nanum Gothic';&quot;&gt;먼저 recency weight (가장 최근의 sequence일수록 weight가 높음)를 기반으로 $S_i$를 선택한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그 후 probability p를 기반으로 각 원소를 뽑을지 말지 정해서 subset $T$를 정한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이전 step을 통해 모아진 R과 T를 합집합 연산했을 때 원소의 개수가 N개를 넘어간다면, T를 너무 크게 뽑는 것이므로 T에서 random하게 일부 원소를 빼면서 R에 합집합 연산을 해준다. 이 과정은 크기가 N보다 작아질 때 까지 반복한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;R의 크기가 목표 repeat set size인 r이 될 때 반복을 멈춘다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이런 알고리즘을 통해서 뽑힌 R은 step에 따라 어떤 order에 의해 뽑히게 될 것이다. 즉, 매 step 뽑는 T \ R을 ordered partition이라고 생각할 수 있는 것이다. 따라서 우리는 $\mathcal{P}(X)$를 어떤 X의 ordered partitions set이라고 하면, X = {a, b} &amp;rarr; {({a}, {b}), ({b}, {a}), ({a, b})} 이라고 생각할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 $E_{r,k}$를 S1 - Sk 까지의 합집합 중에서 모든 r- size subset의 집합이라 할 때, 우리는 $E \in E_{r,k}$에 속하는 E를 결국 만들어 내는 것이고, 이 E에 대해서 각 step 당 뽑는 순서를 고려하면 $\mathcal{P}(E)$가 되는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;결국 우리가 하고자 하는 것은 어떤 기준에 의해 repetition 되는 지 알아보기 위해 Likelihood of $R_{k+1}$을 최대화하는 w, p를 구하는 것이므로 아래와 같이 식을 세울 수 있다.&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;1280&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfZja7/btsGYLV1tHD/B5jsdCvKk1wRxsPA419kDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfZja7/btsGYLV1tHD/B5jsdCvKk1wRxsPA419kDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfZja7/btsGYLV1tHD/B5jsdCvKk1wRxsPA419kDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfZja7%2FbtsGYLV1tHD%2FB5jsdCvKk1wRxsPA419kDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;84&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉 R_k+1의 Likelihood는 이를 구성하는 orderd partition X의 확률의 합으로 나타내지는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇다면 이 확률을 어떻게 구할 수 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) Evaluation of Probability $R_{k+1}$&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 가지 가정을 해보자&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) X : a ordered partition&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) B : 다음 step에 추가될 order, &lt;b&gt;but last order는 아님&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재까지 추가된 R과 다음 step의 T도 있다고 했을 때, X를 성공적으로 완성해나가기 위해선 다음 step에 두가지 경우가 발생할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Uw7HO/btsG0JhWovC/KgUA05pcAeqYyxp33X2qKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Uw7HO/btsG0JhWovC/KgUA05pcAeqYyxp33X2qKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Uw7HO/btsG0JhWovC/KgUA05pcAeqYyxp33X2qKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUw7HO%2FbtsG0JhWovC%2FKgUA05pcAeqYyxp33X2qKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;68&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만약 (1)이라면 완전히 R에 이미 있는 것이기 때문에 order가 추가되지 않는다. 따라서 계속 반복해야 한다. 만약 (2)라면 R에 없는 것도 T에 포함되어 있기 때문에 성공적인 order가 추가된다. 따라서 한 스텝에서의 확률은 아래와 같이 구성된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNgL7U/btsG0tGkdMa/Frjtc8KIwPIcQStCNLHMkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNgL7U/btsG0tGkdMa/Frjtc8KIwPIcQStCNLHMkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNgL7U/btsG0tGkdMa/Frjtc8KIwPIcQStCNLHMkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNgL7U%2FbtsG0tGkdMa%2FFrjtc8KIwPIcQStCNLHMkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;84&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1)의 확률을 q_r, (2)의 확률을 q_s라 하면 위와 같이 표현할 수 있다. 그러면 q_r, q_s를 좀 더 표현해보면 아래와 같다.&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;1280&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HBYbe/btsGZLm8KRY/aSiZkTXMkHbLS4kluOf9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HBYbe/btsGZLm8KRY/aSiZkTXMkHbLS4kluOf9l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HBYbe/btsGZLm8KRY/aSiZkTXMkHbLS4kluOf9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHBYbe%2FbtsGZLm8KRY%2FaSiZkTXMkHbLS4kluOf9l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;100&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Ind는 일단 이 집합에 속하는지 아닌지를 1, 0으로 나타내주는 Indicator function이다. $P_{T,S} = p^t(1-p)^{s-t}$로, 우리가 S_i의 원소 s개중에서 |T| = t를 선택할 확률을 쭉 구한것이다. 직관적으로 이해가 가능하다. 따라서 위의 수식을 아래와 같이 직관적으로 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$q_r =$ 모든 $S_i$에 대해서 : $S_i$를 뽑을 확률 x (1)의 case에 해당하는 경우의 확률의 합&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$q_s =$ 모든 $S_i$에 대해서 : $S_i$를 뽑을 확률 x (2)의 case에 해당하는 경우의 확률의 합&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 (1)과 (2)는 disjoint하고 합집합 연산 시 모든 가능성을 포함하게 되므로 위와 같이 확률이 계산된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지금까지는 B가 last order가 아닌 경우를 구한 것이다. 그렇다면 B가 last order일 경우는 어떻게 되는가? 이 경우 Equation (5)만 바뀌게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우리의 알고리즘이 마지막 time에 완성되기 위해선 다음과 같은 조건을 따라야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;$|T \backslash (R \cup B)| &amp;gt;= |R\cup B|$&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉, 여기서의 B는 order partition set에서 마지막 원소를 의미하는데, 이 때 T에서 더 많이 R에 없는 것들을 뽑아내버리면 이를 덜어내는 작업을 해야하는 것이다. (Algorithm 1의 second if statement)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉 C = T \ (R U B) 에 해당하는 원소들을 뽑아내기 위해선 알고리즘 상에서 뽑히는 y가 C에 있지 않은 것부터 뽑여야 한다. 따라서 아래와 같이 B를 적절히 capture하는 확률이 나타난다.&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;1280&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/db2KHD/btsGY5T3Edr/q1Takv6TfSw2ebZCkQVmM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/db2KHD/btsGY5T3Edr/q1Takv6TfSw2ebZCkQVmM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/db2KHD/btsGY5T3Edr/q1Takv6TfSw2ebZCkQVmM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdb2KHD%2FbtsGY5T3Edr%2Fq1Takv6TfSw2ebZCkQVmM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;467&quot; height=&quot;101&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;순서를 고려하여 전체 배치 중에서 B에 해당하는 것들이 먼저 배치되는 확률을 나타낸다고 보면된다. 이때, B, C 모두에 해당하지 않는, 즉 T에서 이미 R에 있는 것들은 고려할 필요가 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 이를 고려하여 마지막 B를 뽑는 확률 q_s를 따로 지정해준다.&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;1280&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0GYQK/btsGZYzNrno/B9EZquySUFhA4xXclARXcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0GYQK/btsGZYzNrno/B9EZquySUFhA4xXclARXcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0GYQK/btsGZYzNrno/B9EZquySUFhA4xXclARXcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0GYQK%2FbtsGZYzNrno%2FB9EZquySUFhA4xXclARXcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;69&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 모든 order partition의 set X = (B1, B2, &amp;hellip; Bt)라고 했을 때, 최종적으로 우리가 R_{k+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;1280&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKT1Po/btsGZkKe4sg/QDvMOyn2rxdcQPMsEI6ohk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKT1Po/btsGZkKe4sg/QDvMOyn2rxdcQPMsEI6ohk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKT1Po/btsGZkKe4sg/QDvMOyn2rxdcQPMsEI6ohk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKT1Po%2FbtsGZkKe4sg%2FQDvMOyn2rxdcQPMsEI6ohk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;111&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 때 우리는 어떤 S_i에서 뽑았는지를 모두 고려하여 일종의 가중합을 하기 위해 W = \sum_{i=1}^k w_i weight normalization을 곱해준다.&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;1280&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMsQ73/btsG0IXEfEh/oppFvikJIMRtgugh05rz6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMsQ73/btsG0IXEfEh/oppFvikJIMRtgugh05rz6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMsQ73/btsG0IXEfEh/oppFvikJIMRtgugh05rz6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMsQ73%2FbtsG0IXEfEh%2FoppFvikJIMRtgugh05rz6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;79&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;176&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;1280&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc4Phw/btsGZVJYnIX/GbKXJHgkorMujtriPGcqrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc4Phw/btsGZVJYnIX/GbKXJHgkorMujtriPGcqrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc4Phw/btsGZVJYnIX/GbKXJHgkorMujtriPGcqrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc4Phw%2FbtsGZVJYnIX%2FGbKXJHgkorMujtriPGcqrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;117&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;1280&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7dRW2/btsGZaHGru2/Zd1K5LX9wF6xqNevmlBrU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7dRW2/btsGZaHGru2/Zd1K5LX9wF6xqNevmlBrU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7dRW2/btsGZaHGru2/Zd1K5LX9wF6xqNevmlBrU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7dRW2%2FbtsGZaHGru2%2FZd1K5LX9wF6xqNevmlBrU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;48&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;를 의미하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최종적으로 Log Likelihood function을 설정하고, W에 대한 gradient를 구하여 computing 하기 위해 아래와 같이 식을 완성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLOGlz/btsGZmBc2Rf/TDajwfCXipNOkVIXGmN9Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLOGlz/btsGZmBc2Rf/TDajwfCXipNOkVIXGmN9Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLOGlz/btsGZmBc2Rf/TDajwfCXipNOkVIXGmN9Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLOGlz%2FbtsGZmBc2Rf%2FTDajwfCXipNOkVIXGmN9Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;598&quot; height=&quot;153&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 이 Log likelihood의 w에 대한 gradient function을 조정해가면서 어떤 W에서 어떤 결과가 나오는지를 확인해보자.&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;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. EXPERIMENTAL RESULTS&lt;/span&gt;&lt;/h2&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) Likelihood and performance&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저, 계산된 Likelihood를 N (sequences 전체에서 repeat이 존재하는 set의 개수)으로 나눠주어 $e^{LL_p/N}$ : mean per-set likelihood를 구해준다. p가 변함에 따라 이 평균 우도가 어떻게 변하는지 도메인 데이터셋 별로 살펴본다. 이 때 baseline과 비교하여 살펴볼 것인데, 이 baseline model은 set structure를 고려하지 않은 모델이라고 생각하면 된다. 즉, 우리는 recency weight라고 하여 각 set에 대해서 가중치를 고려했다면 이 baseline은 element 하나하나를 고려하여 weight를 부여한 것이다. 따라서 set sturcture를 고려하지 않기때문에 p가 존재하지 않고, 하나의 mean per-set likelihood가 존재하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X8lOe/btsGYY1O8JU/sJ0gu8GkdlbG1OK9O1qolK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X8lOe/btsGYY1O8JU/sJ0gu8GkdlbG1OK9O1qolK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X8lOe/btsGYY1O8JU/sJ0gu8GkdlbG1OK9O1qolK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX8lOe%2FbtsGYY1O8JU%2FsJ0gu8GkdlbG1OK9O1qolK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;258&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보이는 것과 같이, 일반적으로 domain 내에서는 최적 p가 비슷한 것으로 나타난다. 즉, 같은 domain내에 있는 dataset들은 이전 set에서 뽑아내는 element의 수가 비슷하다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;email에서는 한 사람이 이전 mail을 보냈던 사람들에게 재차 메일을 보내는 경우가 허다하므로 p가 1근방에 위치하는 것으로 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;tag 데이터에서는 0.5-0.6 정도로 나타나는데, 이는 상위 레벨의 tag를 이전 set에서 가져오고 specific한 tag를 새로 가져오는 느낌이라고 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이처럼 각 domain datset의 p를 분석함으로써 각 network의 구조나 형태를 파악해볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) Learned recency weights&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;1280&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU6j5N/btsG0T5PFz3/k7kaP4K1Qn52Ya51FKXIi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU6j5N/btsG0T5PFz3/k7kaP4K1Qn52Ya51FKXIi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU6j5N/btsG0T5PFz3/k7kaP4K1Qn52Ya51FKXIi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU6j5N%2FbtsG0T5PFz3%2Fk7kaP4K1Qn52Ya51FKXIi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;710&quot; height=&quot;260&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;468&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;font-family: 'Nanum Gothic';&quot;&gt;또한 각 index별, 즉 가장 가까운 set이 1로 시작하여 현재 set과 점점 거리에 따라 index 값이 커질 때 recency weight가 어떻게 달라지는 지를 나타내보면 위와 같다. 눈 여겨볼 점은 2가지이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;첫 번째로 coauth dataset에서 꺾이는 지점이 발견되는 것이다. 지금까지의 기조대로라면, w는 index가 커지면서 감소하는 게 정설이지만, coauth의 경우 일정 index를 지나가면 오히려 weight가 증가하는 형태로 최적화된 것을 볼 수 있다. 이건 prolific authors, 즉 어느정도 productive한 author들이 long term connection을 지니고 있기때문이라고 볼 수 있다. 이 author들은 오랜 기간동안 수많은 paper들을 써왔기 때문에 최근이 아닌 예전 author들과도 상호작용하는 경우가 많기때문에 weight가 증가하는 형태로 나타날 수 있다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;두 번째로 contact-high school과 tags - mathoverflow의 경우 p가 달라지면서 weight distribution이 달지거나, 아예 똑같이 움직이는 연관성도 보인다. 이에 대해선 추가적인 Mining 작업이 필요할 수 있다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;5. Asymptotic Tipping Behavior&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇다면 위 Model을 통해 다음 timestamp의 set을 예측할 때 고려해야하는 점은 무엇이 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 논문에서는 특정 sequence가 특정 set이후에 반복적으로 똑같은 set을 갖게 될 위험성을 확률로 증명하고 있다. 이 특정 set이 나타나는 경우를 Tipping Event라고 정의한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;결론만 따지자면 $W_\infty=\sum_{i=1}^\infty w_i$가 $&amp;lt; \infty$, 즉 어떤 점으로 수렴하는 Bounded일 경우 위와같은 Tipping Behavior가 발생하는 반면, 발산할 경우에는 발생하지 않는다는 것을 증명하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉, 우리가 이 모델을 이용하여 예측하고자 할 때, 우리의 데이터셋의 W의 bounded 여부에 주의하여 모델을 사용해야 함을 말하고 있다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Paper Review/Graph Mining</category>
      <category>data mining</category>
      <category>Graph Mining</category>
      <category>Kdd</category>
      <category>mining paper review</category>
      <category>network mining</category>
      <category>sequences of sets</category>
      <category>temporal network mining</category>
      <author>thisis05</author>
      <guid isPermaLink="true">https://hithisis05.tistory.com/4</guid>
      <comments>https://hithisis05.tistory.com/4#entry4comment</comments>
      <pubDate>Sun, 28 Apr 2024 15:32:35 +0900</pubDate>
    </item>
    <item>
      <title>[Paper Review] Session-based Recommendation with Graph Neural Networks (AAAI 2019)</title>
      <link>https://hithisis05.tistory.com/3</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;논문 링크&amp;nbsp; : &lt;a href=&quot;https://arxiv.org/pdf/1811.00855.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://arxiv.org/pdf/1811.00855.pdf&lt;/a&gt;&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;. Introduction&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;font-family: 'Nanum Gothic';&quot;&gt;기존 Session-based Recommender System 연구는 RNN based로 진행되어 왔는데, 연속적인 transition만 고려할 뿐 session내 context는 고려하지 않아 distant items 사이의 complex한 transitions이 간과되었다. 또한 세션은 익명, 즉 유저가 누군지 모르므로 세션 내 아이템 sequence를 통해 유저의 선호도를 파악해야 하는데, 이는 기존의 연구들로는 어려움이 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 GNN Architecture를 적용하여, complex한 item transition을 고려하고 이를 이용하여 아이템 별 정확한 latent vector를 찾아내는 Task를 진행하였다. 또한 아이템 별로 embedding만 진행하는 것이 아닌 session 자체도 embedding하여, subgraph 별 (세션 별) 다음에 올 item을 예측하는 데에 사용한다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Problem Statements&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;items : $V = \{v_1, v_2, ... v_n\}$&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;historical session graph : $S = \{v_{s,1}, v_{s,2}, ... , v_{s,n}\}$&amp;nbsp; [ordered by timestamp]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Session Graph :$G_S = (V_s, E_S), \quad (v_{s,i-1}, v_{s,i}) \in E_s$&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. Method&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) Initial Item Embedding&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 초기 임베딩을 위해 Item을 d차원으로 임베딩한다.&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;font-family: 'Nanum Gothic';&quot;&gt;(2) Gated Graph Neural Network&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;1280&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckSZ5O/btsFMAGOeGY/ihS0ykWpjmfA0QVi6M79MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckSZ5O/btsFMAGOeGY/ihS0ykWpjmfA0QVi6M79MK/img.png&quot; data-alt=&quot;Gated Graph Neural Network&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckSZ5O/btsFMAGOeGY/ihS0ykWpjmfA0QVi6M79MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckSZ5O%2FbtsFMAGOeGY%2FihS0ykWpjmfA0QVi6M79MK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;261&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Gated Graph Neural Network&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;font-family: 'Nanum Gothic';&quot;&gt;GRU Gate를 통해 각 Session 내의 item latente vector를 위와 같이 통과 시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Eg (1) : 현재 Representation vector [Session 내 Item transition이 고려됨]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Eq (2) : Update Gate로, 정보를 얼마나 취사 선택할 것인가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Eq (3) : Reset Gate로, 과거 latent vector [hidden vector]를 얼마나 초기화 해줄 것인가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Eq (4) : Candidate state, Reset해준 과거 정보 + 현재 정보&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Eq (5) : 과거 정보 Update + Candidate Update&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Adj Matrix $A_s$는 Outgoing edge와 Incoming edge로 이루어져 있으며 아래와 같다.&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;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pZ82c/btsFLT0ZmhU/OF6i23LYYdkh6H137V5RK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pZ82c/btsFLT0ZmhU/OF6i23LYYdkh6H137V5RK1/img.png&quot; data-alt=&quot;Adjacency Matrix&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pZ82c/btsFLT0ZmhU/OF6i23LYYdkh6H137V5RK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpZ82c%2FbtsFLT0ZmhU%2FOF6i23LYYdkh6H137V5RK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;396&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Adjacency Matrix&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;font-family: 'Nanum Gothic';&quot;&gt;위 과정을 통해 우리는 Session 내의 Sequential한 특징을 고려하여 Item들이 latent vector로 임베딩 된 값들을 얻을 수 있다.&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;font-family: 'Nanum Gothic';&quot;&gt;(3) Generating Session Embedding&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;font-family: 'Nanum Gothic';&quot;&gt;이제 우리는 이전에 Gated GNN을 통과한 Item들의 latent vector와 같은 공간에 Session을 Embedding 해준다. 즉, 같은 공간에 두 type의 vector를 Embedding하여, Session 전체 특성을 잘 가지고 있는 Item을 Next Item으로 추천해준다는 것이다.&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;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfoie9/btsFJzo5ISn/bGSbds0S48YciPSGn95Fv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfoie9/btsFJzo5ISn/bGSbds0S48YciPSGn95Fv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfoie9/btsFJzo5ISn/bGSbds0S48YciPSGn95Fv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfoie9%2FbtsFJzo5ISn%2FbGSbds0S48YciPSGn95Fv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;156&quot; data-origin-width=&quot;1280&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위의 식처럼 Session Embedding은 Soft Attention Mechanism을 고려한다. 각 Session 내에서 다음에 올 아이템은 가장 최근 선택된 item이 영향을 많이 끼친다고 생각하여 $v_n$을 $v_i$에 더해주고 이에 softmax를 취해준 일종의 Attention score를 구하고, 이를 각 세션 내 item latent vector에 곱해준다. 그 후 모든 세션 내 아이템에 대하여 이 값을 합하여 session의 latent vector를 구해준다.&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;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lykVx/btsFK2RDS2g/hmAmZAwnrxzeoGEoZDmj21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lykVx/btsFK2RDS2g/hmAmZAwnrxzeoGEoZDmj21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lykVx/btsFK2RDS2g/hmAmZAwnrxzeoGEoZDmj21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlykVx%2FbtsFK2RDS2g%2FhmAmZAwnrxzeoGEoZDmj21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;69&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;270&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;font-family: 'Nanum Gothic';&quot;&gt;그 후 최종적으로 다시 세션 내 최종 아이템 vector를 기존 session latent vector와 concat한 후 Linear Transformation을 해주어 완성한다.&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;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. Prediction / Loss&lt;/span&gt;&lt;/h2&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;582&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rq0s4/btsFK76uA35/iOkxSVUWN1pCNwwakfhDdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rq0s4/btsFK76uA35/iOkxSVUWN1pCNwwakfhDdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rq0s4/btsFK76uA35/iOkxSVUWN1pCNwwakfhDdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frq0s4%2FbtsFK76uA35%2FiOkxSVUWN1pCNwwakfhDdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;198&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;198&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;font-family: 'Nanum Gothic';&quot;&gt;위에서 구했던 session의 latent vector와 item latent vector를 내적한 후 softmax를 취해서 각 session 내에서 next item prob를 구할 수 있다. 이를 이용해서 cross entropy 개념으로 Loss function을 구축할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Loss function 식을 자세히 살펴보면, 정답인 likelihood + (1 - 오답인 Likelihood)를 최대화 해야하는 상황에 negative를 취해주어서 이를 최소화하는 방향으로 움직인다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;5. Limit&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. New Item&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습 과정에서 한 번이라도 선택된 적이 있는 아이템만 들어가기 때문에 현재 Session data에 있는 item만 추천이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Session Embedding&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단순하게 같은 session 내에 있는 item들이 모두 연관되어 있을 것이라는 가정으로 Embedding을 한다. 즉, User가 target으로 하는 item을 따로 고려하지 않고 거시적으로 고려할 뿐이다. 또한 Soft Attention을 적용하기 때문에 마지막 item이 사실은 큰 영향을 끼치지 않을 수도 있음에도 불구하고 과대평가하는 경우도 생길 수 있다.&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;style6&quot; /&gt;</description>
      <category>Paper Review/Recommender System</category>
      <category>GNN 기반 추천시스템</category>
      <category>Session-based Recommendation</category>
      <category>Session-based Recommendation with Graph Neural Networks</category>
      <category>SR-GNN</category>
      <category>세션 기반 추천시스템</category>
      <author>thisis05</author>
      <guid isPermaLink="true">https://hithisis05.tistory.com/3</guid>
      <comments>https://hithisis05.tistory.com/3#entry3comment</comments>
      <pubDate>Wed, 13 Mar 2024 23:29:04 +0900</pubDate>
    </item>
    <item>
      <title>[Road to Graph Neural Network] 1. What is Graph?</title>
      <link>https://hithisis05.tistory.com/2</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. Graph?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우린 수많은 네트워크들 내에서 존재하며 살아간다. 우리가 많이 사용하는 인스타그램, 링크드인 등등의 SNS 역시 네트워크이고, 우리의 뇌, 세포, 정보 모두 네트워크를 이루고 있다. 이러한 네트워크를 Complex system, 즉 복잡계라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 Complex system의 공통점은 바로 구성 요소들끼리 복잡한 상호작용을 한다는 것이다. 이러한 복잡한 상호작용을 표현하는 일종의 &amp;ldquo;언어&amp;rdquo;가 그래프라고 생각하면 된다. 그래프의 예시를 보면서 차차 알아가보자.&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;1280&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/miAi1/btsFGUkKcdZ/8kPIJ7erj9Kguq2yBBmvc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/miAi1/btsFGUkKcdZ/8kPIJ7erj9Kguq2yBBmvc1/img.png&quot; data-alt=&quot;소셜 네트워크 관계망&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/miAi1/btsFGUkKcdZ/8kPIJ7erj9Kguq2yBBmvc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmiAi1%2FbtsFGUkKcdZ%2F8kPIJ7erj9Kguq2yBBmvc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;338&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;705&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;span style=&quot;font-family: 'Nanum Gothic';&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;1280&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baeQyA/btsFFZ78ECc/mC6zoPzdBAnKeQOa1qJgLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baeQyA/btsFFZ78ECc/mC6zoPzdBAnKeQOa1qJgLk/img.png&quot; data-alt=&quot;이커머스 [전자 상거래] 네트워크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baeQyA/btsFFZ78ECc/mC6zoPzdBAnKeQOa1qJgLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaeQyA%2FbtsFFZ78ECc%2FmC6zoPzdBAnKeQOa1qJgLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;305&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;666&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위와 같이 이커머스 시스템 속에서도 사용자와 상품 간의 상호작용이 일어난다. 여기서 구성요소는 사용자, 상품 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;font-family: 'Nanum Gothic';&quot;&gt;이외에도 다양한 Complex system을 그래프로 표현할 수 있다. 일종의 비정형적인 네트워크 데이터들을 그래프라는 언어를 통해 나타낼 수 있는 것이다. 우리가 어떤 추상적인 개념을 언어로 나타내는 것처럼, 네트워크라는 추상적인 개념을 그래프를 통해 명시적으로 표현했다고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서, 우리가 어떤 Complex system에 대해서 이해하고 이를 이용하여 어떤 Task를 진행하기 위해서는 이를 그래프에 잘 나타내고 그래프를 잘 분석할 수 있어야 하므로 그래프에 대한 이해가 굉장히 중요하다고 볼 수 있다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Graph Notation&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;font-family: 'Nanum Gothic';&quot;&gt;$G = (V, E)$&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;1280&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SaXT9/btsFC25ZXz5/gH5A5Gy3bHAylgpGn7USFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SaXT9/btsFC25ZXz5/gH5A5Gy3bHAylgpGn7USFK/img.png&quot; data-alt=&quot;그래프 예시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SaXT9/btsFC25ZXz5/gH5A5Gy3bHAylgpGn7USFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSaXT9%2FbtsFC25ZXz5%2FgH5A5Gy3bHAylgpGn7USFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;627&quot; height=&quot;302&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;616&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그래프는 기본적으로 Vertex와 Edge, 즉 노드와 엣지로 이루어져 있다. 앞서 설명했듯이, 어떤 복잡계를 이루는 구성요소들은 노드이고, 이 노드 간의 관계를 나타내는 것이 바로 Edge이다. 기본적으로는 위와 같이 노드들이 그래프 내에 존재할 때, 어떤 네트워크의 정의에 따라 두 노드가 연결되어 있다고 한다면 이를 Edge로 연결하여 위와 같이 표현한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 어떤 노드 A에 대해 Edge를 통해 연결되어 있는 노드의 집합을 $N_A$, 즉 A에 대한 Neighbor라고 정의한다. `&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어 위 그래프에서의 $N_C$ = $\{A, B, D\}$가 될 것이다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. Graph Type&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그래프는 여러 복잡한 네트워크를 표현하기 때문에, 좀 더 복잡한 종류로 표현되기도 한다. 아래와 같이 여러 카테고리 하에서 그래프의 종류를 구분할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) Homogeneous VS Heterogeneous&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이름에서도 알 수 있듯이 동일한 종류로 구성된 그래프와 다양한 종류로 구성된 그래프로 나눌 수 있다. 이 &amp;ldquo;종류&amp;rdquo;는 노드와 엣지의 타입을 말한다.&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;1280&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTRf53/btsFFQ4IEzh/etkcdNl6Dm7AO30uFwIFZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTRf53/btsFFQ4IEzh/etkcdNl6Dm7AO30uFwIFZ0/img.png&quot; data-alt=&quot;영화 배우 그래프&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTRf53/btsFFQ4IEzh/etkcdNl6Dm7AO30uFwIFZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTRf53%2FbtsFFQ4IEzh%2FetkcdNl6Dm7AO30uFwIFZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;344&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;794&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 그래프는 배우들의 관계를 나타낸 Homogeneous graph의 한 예시이다. 여기서 노드의 타입은 &amp;lsquo;배우&amp;rsquo; 하나로 구성되어 있고, 엣지의 타입 역시 &amp;lsquo;영화&amp;rsquo; 하나로 두 배우가 같은 영화에 등장했다면 연결되어 있음을 알 수 있다. 이처럼 노드와 엣지의 타입이 하나인 경우를 Homogeneous graph라 한다.&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;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHKb9P/btsFGnUY7U7/KsgJqcvg97rF3jT8oNLvSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHKb9P/btsFGnUY7U7/KsgJqcvg97rF3jT8oNLvSK/img.png&quot; data-alt=&quot;Academic 그래프 예시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHKb9P/btsFGnUY7U7/KsgJqcvg97rF3jT8oNLvSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHKb9P%2FbtsFGnUY7U7%2FKsgJqcvg97rF3jT8oNLvSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;553&quot; height=&quot;314&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Academic 그래프 예시&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;font-family: 'Nanum Gothic';&quot;&gt;위 그래프는 Paper들의 관계도를 표현한 Academic graph로 Heterogeneous graph의 한 예시이다. 여기서 노드의 타입은 논문, 논문의 제목, 저자 등 여러 타입이 존재하고, 엣지 역시 이 노드의 타입에 따라 여러 연결성이 존재하게 된다. 이렇게 노드와 엣지의 타입이 여러 개인 경우를 Heterogeneous graph라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇다면 아까 봤던 이커머스에서의 전자상거래를 나타내는 그래프는 어떤 형태의 그래프일까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 역시 Heterogeneous graph이다. 다만, 이 경우 노드의 타입이 2개, 엣지의 타입이 1개인 특이 케이스로 Bipartite graph : 이종 그래프 라고 명명하고 있다. 추천 시스템에서 자주 쓰이는 그래프 형태이다.&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;font-family: 'Nanum Gothic';&quot;&gt;(2) Directionality : directed VS undirected&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;font-family: 'Nanum Gothic';&quot;&gt;우리는 인스타그램에서 내가 팔로우 하고 있지만 상대방은 날 팔로우하고 있지 않은 경우도 존재함을 알 수 있다. 이를 그래프적으로 해석하면, 팔로잉이라는 엣지가 무조건 양방향으로 존재하지는 않는다는 것이다. 즉 엣지의 방향성이 존재하는 경우가 생긴다. 이를 directed graph라고 한다.&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;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWL0lq/btsFHtHdJcY/NhtyqTkGqlCHkP2vOQZ6E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWL0lq/btsFHtHdJcY/NhtyqTkGqlCHkP2vOQZ6E1/img.png&quot; data-alt=&quot;undirected graph [왼쪽] / directed graph [오른쪽]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWL0lq/btsFHtHdJcY/NhtyqTkGqlCHkP2vOQZ6E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWL0lq%2FbtsFHtHdJcY%2FNhtyqTkGqlCHkP2vOQZ6E1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;327&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;undirected graph [왼쪽] / directed graph [오른쪽]&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;font-family: 'Nanum Gothic';&quot;&gt;딱 보면 보이겠지만, 왼쪽이 방향성이 없는 undirected graph이고, 오른쪽이 directed graph이다. directed graph의 경우, 위와 같이 화살표를 통해 방향성을 표현해준다.&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;font-family: 'Nanum Gothic';&quot;&gt;(3) weighted VS unweighted&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 엣지가 단순 연결을 표현하는 것일수도 있지만, 연결 빈도를 고려한 연결, 혹은 평점 등으로 어떤 가중치가 부여되어 있을수도 있다. 이에 따라 unweighted와 weightd graph로 나눌 수 있다. 이 경우 그래프를 이용한 downstream task를 진행할 때 이 edge의 weight를 고려하여 진행해준다.&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;1280&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7tC85/btsFFZNSJDb/PxkjtQKEK4QMyCX2jiVae1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7tC85/btsFFZNSJDb/PxkjtQKEK4QMyCX2jiVae1/img.png&quot; data-alt=&quot;unweighted graph [왼쪽] / weighted graph [오른쪽]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7tC85/btsFFZNSJDb/PxkjtQKEK4QMyCX2jiVae1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7tC85%2FbtsFFZNSJDb%2FPxkjtQKEK4QMyCX2jiVae1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;316&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;unweighted graph [왼쪽] / weighted graph [오른쪽]&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;font-family: 'Nanum Gothic';&quot;&gt;왼쪽의 unweighted graph의 경우, 우리가 흔히 사용하는 페이스북 친구 , 가족 관계 여부 등 단순 연결을 표현하는 경우를 나타낼 수 있고, weighted graph의 경우 사람 간의 전화 연결 횟수, 두 오브젝트 간의 유사도 등 어떤 수치를 관계로 표현하여 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 위 분류는 엣지를 어떻게 표현하냐에 따라 한 네트워크에서 weighted와 unweighted 둘 다 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 외에도 그래프가 시간에 따라 변하는지를 기준으로 Static Graph와 Dynamic Graph로 나누는 등 여러 기준이 존재한다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. Adjacency Matrix&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위와 같이 그래프를 표현할 수 있지만, 상당히 추상적인 부분들이 존재한다. 따라서 저차원적인 행렬 형태로 표현하는데 이를 Adjacency Matrix, 즉 인접행렬이라고 한다.&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/nJv6T/btsFGjegv9u/qPqS2IbccP70ZsZy4hXKm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nJv6T/btsFGjegv9u/qPqS2IbccP70ZsZy4hXKm0/img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;903&quot; data-is-animation=&quot;false&quot; width=&quot;390&quot; height=&quot;275&quot; style=&quot;width: 49.4733%; margin-right: 10px;&quot; data-widthpercent=&quot;50.06&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nJv6T/btsFGjegv9u/qPqS2IbccP70ZsZy4hXKm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJv6T%2FbtsFGjegv9u%2FqPqS2IbccP70ZsZy4hXKm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;903&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwnKq/btsFF00jEMv/E36vkrZTcxgPeAOXwGJlkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwnKq/btsFF00jEMv/E36vkrZTcxgPeAOXwGJlkK/img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;905&quot; data-is-animation=&quot;false&quot; width=&quot;398&quot; height=&quot;281&quot; style=&quot;width: 49.3639%;&quot; data-widthpercent=&quot;49.94&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwnKq/btsFF00jEMv/E36vkrZTcxgPeAOXwGJlkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwnKq%2FbtsFF00jEMv%2FE36vkrZTcxgPeAOXwGJlkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;905&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;노드의 개수 N만큼 NxN Matrix를 통해 인접행렬을 표현한다. 각 행과 열에 있는 노드가 연결이 되어 있다면 1, 아니면 0이다. 물론 자기자신과는 따로 Edge가 있지 않은 이상 0으로 처리한다. 만약 이 그래프가 Weighted라면, 단순 1이 아닌 Weight를 넣어줄 수 있다. 또한 Directed Graph라 In degree와 Out degree, 즉 들어오거나 나가거나 2개로 나뉜다면 이에 따라 Adjacency Matrix를 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;font-family: 'Nanum Gothic';&quot;&gt;다만 보다시피 위 인접행렬은 0이 과도하게 많을 수 밖에 없기때문에 Sparsity, 즉 희소성을 갖게된다. 즉 이 말은 많은 0 때문에 실제로 정보를 포함하고 있는 것보다 훨씬 많은 양의 메모리를 쓴다는 단점이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;font-family: 'Nanum Gothic';&quot;&gt;기본적으로 앞으로 설명하는 내용은 &lt;b&gt;(1) Homogeneous (2) Undirected (3) Unweighted&lt;/b&gt; 한 그래프를 대상으로 설명한다. 따로 언급하지 않는 이상 위와 같이 기본적인 형태의 Graph를 다루고 있다고 생각하면 된다.&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;style6&quot; /&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;font-family: 'Nanum Gothic';&quot;&gt;Reference&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://m.boostcourse.org/ai211/lecture/1163363&quot;&gt;https://m.boostcourse.org/ai211/lecture/1163363&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;네이버 부스트캠프 - 그래프와 추천시스템 신기정 교수님 강의 교안&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=JAB_plj2rbA&amp;amp;list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&amp;amp;index=1&quot;&gt;Stanford CS224W: Machine Learning with Graphs | 2021 | Lecture 1.1 - Why Graphs&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Stanford cs224w lecture&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;</description>
      <category>Graph/Road to Graph Neural Network</category>
      <category>Adjacency Matrix</category>
      <category>CS224W</category>
      <category>GNN</category>
      <category>graph machine learning</category>
      <category>Graph Mining</category>
      <category>GRAPH NEURAL NETWORK</category>
      <author>thisis05</author>
      <guid isPermaLink="true">https://hithisis05.tistory.com/2</guid>
      <comments>https://hithisis05.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 10 Mar 2024 14:22:38 +0900</pubDate>
    </item>
  </channel>
</rss>