Membuat Model ML Dapat Dimengerti oleh Semua Orang – Menuju AI – Teknologi, Sains, dan Teknik Terbaik

Penulis: Yann Golhen

Pembelajaran mesin

Pada artikel ini, kami akan menyajikan Shapash, pustaka python sumber terbuka yang membantu Data Scientist membuat model Pembelajaran Mesin mereka lebih transparan dan dapat dipahami oleh semua orang!

Demo Aplikasi Web Shapash

Shapash by MAIF adalah Python Toolkit yang memfasilitasi pemahaman model Machine Learning bagi data scientist. Ini membuatnya lebih mudah untuk berbagi dan mendiskusikan interpretabilitas model dengan spesialis non-data: analis bisnis, manajer, pengguna akhir …

Secara konkret, Shapash menyediakan visualisasi yang mudah dibaca dan aplikasi web. Shapash menampilkan hasil dengan kata-kata yang sesuai (preprocessing inverse / postprocessing). Shapash berguna dalam konteks operasional karena memungkinkan data scientist untuk menggunakan penjelasan dari eksplorasi hingga produksi: Anda dapat dengan mudah menerapkan penjelasan lokal dalam produksi untuk menyelesaikan setiap perkiraan / rekomendasi Anda dengan ringkasan penjelasan lokal.

Dalam posting ini, kami akan menyajikan fitur-fitur utama Shapash dan cara kerjanya. Kami akan mengilustrasikan implementasi perpustakaan pada kasus penggunaan konkret.

Elemen konteks:

Interpretabilitas dan keterjelasan model adalah topik hangat. Ada banyak artikel, publikasi, dan kontribusi sumber terbuka tentangnya. Semua kontribusi ini tidak menangani masalah dan tantangan yang sama.

Sebagian besar data scientist menggunakan teknik ini karena berbagai alasan: untuk lebih memahami model mereka, untuk memeriksa bahwa mereka konsisten dan tidak bias, serta untuk debugging.

Namun, ada lebih dari itu:

Intelijen penting untuk tujuan pedagogik. Model Intelligible Machine Learning dapat diperdebatkan dengan orang-orang yang bukan spesialis data: analis bisnis, pengguna akhir…

Secara konkret, ada dua langkah dalam proyek Ilmu Data kami yang melibatkan non-spesialis:

Langkah eksplorasi & Pemasangan model:

Pada langkah ini, ilmuwan data dan analis bisnis membahas apa yang dipertaruhkan dan untuk menentukan data penting yang akan mereka integrasikan ke dalam proyek. Ini membutuhkan pemahaman yang baik tentang subjek dan pendorong utama masalah yang kita modelkan.

Untuk melakukan ini, data scientist mempelajari keterjelasan global, pentingnya fitur, dan peran fitur teratas model tersebut. Mereka juga dapat melihat beberapa individu secara lokal, terutama yang outlier. Aplikasi Web menarik pada fase ini karena mereka perlu melihat visualisasi dan grafik. Membahas hasil ini dengan analis bisnis menarik untuk menantang pendekatan dan memvalidasi model.

Menerapkan model dalam lingkungan produksi

Itu dia! Model divalidasi, diterapkan, dan memberikan prediksi kepada pengguna akhir. Penjelasan lokal dapat memberi mereka banyak nilai, hanya jika ada cara untuk memberi mereka ringkasan yang baik, berguna, dan dapat dimengerti. Ini akan bermanfaat bagi mereka karena dua alasan:

Transparansi membawa kepercayaan: Dia akan mempercayai model jika dia memahaminya. Manusia tetap memegang kendali: Tidak ada model yang 100% dapat diandalkan. Saat mereka dapat memahami keluaran algoritme, pengguna dapat membatalkan saran algoritme jika menurut mereka mereka mengandalkan data yang salah.

Shapash telah dikembangkan untuk membantu ilmuwan data memenuhi kebutuhan ini.

Fitur utama Shapash:

Visualisasi yang mudah dibaca, untuk semua orang. Aplikasi web: Untuk memahami cara kerja model, Anda harus melihat beberapa grafik, kepentingan fitur, dan kontribusi global fitur ke model. Aplikasi web adalah alat yang berguna untuk ini. Beberapa metode untuk menunjukkan hasil dengan susunan kata yang tepat (preprocessing inverse, post-processing). Anda dapat dengan mudah menambahkan kamus data, objek pengkode kategori, atau sklearn ColumnTransformer untuk keluaran yang lebih eksplisit. Berfungsi untuk dengan mudah menyimpan file Pickle dan mengekspor hasil dalam tabel. Ringkasan penjelasan: ringkasan dapat dikonfigurasi agar sesuai dengan kebutuhan Anda dan untuk fokus pada hal yang penting untuk penjelasan lokal. Kemampuan untuk dengan mudah menerapkan dalam lingkungan produksi dan untuk menyelesaikan setiap prediksi / rekomendasi dengan ringkasan penjelasan lokal untuk setiap aplikasi operasional (Batch atau API) Shapash terbuka untuk beberapa cara untuk melanjutkan: Dapat digunakan untuk mengakses hasil atau bekerja dengan mudah pada, kata-kata yang lebih baik. Sangat sedikit argumen yang diperlukan untuk menampilkan hasil. Tetapi semakin banyak Anda bekerja dengan membersihkan dan mendokumentasikan set data, semakin jelas hasilnya bagi pengguna akhir.

