대규모 데이터셋에서 머신 러닝 모델 학습

Python에서 Dask로 병렬 프로그래밍

James Fulton

Climate Informatics Researcher

Dask-ML

import dask_ml
  • 머신 러닝 작업을 가속화합니다
Python에서 Dask로 병렬 프로그래밍

선형 회귀

x와 y 사이에 선형 관계가 있는 예시 데이터입니다.

Python에서 Dask로 병렬 프로그래밍

선형 회귀

데이터에 직선이 적합되었습니다.

Python에서 Dask로 병렬 프로그래밍

선형 회귀

직선과 실제 데이터 점 사이의 거리가 강조되어 있습니다.

Python에서 Dask로 병렬 프로그래밍

선형 회귀 모델 적합

# 회귀 모델 불러오기
from sklearn.linear_model import SGDRegressor

# 모델 인스턴스 생성
model = SGDRegressor()

# 데이터에 모델 적합
model.fit(X, y)

# 예측 수행
y_pred = model.predict(X)
Python에서 Dask로 병렬 프로그래밍

Dask에서 scikit-learn 모델 사용

# 회귀 모델 불러오기
from sklearn.linear_model import SGDRegressor

# 모델 인스턴스 생성
model = SGDRegressor()


# 모델용 Dask-ML 래퍼 불러오기 from dask_ml.wrappers import Incremental
# 모델 래핑 dask_model = Incremental(model, scoring='neg_mean_squared_error')
# Dask DataFrame/배열에 적합 dask_model.fit(dask_X, dask_y) # lazy 아님
Python에서 Dask로 병렬 프로그래밍

적합은 여러 반복이 필요함

여러 번 적합할수록 직선이 더 정확히 맞춰집니다.

Python에서 Dask로 병렬 프로그래밍

증분(Incremental) 모델 학습

# 데이터를 여러 번 반복 처리
for i in range(10):
    dask_model.partial_fit(dask_X, dask_y)  # lazy 아님    
Python에서 Dask로 병렬 프로그래밍

예측값 생성

y_pred = dask_model.predict(dask_X)

print(y_pred)
dask.array<_predict, shape=(nan,), dtype=int64, chunksize=(nan,), chunktype=...>
print(y_pred.compute())
array([0.465557, 0.905675, 0.285214, ..., 0.249454, 0.559624, 0.823475])
Python에서 Dask로 병렬 프로그래밍

연습해 봅시다!

Python에서 Dask로 병렬 프로그래밍

Preparing Video For Download...