240820 TIL #471 AI Tech #11 데이터 분석 / 데이터 시각화

김춘복·2024년 8월 20일
0

TIL : Today I Learned

목록 보기
472/571

Today I Learned

오늘은 3주차 EDA & DataViz 첫날!
이번 주차에는 데이터 분석과 시각화, 전처리, 특성추출 등 데이터를 중점적으로 다룬다.


강의 복습

데이터

현실에서 측정하고 수집한 사실이나 값.
그 자체로는 의미가 없지만 이를 분석하고 해석해 유의미한 정보로 변환될 수 있다.

  • vs 정보
    정보는 목적이나 의도에 맞게 데이터를 가공해 의미를 부여한 것.

  • 유형
    정형데이터 : 행과 열로 고정된 형식의 데이터. 비교와 저장, 관계를 구하기 쉽다.
    지리데이터 : 지도 정보 + 보여주고자 하는 정보
    시계열데이터 : 정형데이터 중에서 데이터를 구분하는 가장 중요한 key값이 시간인 경우.
    시간에 따라 순차적으로 기록된 데이터. 기온, 주가, 비디오, 음성 등.
    추세, 계절성, cycle이 중요하다.

데이터 분석

데이터를 체계적으로 조사해서 그 안의 유의미한 정보를 추출해 의사결정에 활용하는 과정

  • 데이터 수집 - 전처리 - 탐색(EDA) - 모델링 - 해석(평가) 의 과정을 거친다.

  • 과거의 통계는 가지고있는 표본 데이터로 모집단의 특징을 대표값 위주로 추론하는 것에 그쳤지만, 현재는 통계를 넘어서 해석, 의사결정, 예측과정에 데이터가 더 중요해졌다.

  • EDA(탐색적 데이터 분석)

    데이터 분석 과정에서 데이터를 직관적으로 이해하고, 중요한 통찰을 얻기 위해 사용하는 다양한 기법과 접근법.
    데이터를 시각적으로 탐색하고, 패턴, 이상치(Outliers), 데이터 분포, 상관관계 등을 발견하는 것


데이터 시각화

데이터를 시각적인 형태로 표현해 정보를 더 쉽게 이해하고 분석하도록 하는 과정

  • Expressiveness : 데이터가 가진 정보 모두를 시각 요소로 표현
    Effectiveness : 중요한 정보가 부각

  • mark : 가장 기본적인 그래픽 요소. 점선면으로 구성
    channel : 마크를 변경할 수 있는 요소. 위치, 색, 모양, 기울기, 크기 등

  • 효율적인 시각화 원칙
    Accurucy: 정확도. 데이터 값이 정확하게 표현
    Discriminability : 구별 가능성. 채널 내에서 값을 명확히 구분
    Separability : 분리성. 채널간 상호작용에 대한 구분
    Popout : 시각적대비. 채널을 통한 명확한 데이터 구분
    Grouping : 그룹화. 유사한 것 끼리 그룹화

Bar Plot (막대 그래프)

  • category(범주)에 따른 수치값을 비교하기 좋다.

  • 일반적으로는 x축에 범주, y축에 값을 표기하는 수직스타일을 많이쓰고, 범주가 많으면 역으로 수평 막대그래프를 쓴다.

  • Principle of Proportional Ink
    잉크(시각적으로 표현된 모든 요소)는 데이터를 전달하는 데 필요한 만큼만 사용해야한다.
    즉, 데이터와 직접 관련이 없는 모든 시각적요소는 최소화해서 데이터 잉크의 비율을 최대화 해야 한다. 특히 3d 시각화는 비 데이터 잉크가 많아 지양해야 한다.
    그리고 x축의 시작값은 항상 0이어야 한다.

  • 정확한 정보를 전달하기 위해서는 정렬을 해야한다.
    시계열은 시간순, 수치형은 크기순 등.
    pandas에서는 sort_values(), sort_index()로 정렬한다.

  • errorbar, 오차 막대를 추가하면 uncertainty를 보여줄 수 있다.

Line Plot (선 그래프)

연속적으로 변화하는 값을 순서대로 점으로 나타내고 이를 선으로 연결한 것.

  • 시계열 데이터 분석에 특화되어있다. 추세 파악에 좋다.

  • 선이 5개를 넘어가면 인지하기 쉽지 않으므로 5개 이하가 좋다.
    이중 축 사용도 지양하는게 좋다.

  • smoothing : noise를 줄여서 패턴이나 추세 파악을 쉽게하는 기법

  • 막대와는 다르게 축을 0에 둘 필요는 없다.
    오히려 detail한 data보다 생략된 line plot이 나은 경우가 있다.
    다만 간격은 일정하게 유지해야되고, 데이터가 규칙적이지 않다면 값에 mark를 표시해야 한다.

Scatter Plot (산점도)

점을 사용해 두 feature간의 관계를 알아내기 위한 그래프

  • 기본 목적은 상관관계(양,음)를 파악하는 것.
    추가적으론 군집, 값 사이의 차이, 이상치를 파악할 수 있다.

  • 마커 모양 차이는 크게 눈에 띄지 않아 보조로만 쓰고, 색이 구분하기 더 쉽다.

  • 점이 너무 많으면 분포를 알기 힘드므로 투명도 조정, 지터링, 2차원 히스토그램, contour plot 등의 방법이 있다. 뒤의 두 방법이 추천된다.

  • regression을 이용해서 추세선을 1개 정도 그려주면 좋다.

  • grid(격자)는 사용하더라도 투명하거나 눈에 띄지않게, 될 수 있으면 사용 x

