Gradient boosted trees: 모델링
Gradient boosting은 다른 모델의 성능을 향상시키는 기법입니다. 아이디어는 계산이 쉽지만 약한 모델을 먼저 학습시키는 것입니다. 그런 다음 반응값을 해당 모델의 잔차로 바꾸고, 새로운 모델을 적합합니다. 원래의 반응 예측 모델과 새로운 잔차 예측 모델을 “더하면”, 더 정확한 모델이 됩니다. 이 과정을 반복하면서 이전 모델의 잔차를 예측하는 새로운 모델을 계속 학습하고, 그 결과를 누적합니다. 반복할수록 모델은 점점 더 강력해집니다.
좀 더 구체적으로, sparklyr는 gradient boosted trees를 사용합니다. 이는 약하지만 계산이 쉬운 모델로 의사결정나무를 사용한 gradient boosting을 뜻합니다. 이 방법은 반응 변수가 범주형인 분류 문제와 연속형인 회귀 문제 모두에 사용할 수 있습니다. 여기서처럼 회귀의 경우에는, 한 점이 얼마나 나쁘게 적합되었는지를 잔차로 측정합니다.
의사결정나무는 Supervised Learning in R: Classification과 Supervised Learning in R: Regression 강의에서 더 자세히 다룹니다. 후자 강의에서는 gradient boosting도 다룹니다.
sparklyr에서 gradient boosted trees 모델을 실행하려면 ml_gradient_boosted_trees()를 호출하세요. 이 함수의 사용법은 이 장의 첫 번째 연습 문제에서 설명했습니다.
이 연습은 강의의 일부입니다
R에서 sparklyr로 시작하는 Spark
연습 안내
spark_conn이라는 Spark 연결이 준비되어 있습니다. Spark에 저장된 트랙 메타데이터/음색 데이터를 결합하고 필터링한 뒤 티블로 연결한 track_data_to_model_tbl이 미리 정의되어 있습니다.
- 특성으로 사용할
"timbre"문자열을 포함하는 열을 가져오세요.colnames()를 사용해track_data_to_model_tbl의 열 이름을 가져오세요. 참고:names()는 원하는 결과를 주지 않습니다.str_subset()로 열을 필터링하세요.- 해당 함수의
pattern인수는fixed("timbre")여야 합니다. - 결과를
feature_colnames에 할당하세요.
reformulate()를 사용해 모델의formula를 만드세요.termlabels인수(공식의 입력)는feature_colnames여야 합니다.response인수(공식의 출력)는"year"여야 합니다.- 결과를
year_formula에 할당하세요. - 이렇게
reformulate()를 사용하면feature_colnames의 모든 변수를+기호로 결합해formula의 오른쪽을 구성합니다. 그 결과year ~ timbre1 + timbre2 + ... + timbre12와 같은 공식이 만들어지며, 모델에 포함될 변수 간의 관계를 정의합니다.
- gradient boosting 모델을 실행하세요.
- 생성한
year_formula를 유일한 인수로 하여ml_gradient_boosted_trees()를 호출하세요. - 결과를
gradient_boosted_trees_model에 할당하세요.
- 생성한
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl
feature_colnames <- track_data_to_model_tbl %>%
# Get the column names
___ %>%
# Limit to the timbre columns
___(___(___))
feature_colnames
# Create the formula for the model
year_formula <- ___
gradient_boosted_trees_model <- track_data_to_model_tbl %>%
# Run the gradient boosted trees model
___