4 Python библиотеки для интерпретируемого машинного обучения

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Хотите добиться лучшего объяснения моделей машинного обучения? Нужна хорошая визуализация? Используйте эти Python библиотеки.

4 Python библиотеки для интерпретируемого машинного обучения

Из-за шума вокруг предвзятости искусственного интеллекта организации всё острее нуждаются в объяснении как прогнозов создаваемых моделей, так и принципов работы.

К счастью, растёт количество библиотек, которые предлагает язык программирования Python для решения этой проблемы. Ниже краткое руководство по четырём популярным библиотекам для интерпретации и объяснения моделей машинного обучения. Устанавливаются с использованием pip, поставляются с подробной документацией и делают упор на визуальную интерпретацию.

Yellowbrick

Эта Python библиотека и расширение пакета scikit-learn. Предоставляет некоторые полезные и симпатичные визуализации для моделей машинного обучения. Объекты визуализатора, основной интерфейс – оценки scikit-learn, поэтому если привыкли работать с scikit-learn, рабочий процесс покажется знакомым.

Предоставляемые визуализации охватывают выбор модели, определение значимости признаков и анализ производительности модели. Пройдёмся по нескольким кратким примерам.

Библиотека устанавливается?? с помощью pip.

1

pip install yellowbrick

Чтобы проиллюстрировать пару функциональных особенностей, будем использовать набор данных scikit-learn с именем «распознавание вина». Этот датасет с 13 признаками и 3 целевыми классами загружается непосредственно из библиотеки scikit-learn. В приведённом ниже коде импортируем набор данных и преобразуем в объект DataFrame. Классификатор умеет использовать информацию без предварительной обработки.

1

2

3

4

5

import pandas aspd

from sklearn import datasets

wine_data=datasets.load_wine()

df_wine=pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine['target']=pd.Series(wine_data.target)

Применяйте scikit-learn для дальнейшего разделения датасета на проверку и тренировку.

1

2

3

4

from sklearn.model_selection import train_test_split

X=df_wine.drop(['target'],axis=1)

y=df_wine['target']

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)

На следующем шаге используйте визуализатор Yellowbricks для просмотра корреляций между признаками в наборе данных.

1

2

3

4

5

from yellowbrick.features import Rank2D

import matplotlib.pyplot asplt

visualizer=Rank2D(algorithm="pearson",size=(1080,720))

visualizer.fit_transform(X_train)

visualizer.poof()

4 Python библиотеки для интерпретируемого машинного обучения

Теперь подгоним RandomForestClassifier и оценим производительность с помощью другого визуализатора.

1

2

3

4

5

6

7

from yellowbrick.classifier import ClassificationReport

from sklearn.ensemble import RandomForestClassifier

model=RandomForestClassifier()

visualizer=ClassificationReport(model,size=(1080,720))

visualizer.fit(X_train,y_train)

visualizer.score(X_test,y_test)

visualizer.poof()

ELI5

ELI5 – ещё одна библиотека визуализации, которая пригодится для отладки моделей машинного обучения и объяснения сделанных прогнозов. Работает с самыми распространёнными инструментами машинного обучения на Python, включая scikit-learn, XGBoost и Keras.

Примените ELI5 для проверки значимости признаков модели, которую рассматривали выше.

1

2

import eli5

eli5.show_weights(model,feature_names=X.columns.tolist())

4 Python библиотеки для интерпретируемого машинного обучения

По умолчанию метод show_weights использует gain для расчёта веса, а когда понадобятся другие типы, добавьте аргумент importance_type.

И также применяйте show_prediction для проверки оснований отдельных прогнозов.

4 Python библиотеки для интерпретируемого машинного обучения

LIME

LIME расшифровывается как локальные интерпретируемые, независимые от модели объяснения. Интерпретирует предсказания, сделанные алгоритмами машинного обучения. Lime поддерживает объяснение единичных прогнозов из диапазона классификаторов, а также взаимодействует с scikit-learn «из коробки».

Воспользуемся Lime для интерпретации прогнозов модели, которую обучали раньше.

Устанавливаем библиотеку через pip.

1

pip install lime

Сначала создадим интерпретатор. Для этого берём тренировочный набор данных в виде массива из названий признаков, используемых в модели, и имён классов в целевой переменной.

1

2

3

4

import lime.lime_tabular

explainer=lime.lime_tabular.LimeTabularExplainer(X_train.values,

feature_names=X_train.columns.values.tolist(),

class_names=y_train.unique())

Затем создаём лямбда-функцию, которая берёт модель для прогнозирования выборки данных. Строчку взяли из подробного руководства по Lime.

1

predict_fn=lambdax:model.predict_proba(x).astype(float)

Используйте интерпретатор, чтобы объяснить прогноз на отобранном образце. Результат увидите ниже. Lime создаёт визуализацию, которая показывает, как признаки внесли вклад в определённый прогноз.

1

2

exp=explainer.explain_instance(X_test.values[0],predict_fn,num_features=6)

exp.show_in_notebook(show_all=False)

MLxtend

В этой библиотеке найдёте массу вспомогательных функций для машинного обучения. Она охватывает классификаторы стекинга и голосования, оценку модели, выделение признаков, а также проектирование и построение графиков. Дополнительно к документации в помощь с Python библиотекой рекомендуем почитать углублённый материал.

Обратимся к MLxtend для сравнения границ решения классификатора голосования и составного классификатора.

Снова понадобится pip для установки.

1

pip install mlxtend

Используемые импорты смотрите ниже.

1

2

3

4

5

6

7

8

from mlxtend.plotting import plot_decision_regions

from mlxtend.classifier import EnsembleVoteClassifier

import matplotlib.gridspec asgridspec

import itertools

from sklearn import model_selection

from sklearn.linear_model import LogisticRegression

from sklearn.naive_bayes import GaussianNB

from sklearn.ensemble import RandomForestClassifier

Следующая визуализация работает только с двумя признаками одновременно, поэтому сначала создадим массив со свойствами proline и color_intensity. Выбрали эти признаки из-за наибольшего веса по сравнению с теми, что проверяли выше с помощью ELI5.

1

2

X_train_ml=X_train[['proline','color_intensity']].values

y_train_ml=y_train.values

Затем создаём классификаторы, подгоняем к данным обучения и получаем визуализацию границ решений с помощью MLxtend. Результат под кодом.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

clf1=LogisticRegression(random_state=1)

clf2=RandomForestClassifier(random_state=1)

clf3=GaussianNB()

eclf=EnsembleVoteClassifier(clfs=[clf1,clf2,clf3],weights=[1,1,1])

value=1.5

width=0.75

gs=gridspec.GridSpec(2,2)

fig=plt.figure(figsize=(10,8))

labels=['Logistic Regression','Random Forest','Naive Bayes','Ensemble']

forclf,lab,grd inzip([clf1,clf2,clf3,eclf],

labels,

itertools.product([0,1],repeat=2)):

clf.fit(X_train_ml,y_train_ml)

ax=plt.subplot(gs[grd[0],grd[1]])

fig=plot_decision_regions(X=X_train_ml,y=y_train_ml,clf=clf)

plt.title(lab)

4 Python библиотеки для интерпретируемого машинного обучения

На этом не исчерпывается список библиотек для интерпретации, объяснения и визуализации моделей машинного обучения, которые использует Python разработчик. Попробуйте также другие полезные инструменты из длинного списка.

Какие Python библиотеки для машинного обучения используете вы?


Источник: proglib.io

Комментарии: