240822 TIL #473 AI Tech #13 고급 시각화 / UX / 사용자 지표

김춘복·2024년 8월 22일
0

TIL : Today I Learned

목록 보기
474/571

Today I Learned

오늘은 진도를 다 나가고 과제 진행!!


강의 복습

고급 시각화

polar chart

거리 R과 각(theta)를 사용하는 극 좌표계

이미지 출처 geographyfieldwork

  • 방향성 있는 데이터, 회전, 주기성을 표현하기 적합하다.

Radar chart

이미지 출처 : originlab

  • 극좌표계의 대표적 차트. 중심을 기준으로 N개의 변수를 표현할 수 있다.
    10개 이상의 변수는 너무 복잡해보인다.

  • 피쳐끼리 독립적이고, 척도가 같아야 한다.

  • 면적은 피처의 순서에따라 달라지므로 신뢰할만한 요소는 아니다.


Pie Chart

원을 부채꼴로 분할하여 표현하는 차트

이미지 출처 : houseofmath

  • 전체를 1(100%)로 두고 안의 지분율을 따질때 사용.

  • 비교가 어렵고 유용성이 떨어져 구체적인 지표를 보여줄 땐 지양한다.

Donut chart

이미지 출처 : jaspersoft

  • 중간이 비어있는 도넛 모양의 파이 차트.

  • 이쁘지만 비교하기엔 적합하지 않다.

Sunburst chart

이미지 출처 : syncfusion

  • 계층 데이터를 시각화 할 때 사용하는 차트.
    화려하지만 직관적으로 인지하기 힘들다.

Tree Map

계층 데이터를 직사각형으로 시각화한 방법

이미지 출처 : jaspersoft

  • pip install squarify나 Plotly를 이용해서 구현이 가능하다.

기타

  • 그리고 Waffle chart와 Venn(벤다이어그램)도 있다.

  • Facet
    큰 데이터셋을 여러개의 작은 하위 집합으로 분할해서 개별적인 그래프로 시각화하는 기법

  • grid : 격자. 일반적으로는 무채색에 보통의 격자만 사용하긴한다.
    잘 사용하진 않지만 x+y=c, y=cx, xy=c 등의 특이한 격자를 사용하기도 한다.


UX

UserExperience. 사용자가 제품, 서비스와 상호작용하면서 느끼는 전반적인 경험

HCI

사람과 컴퓨터간의 상호작용

  • 사용자에게 최적의 경험을 제공하는 것이 목표
    결국 AI 모델, 서비스, 시각화의 최종 단계는 사용자다.

  • 3요소
    유용성(Usefulness, 효과적), 사용성(Usability, 효율적), 감성(Affect, 비기능적)

  • 심성모형(mental model)
    개인이 특정 개념을 인식하는 이해 구조
    ex) 사용자가 딥러닝 모델을 이해 못해도 불안함 없이 사용하는 것

  • Schneiderman's Mantra : UI 설계 원칙

  1. Overview first : 먼저 전체 개요를 보여주기
  2. Zoom and filter : 확대와 필터링. 사용자가 관심영역 확대 및 필터링 가능
  3. Details-on-demand : 사용자가 필요할 때 세부 정보 제공

사용자 지표

  • AARRR : 사용자 활동 여정
    Acquisition(유입) - Activation(활동) - Retention(재방문) - Revenue(구매) - Referral(추천)

  • 활성사용자
    DAU, WAU, MAU. 일간, 주간, 월간 활성 유저 수

  • 잔존율, 이탈율(1-잔존율), 고착도(DAU/MAU), 신규이용자수, 동접자수, 평균 체류 시간

  • 매출지표
    CAC(고객확보비용), PU(유료결제사용자수), 구매전환율(전체대비구매자비율)
    ARPU(유저당평균금액), LTV(고객생애가치)

  • 전환지표
    CPM(1000회 노출당 비용), CPC(클릭당비용), CPI(설치당비용), CPA(행동당비용)


과제

  • sns에서 hue 파라미터에 카테고리 값을 가지는 변수의 이름을 지정하면, 카테고리 값에 따라 color가 다르게 시각화된다.
sns.countplot(x='survived',
                hue='class',
                data=titanic,
                ax=axes[1],
                palette='dark:red')
  • sns로 heatmap을 만들 때 상관계수는 당연히 숫자로 된 feature만 계산할 수 있다.
    따라서 t/f인 것은 .astype(int)를 써서 바꿔주고, select_dtype으로 int64와 float64만 선택해서 진행하면 된다. annot=True면 해당 숫자를 텍스트로 써주고, fmt로 소수자리수 포맷을 지정할 수 있다.
fig, axes = plt.subplots(1,2,figsize=(14,7))
titanic['adult_male'] = titanic['adult_male'].astype(int)
titanic['alone'] = titanic['alone'].astype(int)

titanic_num = titanic.select_dtypes(include=['int64', 'float64'])

sns.heatmap(titanic_num.corr(method='pearson'),
            ax=axes[0],
            vmin=-1,
            vmax=1,
            center=0,
            annot=True,
            fmt='.2f')
            
sns.heatmap(titanic_num.corr(method='spearman'),
            ax=axes[1],
            vmin=-1,
            vmax=1,
            center=0,
            annot=True,
            fmt='.2f')


plt.show()
  • statistics = titanic.describe() 처럼 discribe()를 사용하면 통계적 정보(평균, count, std, min, max, q1,q2,q3)들이 dataframe으로 변수에 저장된다.
  • pandas의 .info()를 사용하면 컬럼별 not-null의 수와 dtype을 알려주고, .isnull().sum()을 사용하면 컬럼별 null의 수를 알 수 있다.

  • survived_count.index = survived_count.index.map({0:'dead', 1:'alive'})
    처럼 map을 사용하면 인덱스를 바꿀 수 있다.


피어세션

  • 정규 표현식은 문법을 외우기보단 그때그때 찾아서 쓰는게 나은 것 같다.

  • 이번 주 피어세션은 강의 난이도가 낮아서 질문보단 small talk 위주. 각자 직장에서 경험했던 일들에 대해 이야기를 나눴다.


회고

  • 시각화 파트는 양이 너무 많고 외워야할 부분보다 그때그때 찾아야할 부분이 많아서 이해만 하는 식으로 넘어갔다. 추후 블로그에 정리정도만 하고 그때그때 찾아서 쓰는 식으로 진행하면 좋을 것 같다. 일단 어떤게 있는지, 장단점은 뭔지 정도는 확실히 기억해두고 넘어가야되니 그래도 남은 3주차동안 열심히 해보자!
profile
Backend Dev / Data Engineer

0개의 댓글