텍스트

  • 시각적 표현이 할 수 없는 설명을 추가. 과하면 방해.

  • title(제목), label(축 설명), tick label(축 눈금), legend(범례, 데이터 구분) 등

  • 화려함보다는 이해가 우선.

  • 강조를 위해선 대비를 쓴다. 색상, 채도, 명도, 보색 대비를 쓴다.

  • 기존 정보(ex.저온-파란색)와 색에서 오는 느낌을 잘 활용해야 한다.

  • 컬러 팔레트 : 미리 정해진 색 set. 범주형 변수에 사용
    7개 이상은 구분이 힘드니까 적당히 쓰고 나머지는 무채색.

  • 연속형 변수에는 단일 색조를 명암에 따라 균일한 색상변화를 보이게 세팅하는게 좋다.
    (ex. 연한 빨강 ~ 진한 빨강)

  • 발산형(양 끝으로 발산)은 중앙을 기준으로 두 색이 발산해 끝으로 갈수록 진해지는 세팅.


정형 데이터

행과 열로 고정된 형식의 데이터. 비교와 저장, 관계를 구하기 쉽다.

  • 명확한 그룹으로 구분되는 범주형 데이터와 수로 나타나는 수치형 데이터로 나뉘어진다.

명목형 데이터

범주에 순서가 없는 데이터. ex) 성별, 국가 등

  • label encoding
    모델에 넣기위해서는 카테고리를 수로 수치화해야한다.
    범주를 0,1,2,3 같은 정수에 mapping해 처리한다.
    없는 레이블은 -1로 전처리해야한다.

  • one-hot encoding
    범주를 0,1,2로 순서를 줘서 매핑하면 bias가 생길 수 있다.
    이를 해결하기 위해 카테고리 만큼의 차원을 가진 벡터로 변환해 해당 범주는 1, 나머지는 0으로 만든다. ex) 남자 -> [1,0] / 여자 -> [0,1]
    범주가 너무 많아지면 학습 속도와 퀄리티에 문제가 생기므로 다른 방법을 쓴다.

  • binary encoding
    범주를 0,1,2,3..으로 레이블링해 이를 이진수로 변환해 컬럼데이터로 바꾸는 방법.
    범주가 많을 때 가끔 사용하는 방법

순서형 데이터

범주에 순서가 있는 데이터. ex) 리커트 척도(우위가 있는 별점), 영화 별점 등

  • 별점 3점이 별점 1점보다 3배 좋은가?라는 질문에 yes면 수치형으로 보고 no면 순서형이다.
    즉, 사칙연산 가능 유무로 구분한다.

  • 범주형의 인코딩 방법 다 사용가능.

  • 순환형 데이터 : 요일, 각도 처럼 순환되는 데이터.


수치형 데이터

수치가 1,2,3같은 정수로 구분되는 이산형 데이터와 수치가 실수로 연속적으로 이어진 연속형 데이터로 구분된다.

  • 구간형 데이터
    온도, 시간처럼 비율로 따질 수 없고 구간이 중요한 데이터
    20도가 10도보다 2배 뜨겁다고 할 수 없다.
    그래서 일정 값을 기준점으로 만들어서 비교를 할 수 있다.(최저값으로 다 빼기)

  • 비율형 데이터
    인구수, 밀도 처럼 원점과의 거리(비율)이 중요한 데이터.

  • 단순한 평균, 표준편차 같은 대표값에만 의존하면 안되고 왜도, 첨도 같은 분포도 같이 봐야한다.

  • 정규화 : X=XXminXmaxXminX^{'} = \frac{X-X_{min}}{X_{max}-X_{min}} 데이터의 범위를 0~1 or -1~1같은 특정 범위로 변환하는 것.

  • 표준화 : X=XμσX^{'} = \frac{X - \mu}{\sigma}데이터의 평균을 0, 표준편차를 1로 만들어 표준 정규분포 형태로 만드는 것

  • 정규화 과정 후 왜도(skewness)를 조정해 분포를 맞춰준다.
    왜도가 negative(우측쏠림)이면 큰 데이터들의 간격을 띄워줘야하므로 거듭제곱이나 지수함수를 씌운다.
    왜도가 positive(좌측쏠림)이면 작은 데이터들의 간격을 띄워줘야하므로 로그나 제곱근 연산을 해준다. 부호 영향은 미리 전처리 해둔다.


피어세션

  • 현업에서는 시각화 라이브러리로 matplotlib과 seaborn을 쓰긴하지만, plotly가 html로 렌더링해주고 데이터 값을 마우스 올리면 표시해줘서 자주 쓰긴한다.

  • attention은 추론, self-attention은 자기자신도 넣기때문에 검증.
    트랜스포머는 positional encoding이 핵심. 시간 순서를 고려하지 않기 때문에 병렬 처리가 가능해 처리 속도가 빠르지만, 순서가 사라져서 이를 잡아줄 positional encoding이 필요하다.
    트랜스포머 포지셔널 인코딩 참고

  • 다음주 월요일까지 Attention All you need 논문 읽어오기!


회고

  • 이번 주차 내용은 저번 주보다 쉬웠는데 오늘따라 유난히 집중이 안됐다.
    내일부터는 정신 다시 잡고 열심히 진도 나가보자!!
profile
Backend Dev / Data Engineer

0개의 댓글