Регрессия и классификация | Машинное обучение с учителем

Опубликовано: 14 Июля, 2021

Что такое регрессия и классификация в машинном обучении?

Специалисты по обработке данных используют множество различных алгоритмов машинного обучения, чтобы обнаруживать закономерности в больших данных, которые приводят к практическим выводам. На высоком уровне эти различные алгоритмы можно разделить на две группы в зависимости от того, как они «узнают» о данных для составления прогнозов: обучение с учителем и обучение без учителя.

Машинное обучение с учителем: в большинстве практических задач машинного обучения используется обучение с учителем. Контролируемое обучение - это когда у вас есть входные переменные (x) и выходная переменная (Y), и вы используете алгоритм для изучения функции сопоставления от входа к выходу Y = f (X) . Цель состоит в том, чтобы аппроксимировать функцию сопоставления настолько хорошо, чтобы, когда у вас есть новые входные данные (x), вы могли предсказать выходные переменные (Y) для этих данных.

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

Регресс

Проблема регрессии возникает, когда выходная переменная представляет собой реальное или непрерывное значение, такое как «зарплата» или «вес». Можно использовать много разных моделей, простейшей из них является линейная регрессия. Он пытается сопоставить данные с лучшей гиперплоскостью, проходящей через точки.

Типы регрессионных моделей:

Например:
Что из следующего является задачей регрессии?

  • Прогнозирование возраста человека
  • Прогнозирование национальности человека
  • Прогнозирование роста стоимости акций компании завтра
  • Предсказать, связан ли документ с обнаружением НЛО?

Решение: прогнозирование возраста человека (поскольку это реальная ценность, прогнозирование национальности категорично, будет ли расти цена акций - дискретный ответ - да / нет, прогнозирование того, связан ли документ с НЛО - снова дискретное - ответ да / нет ).

Возьмем пример линейной регрессии. У нас есть набор данных о жилье, и мы хотим спрогнозировать цену дома. Ниже приведен его код на Python.




# Python code to illustrate
# regression using data set
import matplotlib
matplotlib.use( 'GTKAgg' )
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
import pandas as pd
# Load CSV and columns
df = pd.read_csv( "Housing.csv" )
Y = df[ 'price' ]
X = df[ 'lotsize' ]
X = X.values.reshape( len (X), 1 )
Y = Y.values.reshape( len (Y), 1 )
# Split the data into training/testing sets
X_train = X[: - 250 ]
X_test = X[ - 250 :]
# Split the targets into training/testing sets
Y_train = Y[: - 250 ]
Y_test = Y[ - 250 :]
# Plot outputs
plt.scatter(X_test, Y_test, color = 'black' )
plt.title( 'Test Data' )
plt.xlabel( 'Size' )
plt.ylabel( 'Price' )
plt.xticks(())
plt.yticks(())
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(X_train, Y_train)
# Plot outputs
plt.plot(X_test, regr.predict(X_test), color = 'red' ,linewidth = 3 )
plt.show()

Результатом приведенного выше кода будет:

Здесь, на этом графике, мы наносим тестовые данные. Красная линия указывает на наиболее подходящую линию для прогнозирования цены. Чтобы сделать индивидуальный прогноз с использованием модели линейной регрессии:

 print (str (round (regr.predict (5000))))

Классификация

Проблема классификации возникает, когда выходной переменной является категория, например «красный» или «синий» или «болезнь» и «отсутствие болезни». Модель классификации пытается сделать некоторые выводы из наблюдаемых значений. Учитывая один или несколько входных данных, модель классификации попытается предсказать ценность одного или нескольких результатов.
Например, при фильтрации электронных писем «спам» или «не спам», при просмотре данных транзакции, «мошеннические» или «авторизованные». Короче говоря, классификация либо предсказывает категориальные метки классов, либо классифицирует данные (строит модель) на основе обучающего набора и значений (меток классов) при классификации атрибутов и использует их при классификации новых данных. Существует ряд классификационных моделей. Модели классификации включают логистическую регрессию, дерево решений, случайный лес, дерево с градиентным усилением, многослойный персептрон, один против остальных и наивный байесовский метод.

Например :
Что из перечисленного является проблемой (-ами) классификации?

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

Решение: Предсказать пол человека Предсказать, будут ли муссоны нормальными в следующем году. Два других - регресс.
Как мы обсуждали классификацию с некоторыми примерами. Теперь есть пример классификации, в которой мы выполняем классификацию набора данных радужной оболочки глаза с помощью RandomForestClassifier в python. Вы можете скачать набор данных здесь
Описание набора данных

Название: База данных растений ириса
Информация об атрибутах:
      1. длина чашелистика в см.
      2. Ширина чашелистика в см.
      3. длина лепестка в см.
      4. ширина лепестка в см
      5. класс: 
       - Ирис Сетоса
       - Ирис разноцветный
       - Ирис Вирджиния
 Отсутствующие значения атрибутов: нет
Распределение по классам: 33,3% по каждому из 3 классов




# Python code to illustrate
# classification using data set
#Importing the required library
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
#Importing the dataset
dataset = pd.read_csv(
'databases/iris/iris.data' ,sep = ',' , header = None )
data = dataset.iloc[:, :]
#checking for null values
print ( "Sum of NULL values in each column. " )
print (data.isnull(). sum ())
#seperating the predicting column from the whole dataset
X = data.iloc[:, : - 1 ].values
y = dataset.iloc[:, 4 ].values
#Encoding the predicting variable
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
#Splitting the data into test and train dataset
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.3 , random_state = 0 )
#Using the random forest classifier for the prediction
classifier = RandomForestClassifier()
classifier = classifier.fit(X_train,y_train)
predicted = classifier.predict(X_test)
#printing the results
print ( 'Confusion Matrix :' )
print (confusion_matrix(y_test, predicted))
print ( 'Accuracy Score :' ,accuracy_score(y_test, predicted))
print ( 'Report : ' )
print (classification_report(y_test, predicted))

Выход:


Сумма значений NULL в каждом столбце. 
        0 0
        1 0
        2 0
        3 0
        4 0

Матрица неточностей:
                 [[16 0 0]
                  [0 17 1]
                  [0 0 11]]

Оценка точности: 97,7

Отчет : 
           точный отзыв поддержка f1-score
     0 1,00 1,00 1,00 16
     1 1,00 0,94 0,97 18
     2 0,92 1,00 0,96 11
сред / всего 0,98 0,98 0,98 45

Рекомендации:

  • https://machinelearningmastery.com/logistic-regression-for-machine-learning/
  • https://machinelearningmastery.com/linear-regression-for-machine-learning/