728x90
반응형
SMALL
CSC 방식이란 무엇인가요 ?
CSC (Compressed Sparse Column)은 이름 그대로 열(Column)을 기준으로 데이터를 압축하여 저장하는 방식이다.
CSR이 행 단위로 데이터를 읽는 데 최적화되어 있다면, CSC는 특정 열의 데이터를 빠르게 추출하거나 열단위의 연산이 필요할 때 압축적인 효율을 보여준다.
CSC는 열 단위로 0이 아닌 값만 저장하는 희소 행렬 구조이다.
-> 각 열에 존재하는 값만 압축하여 저장한다.
-> "열 기준으로 압축된 희소 행렬 구조"
CSC의 저장 구조
CSC 역시 세 개의 배열을 사용하여 데이터를 관리한다. CSR과 구성은 같지만, 기준이 '행'에서 '열'로 바뀐다.
- Data : 0이 아닌 값들을 우선 순서( Column - major order)로 저장한다.
- Indices : 각 값이 위치한 행(Row) 인덱스를 저장한다.
- 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 |