Возьмите поток обработки в качестве основы, чтобы научиться облегчать обогащение деталей в соответствии с инфраструктурой, не теряя контура (см. пример потока обработки машинного обучения на рисунке ниже >) , я обогатю его сегодняОценка модели (Оценка модели)Часть этого.
Эта «история» начинается с>Пример прогнозирования воровать электроэнергию или нет запустится пользователь, спросите и ответьте, почему и как оценивать, конкретные понятия перечислены ниже.
- Цель анализаОн основан на ежедневном потреблении электроэнергии пользователем в качестве основных данных для прогнозирования того, ворует ли пользователь электроэнергию или нет.
- Во-первых, посредством анализа и обобщения данных получаются три показателя.
- Тогда выбирайНейронные сетииДрево решенийдля обучения прогностической модели.
- После этого результаты прогнозирования обучающих данныхМатрица путаницыоперация
- Наконец, сделайте прогнозы на тестовых данных и сделайтеROC(Receiver Operating Characteristic)Оцените, что лучше.
Три индикатора и выборки данных следующие:
Figure-2-Data-model.xls пример данных
Индикатор снижения тренда мощности: Если тенденция к снижению электроэнергии продолжает снижаться, существует вероятность кражи электроэнергии.
Индикатор потери линии: Доля потерь в линии электроснабжения, учитывая, что темпы роста за последние несколько дней превышают 1%, существует вероятность хищения электроэнергии.
Индикатор тревоги: Аварийный сигнал терминала электросчетчика, например, обрыв фазы напряжения, количество отключений напряжения.
Кстати, еще раз напоминаю себе:свет на бумаге, одноранговые коды. В следующем коде используются пакеты Python pandas (анализ и обработка данных), keras (нейронная сеть), matplotlib (визуализация) и sklearn (машинное обучение) для>Код немного изменен. Идея заключается в следующем:
1 Импорт данных
2 Построить модель дерева решений с обучающими данными
3 Используйте матрицу путаницы для оценки результатов прогнозирования модели дерева решений на обучающих данных.
4 Построение модели нейронной сети с обучающими данными
5 Оцените результаты прогнозирования модели нейронной сети с матрицей путаницы на обучающих данных.
6 Используйте изученную модель дерева решений и модель нейронной сети, чтобы запустить тестовые данные для прогнозирования
7 Используйте оценку кривой ROC, чтобы выбрать лучшую модель
код включаетcm_plot.pyиmodel.pyКак следует, среда кода в основном включает (Ubuntu 14.04.2 LTS, python2.7, keras 2.0.4, tensorflow 1.0.0), при тестировании кода сообщается об ошибке при введении keras, а затем обновляется tensorflow и указан как бэкэнд keras и тут же выскакивает Got the pit:
# cm_plot.py 文件,包括了混淆矩阵可视化函数,
# 放置在python的site-packages 目录,供调用
# 例如:~/anaconda2/lib/python2.7/site-packages
#-*- coding: utf-8 -*-
def cm_plot(y, yp):
from sklearn.metrics import confusion_matrix #导入混淆矩阵函数
cm = confusion_matrix(y, yp) #混淆矩阵
import matplotlib.pyplot as plt #导入作图库
plt.matshow(cm, cmap=plt.cm.Greens) #画混淆矩阵图,配色风格使用cm.Greens,更多风格请参考官网。
plt.colorbar() #颜色标签
for x in range(len(cm)): #数据标签
for y in range(len(cm)):
plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
plt.ylabel('True label') #坐标轴标签
plt.xlabel('Predicted label') #坐标轴标签
return plt
#-*- coding: utf-8 -*-
# model.py构建并评估CART决策树和LM神经网络算法
import pandas as pd #导入数据分析库
from random import shuffle #导入随机函数shuffle,用来打散数据
datafile = 'model.xls' #数据(如图-2所示)
data = pd.read_excel(datafile) #读取数据,数据的前三列是特征,第四列是标签,'1'表示窃漏电,'0'表示没有窃漏电
data = data.as_matrix() #将表格转换为矩阵
shuffle(data) #随机打乱数据
# 把数据的80%用来训练模型,20%做模型测试和评估,此处用到训练集-验证集二划分
p = 0.8 #设置训练数据比例,
train = data[:int(len(data)*p),:] #前80%为训练集
test = data[int(len(data)*p):,:] #后20%为测试集
#构建CART决策树模型
from sklearn.tree import DecisionTreeClassifier #导入决策树模型
treefile = 'tree.pkl' #模型输出名字
tree = DecisionTreeClassifier() #建立决策树模型
tree.fit(train[:,:3], train[:,3]) #训练得出决策树模型
#保存模型
from sklearn.externals import joblib
joblib.dump(tree, treefile)
#用混淆矩阵可视化函数画图
from cm_plot import * #导入混淆矩阵可视化函数
cm_plot(train[:,:3], tree.predict(train[:,:3])).show() #显示混淆矩阵可视化结果如下
Рис. 3. Матрица путаницы прогнозов классификации дерева решений
#构建LM神经网络模型
import os
os.environ['KERAS_BACKEND']='tensorflow'#先设置keras 采用tensorflow 作为Backend
from keras.models import Sequential #导入神经网络初始化函数
from keras.layers.core import Dense, Activation #导入神经网络层函数、激活函数
netfile = 'net.model' #构建的神经网络模型存储路径
net = Sequential() #建立神经网络
net.add(Dense(input_dim = 3, output_dim = 10)) #添加输入层(3节点)到隐藏层(10节点)的连接
net.add(Activation('relu')) #隐藏层使用relu激活函数
net.add(Dense(input_dim = 10, output_dim = 1)) #添加隐藏层(10节点)到输出层(1节点)的连接
net.add(Activation('sigmoid')) #输出层使用sigmoid激活函数
net.compile(loss = 'binary_crossentropy', optimizer = 'adam', class_mode = "binary") #编译模型,使用adam方法求解
net.fit(train[:,:3], train[:,3], epochs=1000, batch_size=1) #训练模型,循环1000次
#保存模型
net.save_weights(netfile)
predict_result = net.predict_classes(train[:,:3]).reshape(len(train)) #预测结果变形这里要提醒的是,keras用predict给出预测概率
#用混淆矩阵可视化函数画图
cm_plot(train[:,3], predict_result).show() #显示混淆矩阵可视化结果
Рис. 4. Матрица путаницы прогнозирования классификации нейронной сети.
# 用ROC曲线选取较优模型,曲线越贴近左上,模型越优.
from sklearn.metrics import roc_curve #导入ROC曲线函数
import matplotlib.pyplot as plt #导入可视化包
# 上面的图是决策树模型下用测试数据跑出的ROC曲线
plt.subplot(211)
fpr1, tpr1, thresholds1 = roc_curve(test[:,3], tree.predict_proba(test[:,:3])[:,1], pos_label=1)
plt.plot(fpr1, tpr1, linewidth=2, label = 'ROC of CART', color = 'green') #作出ROC曲线
plt.xlabel('False Positive Rate') #坐标轴标签
plt.ylabel('True Positive Rate') #坐标轴标签
plt.ylim(0,1.05) #边界范围
plt.xlim(0,1.05) #边界范围
plt.legend(loc=4) #图例
# 下面的图是神经网络模型下用测试数据跑出的ROC曲线
predict_result = net.predict(test[:,:3]).reshape(len(test))
plt.subplot(212)
fpr2, tpr2, thresholds2 = roc_curve(test[:,3], predict_result, pos_label=1)
plt.plot(fpr2, tpr2, linewidth=2, label = 'ROC of LM',color='red') #作出ROC曲线
plt.xlabel('False Positive Rate') #坐标轴标签
plt.ylabel('True Positive Rate') #坐标轴标签
plt.ylim(0,1.05) #边界范围
plt.xlim(0,1.05) #边界范围
plt.legend(loc=4) #图例
plt.show() #显示作图结果
Рисунок 5 – Сравнение кривой ROC
Сравнивать нейросеть LM с рисунка лучше, будь то мул или лошадь, или вытянутая за йо, конечно, зависит от производительности на реальных данных :-) Давайте также обобщим соответствующие знания через примеры.
Зачем оценивать модели?
Одним словом, я хочу найти наиболее эффективную модель. Применение модели является циклическим и итеративным процессом. Только путем постоянной корректировки и настройки она может адаптироваться к онлайн-данным и бизнес-целям. Это сравнимо с покупкой обуви. модели, а можно слева направо выбирать. , ладно, я выбрал подходящую, но эта лапка, она все время меняется, что мне делать, продолжай ее подгонять.
Выбор модели изначально предполагает, что распределение данных является определенным, но распределение данных будет меняться с течением времени Это явление называетсяРаспределительный дрейф. Метрики проверки могут отслеживать производительность модели в зарождающемся наборе данных. Когда производительность начинает падать, это означает, что модель больше не может соответствовать текущим данным, поэтому модель необходимо переобучить.
Способность модели соответствовать новым данным называетсяОбобщение. Как и в нашем примере выше, для обучения модели используются исторические данные, но данные постоянно генерируются и обновляются. Как научиться машинному обучению, см. следующий вопрос.
Как тестировать и оценивать модели?
Процесс машинного обучения делится наСтадия прототипирования)иСтадия приложения (развернуто), В том числеПрототипированиеизОфлайн-оценкаиСтадия приложения (развернуто)изонлайн-оценка.
Стадия прототипированияэто использоватьисторические данныеОбучить одну или несколько моделей машинного обучения, подходящих для решения целевой задачи, и проверить модель с помощьюОфлайн-оценка, а затем выберите лучшую модель, оценив показатели. Наш пример выше — прототипирование.
Развернутая стадияКогда модель достигает заданного значения индекса, модель подключается к сети, запускается в производство и используется.Недавно сгенерированные онлайн-данныевыполнить модельОнлайн-оценка, Онлайн-тестирование отличается от офлайн-тестирования разными методами тестирования и показателями оценки. Наиболее распространенным являетсяA/B testing, который является методом статистической проверки гипотез.
Офлайн-оценкаионлайн-оценкаИспользуются различные показатели оценки: при автономной оценке модели используется метод частичной эмпирической ошибки, при онлайн-оценке используются бизнес-показатели, такие как эффективность использования оборудования (OEE).
Рейтинг кликов пользователей и т. д.
Путем тестирования и оценки можно выбрать одну модель или использовать сочетание нескольких моделей.
Как настроить процесс оценки?
Поиск подходящей обуви процесс сложный.К счастью,многие алгоритмы упакованы в пакеты и выпускаются на разных языках разработки.Наш пример выше хорошая иллюстрация.Есть также различное ПО (SAS,SPSS,Rapidminer,Knime и т.д.) , на самом деле приведенный выше код может быть реализован с помощью инструментов части речи.Процесс построения модели машинного обучения представляет собой процесс изучения и настройки параметров. Для обучения модели необходимоПараметры моделиВ процессе обучения и обновления помимо параметров модели естьГиперпараметры. Например, коэффициенты признаков в логистической регрессии — это параметры модели, сколько признаков необходимо использовать для представления, а параметр количества признаков — это гиперпараметр модели. Можно использоватьпоиск по сетке,случайный поиска такжеэвристический поиск (умный поиск)ждатьHyperparameter tuning, Найдите оптимальное значение из пространства гиперпараметров.
поиск по сетке
Поиск по сетке заключается в разделении диапазона значений гиперпараметров на сетки, оценке значения, соответствующего каждой сетке, и выборе значения гиперпараметра, соответствующего сетке с лучшим результатом оценки. Например, для гиперпараметра количество дочерних узлов в дереве решений значения можно разделить на такие сетки: 10, 20, 30, …, 100, …;
случайный поиск
Это вариант поиска по решетке. Вместо поиска во всем пространстве решетки случайный поиск вычисляет только те решетки, которые выбраны случайным образом, а затем выбирает лучшую из них. Таким образом, случайный поиск дешевле, чем поиск по решетке.
Метод проверки модели на наборе данных, полученном из исторических данных на этапе автономной оценки, включает:Учебный набор-валидация устанавливает двухраздельную проверку (удерживающая проверка),Перекрестная проверка, другим способом является метод повторной выборки, такой какbootstrappingиJackknife, такие методы могут в полной мере использовать существующую информацию о данных и в определенной степени уменьшить переоснащение. (Обратитесь к методу выборки данных энциклопедии Baidu.)
Перекрестная проверка
Рисунок-6-Перекрестная проверкаЧто такое оценочные матрицы?
Индекс оценки — это «линейка», алгоритм, используемый для оценки качества модели. Разные модели машинного обучения имеют разные «линейки», и одна и та же модель машинного обучения также может оцениваться с помощью разных линеек. Акценты разные. Для классификации, регрессии, ранжирования, кластеризации и рекомендации можно оценить многие индикаторы, такие как точность-отзыв, которую можно использовать в классификации, рекомендации, сортировке и т. д. Ниже приведены определения различных «линеек», которые используются только тогда, когда они используются, и только для справки.
Основные понятия частоты ошибок, точности и ошибки:
частота ошибок= ошибочная классификация выборки/m выборок
точность= 1 - частота ошибок
ошибка: разница между фактическим прогнозируемым результатом учащегося и реальным результатом выборки.
ошибка обучения: эмпирическая ошибка. Ошибка обучаемого на тренировочном наборе.
ошибка обобщения: Ошибка обучаемого на новых образцах.
.
Метрики оценки классификатора
Для задач бинарной классификации выборки можно разделить на:
Истинный пример (Истинно положительный, TP): Истинная категория — это положительный пример, а предсказанная категория — положительный пример.
Ложноположительный результат (FP): истинная категория — это отрицательный пример, а прогнозируемая категория — положительный пример.
Ложноотрицательный (ЛН): истинный класс — это положительный пример, а предсказанный класс — отрицательный пример.
Истинный отрицательный результат (TN): истинная категория — это отрицательный пример, а предсказанная категория — отрицательный пример.
тогда можно построитьМатрица путаницыКак показано в таблице ниже, он используется в нашем примере.
ROC AUC(Area Under ROC Curve):Кривая ROC и AUC часто используются для оценки плюсов и минусов бинарного классификатора. Если ROC-кривая одного ученика накладывается на другую, то показатели последнего могут быть лучше, чем у первого; при ее пересечении оценивается площадь под ROC-кривой, то есть AUC.
ОКР:Вертикальная ось: истинно положительный показатель TPR, горизонтальная ось: ложноположительный показатель FPR
Сначала посмотрите на четыре точки и диагональные линии на рисунке:
Первая точка (0,1) равна FPR=0, TPR=1, что означает FN (ложноотрицательный результат)=0 и FP (ложноположительный результат)=0. Это означает, что классификатор идеален, потому что он правильно классифицирует все выборки.
Вторая точка, (1,0), т.е. FPR=1, TPR=0, этот классификатор является худшим, так как он успешно избегает всех правильных ответов.
Третья точка, (0,0), то есть FPR=TPR=0, то есть FP (ложноположительный)=TP (истинно положительный)=0, в это время классификатор предсказывает все образцы как отрицательные образцы (отрицательные ).
В четвертой точке (1,1) классификатор предсказывает все выборки как положительные выборки.
Точки на диагонали указывают на то, что классификатор угадал половину выборок как положительные, а другую половину как отрицательные. Следовательно, чем ближе кривая ROC к верхнему левому углу, тем выше производительность классификатора.
Например, есть 20 выборочных данных, как показано ниже, Класс — это реальная классификация, а Оценка — это вероятность того, что классификатор предсказывает, что эта выборка будет положительным примером.
Рисунок 10 – Данные в режиме ROC- Установите каждую оценку в качестве порога в порядке убывания оценки,
- Затем метки этих 20 образцов будут меняться, когда его оценка больше или равна текущему порогу, это положительный образец, в противном случае это отрицательный образец.
- Таким образом, для каждого порога можно рассчитать набор FPR и TPR, и всего в этом примере можно получить 20 наборов.
- Когда пороговые значения установлены на 1 и 0, можно получить две точки (0,0) и (1,1) на кривой ROC.
ППК:
AUC учитывает качество ранжирования выборочных прогнозов, поэтому оно тесно связано с ошибкой ранжирования. данный
m+ положительных примеров, m- отрицательных примеров, пусть D+ и D- представляют набор положительных и отрицательных примеров соответственно, затем отсортируйте
«Убыток» определяется как:
Lrank соответствует области над ROC-кривой: если положительный пример отмечен как (x, y) на ROC-кривой
, то x — это в точности доля всех отрицательных примеров, отсортированных до точки, то есть ложноположительных примеров, поэтому:
Точность, также известная как точность (Precision, P):
Скорость отзыва, также известная как скорость отзыва (Recall, R):
Значение F1:
Общая форма F1
β>0 измеряет относительную важность полноты для точности; β=1 вырождается до F1; полнота β>1 оказывает большее влияние; точность βмакро-среднийимикросреднееОбычно используется в текстовых классификаторах, если есть только одна матрица путаницы с двумя классами, то вышеуказанные индикаторы можно использовать для оценки, но когда мы хотим всесторонне изучить индикаторы оценки на n матрицах путаницы с двумя классами, мы будем использовать макрос средняя сумма и микро-средняя.
Макроусреднение:Сначала нужно вычислить значение индекса каждого класса, а затем вычислить среднее арифметическое всех классов. На макросредние показатели больше влияют мелкие категории, чем на микрометрики.
Микроусреднение:Он состоит в том, чтобы статистически установить глобальную матрицу путаницы для каждого экземпляра в наборе данных независимо от категории, а затем рассчитать соответствующие показатели.
Средняя точность по классам:
Чтобы иметь дело с ситуацией, когда количество образцов в каждой категории различно, рассчитайте коэффициент точности в каждой категории, а затем рассчитайте их среднее значение.
Функция логарифмических потерь (Log-loss):
В выводе классификации, если на выходе уже не 0-1, а реальное значение, то есть вероятность принадлежности к каждой категории, то для оценки результата классификации можно использовать Log-loss. Эта выходная вероятность представляет достоверность соответствующей категории, к которой принадлежит запись. Например, если книга-образец относится к категории 0, а классификатор выдает, что вероятность принадлежности к категории 1 равна 0,51, то в этом случае классификатор считается неверным. Эта вероятность близка к граничной вероятности 0,5 для классификации классификатора. Логарифмическая потеря — это мера точности мягкой классификации, которая использует вероятность для выражения уверенности в классе, к которому она принадлежит. Конкретное математическое выражение Log-loss:
Среди них yi относится к истинной категории 0 или 1, к которой принадлежит i-я выборка, а pi относится к вероятности того, что i-я выборка принадлежит к категории 1, так что только одна из двух частей в приведенной выше формуле будет выбрана для каждый образец, потому что есть один Должен быть 0, когда прогноз точно соответствует фактическому классу, тогда обе части равны 0, где предполагается 0log0=0. На самом деле с математической точки зрения выражение Log-loss очень красивое. Если мы посмотрим внимательно, то можем обнаружить, что перекрестная энтропия (перекрестная энтропия, то есть перекрестная энтропия между фактическим значением и прогнозируемым значением) в своей теории информации связана с относительной энтропией (относительной энтропией, также известной как расстояние KL). или KL-дивергенция, Кульбак-Лейблер дивергенция.) тоже очень похоже. Информационная энтропия есть мера неопределенности вещей, чем больше неопределенность, тем больше энтропия. Перекрестная энтропия содержит энтропию истинного распределения плюс неопределенность предположения о распределении, отличном от истинного распределения. Следовательно, логарифмическая потеря является мерой дополнительного шума, возникающего из-за разницы в фактическом значении прогнозируемого диапазона. Следовательно, минимизация перекрестной энтропии максимизирует точность классификатора.
Метрики оценки регрессионной модели
Регрессия — это предсказание непрерывных реальных значений, то есть выходное значение является непрерывным реальным значением, а классификация — дискретным значением. Показатели оценки для регрессионных моделей в основном включают следующее:
RMSE (среднеквадратичная ошибка, ошибка квадратного корня), который также называетсяСКО (среднеквадратичное отклонение), RMSE более чувствителен к выбросам.Если регрессор иррационален к значению регрессии некоторой точки, то его ошибка будет больше, что окажет большее влияние на значение RMSE, то есть среднее значение не равно надежный из. Он определяется следующим образом:
Quantiles of ErrorsЧтобы исправить недостатки RMSE и повысить надежность индекса оценки, вместо этого используется квантиль ошибки, например, медиана вместо среднего. Предполагая 100 чисел, независимо от того, как изменится наибольшее число, медиана не изменится, поэтому она устойчива к выбросам.
Приходи сюда первым и поделись счастьем!
Ссылаться на:
[1] у-у-у. Краткое описание.com/afraid/42 часть 1 ах 79…«Улитка, которая не остановится - [Что такое ROC ACU]»
[2] blog.CSDN.net/Как использовать Roja…«Я и мечта, за которой я гонюсь ~~~-[Оценка моделей машинного обучения — основные концепции и подводные камни]»
[3] Блог Woohoo.cn на.com/kuotian/afraid/6…«koutian-[Краткое изложение машинного обучения, глава 2, оценка и выбор модели]»
[4] blog.CSDN.net/Pipi извините/Ах…«Блог Pipi-[Метрики оценки и методы моделей машинного обучения]»
[5] SCI kit-learn.org/0.17/module… "Python Scikit-Learn-[3.3. Model evaluation: quantifying the quality of predictions]"
[6] item.JD.com/11821937.Контракт…[>
Чжан Лянцзюнь, Ван Лу, Тан Лиюнь, Су Цзяньлинь и др.]
[7] item.JD.com/11867803.Контракт…[> Чжоу Чжихуа]