XGBoost는 Kaggle 및 기타 데이터 과학 대회에서 정기적으로 상위권을 차지하는 인기 있는 기계 학습 알고리즘입니다. XGBoost를 차별화하는 점은 여러 약한 모델(이 경우 의사결정 트리)을 강력한 모델로 결합하는 기능입니다. 이는 다양한 예측 작업에 대해 알고리즘을 강력하고 매우 효과적으로 만드는 데 도움이 되는 그래디언트 부스팅이라는 기술을 통해 수행됩니다.
XGBoost는 그래디언트 부스팅을 사용합니다. 즉, 각 트리가 이전 트리의 실수를 수정하려고 시도하는 트리를 순차적으로 구축합니다. 다음은 프로세스를 단순화한 보기입니다.
예를 들어 주택 가격을 예측하는 경우:
이 프로세스는 일부 영리한 수학과 최적화가 결합되어 XGBoost를 정확하고 빠르게 만듭니다.
XGBoost는 원래 C 라이브러리로 구현되었지만 Python 및 R과 같은 언어에 사용할 수 있는 바인딩이 있으므로 일반적으로 데이터 및 기계 학습을 전문으로 하는 광범위한 개발자가 액세스할 수 있습니다.
최근 Node.js에 대한 엄격한 요구 사항이 있는 프로젝트가 있었기 때문에 Node.js에 대한 바인딩을 작성하여 격차를 해소할 수 있는 기회를 보았습니다. 이것이 JavaScript 개발자에게 더 많은 ML을 제공하는 데 도움이 되기를 바랍니다.
이 기사에서는 Node.js 애플리케이션에서 XGBoost를 사용하는 방법을 자세히 살펴보겠습니다.
시작하기 전에 다음 사항을 확인하세요.
npm을 사용하여 XGBoost Node.js 바인딩을 설치합니다.
npm install xgboost_node
코드를 시작하기 전에 주택 가격 예측 예에서 우리의 기능이 무엇을 나타내는지 이해해 보겠습니다.
// Each feature array represents: [square_feet, property_age, total_rooms, has_parking, neighborhood_type, is_furnished] // Example: [1200, 8, 10, 0, 1, 1 ]
각 기능의 의미는 다음과 같습니다.
해당 레이블 배열에는 수천 단위의 주택 가격이 포함됩니다(예: 250은 $250,000를 의미함).
다른 형식의 원시 데이터가 있는 경우 XGBoost용으로 변환하는 방법은 다음과 같습니다.
npm install xgboost_node
다음은 모델을 훈련하고 예측하는 방법을 보여주는 완전한 예입니다.
// Each feature array represents: [square_feet, property_age, total_rooms, has_parking, neighborhood_type, is_furnished] // Example: [1200, 8, 10, 0, 1, 1 ]
위 예에서는 다음 방법을 보여줍니다.
XGBoost는 모델을 저장하고 로드하는 간단한 방법을 제공합니다.
// Let's say you have data in this format: const rawHouses = [ { address: "123 Main St", sqft: 1200, yearBuilt: 2015, rooms: 10, parking: "Yes", neighborhood: "Residential", furnished: true, price: 250000 }, // ... more houses ]; // Transform it to XGBoost format: const features = rawHouses.map(house => [ house.sqft, new Date().getFullYear() - house.yearBuilt, // Convert year built to age house.rooms, house.parking === "Yes" ? 1 : 0, // Convert Yes/No to 1/0 house.neighborhood === "Residential" ? 1 : 2, // Convert category to number house.furnished ? 1 : 0 // Convert boolean to 1/0 ]); const labels = rawHouses.map(house => house.price / 1000); // Convert price to thousands
이 모델에 매개변수가 있다는 것을 눈치채셨을 것입니다. 매개변수를 조정하고 선택하는 방법을 이해하려면 XGBoost 설명서를 살펴보는 것이 좋습니다. 이러한 매개변수 중 일부가 달성하려는 목표는 다음과 같습니다.
import xgboost from 'xgboost_node'; async function test() { const features = [ [1200, 8, 10, 0, 1, 1], [800, 14, 15, 1, 2, 0], [1200, 8, 10, 0, 1, 1], [1200, 8, 10, 0, 1, 1], [1200, 8, 10, 0, 1, 1], [800, 14, 15, 1, 2, 0], [1200, 8, 10, 0, 1, 1], [1200, 8, 10, 0, 1, 1], ]; const labels = [250, 180, 250, 180, 250, 180, 250, 180]; const params = { max_depth: 3, eta: 0.3, objective: 'reg:squarederror', eval_metric: 'rmse', nthread: 4, num_round: 100, min_child_weight: 1, subsample: 0.8, colsample_bytree: 0.8, }; try { await xgboost.train(features, labels, params); const predictions = await xgboost.predict([[1000, 0, 1, 0, 1, 1], [800, 0, 1, 0, 1, 1]]); console.log('Predicted value:', predictions[0]); } catch (error) { console.error('Error:', error); } } test();
이러한 매개변수는 모델의 성능과 동작에 큰 영향을 미칩니다. 예:
이 가이드는 Node.js에서 XGBoost를 사용하기 위한 시작점을 제공합니다. 생산용으로는 다음을 권장합니다.
조나단 패로우
@farrow_jonny
위 내용은 Node.js에서 XGBoost를 사용하여 주택 가격 예측의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!