Shapash bekerja untuk masalah Regresi, Klasifikasi Biner, atau Multikelas.
Ini kompatibel dengan banyak model: Catboost, Xgboost, LightGBM, Sklearn Ensemble, Model Linear, SVM.

Shapash didasarkan pada kontribusi lokal yang dihitung dengan Shap (nilai shapley), Lime, atau teknik apa pun yang memungkinkan menghitung kontribusi lokal yang dapat diringkas.

Instalasi

Anda dapat menginstal paket melalui pip:

$ pip instal shapash

Demonstrasi Shapash

Mari gunakan Shapash pada dataset konkret. Di sisa artikel ini, kami akan menunjukkan kepada Anda bagaimana Shapash dapat menjelajahi model.

Kami akan menggunakan kumpulan data “Harga Rumah” yang terkenal dari Kaggle agar sesuai dengan regressor… dan memprediksi harga rumah! Mari kita mulai dengan memuat Set Data:

impor panda sebagai pd
dari shapash.data.data_loader impor data_loading
house_df, house_dict = data_loading (‘house_prices’)
y_df = house_df[‘SalePrice’].untuk membingkai()
X_df = house_df[house_df.columns.difference([‘SalePrice’])]house_df.head (3)
png

Encode fitur kategorikal:

dari category_encoders impor OrdinalEncoder

fitur_kategorikal = [col for col in X_df.columns if X_df[col].dtype == ‘object’]
encoder = OrdinalEncoder (cols = kategorikal_features) .fit (X_df)
X_df = encoder.transform (X_df)

Latih, uji split, dan pemasangan model.

dari sklearn.model_selection import train_test_split
dari sklearn.ensemble, impor RandomForestRegressor

Xtrain, Xtest, ytrain, ytest = train_test_split (X_df, y_df, train_size = 0,75)
reg = RandomForestRegressor (n_estimators = 200, min_samples_leaf = 2). fit (Xtrain, ytrain)

Dan prediksi data pengujian…

y_pred = pd.DataFrame (reg.predict (Xtest), kolom[‘pred’], indeks = Xtest.index)

Mari temukan dan gunakan Shapash SmartExplainer.

Langkah 1 – Impor

dari shapash.explainer.smart_explainer impor SmartExplainer

Langkah 2 – Inisialisasi Objek SmartExplainer

xpl = SmartExplainer (features_dict = house_dict) # Parameter opsional features_dict: dict yang menentukan arti dari setiap nama kolom dari x pd.DataFrame.

Langkah 3 – Kompilasi

xpl.compile (
x = Xtest,
model = regressor,
preprocessing = encoder, # Opsional: gunakan metode inverse_transform
y_pred = y_pred # Opsional
)

Metode kompilasi mengizinkan untuk menggunakan parameter opsional lain: postprocess. Ini memberikan kemungkinan untuk menerapkan fungsi baru untuk menentukan agar memiliki kata-kata yang lebih baik (regex, dikt pemetaan,…).

Sekarang, kita dapat menampilkan hasil dan memahami cara kerja model regresi!

Langkah 4 – Meluncurkan Aplikasi Web

app = xpl.run_app ()

Tautan aplikasi web muncul di keluaran Jupyter (akses demo di sini).

Ada empat bagian dalam Aplikasi Web ini:

Masing-masing berinteraksi untuk membantu menjelajahi model dengan mudah.

Fitur Pentingnya: Anda dapat mengklik setiap fitur untuk memperbarui plot kontribusi di bawah ini.

Plot kontribusi: Bagaimana fitur memengaruhi prediksi? Tampilkan biola atau plot sebar dari setiap kontribusi lokal fitur.

Plot Lokal:

Penjelasan lokal: fitur mana yang paling berkontribusi pada nilai prediksi. Anda dapat menggunakan beberapa tombol / slider / daftar untuk mengkonfigurasi ringkasan penjelasan lokal ini. Kami akan menjelaskan di bawah ini dengan metode filter parameter berbeda yang dapat Anda gunakan untuk membuat ringkasan. Aplikasi web ini adalah alat yang berguna untuk berdiskusi dengan analis bisnis tentang cara terbaik untuk meringkas penjelasan untuk memenuhi kebutuhan operasional.

Tabel Pilihan: Ini memungkinkan pengguna Aplikasi Web untuk memilih:

