file : /// C : / Users / <사용자> /AppData/Roaming/SAS/JMP/Addins/com.jmp.xgboost/XGBoost%20Add-In.pdf
페이지 5 :
XGBoost> XGBoost
두 번째 수준 메뉴 항목 이름은 중복되고 혼동됩니다.
"모델 적합"과 같이 취해야 할 조치를 명확하게 나타내는 것을 제안합니다.
페이지 6 :
"k-fold 대신 단일 홀드 아웃 분석을 수행하려면 유효성 검사 변수의 유형을 연속으로 변경하고 값이 학습에 대해 0이고 유효성이 1인지 확인하십시오."
이 작업을 수행 할 수있는 방법이 있다는 것이 좋지만있는 그대로 발견 할 수 없습니다. 이는 UI에서 명시해야합니다. 예를 들어 확인란 컨트롤입니다.
추가 기능 UI
Add-in이 현재 기존 알고리즘과 함께 Analyze 메뉴 아래에 새로운 메뉴 항목을 추가하면 사용자에게 훨씬 더 좋을 것이라고 생각합니다. 내 말은, XGBoost는 분석> 예측 모델링 , 이후 부스트 트리 . 이것이 애드 인 작성자에게 노출되는 JMP 메뉴 사용자 정의 시스템의 제한 일 가능성이 더 높다는 것을 이해합니다.
XGBoost UI 모델 UI
LRT에는 "Python 코드 생성 ..."옵션이 있으며 이는 Formula Depot에 게시 된 모델에서 사용하는 것과 동일한 이름입니다.
그러나 생성 된 코드는 현저하게 다르며 사용자가 다른 코드를 사용해야하는 이유에 대한 명확한 표시가 없습니다. 툴팁 텍스트에서 서로 다른 이름과 설명을 사용하는 것이 좋습니다.
다른 이름은 또한 차이점에 대한 추가 정보를 제공 할 수있는 스크립팅 색인에서 쉽게 찾을 수 있도록합니다.
추가 기능 Python 생성 코드 :
xgboost_jmp.py
"# russ.wolfinger@jmp.com으로 의견, 제안, 수정 사항을 보내주십시오"
개인 계정이 아닌 tech.support@jmp.com과 같은 회사 계정을 사용하는 것이 좋습니다.
팬더를 pd로 가져 오기
Pandas는 Python을위한 일반적인 테이블 형식 데이터 조작 라이브러리에 관한 한 좋은 선택이지만, 다음과 같이 더 높은 성능과 확장 성을 제공하는 새로운 라이브러리의 사용을 배제한다고 가정합니다. cuDF 과 Dask . 어댑터 인터페이스에 대해 코딩하고 Pandas에 대한 기본 구현을 제공하면 사용자가 기본 구현의 이점을 누리면서 다른 배포 옵션에 대한 문을 열어 둘 수 있습니다. 이러한 새로운 라이브러리는 가능한 한 Pandas API를 따르고 때로는 드롭 인 교체를 제공하기 때문에 어렵지 않습니다. 특히, 메모리보다 더 큰 Dask 데이터 세트를 채점하는 생성 된 코드를 보여주는 POC는 여러 스레드를 사용하거나 클러스터 전체에 분산 컴퓨팅을 사용하여 사용자가 최소한의 노력으로 Python 에코 시스템을 활용할 수있는 방법에 대한 훌륭한 판매 포인트가 될 것입니다.
수입 Seaborn
matplotlib.pyplot을 plt로 가져 오기
결과를 시각화하기 위해 코드를 추가하는 것은 좋지만 배포 시나리오에서는 무겁습니다. 이 기능을 별도의 모듈에 제공하고 종속성이있는 한 배포 코드를 가능한 한 가볍게 유지합니다.
데이터 시각화는 데모에는 좋지만 프로덕션에서는 유용하지 않습니다. 생성 된 코드는 프로덕션 시나리오 인 IMO에 최적화되어야합니다.
def feature_name_replace (f)
이 방법은 두 개의 고유 한 기능 이름을 동일한 이름에 매핑하여 잠재적으로 나쁜 결과를 초래하는 이름 지정 충돌을 생성 할 수 있습니다. 예를 들어, feature_name_replace ( "A (1)") == feature_name_replace ( "A.1_") == "A_1_".
호출 코드는 이러한 충돌을 확인하지 않습니다.
가능성은 낮지 만 사용자가 변수의 이름을 지정하는 방법을 제어 할 수 없기 때문에 확인해야합니다.
def main (mname, path, df, yvar, xvar, wvar, vvar, cvar, parms, iter, action = 'fit',
verbose_eval = 100, verbose = True, plot = True) :
# parms : xgboost 매개 변수, 기본값과 다른 매개 변수 만 필요합니다.
사전 'parms'의 유효하거나 예상되는 내용에 대한 문서가 없습니다.
찾을 수있는 위치에 대한 포인터일까요?
# action = 'fit': k- 겹 교차 검증을 반복하여 xgboost 모델 적합
# action = 'predict': 새 데이터 예측, 이진 모델 객체는 이미 mod 하위 디렉토리에 저장되어 있어야합니다.
action = 'predict'에 대한 검사는 없습니다. 주 함수는 항상 모델을 평가하려고 시도합니다. 사용자가 모델에 맞추고 싶은 경우에만 필요합니까?
또한 action = 'fit'일 때 모델을 디스크에 저장하는 코드가 주석 처리됩니다. 따라서 현재는 action == 'predict'를 지정할 때 나중에 피팅 된 모델을 재사용 할 수있는 방법이 없습니다.
# 모델 바이너리 객체 저장
# xg.save_model (fname)
# print (fname)
# versbose_eval : xgboost 반복 인쇄 빈도
오식.
# plot : action == 'fit'일 때 실제와 예측을 플롯합니다.
플로팅 기능의 유용성에 대해서는 위의 설명을 참조하십시오.
Formula Depot 생성 코드 :
LRT 옵션을 사용하여 FD에 게시 한 다음 FD 옵션을 사용하여 Python 코드를 생성했습니다 (메뉴 작업 이름 재사용에 대한 위의 주석 참조).
생성 된 스코어링 코드 파일이 올바른 것으로 보이며 자리 표시자가 없습니다. 이론적으로는 배포 할 준비가 된 것입니다. 문제는 고객이 현장에서 생성 한 유사한 모델 ( 링크 ) 모델이 너무 커서 Python 인터프리터가 충돌합니다. 도움말에 제안 된대로 기본값을 사용하여 PowderMetarllugy에 대해 생성 된 모델의 라인 수는 82K 라인에 가깝습니다.
임시 변수의 수를 줄이는 것부터 생성 된 코드를 여러 개의 작은 파일 (또는 적어도 함수)로 분할하는 것까지이 문제를 해결할 수있는 여러 가지 방법이 있습니다. 이미 있습니다 결함 그것을 위해 열었지만 우선 순위는 아닙니다.
위에서 설명한 대규모 모델에 대한 일반적인 최적화 외에도 누락 된 값 방지 및 원-핫 인코딩 사용과 같은 XGBoost 모델의 특수성을 활용하여에 존재하는 일부 검사 및 변환을 피함으로써보다 간결한 표현을 생성 할 수 있습니다. 일반 코드 생성 엔진.
스코어링 코드 유효성 검사
Python 인터프리터를 중단하지 않고 실행할 수있을만큼 작은 모델을 얻을 수 있다고 가정하고 Formula Depot에서 생성 한 점수 코드의 점수 결과를 Python 래퍼로 생성 된 바이너리 모델의 점수 결과와 비교 했습니까? 생성 된 숫자가 실제로 동일하다는 것을 아는 것이 중요하다고 생각합니다. 이러한 유형의 유효성 검사를 위해 만들어진 테스트 도구가 Perforce에 저장되어 있습니다.
// depot / main / test / Scoring / Python /.
나는 그것이 있다면 아주 적은 변화로 사용될 수 있다고 믿습니다.
xgb_jmp_m1.py
이것은 라이브러리 사용 방법을 보여주는 POC 파일 인 것 같습니다.
Jupyter 노트북은 오늘날 이러한 종류의 "내 라이브러리 사용 방법"시나리오에서 가장 일반적인 수단이므로 더 나은 선택이 될 것입니다.
또한 현재 xgboost_jmp.py의 일부인 플로팅 코드를위한 더 나은 장소가 될 것입니다.