日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Featurewiz-Polars:一种强大且可扩展的特征选择解决方案,适用于XGBoost

發布時間:2025/3/8 编程问答 11 如意码农
生活随笔 收集整理的這篇文章主要介紹了 Featurewiz-Polars:一种强大且可扩展的特征选择解决方案,适用于XGBoost 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:“Featurewiz-Polars”是一個用于特征工程的 Python 庫,結合了特征選擇和特征生成的功能。它基于“Polars”,這是一個高性能的 DataFrame 庫,用于處理大型數據集,具有類似 Pandas 的 API 但更高效,尤其在處理大數據時。Featurewiz-Polars 專注于通過自動化方式,快速從數據中提取出最有意義的特征,幫助機器學習模型提高性能。

特征選擇是構建高效機器學習模型的關鍵步驟。

我通過艱難的經驗學到了這一點。

有一個項目至今讓我難以忘懷:我曾在一家金融科技初創公司做信用風險模型的工作。我們擁有了一切——交易歷史、社交媒體信號、替代信用評分——并將所有這些輸入到模型中,期待它能給我們提供最佳的預測。

剛開始看起來很有希望,但一旦部署,審批變得不可預測,更糟糕的是,高風險借款人開始悄悄溜過。經過數周的調試,問題變得異常明顯:模型在無關和冗余特征中迷失了自己,過度擬合噪音而非實際的風險模式。

這次經歷讓我踏上了特征選擇的漫長探索之路——反復試驗、無數實驗,以及對在簡潔性和性能之間找到最佳平衡的執著。

在這個過程中,我從手工制作的領域啟發到自動化選擇方法都進行了嘗試?,F在,經歷了所有這些痛苦的教訓后,我想分享一個真正有效的方法。

介紹Featurewiz

如果你是Featurewiz的新手,這里是它的亮點:

? 只需三行代碼即可自動化特征選擇。

? 廣泛的特征工程——它不僅選擇特征;它還能自動生成數百個特征并挑選出最佳的。

? 最受認可的mRMR(最小冗余、最大相關性)實現之一,這是特征選擇的黃金標準算法。

Featurewiz多年來一直是人們的首選解決方案,擁有超過600個GitHub星標和140多個Google Scholar引用。

現在,隨著Featurewiz-Polars的發布,這個庫已經發展得更快、更可擴展、更可靠,特別適用于大規模數據集。

如何將Featurewiz用作Scikit-Learn轉換器

將Featurewiz用作兼容Scikit-Learn的轉換器非常簡單:

  1. 安裝Featurewiz

import featurewiz as fw

  1. 創建Transformer

wiz = fw.FeatureWiz(verbose=1)

  1. 擬合并轉換數據集

在這個例子中,我們將使用來自Featurewiz GitHub倉庫的汽車銷售數據集。加載到Pandas DataFrame后,并將其拆分為訓練集和測試集,我們可以將其輸入到Featurewiz中,以識別最重要的特征:

X_train, y_train = wiz.fit_transform(train[preds], train[target])

X_test = wiz.transform(test[preds])

目標是什么?使用km_driven、fuel、seller_type、transmission、owner、mileage、engine、max_power和seats等變量預測汽車銷售價格。

特征選擇真的能提高性能嗎?

為了驗證這一點,我們訓練了兩個模型:

? 一個使用所有特征

? 一個僅使用Featurewiz選擇的最重要特征

圖1:注意到使用Featurewiz選擇的變量(右側)的模型,比使用所有特征(左側)的模型表現更好。

但是,為什么使用更少特征的模型表現更好呢?有兩個關鍵原因:

  1. 更簡單的模型能更好地泛化——減少特征復雜性有助于防止過擬合。

  2. 更快的訓練和推理——更少的變量意味著更快的訓練和預測,這在實際應用中至關重要。

你可以在GitHub上找到這篇博客的完整筆記本和數據集。

Featurewiz的工作原理:遞歸XGBoost特征選擇

Featurewiz的特征選擇依賴于遞歸XGBoost排名,逐步精煉特征集。具體過程如下:

  1. 從一切開始——將整個數據集輸入到選擇過程。

  2. XGBoost特征排名——訓練XGBoost模型以評估特征的重要性。

  3. 選擇關鍵特征——根據重要性評分提取最顯著的特征。

  4. 修剪并重復——僅保留排名最高的特征,并在精細化的子集上重新運行過程。

  5. 迭代直到最佳——繼續循環,直到滿足停止標準(如穩定性或收益遞減)。

  6. 完成特征集——合并所有循環中選擇的特征,去除重復項,形成最終優化的特征集。

這種方法確保只有最相關、最不冗余的特征被選中,從而提高模型性能和效率。

下一步:使用Split-Driven遞歸XGBoost的Featurewiz-Polars

原始的Featurewiz方法非常強大,但也有一些權衡——它可能容易過擬合,并且缺乏內建的泛化機制評估。正是在這種情況下,最新版本的Featurewiz-Polars應運而生。

有什么新變化?Split-Driven遞歸XGBoost

這種改進的方法引入了基于驗證的特征選擇,利用Polars實現了速度和效率。具體過程如下:

  1. 為驗證分割數據——將數據集分為訓練集和驗證集。

  2. XGBoost特征排名(帶驗證)——在訓練集上評估特征的重要性,并在驗證集上評估性能。

  3. 選擇關鍵特征(帶驗證)——根據特征的重要性和它們的泛化能力選擇特征。

  4. 使用新分割重復——在不同的訓練/驗證集分割下重復這個過程。

  5. 最終、穩定的特征集——合并所有運行中的選擇特征,去除重復項,從而得出更強大、可靠的選擇結果。

與現有庫的基準比較

我們將Featurewiz-Polars與mRMR特征選擇庫進行了測試,使用其Polars實現進行公平比較。

測試1:克利夫蘭心臟病數據集

? 原始數據集:14個特征。

? Featurewiz-Polars僅選擇了3個特征,達到了91%的平衡準確率。

? mRMR選擇了10個特征,但只達到了89%的平衡準確率。

Featurewiz-Polars在使用更少特征的情況下表現更好——提高了泛化能力并減少了復雜性。

以下是實際比較的截圖

測試2:加州住房數據集(回歸任務)

? 原始數據集:13個特征。

? Featurewiz-Polars選擇了7個特征,RMSE為0.50。

? 競爭的mRMR庫選擇了8個特征,但RMSE稍微差一點。

同樣,Featurewiz-Polars在使用更少特征的情況下提供了更優的性能。

安裝指南

Featurewiz-Polars尚未發布到PyPI,但你可以從源碼安裝:

cd <new_folder_destination>

git clone https://github.com/AutoViML/featurewiz_polars.git

pip install -r requirements.txt

cd examples

python fs_test.py

或者直接從GitHub安裝:

pip install git+https://github.com/AutoViML/featurewiz_polars.git

或者下載并解壓:

https://github.com/AutoViML/featurewiz_polars/archive/master.zip

最后的想法

Featurewiz-Polars運行得更快,選擇的特征更少,并且比競爭的mRMR實現提供了更好的模型性能。

如果你正在進行特征選擇,試試看,自己比較一下結果吧!你可以從GitHub獲取fs_test.py模塊并運行你自己的基準測試。

總結

以上是生活随笔為你收集整理的Featurewiz-Polars:一种强大且可扩展的特征选择解决方案,适用于XGBoost的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。