Значение, значение, реализация
Проблемы классификации были очень распространены и существенны в области науки о данных. Например: диабетическая ретинопатия, анализ настроения или настроений, распознавание цифр, прогнозирование типа рака (злокачественный или доброкачественный) и т. Д. Эти проблемы часто решаются с помощью машинного обучения или глубокого обучения. Также в проектах компьютерного зрения, таких как диабетическая ретинопатия или обнаружение глаукомы, в наши дни часто используется анализ текстур вместо классического машинного обучения с традиционной обработкой изображений или глубоким обучением. Хотя, согласно исследовательской статье, глубокое обучение является последним достижением в диабетической ретинопатии:
« Метод глубокого обучения для обнаружения диабетической ретинопатии [1].
В задачах классификации прогнозирование конкретного класса выполняется среди нескольких классов. Другими словами, он также может быть оформлен таким образом, что конкретный экземпляр (точка данных с точки зрения геометрии пространства признаков) должен храниться в определенной области (обозначающей класс) и должен быть отделен от других регионов (обозначающих другие регионы). классы). Это отделение от других регионов можно визуализировать с помощью границы, известной как Граница принятия решения. Эта визуализация границы принятия решения в пространстве признаков выполняется на диаграмме рассеяния, где каждая точка представляет собой точку данных набора данных, а оси, изображающие особенности. Граница принятия решения разделяет точки данных на регионы, которые на самом деле являются классами, к которым они принадлежат.
Важность / значимость границы принятия решения:
После обучения модели машинного обучения с использованием набора данных часто необходимо визуализировать классификацию точек данных в пространстве функций. Граница принятия решения на точечной диаграмме служит цели, в которой точечная диаграмма содержит точки данных, принадлежащие разным классам (обозначенные цветом или формой), а граница решения может быть проведена с помощью множества различных стратегий:
- Однострочная граница решения. Основная стратегия построения границы принятия решения на точечной диаграмме состоит в том, чтобы найти единственную линию, которая разделяет точки данных на области, обозначающие разные классы. Теперь эта единственная линия находится с использованием параметров, связанных с алгоритмом машинного обучения, которые получены после обучения модели. Координаты линий находятся с использованием полученных параметров и интуиции алгоритма машинного обучения. Развертывание этой стратегии невозможно, если интуиция и рабочий механизм алгоритма машинного обучения неизвестны.
- Граница принятия решения на основе контуров. Другая стратегия включает рисование контуров, которые представляют собой области, каждая из которых включает точки данных с соответствующими или близкими по цвету классами, отображающими цвета, к которым принадлежат точки данных, и контурами, отображающими предсказанные классы. Это наиболее часто используемая стратегия, поскольку она не использует параметры и связанные с ними вычисления алгоритма машинного обучения, полученные после обучения модели. Но, с другой стороны, это не идеально разделяет точки данных с помощью одной линии, которая может быть задана только полученными параметрами после обучения и вычисления их координат.
Образец реализации однострочной границы принятия решений:
Здесь я собираюсь продемонстрировать однострочную границу принятия решений для модели машинного обучения, основанной на логистической регрессии.
Переходя к гипотезе логистической регрессии -
где z определяется как -
Итак, h (z) - сигмовидная функция, диапазон которой составляет от 0 до 1 (от 0 до 1 включительно).
Для построения границы принятия решения h (z) принимается равным пороговому значению, используемому в логистической регрессии, которое обычно равно 0,5. Так что если
тогда,
Теперь, чтобы построить Границу принятия решения, необходимо учесть 2 характеристики и нанести их по осям x и y точечной диаграммы. Так,
куда,
Таким образом, получены 2 значения x’_1 и 2 соответствующих значения x’_2. X’_1 - крайние значения x, а x’_2 - крайние значения y однострочной границы принятия решений.
Приложение к вымышленному набору данных:
Набор данных содержит оценки, полученные 100 студентами за 2 экзамена, и метку (0/1), которая указывает, будет ли студент зачислен в университет (1 или отрицательный) или нет (0 или положительный). Набор данных доступен по адресу
Постановка проблемы: «Учитывая оценки, полученные на двух экзаменах, спрогнозируйте, будет ли студент зачислен в университет или нет, используя логистическую регрессию»
Здесь оценки за 2 экзамена будут учитываться при учете двух характеристик.
Ниже представлена реализованная логистическая регрессия в 3 модулях. Подробная реализация приведена в статье,
import numpy as np from math import * def logistic_regression(X, y, alpha): n = X.shape[1] one_column = np.ones((X.shape[0],1)) X = np.concatenate((one_column, X), axis = 1) theta = np.zeros(n+1) h = hypothesis(theta, X, n) theta, theta_history, cost = Gradient_Descent(theta, alpha , 100000, h, X, y, n) return theta, theta_history, cost def Gradient_Descent(theta, alpha, num_iters, h, X, y, n): theta_history = np.ones((num_iters,n+1)) cost = np.ones(num_iters) for i in range(0,num_iters): theta[0] = theta[0] - (alpha/X.shape[0]) * sum(h - y) for j in range(1,n+1): theta[j] = theta[j] - (alpha/X.shape[0]) * sum((h - y) * X.transpose()[j]) theta_history[i] = theta h = hypothesis(theta, X, n) cost[i] = (-1/X.shape[0]) * sum(y * np.log(h) + (1 - y) * np.log(1 - h)) theta = theta.reshape(1,n+1) return theta, theta_history, cost def hypothesis(theta, X, n): h = np.ones((X.shape[0],1)) theta = theta.reshape(1,n+1) for i in range(0,X.shape[0]): h[i] = 1 / (1 + exp(-float(np.matmul(theta, X[i])))) h = h.reshape(X.shape[0]) return h
Выполнение логистической регрессии для набора данных:
data = np.loadtxt('dataset.txt', delimiter=',') X_train = data[:,[0,1]] y_train = data[:,2] theta, theta_history, cost = logistic_regression(X_train, y_train , 0.001)
Полученный вектор тета (параметра),
Получение прогнозов или предсказанных классов точек данных:
Xp=np.concatenate((np.ones((X_train.shape[0],1)), X_train),axis= 1) h=hypothesis(theta, Xp, Xp.shape[1] - 1)
Построение границы принятия решения в одну линию:
import matplotlib.pyplot as plt c0 = c1 = 0 # Counter of label 0 and label 1 instances if i in range(0, X.shape[0]): if y_train[i] == 0: c0 = c0 + 1 else: c1 = c1 + 1 x0 = np.ones((c0,2)) # matrix label 0 instances x1 = np.ones((c1,2)) # matrix label 1 instances k0 = k1 = 0 for i in range(0,y_train.shape[0]): if y_train[i] == 0: x0[k0] = X_train[i] k0 = k0 + 1 else: x1[k1] = X_train[i] k1 = k1 + 1 X = [x0, x1] colors = ["green", "blue"] # colours for Scatter Plot theta = theta.reshape(3) # getting the x co-ordinates of the decision boundary plot_x = np.array([min(X_train[:,0]) - 2, max(X_train[:,0]) + 2]) # getting corresponding y co-ordinates of the decision boundary plot_y = (-1/theta[2]) * (theta[1] * plot_x + theta[0]) # Plotting the Single Line Decision Boundary for x, c in zip(X, colors): if c == "green": plt.scatter(x[:,0], x[:,1], color = c, label = "Not Admitted") else: plt.scatter(x[:,0], x[:,1], color = c, label = "Admitted") plt.plot(plot_x, plot_y, label = "Decision_Boundary") plt.legend() plt.xlabel("Marks obtained in 1st Exam") plt.ylabel("Marks obtained in 2nd Exam")
Таким образом, можно построить границу принятия решения в одну строку для любой модели машинного обучения на основе логистической регрессии. Для других моделей, основанных на алгоритмах машинного обучения, должны быть известны соответствующие гипотезы и интуиция.
Образец реализации границы принятия решения на основе контура:
Используя ту же вымышленную задачу, набор данных и обученную модель, необходимо построить границу принятия решения на основе контура.
# Plotting decision regions x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1 y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1)) X = np.concatenate((np.ones((xx.shape[0]*xx.shape[1],1)) , np.c_[xx.ravel(), yy.ravel()]), axis = 1) h = hypothesis(theta, X, 2) h = h.reshape(xx.shape) plt.contourf(xx, yy, h) plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, s=30, edgecolor='k') plt.xlabel("Marks obtained in 1st Exam") plt.ylabel("Marks obtained in 2nd Exam")
Этот метод, по-видимому, более удобен, поскольку не требуется никакой интуиции, гипотез или какой-либо математики, лежащей в основе алгоритма машинного обучения. Все, что требуется, это умение продвинутого программирования на Python !!!!
Итак, это общий метод построения границ принятия решений для любой модели машинного обучения.
В большинстве проектов практического и продвинутого уровня задействовано множество функций. Затем, как построить границы принятия решений на двумерных точечных графиках?
В таких случаях есть несколько выходов:
- Для получения двух наиболее важных характеристик можно использовать оценки важности функций, полученные с помощью классификатора случайных лесов или классификатора дополнительных деревьев, а затем на диаграмме разброса можно нанести границу принятия решения.
- Методы уменьшения размерности, такие как анализ главных компонентов (PCA) или линейный дискриминантный анализ (LDA), могут использоваться для сокращения числа N функций до 2 функций (n_components = 2), поскольку информация или интерпретация N функций встроены в 2 функции. Затем границу принятия решения можно нанести на точечную диаграмму с учетом двух характеристик.
Это все о визуализации границ принятия решений.
ССЫЛКИ
[1] Н. Чакрабарти, «Метод глубокого обучения для выявления диабетической ретинопатии», 5-я Международная конференция секции IEEE в Уттар-Прадеш по электротехнике, электронике и компьютерной инженерии (UPCON), 2018 г., Горакхпур, Индия, 2018. С. 1–5. DOI: 10.1109 / UPCON.2018.8596839
Для личных контактов относительно статьи или обсуждений машинного обучения / интеллектуального анализа данных или любого отдела науки о данных, не стесняйтесь обращаться ко мне в LinkedIn