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 中国語 Web サイトの他の関連記事を参照してください。