| 스피커 |
성적 증명서 |
| 러스 울핑거 |
좋아요. 안녕하세요 여러분. |
| |
노스캐롤라이나 주 홀리 스프링스에 있는 저의 집에 오신 것을 환영합니다. |
| |
코로나19의 광란 속에서 온라인으로 가상 컨퍼런스를 진행하는 것은 다소 새로운 경험이지만 오늘 여러분과 대화하고 JMP Pro에 새롭게 추가된 기능에 대한 튜토리얼을 제공하게 되어 매우 기쁩니다. |
| |
인기 있는 XGBoost 기능을 구현합니다. |
| |
그래서 오늘 이 튜토리얼에서는 저희가 준비한 것들을 소개해 드리겠습니다. 제가 준비한 것은 JMP 저널입니다. |
| |
컨퍼런스 자료에서 확인하실 수 있습니다. 직접 따라가고 싶으시다면, 제가 여러분께 권해드리고 싶은 것은, |
| |
지금 당장 영상을 멈추고 컨퍼런스 자료로 가서 이 저널을 받아보세요. JMP Pro에서 직접 열어보실 수 있습니다. |
| |
그리고 설치 링크도 있습니다. 애드인을 설치해야 하는데, 그걸 설치하면 제가 여기서 하는 모든 것을 집에서 똑같이 재현할 수 있고, 여러분도 직접 해보실 수 있습니다. 그러니 가능하면 그렇게 하시는 걸 추천합니다. |
| |
제 강아지 찰리도 있어요. 저기 뒤에 있어요. 걔가 뭔가 민망한 짓 하지 않았으면 좋겠어요. 지금은 별로 신나 보이지 않지만, 저만큼이나 XGBoost를 좋아하거든요. 자, 이제 본격적으로 시작해 볼까요? |
| |
XGBoost는 꽤 오랫동안 사용되어 온 놀라운 오픈소스 C++ 라이브러리입니다. |
| |
그리고 원래 이론은 실제로 90년대에 몇몇 유명한 통계학자에 의해 이루어졌지만, 워싱턴 대학 팀이 그 아이디어를 받아들여 실행에 옮겼습니다. |
| |
그리고...제 생각에 그것이 진짜로 진가를 발휘한 것은 몇몇 Kaggle 경연대회에서였습니다. |
| |
시작은...사람들이 사용하기 시작하고 출시되자, 문자 그대로 Kaggle이 지난 몇 년 동안 운영한 모든 테이블형 경쟁에서 우승하기 시작했습니다. |
| |
그리고 실제로 온라인에는 수백 개의 예가 있으니, 검색해 보면 찾을 수 있을 겁니다. |
| |
그래서 저는 이것을 지금 당장 전 세계에서 가장 인기 있고 아마도 가장 강력한 표형 데이터 예측 모델링 방법론이라고 봅니다. |
| |
물론 경쟁자도 있고 특정 데이터 세트에 따라 약간의 차이가 보일 수도 있지만 전반적으로 보면 매우 인상적입니다. |
| |
사실, 현재 마이크로소프트의 LightGBM과 얀덱스의 Catboost와 매우 유사한 기능을 제공하는 경쟁 패키지들이 있습니다. 오늘은 자세히 다루지 않겠지만, 꽤 비슷합니다. |
| |
음, 오늘은 시간이 별로 없으니 동기에 대해 장황하게 설명하고 싶지는 않네요. 하지만 다시 말씀드리지만, 더 자세히 살펴보고 싶으시다면 이 일기를 참고하세요. |
| |
제가 드리고 싶은 것은 이 저널의 하이라이트를 알려드리고, 특히 몇 가지 실제 시연을 보여드려서 여기에 무엇이 있는지 알려드리는 것입니다. |
| |
그러면 시간이 지남에 따라 자유롭게 탐색하고 직접 시도해 볼 수 있습니다. 필요한 것은... 제대로 작동하는 JMP Pro 15가 필요합니다. |
| |
가장 빠른 시일 내에 JMP 16 얼리 어답터를 손에 넣을 수 있다면 공식 JMP 16은 내년 2021년까지 출시되지 않습니다. |
| |
하지만 지금 얼리 어답터 버전을 구매하실 수 있으며, 저희는 해당 버전을 개선하고 있습니다. 따라서 최신 JMP 16 Pro 얼리 어답터를 구매하시는 것을 권장합니다. |
| |
이 추가 기능의 최신 기능을 사용하려면... 이 기능을 사용하려면... JMP Pro를 위한 새로운 프레임 설정이 필요합니다. 좀 특이한데요. |
| |
XGBoost C++ API를 통합하기 위해 Pro 내에서 많은 C++ 코드를 작성했습니다. 그래서 대부분의 작업을 C++로 진행합니다. |
| |
하지만 이와 함께 제공되는 추가 기능이 있는데, 동적 라이브러리를 설치하고 약간의 메뉴 업데이트를 해주기 때문에 Pro가 필요하고 추가 기능도 설치해야 실행할 수 있습니다. |
| |
가능하다면 JMP 16 Pro 얼리 어답터를 구매하여 최신 기능을 받아보세요. 오늘 제가 보여드릴 내용은 바로 그것입니다. |
| |
자, 바로 예시를 들어볼까요? 이건 방금 제 눈에 들어온 아주 새로운 예시인데요. 아주 흥미로운 이야기가 숨어 있어요. |
| |
이 데이터를 연구한 사람은 하이비메 에바리토 교수입니다. 그는 환경 과학자이자 박사 학위 소지자이며, 교수이자 조교수입니다. |
| |
현재 네덜란드 위트레흐트 대학교에 재직 중이신 그는 이 데이터와 그 배경에 있는 이야기를 자신의 허락 하에 친절히 제공해 주셨습니다. 이 데이터로 인해 다소 혼란스러워하시는 다른 분들께 도움을 드리고자 합니다. 저는 그의 동료인 제프리 맥도넬에게 이 데이터를 제공했습니다. |
| |
이 모든 데이터를 수집했습니다. 이것들은 데이터입니다. 목적은 전 세계 벌채 지역의 하천 유출량을 연구하는 것입니다. |
| |
그리고 보시다시피 여기에는 163개의 장소가 있는데, 그 중 절반은 미국에 있고 나머지 절반은 전 세계에 있습니다. 수집이 가능했을 때 다른 장소들이 있었습니다. |
| |
나무가 제거된 지역에서 몇 가지 중요한 측정을 수행했습니다. |
| |
유출수에 무슨 일이 일어났는지에 대한 관점에서 말입니다. 이런 종류의 연구는 나무 개간과 삼림 벌채가 환경에 미치는 영향, 그리고 기후 변화를 연구하는 데 매우 중요하기 때문에 시의적절하다고 생각합니다. |
| |
그리고 당시 Jaivime에게 다행이었던 것은 세계 최고의 과학 저널 중 하나인 Nature 저널에 논문을 게재할 수 있었다는 것입니다. |
| |
그가 그 논문을 쓸 수 있도록 경험을 쌓게 해 주었습니다. 안타깝게도 그 다음에 일어난 일은, 경쟁 연구실에서 이 논문에서 그들이 한 일을 매우 비판적으로 바라보는 상황이었습니다. |
| |
그리고 많은 논의와 논쟁 끝에 결국 논문은 철회되었습니다. |
| |
Jaivime에게는 분명 정말 힘든 경험이었을 거예요. 그는 정말 너그러우셨고, 자신의 이야기와 희망을 공유해 주셨어요. |
| |
이런 일을 피하려고요. 그리고 이 논란의 근본 원인은 여러 가지가 있었지만, 비평가들의 주된 불만은 바로... |
| |
부스트 트리 분석을 했을 수도 있습니다. 꽤 간단한 모델이죠. 예측 변수가 몇 개밖에 없는데, 각각 중요하긴 하지만, 그들의 주요 목표 중 하나는 어떤 변수가 가장 중요한지 파악하는 것이었습니다. |
| |
그는 단일 홀드아웃 검증 세트를 사용하여 부스트 트리 모델을 실행했고 약 0.7의 검증 홀드율을 발표했습니다. 모든 것이 괜찮아 보였습니다. |
| |
하지만 비평가들이 나타나서 다른 홀드 아웃 세트로 데이터를 다시 분석했고 검증 홀드 아웃 R 제곱을 얻었습니다. |
| |
0.1 미만입니다. 정말 큰 변화죠. 0.7에서 0.1 미만으로 줄었고, 이게 사용되었는데, 비평가들은 이걸 정말 맹렬히 비난하며 무슨 일이 일어나고 있는지 제대로 된 평가를 내리지 않으려고 했습니다. |
| |
자, 하이비메, 이 시점에서, 하이비메, 이 일은 작년에 일어났고 그 논문은 2020년에 일찍 철회되었습니다... |
| |
Jaivime은 이번 여름에 나에게 데이터를 공유했고 내 생각은 좀 더 엄격한 교차 검증 분석을 수행하고 실제로 반복적인 K 폴드를 수행하는 것이었습니다. |
| |
두 명의 다른 저항 세력 사이의 불일치의 근본 원인을 파악하기 위해 단 한 명의 저항 세력만 고집하는 대신, 제가 한 일은 새로운 루틴을 만드는 것입니다. |
| |
XGBoost 추가 기능과 함께 제공되는 K-fold 열을 생성하는 함수입니다. 여기 데이터 세트를 보시면 제가 직접 생성한 것을 확인하실 수 있습니다. 시간 관계상 자세한 방법은 다루지 않겠습니다. 하지만 |
| |
이제 "Make K fold columns"라는 제목이 있는 새로운 모듈이 있어서 이 작업을 할 수 있습니다. 저는 계층화 방식으로 작업했는데, 흥미롭게도 이 모듈은 JMP DOE를 사용합니다. |
| |
이렇게 하면 실제로 직교하는 폴드를 만들 수 있다는 장점이 있는데, 이는 그리 흔한 일은 아닙니다. 자, 간단한 분포를 살펴보겠습니다. |
| |
이게 Jaivime이 원래 했던 홀드아웃 세트였고, 계층화도 했는데, 반응이 좀 편향된 편이라 좋은 생각이라고 생각합니다. 그리고 이게 비평가가 사용한 홀드아웃 세트였습니다. |
| |
그리고 제가 결국 사용한 접기 방식은 다음과 같습니다. 세 가지 다른 방식을 시도해 봤습니다. 그리고 제가 여기서 강조하고 싶은 점은 이 접기 방식이 꽤 직교한다는 것입니다. |
| |
여기서 우리는 세 개의 직교 집합을 사용하여 세 번 별도로 K 폴드를 수행하여 최대 정보 이득을 얻습니다. |
| |
그래서 그는 이미 부스트된 트리를 사용하고 있었기 때문에 다음으로 시도해 볼 것은 XGBoost 추가 기능이었습니다. 그래서 저는 이 데이터 세트에 대해 알게 되어 정말 기뻤고 여기서 이야기할 수 있어서 기뻤습니다. |
| |
자, 무슨 일이 일어났는지... 여기서 또 다른 분석을 해 볼게요. 검증 세트에 대해 단방향 분석을 하고 있는데, 제가 놓친 게 바로 반응값, 즉 물 생산량이 수정된 거였어요. |
| |
그리고 저는 그것을 검증 세트와 비교해서 플로팅하고 있습니다. Jaivime이 그의 훈련 세트에서 |
| |
상위 4~5개 측정값 중 상위가 모두 훈련 세트에 포함되었는데, 이것이 문제의 근원이라고 생각합니다. |
| |
반면, 비평가 세트에서는... 균형 잡히고, 조금 더 나아졌고, 특히 최악이었던 점은... 가장 높은 점수를 받은 위치가 검증 세트에 있었다는 점입니다. 이는 학습을 진행하는 다른 어떤 것보다 더 큰 오차를 발생시키기 때문에 자연스러운 오류의 원인입니다. |
| |
저는 이 경우 K 폴드, 즉 K 폴드 유형의 분석이 단일 홀드아웃 세트를 수행하는 것보다 더 설득력이 있다고 생각합니다. |
| |
저는 이 두 단일 보유 세트 모두에 약간의 편향이 있고 계층화하고 물건을 분배하는 더 많은 접기를 하는 것이 더 낫다고 주장하고 싶습니다. |
| |
매번 다르게 적용한 후 여러 번 적용한 후 어떤 결과가 나오는지 확인해 보세요. 제가 만든 폴드가 분포 측면에서 어떻게 보이는지 확인할 수 있습니다. 이제 XGBoost를 실행해 보겠습니다. |
| |
따라서 추가 기능에는 실제로 많은 기능이 있으며 오늘은 여러분을 압도하고 싶지는 않지만 다시 한번 말씀드리지만 따라가려고 한다면 영상을 잠시 멈추고 따라가시기를 권장합니다. |
| |
확실히 하기 위해서요. 하지만 여기서는 스크립트를 실행했습니다. 그리고 저널의 모든 항목에는... JMP 테이블이 있어서 스크립트를 저장할 수 있습니다. 그래서 여기서는 그 스크립트에서 XGBoost를 실행했습니다. |
| |
예를 들어, 메뉴에서 바로 다시 실행해 보겠습니다. 이렇게 하시는 게 좋을 것 같습니다. 추가 기능을 설치하면, |
| |
예측 모델링을 누르고 XGBoost를 누르세요. 바로 여기 예측 모델링 메뉴에 추가했습니다. 설정 방법은 다음과 같습니다. |
| |
응답을 지정하는 것입니다. Y가 있습니다. 예측 변수는 7개인데, 여기에 x로 입력하고, 각 변수의 폴드 열과 검증을 입력합니다. |
| |
여기서 JMP Pro를 사용해 본 경험이 있는 분들에게 말씀드리고 싶은 것은 XGBoost가 다른 JMP 플랫폼과는 약간 다른 방식으로 검증 열을 처리한다는 것입니다. |
| |
지금은 일종의 실험적 프레임워크이지만, 제 경험에 따르면 반복적인 K 폴드가 매우 매력적인 방법이라고 생각하며 이를 쉽게 만들기 위해 추가 기능을 설정하고 싶었습니다. |
| |
그리고 여기서 유틸리티로 만든 폴드 열을 다시 넣고, XGBoost가 여기서처럼 지정하기만 하면 자동으로 반복적인 K 폴드를 수행합니다. |
| |
원래 분석과 같이 단일 홀드아웃을 수행하려는 경우 일반적인 것과 마찬가지로 설정할 수 있지만 열을 만들어야 합니다. |
| |
연속적이죠. 이건 함정이에요. 그리고 저희 얼리어답터 중 일부가 이 부분에서 실수를 했다는 걸 알고 있어요. 다른 방식과는 다른 관례죠. |
| |
JMP Pro 내의 다른 XGBoost나 다른 예측 모델링 루틴도 있지만, 제 생각에는 이 방법이 가장 깔끔한 것 같습니다. 다시 한번 말씀드리지만, 권장하는 방법은 다음과 같습니다. |
| |
이렇게 K-폴드를 반복하거나, 적어도 한 번은 K-폴드를 한 후, "OK" 버튼을 누르면 됩니다. 그러면 초기 실행 창이 나타납니다. |
| |
XGBoost의 장점은 튜닝 매개변수가 다양하다는 것입니다. 주요 매개변수는 여기 상자에 나열되어 있으며, 직접 조정해 볼 수 있습니다. |
| |
그리고 그보다 훨씬 더 많은 기능이 있는데, 그것들은 고급 옵션 아래에 숨겨져 있는데, 오늘은 시간이 없어 설명하지 않겠습니다. |
| |
하지만 저희는... 가장 중요한 것들은... 대부분의 경우 그냥 신경 쓰셔도 됩니다. 자, 그럼... 다시 실행해 볼까요? 여기서 "Go" 버튼을 클릭하면 XGBoost가 실행됩니다. |
| |
지금은 간단한 노트북으로 실행하고 있습니다. 데이터 세트는 비교적 작습니다. 그러니까... 방금 5배 반복해서 실행했습니다. |
| |
세 가지 다른 결과를 단 몇 초 만에 얻을 수 있습니다. XGBoost는 꽤 잘 튜닝되어 있어서 더 큰 데이터 세트에도 잘 작동하지만, 이 작은 예제에서는 어떤 일이 일어나는지 살펴보겠습니다. |
| |
그런데 이 초기 그래프가 나오면서 즉각 경고 신호가 켜졌습니다. |
| |
여기서 우리가 살펴보는 것은... 반복 횟수, 적합 반복 횟수에 따라 기본적으로 감소하려는 손실 함수인 학습 곡선을 얻는다는 것입니다. |
| |
하지만 실선 곡선은 검증 곡선입니다. 여기서 무슨 일이 일어났는지 보실 수 있습니다. 몇 번의 반복이 있은 직후, 이 곡선은 바닥을 찍었고 그 후 상황은 훨씬 더 악화되었습니다. |
| |
따라서 이는 실제로 이 기본 모델을 사용하고 싶지 않은 경우입니다. XGBoost는 이미 과적합되어 있습니다. |
| |
이런 일은 종종 작은 데이터 세트에서 발생하며 튜닝이 필요합니다. |
| |
아래쪽에 다른 결과들이 많이 있는데, 다시 말씀드리지만, 믿을 만하다고 생각하지는 않습니다. 이 시점에서는... 약간의 조정이 필요할 겁니다. |
| |
오늘은 수동 튜닝을 조금 해 보도록 하겠습니다. 하지만 여러분께서 직접 해보시기를 권해드리고 싶습니다. 튜닝 설계를 위한 전체 프레임워크를 구현해 놓았기 때문입니다. |
| |
여기서 매개변수 범위를 지정하고 설계 공간을 검색할 수 있으며, 실제로는 JMP DOE를 사용합니다. |
| |
그러니까... 이미 DOE를 사용하는 두 가지 방법이 있는데, 두 방법 모두 기능을 크게 향상시켰습니다. 지금은 이 그래프를 기반으로 수동 튜닝을 조금 해 보겠습니다. |
| |
이 그래프를 확대해서 보면 곡선이 바닥을 치고 있는 것을 볼 수 있습니다. 3~4회 반복한 후의 모습을 보여드리겠습니다. 한 가지, 정말 쉬운 방법은 4단계 후에 훈련을 멈추는 것입니다. |
| |
무슨 일이 일어나는지 보세요. 그런데, 과적합에서 무슨 일이 일어났는지 보세요. 검증 R 제곱이 실제로 음수였으니 꽤 나빴습니다. 확실히 추천할 만한 모델은 아닙니다. 하지만 네 단계만 거치는 새로운 모델을 실행해 보겠습니다. |
| |
무슨 일이 일어나는지 보세요. |
| |
훨씬 더 나은 검증 R 제곱입니다. 이제 약 0.16 정도 올랐는데, 재미 삼아 세 번 시도해 봅시다. 어떻게 되는지 보겠습니다. |
| |
조금 더 심각하죠. 그러니까 이건 좀 더 실험해 볼 만한 부분이라는 걸 알 수 있죠. 저희는 그런 부분도 수용할 수 있는 대화 환경을 만들려고 노력했습니다. |
| |
그리고 처음에 보이는 이 표에서 몇 가지 모델을 비교해 볼 수 있습니다. 여러 열을 기준으로 정렬하여 가장 적합한 모델을 찾은 다음, 아래에서 다양한 모델링 세부 정보를 자세히 살펴볼 수 있습니다. |
| |
여기서는 모델 2를 살펴보겠습니다. 우리가 할 수 있는 일은 다음과 같습니다. |
| |
그것만 유지하고 정리하면 됩니다... 원하지 않는 모델을 정리하면 숨겨진 모델이 제거됩니다. |
| |
이제 좀 더 자세히 살펴보고 싶은 모델로 돌아왔습니다. 여기서 검증 R 제곱이 0.17 정도라는 것을 확인하세요. |
| |
그러니까, 기억하세요, 이건 사실 Jaivime이 원래 이해한 것과 비평가가 이해한 것 사이에 있는 거예요. |
| |
그리고 저는 이것을 R 제곱의 훨씬 더 신뢰할 수 있는 측정으로 볼 것입니다. 왜냐하면 이것은 다시 한번 전체적으로 계산되었기 때문입니다. 우리는 실제로 15가지 다른 모델링 적합을 실행했습니다. |
| |
세 번이나 5배로 늘렸습니다. 그러니까 이건 그 값들에 대한 평균값입니다. 그래서 모델의 성능을 측정하는 데 훨씬 더 깔끔하고 신뢰할 수 있는 방법이라고 생각합니다. |
| |
적합한 모델을 찾으려면 아래로 스크롤하세요. 출력 결과가 꽤 많습니다. 다시 말씀드리지만, JMP는 정말 훌륭합니다. 저희는 항상 통계 근처에 그래픽을 배치하여 |
| |
둘 다 무슨 일이 일어나고 있는지 보고 숫자를 첨부하며, 이 그래프는 평소처럼 실시간으로 표시되며 상호 작용이 잘 됩니다. |
| |
하지만 여기서 보시다시피, 실제 훈련과 예측 훈련, 그리고 검증 훈련이 있습니다. 검증 훈련은 거의 항상 더 나빠지지만, 실제로는 그렇습니다. |
| |
그리고 여러분은 오류가 발생하는 곳을 다시 볼 수 있는데, 이것이 바로 가장 높은 지점이고, 종종...이것이 45도 선입니다. |
| |
그래서 높은 측정값은... 그리고 모든 높은 측정값은 예측보다 낮게 나오는 경향이 있는데, 이는 매우 정상적인 현상입니다. 제 생각에는 이런 종류의 방법이라면, 축소되는 경향이 있을 겁니다. |
| |
극단적인 값을 낮추고 보수적으로 접근했습니다. 그러면 오류가 어디에서, 어느 정도 발생하는지 정확히 알 수 있습니다. |
| |
이제 Jaivime의 주요 관심사는...그는 주로 어떤 변수가 실제로 영향을 미치는지 보는 데 관심이 있었습니다. |
| |
이 물 보정 효과. 그리고 가장 눈에 띄는 건 PET라고 하는 거예요. |
| |
XGBoost에서는 변수 중요도를 평가하는 여러 가지 방법이 있습니다. 이득 측정 기준으로 분할 횟수를 직접 볼 수 있는데, 제 생각에는 다음과 같습니다. |
| |
아마 시작하기에 가장 좋은 것 같아요. 특정 변수로 분할할 때마다 모델이 얼마나 개선되는지를 나타내는 지표죠. 커버(cover)라는 것도 있어요. |
| |
이 경우, 세 가지 중 어느 하나라도 PET가 가장 중요한 것으로 떠오르고 있습니다. 따라서 기본적으로 이러한 빠른 분석이 이 데이터에 대한 조치의 핵심인 것 같습니다. |
| |
이제 JMP를 사용하면 더 많은 작업을 할 수 있습니다. 모델링 빨간색 삼각형 아래에는 꽤 많은 새로운 기능이 추가되어 있습니다. 예측 값과 수식을 저장할 수 있습니다. |
| |
모델 저장소나 포뮬러 저장소에 게시하여 더 많은 작업을 수행할 수 있습니다. |
| |
Python 코드를 생성하는 루틴도 있습니다. 단순히 스코어링만 하는 것이 아니라, 모든 학습 및 피팅을 수행하는 새로운 기능입니다. JMP Pro에서 Python으로 전환하려는 분들에게 도움이 될 것입니다. 여기서는 프로파일러를 살펴보겠습니다. |
| |
그리고 저는 이전 영상에서 제 친구 브래드 존스에게 간단히 사과의 말씀을 드려야겠습니다. 그가 프로파일러의 발명자라는 사실을 언급하는 것을 깜빡했습니다. |
| |
그래서 이건, 사실 그에게 큰 도움이 되는 사례이고, 우리가 지금 이 모델을 다른 방식으로 활용하고 있다는 점에서, 즉 변수의 중요도와 각 변수의 작동 방식을 평가하는 데 활용하고 있다는 점에서도 그렇습니다. 그래서 제게는 정말 설득력 있는 이야기입니다. |
| |
우리가... 이걸 볼 수 있는 프레임워크를 말이죠. 그리고 찰리... 제가 그 말을 하자마자 찰리가 소파에서 벌떡 일어났어요. 지금 제 옆에 있거든요. |
| |
그래서 무슨 일이 일어나는지 살펴보세요... 우리는 이 PET 변수에서 흥미로운 점을 볼 수 있습니다. 우리는 핵심 순간을 볼 수 있습니다. PET가 |
| |
1200을 바로 넘어설 때쯤이면 정말 효과가 나타나죠. 프로파일러가 어떻게 작동하는지 아주 잘 보여주는 예시입니다. |
| |
그리고 내가 아는 한, 이것이 처음입니다... 이것이 처음입니다... 이것이 제공하는 유일한 소프트웨어입니다. |
| |
이러한 플롯은 단순히 통계적 중요성 측정을 넘어서서 무슨 일이 일어나고 있는지 정확히 보여주고 해석하는 데 도움이 됩니다. |
| |
부스트 트리 모델입니다. 정말 좋은 분석 방법이라고 생각합니다. 여러분도 직접 데이터로 이 방법을 시도해 보시기를 권합니다. |
| |
이제 다른 예를 들어 우리의 일기로 돌아가 보겠습니다. |
| |
보시다시피, 내용이 정말 많습니다. 모든 내용을 다 살펴볼 시간은 본래 없습니다. |
| |
하지만 시간 관계상 이진 타겟이 있을 때 어떤 일이 일어나는지 보여드리고 싶었습니다. 방금 살펴본 것은 연속형이었습니다. |
| |
이를 위해 JMP 샘플 라이브러리에서 오랫동안 사용되어 온 기존 당뇨병 데이터 세트를 사용합니다. 이 데이터 세트는 기존 데이터와 동일하지만, 몇 가지 새로운 스크립트를 추가하여 더욱 풍성해졌습니다. |
| |
따라서 저널을 받아서 다운로드하면 이런 종류의 향상된 버전을 얻게 됩니다. |
| |
이진 순서형 타겟과 함께 다양한 XGBoost 실행이 꽤 많았고, 기억하시겠지만 여기에는 원래 Y 변수에서 파생된 낮음 및 높음 측정값이 있습니다. |
| |
당뇨병에 대한 반응을 살펴보겠습니다. 여기서 좀 더 나아가 보겠습니다. 실제로 이익 행렬을 사용하고 싶은 의학적 상황에 있다고 가정해 보겠습니다. 우리의 목표는 결정을 내리는 것입니다. 각 환자를 예측해 보겠습니다. |
| |
높든 낮든 상관없지만, 생각해보니 사람이 실제로 높은 위치에 있다면 위험 부담이 조금 더 크다는 걸 깨달았어요. |
| |
그래서 실제 상태가 높은지에 따라 이익이나 손실이 두 배로 늘어날 겁니다. 그리고 물론, |
| |
이것이 일반적으로 올바른 작동 방식입니다. 올바른 결정은 여기와 여기에 있습니다. |
| |
그리고 여기에 잘못된 것이 있는데, 그게 바로... 이런 행렬을 세울 때 네 개의 셀을 모두 생각해야 하는 것입니다. |
| |
간단한 예를 하나 들어보겠습니다. 두 배로 늘어나는데, 여기에 실제 금전적 가치를 부여할 수 있을지는 잘 모르겠습니다. 그런 상황에 처해 있다면 사실 좋은 일입니다. |
| |
누가 알겠나요. 어쩌면 이것들을 각각 비트코익으로 간주할 수도 있고, 각각 1만 달러 정도일 수도 있겠죠. |
| |
그렇게 중요하지는 않습니다. 더 중요한 것은 우리가 우리의 상황에 맞춰 최적의 결정을 내리고 싶어한다는 것입니다. |
| |
예측입니다. 그래서 지금 분석을 할 때 이 수익 매트릭스를 고려할 겁니다. 실제로는 모델 피팅 후에만 수행되며, 피팅 자체에는 직접 사용되지 않습니다. |
| |
이제 여기서 XGBoost를 실행하고 바이너리 타겟을 설정하겠습니다. |
| |
목적 함수는 이제 로그 손실의 로지스틱으로 바뀌었고 여기에 반영된 것은 로지스틱 로그 가능도입니다. |
| |
그리고 보시다시피, 이제 우리는 이진 목표를 살펴볼 수 있고, 이를 평가하는 데 사용하는 지표가 약간 다릅니다. |
| |
다만, 눈여겨보시면 방금 살펴본 수익 행렬에서 계산된 수익 열이 있습니다. |
| |
하지만 수익 행렬에 대해 너무 걱정하지 않고 단순한 이진 회귀만 원하는 시나리오에 있는 경우 다음과 같은 일반적인 지표를 살펴볼 수 있습니다. |
| |
정확도(오분류율의 역수)만 봐도 알 수 있듯이, F1 또는 매튜스 상관관계 분석도 유용하고, ROC 분석도 특이도와 민감도의 균형을 맞추는 데 도움이 됩니다. 이 모든 분석이 가능합니다. |
| |
그리고 더 자세히 살펴볼 수도 있습니다. 제가 보여드리고 싶은 새로운 기능 중 하나는 아직 개발 중인데, 바로 여러분이 의사 결정 임계값을 직접 조정해 볼 수 있는 방법이 생겼다는 것입니다. |
| |
이제 실제로 대화형으로 할 수 있습니다. 그리고 새로운 기능이 추가되었는데요, 임계값을 기준으로 수익을 표시하는 기능입니다. |
| |
이건 우리가 JMP Pro에 막 도입한 아주 새로운 그래프인데, 이걸 사용하려면 최신 JMP 16 얼리 어답터를 구해야 합니다. 하지만 이건 의사결정 매트릭스를 수용하고 있죠... |
| |
또는 이익 매트릭스입니다. 그리고 우리가 연구하고 있는 또 다른 점은 이 매트릭스를 기반으로 최적의 임계값을 도출할 수 있다는 것입니다. |
| |
이 경우에는 실제로 여전히 0.5인 것 같습니다. 따라서 이는 실제 목표가 수익 극대화라면 어떤 조치를 취해야 할지에 대한 추가적인 통찰력을 제공합니다. |
| |
그렇지 않은 경우 상황에 따라 특이성과 민감성의 균형을 맞추고 싶을 수 있지만, 여기에 표시된 일반적인 혼동 행렬과 훈련 및 검증을 위한 일부 그래프가 있습니다. |
| |
그리고 ROC 곡선입니다. |
| |
변수 중요도 측면에서 앞서 살펴본 것과 같은 결과를 얻을 수 있습니다. 프로파일러를 다시 한번 살펴보겠습니다. 꽤 괜찮은 방법이죠... |
| |
이 경우에도 좋습니다. 각 변수에 어떤 일이 일어나고 있는지 정확히 볼 수 있으니까요. |
| |
예를 들어 여기서 LTG와 BMI가 가장 중요한 두 변수라는 것을 알 수 있는데, 두 변수 모두 반응이 증가함에 따라 증가하는 경향이 있어 그 관계를 직접적으로 확인할 수 있습니다. 실제로 트리를 사용하면 BMI처럼 비선형성이 나타날 수 있습니다. |
| |
그것이 여기서 실제적인 것인지는 확실하지 않습니다. 우리는 더 많은 분석을 하거나 더 많은 모델을 살펴보고 여기서 그 작은 것과 관련하여 실제로 무언가가 진행되고 있는지 확인해야 할 수도 있습니다. |
| |
우리가 보는 융기 부분이에요. 하지만 이런 것들은 여러분이 알아낼 수 있는 것들이고, 보는 재미와 흥미를 유발하는 것들이죠. |
| |
자, 당뇨병 데이터 세트를 가지고 실험해 볼 수 있는 자료가 있습니다. 저널에는 훨씬 더 많은 내용이 있습니다. 시간 관계상 오늘은 보여드리지 않겠지만, XGBoost 문서에 자세히 나와 있는 두 가지 예시가 더 있습니다. |
| |
이건 PDF 문서인데, 추가 기능에 대한 자세한 설명과 두 가지 예시를 단계별로 안내해 줍니다. 한번 확인해 보시는 걸 추천합니다. |
| |
그리고, 저널에는 또한 여러 가지 비교가 이루어진 내용이 담겨 있습니다. |
| |
우리가 살펴본 이 보라색 매트릭스를 보셨죠. 이건 펜실베이니아 대학교에서 진행된 연구인데요, |
| |
다양한 데이터 세트에서 여러 머신 러닝 방법을 서로 비교한 후, 각 방법이 다른 방법보다 얼마나 더 나은 성능을 보이는지 비교하는 방식입니다. XGBoost도 마찬가지입니다. |
| |
최고 모델로 선정되었고, 이 비교가 항상 최고는 아니었지만, 평균적으로는 여기 보이는 다른 모든 모델보다 성능이 더 좋았습니다. 그래서, 더 많은 증거가 있습니다. |
| |
이 기술의 힘과 능력에 대해 말씀드리겠습니다. 몇 가지 더 말씀드릴 게 있는데, 여기서는 다루지 않겠습니다. |
| |
이 힐 밸리 사례는 흥미롭네요. 나무들이 제대로 기능하지 못한 사례죠. 좀 병적인 상황이긴 하지만, 연구해 보면 흥미롭고, 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 거예요. |
| |
JMP의 R&D 부서에서도 상당히 광범위한 내부 테스트를 수행했으며 그 결과 중 상당수가 여러 다른 데이터 세트에 걸쳐 여기에 나와 있습니다. |
| |
시간 관계상 다시 한번 말씀드리지만, 그 내용들은 다루지 않겠지만, 꼭 한번 확인해 보시기를 권합니다. 저희의 모든 연구 결과는 이 저널과 함께 제공되며, 다양한 분야와 데이터 규모에 걸쳐 실험해 보실 수 있습니다. |
| |
자, 한번 확인해 보세요. 재밌게도, 속도 측면에서의 저희의 결론은 이 작은 밈에 요약되어 있습니다. 저희는 두 대의 다른 차를 가지고 있습니다. |
| |
사실, 이건 정말 대단하고, GPU와 CPU에 있는 모든 스레드를 활용하도록 조정되어 있어요. |
| |
Windows를 사용 중이고 NVIDIA 카드를 사용한다면 GPU를 활용할 수도 있는데, 이를 통해 속도가 최대 5배까지 향상되는 경우가 많습니다. 정말 재밌죠. |
| |
그럼 이쯤에서 튜토리얼을 마무리하겠습니다. 다시 한번, 꼭 확인해 보세요. 정말 감사드리고 싶었습니다. 많은 분들이 참여해 주셔서 정말 감사합니다. |
| |
사실 걱정되는 부분이 있는데, 혹시 제가 간과한 부분이 있을지도 모르지만, 적어도 이 분들께는 감사의 말씀을 전하고 싶었습니다. 훌륭한 얼리 어답터 그룹이 있었거든요. |
| |
그리고 그들은 Marie, Diedrich로부터 매우 좋은 피드백을 받았고 Villanova의 이들은 이미 성공적으로 교실 환경에서 XGBoost를 사용하기 시작했습니다. |
| |
네, 그 이야기를 들으니 정말 기뻤습니다. 그리고 JMP의 많은 분들이 도와주셨습니다. |
| |
물론, 이건 JMP 인프라 전체를 기반으로 하고 있습니다. 따라서 언젠가는 이 작업과 관련해서 JMP 부서 전체를 나열해야 할 것 같습니다. 작업하는 게 정말 즐거웠습니다. |
| |
그리고 여러 가지 면에서 제게 솔직하게 이야기해 주시고, 많은 제안을 해 주시는 생명과학팀에도 감사드리고 싶습니다. |
| |
루치아노는 실제로 XGBoost 추가 기능을 구현했는데, JMP Genomics와 함께 사용할 수 있는 또 다른 추가 기능입니다. JMP Genomics를 사용 중이시라면 이 기능도 확인해 보시는 것을 추천합니다. 예측 모델링 프레임워크 내에서 XGBoost를 직접 호출할 수도 있습니다. |
| |
귀하의 관심에 감사드리며, XGBoost를 사용해 보시기 바랍니다. |