더북(TheBook)

5.7.1 학습 곡선: 데이터는 얼마나 많이 필요할까?

학습 시스템에 관한 가장 간단한 질문 중 하나는 학습 사례를 더 많이 사용하는 것이 학습 성능에 어떤 영향을 주는가 하는 것입니다. 수많은 데이터를 사용하더라도 모델이 좋은 성능을 보이지 않는다면 뭔가 잘못된 목표를 쫓고 있는 것일지도 모릅니다. 또 다른 관점에서 보면, 훈련 데이터를 더 많이 혹은 전부 사용하면 성능을 지속적으로 개선시키게 됩니다. 데이터를 더 모으는 것은 노력을 수반하지만, 성능이 개선된다면 노력을 투자할 만하지요. 어쨌든 다음 코드부터 시작해 봅시다. sklearn은 계산에 필요한 learning_curve 함수를 제공합니다.

 

In [33]:

iris = datasets.load_iris()

# 열 가지 데이터 세트 크기: 10~100%
# 5-폴드 CV로 데이터를 처리합니다
train_sizes = np.linspace(.1, 1.0, 10)
nn = neighbors.KNeighborsClassifier()

(train_N, train_scores, test_scores) = skms.learning_curve(nn, iris.data, iris.target, cv=5, train_sizes=train_sizes)

# 각 데이터 세트 사이즈별로 다섯 개의 CV 점수를 산출합니다
# collapse across the 5 CV scores; one result for each data set size
df = pd.DataFrame(test_scores, index=(train_sizes*100).astype(np.int))
df['Mean 5-CV'] = df.mean(axis='columns')
df.index.name = "% Data Used"

display(df)

% Data Used

0

1

2

3

4

Mean 5-CV

10

0.3333

0.3333

0.3333

0.3333

0.3333

0.3333

20

0.3333

0.3333

0.3333

0.3333

0.3333

0.3333

30

0.3333

0.3333

0.3333

0.3333

0.3333

0.3333

40

0.6667

0.6667

0.6667

0.6667

0.6667

0.6667

50

0.6667

0.6667

0.6667

0.6667

0.6667

0.6667

60

0.6667

0.6667

0.6667

0.6667

0.6667

0.6667

70

0.9000

0.8000

0.8333

0.8667

0.8000

0.8400

80

0.9667

0.9333

0.9000

0.9000

0.9667

0.9333

90

0.9667

1.0000

0.9000

0.9667

1.0000

0.9667

100

0.9667

1.0000

0.9333

0.9667

1.0000

0.9733

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.