728x90
반응형
SMALL

COO( Coordinate list) 방식이란 ?

COO(Coordinate List)는 '좌표 리스트'라는 이름 그대로, 0이 아닌 데이터가 있는 위치(좌표)와 그 값만을 따로 모아서 저장하는 방식이다. 

0이 아무리 많아도 우리가 궁금한 건 "값이 어디에 있고, 그 값이 무엇인가 " 이므로, 나머지 0은 과감히 무시하고 세 개의 리스트(또는 배열) 에 정보를 담는다. 

-> (행, 열, 값)의 형태로 저장한다. 

-> 0은 저장하지 않고, 필요한 값만 좌표로 기록한다. 

-> 좌표 리스트

 

COO의 저장 구조

예 : 

다음과 같은 3 X 3 행령이 있다고 가정해 본다. 

이 행렬을 COO 방식으로 저장하면 다음과 같다.

  • Row (행 인덱스) : [0, 1]
  • Col (열 인덱스) : [2, 0]
  • Data (값) : [7, 5]

해석 :

  • (0, 2) 위치에 값 7이 있음.
  • (1, 0) 위치에 값 5이 있음.
반응형

COO 방식의 장점

  • 매우 직관적 : 구조가 단순하여 행렬을 생성허가나 수정하기가 매우 쉽다. 
  • 변환의 교검 : 희소 행렬을 처음 구축할 때 가장 많이 쓰이는 '중간 단계' 포맷이다. 보통 COO로 데이터를 모은 뒤, 연산 효율이 더 좋은 CSR 방식으로 변환하고 한다. 

->  구현 간단, 데이터 추가 (append) 쉬움, 직관적인 구조

 

COO 방식의 단점

  • 연산 효율 저하 : 특정 행이나 열을 조회하려면 인덱스 리스트를 처음부터 끝까지 다 훑어야 할 수도 있다. 
  • 중복 정보 : 행 인덱스를 매번 숫자로 기록해야 하므로, 후술할 CSR 방식에 비해 메모리 효율이 약간 떨어질 수 있다. 

-> 행/열 접근 느림, 연산 성능 낮음, 중복 좌표 처리 필요

COO -> CSR / CSC 변환 후 수행

 

728x90

파이썬 실습: Scipy 활용

데이터 분석 라이브러인 Scipyㄹㄹ 사용하면 COO 형식을 아주 쉽게 만들 수 있다.

from scipy.sparse import coo_matrix

mtx = coo_matrix((data, (row, col)), shape=(3, 3))

 

 

언제 사용할까 ?

COO는 "희소 행렬을 처음 만들 때 " 가장 빛을 발한다. 데이터를 하나씩 쌓아 올릴 때는 좌표 기반이 가장 편하기 때문이죠 . 하지만 행렬 곱셈과 같은 복잡한 수치 연산을 수행할 때는 더 압축된 방식인 CSR로 변환하여 사용하는 것이 정석이다. 

  • 희소 행렬 생성 단계
  • 데이터 수집/ 로깅
  • 그래프 데이터 표현
  • 추천 시스템

 

요약 

COO = "좌표로 저장하는 가장 단순한 희소 행렬 구조"

COO는 0이 아닌 값만 (행, 열, 값) 형태로 저장하여 메모리를 절약하는 희소 행렬 표현 방식이다.

COO 방식은 희소 행렬을 가장 직관적으로 표현할 수 있는 구조로, 데이터 생성과 초기 처리 단계에서 매우 유용하다. 다만 연산 효율은 떨어지기 때문에 실제 계산에서는 CSR이나 CSC 형태로 변환하여 사용하는 것이 일반적이다. 

 

제미나이, 챗지피티 등을 이용 하여 작성

 

728x90
반응형

'LLM' 카테고리의 다른 글

18. CSC ( Compressed Sparse Column )  (0) 2026.05.06
17. CSR ( Compressed Sparse Row)  (0) 2026.05.04
15. 희소 행렬 (Sparse Matrix)  (0) 2026.04.29
14. 카운트 기반(Count-based) 모델  (0) 2026.04.28
13. GloVe  (0) 2026.04.27

+ Recent posts