비둘기 둥지

[인공지능 공부 / ML tool] 1. HiPlot에 대해 알아보자 본문

인공지능 공부/etc

[인공지능 공부 / ML tool] 1. HiPlot에 대해 알아보자

KimDove 2022. 11. 23. 13:28
728x90

1. HiPlot이란

  • 고차원 상의 공간에서 상관관계와 패턴을 찾아낼 수 있도록 해주는 대화형 시각화 툴
  • 평행 좌표 플롯(Parallel Coordinate Plots)을 비롯한 시각화 방법들을 이용해 정보를 명확히 표현
  • 셋업 과정 없이 주피터에서 빠르게 실행할 수 있음.

1-1. HiPlot의 장점

  • 한 줄로 구현이 가능하다.
  • 몇 번의 마우스 클릭만으로 데이터의 깊은 면까지 분석할 수 있다.
  • 커다란 데이터 셋에 대한 내용도 빠르게 표현이 가능하다.
  • Native HTML 함수로 렌더링이 가능하다.
  • csv나 json 파일을 지원하고, 현존하는 페이스북 AI라이브러리와의 호환을 지원하는 등 확장성이 좋다.

1-2. HiPlot으로 sklearn의 Iris데이터 셋을 분석해보자

  • HiPlot을 이용하면, 데이터와 관련된 다양한 분야에서 데이터 상에 존재하는 상관관계를 조사할 수 있다.
  • scikit-learn에서 Iris 데이터를 불러와 data, target을 하나로 묶어 데이터 프레임으로 만든 후 HiPlot에 넣어보았다.
from sklearn.datasets import load_iris
import hiplot as hip
import pandas as pd
import numpy as np

iris = load_iris()

data, target = iris.data, np.expand_dims(iris.target, axis = 0).T
features     = iris.feature_names + ['target']

data = np.concatenate((data, target), axis = 1)
df   = pd.DataFrame(df, columns = features)
df['target'] = df['target'].apply(lambda x: iris.target_names[int(x)])

df.head()

## 출력 결과

 

  sepal length (cm) petal width (cm) petal length (cm) petal width (cm) target
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
iris_hiplot = hip.Experiment.from_dataframe(df)
iris_hiplot.display()

## 출력 결과

[사진 1] 이렇게 보면 데이터 별로 어떻게 상관관계가 있는지 명확하게 보이지 않는다.
[사진 2] 원하는 축에서  원하는 데이터가 있는 쪽에 드래그를 하면 드래그한 영역의 데이터 들만 볼 수 있다. 

  • 그래프 아래에 표도 함께 존재하는데, 표를 통해서 원하는 데이터의 그래프를 확인할 수 있다.

[사진 3] 선택한 범위의 데이터만 저장하고 있는 표와 표에서 데이터를 선택했을때 나타나는 그래프

  • [사진 2]를 통해 알 수 있는 사실은 다음과 같다.
    1. setosa의 경우 Sepal의 너비는 넓지만, Petal의 너비가 좁고 Sepal과 Petal의 길이가 짧은 것을 볼 수 있다.
    2. virginica의 경우 Sepal의 너비는 좁지만 길이는 길고, Petal의 넓이가 넓고, 길이가 길다는 것을 볼 수 있다.

1-3. HiPlot으로 하이퍼파라미터를 탐색해보자

  • HiPlot을 이용하면 하이퍼파라미터학습에 미치는 영향을 쉽게 평가할 수 있다.
  • 데이터 셋은 Meta(구 Facebook)의 github에 있는 hiplot 레포지토리에서 가져왔다.
  • 이번 실험에서는 위의 iris 실험과는 달리 DataFrame이 아니라, csv 파일을 바로 읽어와 사용하는 방식으로 해보았다.
DATASET_PATH = 'ml1.csv'
hip.Experiment.from_csv(DATASET_PATH).display()

[사진 4] 메타 깃 허브에서 다운로드 한 데이터 셋의 원본 그래프
[사진 5] embedding size가 컸을때 (좌) embedding size가 작았을때 (우)

  • 위 두 그래프를 보았을때, 얻을 수 있는 정보는 다음과 같다.
    1. embedding size가 컸을때 보다 작았을 때 학습과 검증 과정에서 성능이 더 뛰어났음을 보인다.
    2. embedding size가 작을때 Dropout ratio는 학습에 크게 영향을 미치지 않는다.
    3. embedding size가 작을때 lr을 0.002 ~ 0.03사이로 조절했을 때 성능이 개선 되었다.
  • 한 번의 실험을 통한 하이퍼 파리미터를 자동으로 탐색해주는 툴은 아니고,여러 번의 실험을 통해 얻어낸 데이터로
    분석하는 툴이기 때문에 GridSearch나 RandomGridSearch와 함께 이용하면 좋을 것 같다.

99. 자료 출처

99-1. 도서

99-2.논문, 학술지

99-3. 웹사이트

  • 아기여우의 자기계발로그 : 페이스북 HiPlot : 딥러닝 하이퍼파라메터 탐색을 돕는 오픈소스 고차원 시각화 툴 | [블로그 링크]
  • towardsdatascience : Introduction to Best Parallel Plot Python Library: "HiPlot" | [블로그 링크]

99-4. 데이터셋 출처

99-5. 이미지 출처


전체코드

 

GitHub - EvoDmiK/TIL: Today I Learn

Today I Learn. Contribute to EvoDmiK/TIL development by creating an account on GitHub.

github.com


내용 추가 이력


부탁 말씀

개인적으로 공부하는 과정에서 오류가 있을 수 있으니, 오류가 있는 부분은 댓글로 정정 부탁드립니다.


728x90
Comments