Значение, значение, реализация

Проблемы классификации были очень распространены и существенны в области науки о данных. Например: диабетическая ретинопатия, анализ настроения или настроений, распознавание цифр, прогнозирование типа рака (злокачественный или доброкачественный) и т. Д. Эти проблемы часто решаются с помощью машинного обучения или глубокого обучения. Также в проектах компьютерного зрения, таких как диабетическая ретинопатия или обнаружение глаукомы, в наши дни часто используется анализ текстур вместо классического машинного обучения с традиционной обработкой изображений или глубоким обучением. Хотя, согласно исследовательской статье, глубокое обучение является последним достижением в диабетической ретинопатии:

« Метод глубокого обучения для обнаружения диабетической ретинопатии [1].

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

Важность / значимость границы принятия решения:

После обучения модели машинного обучения с использованием набора данных часто необходимо визуализировать классификацию точек данных в пространстве функций. Граница принятия решения на точечной диаграмме служит цели, в которой точечная диаграмма содержит точки данных, принадлежащие разным классам (обозначенные цветом или формой), а граница решения может быть проведена с помощью множества различных стратегий:

  1. Однострочная граница решения. Основная стратегия построения границы принятия решения на точечной диаграмме состоит в том, чтобы найти единственную линию, которая разделяет точки данных на области, обозначающие разные классы. Теперь эта единственная линия находится с использованием параметров, связанных с алгоритмом машинного обучения, которые получены после обучения модели. Координаты линий находятся с использованием полученных параметров и интуиции алгоритма машинного обучения. Развертывание этой стратегии невозможно, если интуиция и рабочий механизм алгоритма машинного обучения неизвестны.
  2. Граница принятия решения на основе контуров. Другая стратегия включает рисование контуров, которые представляют собой области, каждая из которых включает точки данных с соответствующими или близкими по цвету классами, отображающими цвета, к которым принадлежат точки данных, и контурами, отображающими предсказанные классы. Это наиболее часто используемая стратегия, поскольку она не использует параметры и связанные с ними вычисления алгоритма машинного обучения, полученные после обучения модели. Но, с другой стороны, это не идеально разделяет точки данных с помощью одной линии, которая может быть задана только полученными параметрами после обучения и вычисления их координат.

Образец реализации однострочной границы принятия решений:

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

Переходя к гипотезе логистической регрессии -

где 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 !!!!

Итак, это общий метод построения границ принятия решений для любой модели машинного обучения.

В большинстве проектов практического и продвинутого уровня задействовано множество функций. Затем, как построить границы принятия решений на двумерных точечных графиках?

В таких случаях есть несколько выходов:

  1. Для получения двух наиболее важных характеристик можно использовать оценки важности функций, полученные с помощью классификатора случайных лесов или классификатора дополнительных деревьев, а затем на диаграмме разброса можно нанести границу принятия решения.
  2. Методы уменьшения размерности, такие как анализ главных компонентов (PCA) или линейный дискриминантный анализ (LDA), могут использоваться для сокращения числа N функций до 2 функций (n_components = 2), поскольку информация или интерпретация N функций встроены в 2 функции. Затем границу принятия решения можно нанести на точечную диаграмму с учетом двух характеристик.

Это все о визуализации границ принятия решений.

ССЫЛКИ

[1] Н. Чакрабарти, «Метод глубокого обучения для выявления диабетической ретинопатии», 5-я Международная конференция секции IEEE в Уттар-Прадеш по электротехнике, электронике и компьютерной инженерии (UPCON), 2018 г., Горакхпур, Индия, 2018. С. 1–5. DOI: 10.1109 / UPCON.2018.8596839

Для личных контактов относительно статьи или обсуждений машинного обучения / интеллектуального анализа данных или любого отдела науки о данных, не стесняйтесь обращаться ко мне в LinkedIn