728x90
반응형
SMALL

CSC 방식이란 무엇인가요 ?

CSC (Compressed Sparse Column)은 이름 그대로 열(Column)을 기준으로 데이터를 압축하여 저장하는 방식이다. 

CSR이 행 단위로 데이터를 읽는 데 최적화되어 있다면, CSC는 특정 열의 데이터를 빠르게 추출하거나 열단위의 연산이 필요할 때 압축적인 효율을 보여준다. 

CSC는 열 단위로 0이 아닌 값만 저장하는 희소 행렬 구조이다. 

-> 각 열에 존재하는 값만 압축하여 저장한다. 

-> "열 기준으로 압축된 희소 행렬 구조"

 

 

CSC의 저장 구조

CSC 역시 세 개의 배열을 사용하여 데이터를 관리한다. CSR과 구성은 같지만, 기준이 '행'에서 '열'로 바뀐다. 

  1. Data : 0이 아닌 값들을 우선 순서( Column - major order)로 저장한다. 
  2. Indices : 각 값이 위치한 행(Row) 인덱스를 저장한다. 
  3. Indptr ( Index Pointer ) : 각 열(Column)의 데이터가 Data 배열의 어디서 시작하고 끝나는지를 나타내는 인덱스 포인터이다. 
반응형

비교

CSC vs CSR: 무엇이 다른가요?

특징 CSR ( Row 기준 ) CSC ( Column 기준 )
압축 방향/기준 가로 (행) 세로 (열)
빠른 접근
최적화 연산 행렬 곱셈 (Ax), 행 슬라이싱 열 슬라이싱, 열 벡터 연산
데이터 접근 특정 행의 데이터를 읽을 때 빠름 특정 열의 데이터를 읽을 때 빠름
활용 일반 ML/NLP 선형대수 연산

 

다른 희소 행렬 방식과 비교

방식 특징
COO 좌표 리스트
CSR 행 기준 압축
CSC 열 기준 압축

 

CSR vs CSC 선택 기준

행 중심 연산 → CSR

열 중심 연산 → CSC

 

728x90

 

언제 CSC를 사용해야 할까요?

실무에서는 다음과 같은 경우에 CSC 형식을 선택한다. 

  • 열 단위 슬라이싱 / 열 단위 연산이 많을 때  : 거대한 데이터엣에서 특정 특징(Feature, 열) 들만 뽑아서 분석해야 할 때 유리한다. 
  • 특정 알고리즘 / 선형 시스템 풀이 : 일부 선형 대수 알고리즘이나 최적화 라이브러리는 내부적으로 열 중심의 연산을 수행하므로 CSC 형식을 요규하고 한다. 
  • 행렬 전치 ( Transpose ) 연산:  CSR 형식을 전치하면 자연스럽게 CSC 형식이 된다. 
  • 일부 추천 시스템

 

파이썬 실습: CSC 행렬 만들기

예:

다음 행렬을 보자.

  0 1 2
0 0 0 3
1 4 0 0
2 0 5 0

 

CSC 표현

data = [4, 5, 3] ->  실제값

indices = [1, 2, 0] -> 행(row)위치

indptr = [0, 1, 2, 3] -> 각 열의 시작 위치 

예: 

  • col  0 -> data[0:1]
  • col 1 -> data[1:2]
  • col 2 -. data[2:3]

Scipy 라이브러리를 사용하면 아주 간단하게 변환할 수 있다. 

from scipy.sparse import csc_matrix 
data = [4, 5, 3] 
indices = [1, 2, 0] 
indptr = [0, 1, 2, 3] 
matrix = csc_matrix((data, indices, indptr), shape=(3, 3)) 
print(matrix.toarray())

단점

  • 행 접근 느림
  • 구조 변경 어려움
  • 삽입/삭제 비효율

 

COO → CSR/CSC 흐름

COO (생성) → CSR / CSC (연산)

 

정리

CSC는 희소 행렬을 열 기준으로 압축하여 저장하는 방식으로 , 특정 연산에서 매우 효율적이다. CSR과 함께 사용되며, 데이터 접근 패턴에 따라 적절한 구조를 선택하는 것이 중요하다. 

 

 

 

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

728x90
반응형

'LLM' 카테고리의 다른 글

20. 예측 기반(Prediction-based)  (0) 2026.05.08
19. 예측 기반 vs 카운트 기반 임베딩 비교  (0) 2026.05.07
17. CSR ( Compressed Sparse Row)  (0) 2026.05.04
16. COO( Coordinate list)  (0) 2026.04.30
15. 희소 행렬 (Sparse Matrix)  (0) 2026.04.29

+ Recent posts