Обзор

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

Например, если мы скармливаем алгоритму, предназначенному для классификации фруктов, мы можем отправлять этому алгоритму изображения яблок и апельсинов. Мы также маркируем изображения как яблоки или апельсины. В конце концов, при наличии достаточного количества данных алгоритм найдет закономерности на изображениях яблок и апельсинов, которые он сможет использовать, чтобы разделить их. Узор, который он может заметить, - это цвет объектов на изображениях. Чтобы не усложнять задачу, можно сделать вывод, что если вы отправите ему изображение красного фрукта, то это должно быть яблоко. Если вы отправляете изображение оранжевого цвета, это должен быть апельсиновый фрукт. Мы знаем, что это не всегда так: если мы добавим больше фруктов разных цветов, это может нарушить алгоритм машинного обучения и привести к его плохой работе. Есть много способов повысить производительность алгоритмов машинного обучения, но мы не будем их сейчас рассматривать.

Чем машинное обучение не является (на данный момент)

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

Что такое машинное обучение

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

Пример

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

Библиотека построения графиков

from matplotlib import pyplot as plt

Создайте образец данных

marketing_dollars = [0, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950]
revenue_dollars = [10000, 11000, 15500, 20002, 20500, 30000, 30005, 40001, 45855, 50005, 55000, 60000, 60500, 70007, 70500, 80800, 85005, 90000, 90500]

plt.plot(marketing_dollars, revenue_dollars)
plt.title('Effect of Marketing on Revenue')
plt.ylabel('Revenue in $')
plt.xlabel('Marketing Budget in $')
plt.show()

Здесь у нас есть некоторые выдуманные данные о гипотетической ситуации, когда мы смотрим на влияние маркетингового бюджета на доход. Как мы видим, зависимость относительно линейна с некоторым шумом. Если бы мы передали эти данные в алгоритм машинного обучения, он дал бы нам линейную линию в качестве математического представления. Для тех, кто помнит уравнение y = mx + b, по сути, это то, что нам даст модель. При y = доход, m = некоторый наклон (это то, что пытается изучить алгоритм машинного обучения), x = наблюдаемый нами маркетинговый бюджет и b = точка пересечения по оси Y. Давайте посмотрим, что нам расскажет простая модель линейной регрессии. Линейная регрессия - это, по сути, это y = mx + b уравнение. Да, я могу чрезмерно упрощать, чтобы донести до меня суть дела. Практики машинного обучения будут использовать линейную регрессию в качестве основы и посмотреть, что она говорит нам о данных, прежде чем переходить к более сложным алгоритмам.

Импорт Scikit Learn для алгоритмов машинного обучения

# Import NumPy to format data in a specific way
import numpy as np
# Import Scikit-Learn to allow us to run Linear Regression
from sklearn.linear_model import LinearRegression
model = LinearRegression()

Что нам даст линейная регрессия, так это уравнение y = mx + b, которое соответствует этим данным. Вот и все, что делает алгоритм машинного обучения. Ниже приведен код для форматирования данных определенным образом, не имеющим значения для целей этого упражнения.

# Scikit learn needs the data in a specific shape so we use NumPy to change the way the data is formatted
marketing_dollars = np.array(marketing_dollars)
revenue_dollars = np.array(revenue_dollars)
marketing_dollars = marketing_dollars.reshape(-1, 1)
revenue_dollars = revenue_dollars.reshape(-1, 1)

Теперь мы можем обучить алгоритм. Мы «подгоняем» алгоритм данными. Представьте, что строка кода model = LinearRegression() в одной из ячеек выше создает пустую оболочку. В этой оболочке присутствует алгоритм линейной регрессии, но нам нужно «подогнать» или заполнить эту оболочку данными для обучения модели.

fitted_model = model.fit(marketing_dollars, revenue_dollars)

Теперь давайте посмотрим на коэффициент и точку пересечения оси Y модели. Коэффициенты - это, по сути, m в уравнении y = mx + b. У вас может быть несколько m, и это особенности машинного обучения. Нам не нужно слишком много, но достаточно, чтобы позволить алгоритму машинного обучения обучаться.

print(f"The coefficient, or the 'm' in y = mx + b is {fitted_model.coef_[0][0]}")
print(f"The y-intercept, or the 'b' in y = mx + b is {fitted_model.intercept_[0]}")

Коэффициент или m в y = mx + b равен 95,00675781948166

Перехват, или `b` в y = mx + b, равен 1966.6388739946487

Давайте создадим функцию, которая, как определил алгоритм машинного обучения, соответствовала бы этим данным, вручную.

# Function the same as y = mx + b
# Where m = 95.00675781948166 and b = 1966.6388739946487
def y_mx_b(x):
    y = (95.00675781948166 * x) + 1966.6388739946487
    
    return y

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

machine_learning_fit = list()
for i in range(len(marketing_dollars)):
    prediction = y_mx_b(marketing_dollars[i][0])
    
    machine_learning_fit.append(prediction)

А что, если бы мы изобразили это уравнение y = mx + b на нашем предыдущем графике?

plt.plot(marketing_dollars, revenue_dollars)
plt.plot(marketing_dollars, machine_learning_fit)
plt.title('Effect of Marketing on Revenue')
plt.ylabel('Revenue in $')
plt.xlabel('Marketing Budget in $')
plt.legend(['Revenue', 'Linear Regression'])
plt.show()

Отличная работа! Обратите внимание, что это просто линейная линия, подходящая к нашим данным? Это то, что делает машинное обучение на высоком уровне. Получение данных и поиск функции, которая соответствовала бы этим данным и обобщала. Сообщая нам с помощью некоторого X, мы можем найти Y. В нашем примере наш X - это маркетинговый бюджет, и он обычно сообщает нам, каким будет наш Y (доход) в качестве прогноза.

Резюме

В заключение, машинное обучение - это просто поиск закономерностей в данных. Если мы дадим данные алгоритму машинного обучения, он сделает все возможное, чтобы обобщить функцию, которая соответствовала бы этим данным. Мы использовали выдуманный пример, и он показал, что мы можем получить достаточный y = mx + b тип уравнения из линейной регрессии. Мы взяли коэффициент и точку пересечения из выходных данных линейной регрессии и создали нашу собственную y = mx + b функцию вручную. Мы увидели, что линия y = mx + b очень хорошо соответствует данным. Помните, что машинное обучение - это не какая-то мистическая концепция, которая захватит человечество (по крайней мере, в ближайшее время). Мы увидели машинное обучение в действии и то, что в целом делает концепция.

Ссылки