Subset untuk memfokuskan eksplorasi pada subset ini Satu baris untuk menampilkan penjelasan lokal terkait

Bagaimana cara menggunakan tabel Data untuk memilih subset? Di bagian atas tabel, tepat di bawah nama kolom yang ingin Anda gunakan untuk memfilter, tentukan:

= Value,> Value, Ada beberapa opsi yang tersedia di aplikasi web ini (tombol kanan atas). Yang paling penting mungkin adalah ukuran sampel (default: 1000). Untuk menghindari latensi, aplikasi web mengandalkan sampel untuk menampilkan hasilnya. Gunakan opsi ini untuk mengubah ukuran sampel ini.

Untuk mematikan aplikasi:

app.kill ()

Langkah 5 – Plot

Semua plot tersedia di notebook jupyter, paragraf di bawah ini menjelaskan poin-poin penting dari setiap plot.

Pentingnya Fitur

Parameter ini memungkinkan perbandingan kepentingan fitur dari sebuah subset. Berguna untuk mendeteksi perilaku tertentu dalam subset.

subset = [ 168, 54, 995, 799, 310, 322, 1374,
1106, 232, 645, 1170, 1229, 703, 66,
886, 160, 191, 1183, 1037, 991, 482,
725, 410, 59, 28, 719, 337, 36 ]
xpl.plot.features_importance (pilihan = subset)

Plot kontribusi

Plot kontribusi digunakan untuk menjawab pertanyaan seperti:

Bagaimana suatu fitur memengaruhi prediksi saya? Apakah itu berkontribusi secara positif? Apakah fitur tersebut semakin berkontribusi? menurun? Apakah ada efek ambang batas? Untuk variabel kategori, bagaimana kontribusi masing-masing modalitas? … Plot ini melengkapi pentingnya fitur untuk interpretabilitas, kejelasan global model untuk lebih memahami pengaruh fitur pada model.

Ada beberapa parameter pada plot ini. Perhatikan bahwa plot yang ditampilkan menyesuaikan tergantung pada apakah Anda tertarik pada variabel kategori atau berkelanjutan (Biola atau Sebar) dan tergantung pada jenis kasus penggunaan yang Anda tangani (regresi, klasifikasi)

xpl.plot.contribution_plot (“OverallQual”)
Plot kontribusi diterapkan ke fitur berkelanjutan

Plot kontribusi diterapkan ke fitur berkelanjutan.

Kasus Klasifikasi: Titanic Classifier – Plot kontribusi diterapkan pada fitur kategoris.

Plot lokal

Anda dapat menggunakan plot lokal untuk menjelaskan model secara lokal.

Metode filter () dan local_plot () memungkinkan Anda menguji dan memilih cara terbaik untuk meringkas sinyal yang diambil model. Anda dapat menggunakannya selama fase eksplorasi. Anda kemudian dapat menerapkan ringkasan ini di lingkungan produksi agar pengguna akhir dapat memahami dalam beberapa detik apa kriteria yang paling berpengaruh untuk setiap rekomendasi.

Kami akan menerbitkan artikel kedua untuk menjelaskan cara menyebarkan penjelasan lokal dalam produksi.

Gabungkan metode filter dan local_plot

Gunakan metode filter untuk menentukan cara meringkas penjelasan lokal. Anda memiliki empat parameter untuk mengonfigurasi ringkasan Anda:

max_contrib: jumlah maksimum kriteria untuk menampilkan ambang: nilai minimum kontribusi (dalam nilai absolut) yang diperlukan untuk menampilkan kriteria positif: hanya menampilkan kontribusi positif? Negatif? (default None) features_to_hide: daftar fitur yang tidak ingin Anda tampilkan

Setelah mendefinisikan parameter ini, kita bisa menampilkan hasilnya dengan metode local_plot (), atau mengekspornya dengan to_pandas ().

xpl.filter (max_contrib = 8, ambang = 100)
xpl.plot.local_plot (indeks = 560)

Ekspor ke pandas DataFrame:

xpl.filter (max_contrib = 3, ambang = 1000)
summary_df = xpl.to_pandas ()
summary_df.head ()

Bandingkan plot

Dengan metode bandingkan_plot (), objek SmartExplainer memungkinkan untuk memahami mengapa dua atau lebih individu tidak memiliki nilai prediksi yang sama. Kriteria paling menentukan muncul di bagian atas plot.

xpl.plot.compare_plot (row_num =[0, 1, 2, 3, 4], max_features = 8)

Kami berharap Shapash berguna dalam membangun kepercayaan pada AI. Terima kasih sebelumnya untuk semua yang akan memberi kami umpan balik, ide … Shapash adalah sumber terbuka! Jangan ragu untuk berkontribusi dengan mengomentari postingan ini atau langsung di diskusi GitHub.

Shapash: Membuat Model ML Dapat Dimengerti oleh Semua Orang awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Towards AI