Наука о данных, Математика

Базовые математические навыки для науки о данных

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

Могу ли я стать специалистом по анализу данных, не имея математического образования или совсем не разбираясь в этом?

Какие базовые математические навыки необходимы для практики обработки данных?

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

  • Ggplot2
  • Matplotlib
  • Сиборн
  • Scikit-learn
  • Каретка
  • TensorFlow
  • PyTorch
  • Керас

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

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

(I) Статистика и вероятность

Статистика и вероятность используются для визуализации функций, предварительной обработки данных, преобразования функций, вменения данных, уменьшения размерности, разработки функций, оценки модели и т. Д. Вот темы, с которыми вам необходимо ознакомиться:

а) Среднее

б) Медиана

в) Режим

г) Стандартное отклонение / дисперсия

д) Коэффициент корреляции и ковариационная матрица

е) Распределения вероятностей (биномиальное, пуассоновское, нормальное)

г) p-значение

з) MSE (среднеквадратичная ошибка)

i) Оценка R2

j) Теорема Байе (точность, отзыв, положительное прогнозное значение, отрицательное прогнозируемое значение, матрица неточности, кривая ROC)

л) A / B-тестирование

l) Моделирование Монте-Карло

(II) многомерное исчисление

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

а) Функции нескольких переменных

б) Производные и градиенты

c) Шаговая функция, сигмовидная функция, логит-функция, функция ReLU (выпрямленная линейная единица).

г) Функция затрат

д) Построение функций

е) Минимальное и максимальное значения функции

(III) Линейная алгебра

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

а) Векторы

б) Матрицы

в) транспонировать матрицу

г) Обратная матрица

д) Определитель матрицы

е) Точечный продукт

ж) Собственные значения

з) Собственные векторы

(IV) Методы оптимизации

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

а) Функция затрат / целевая функция

б) Функция правдоподобия

в) Функция ошибки

г) Алгоритм градиентного спуска и его варианты (например, алгоритм стохастического градиентного спуска)

Узнайте больше об алгоритме градиентного спуска здесь: Машинное обучение: как работает алгоритм градиентного спуска.

Пример использования: создание простого линейного регрессора с использованием алгоритма градиентного спуска

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

Мы описываем, как можно построить простую оценку Python для выполнения линейной регрессии с использованием метода градиентного спуска. Предположим, у нас есть одномерный набор данных, содержащий один объект (X) и результат (y), и предположим, что в наборе данных N наблюдений:

Линейная модель, соответствующая данным, представлена ​​как:

где w0 и w1 - веса, которые алгоритм получает во время обучения.

Алгоритм градиентного спуска

Если предположить, что ошибка в модели независима и нормально распределена, то функция правдоподобия задается как:

Чтобы максимизировать функцию правдоподобия, мы минимизируем сумму квадратов ошибок (SSE) относительно w0 и w1:

Целевая функция или наша функция SSE часто минимизируется с помощью алгоритма градиентного спуска (GD). В методе GD веса обновляются в соответствии со следующей процедурой:

т.е. в направлении, противоположном градиенту. Здесь eta - небольшая положительная константа, называемая скоростью обучения. Это уравнение может быть записано в виде компонентов как:

Если вы хотите узнать больше об алгоритме GD и почему он работает, прочтите следующую статью: https://medium.com/@benjaminobi/machine-learning-how-the-gradient-descent-algorithm-works- 61682d8570b6

Реализация с использованием оценщика Python

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
class GradientDescent(object):
    """Gradient descent optimizer.
    Parameters
    ------------
    eta : float
        Learning rate (between 0.0 and 1.0)
    n_iter : int
        Passes over the training dataset.
        
    Attributes
    -----------
    w_ : 1d-array
        Weights after fitting.
    errors_ : list
        Error in every epoch.
    """    def __init__(self, eta=0.01, n_iter=10):
        self.eta = eta
        self.n_iter = n_iter
        
    def fit(self, X, y):
        """Fit the data.
        
        Parameters
        ----------
        X : {array-like}, shape = [n_points]
        Independent variable or predictor.
        y : array-like, shape = [n_points]
        Outcome of prediction.
        Returns
        -------
        self : object
        """
        self.w_ = np.zeros(2)
        self.errors_ = []
        
        for i in range(self.n_iter):
            errors = 0
            for j in range(X.shape[0]):
                self.w_[1:] += self.eta*X[j]*(y[j] - self.w_[0] -                     self.w_[1]*X[j])
                self.w_[0] += self.eta*(y[j] - self.w_[0] - self.w_[1]*X[j])
                errors += 0.5*(y[j] - self.w_[0] - self.w_[1]*X[j])**2
            self.errors_.append(errors)
        return self    def predict(self, X):
        """Return predicted y values"""
        return self.w_[0] + self.w_[1]*X

Применение оценщика Python

а) Создать набор данных

np.random.seed(1)
X=np.linspace(0,1,10)
y = 2*X + 1
y = y + np.random.normal(0,0.05,X.shape[0])

б) Подгонка и прогнозирование

gda = GradientDescent(eta=0.1, n_iter=100)
gda.fit(X,y)
y_hat=gda.predict(X)

c) Вывод графика

plt.figure()
plt.scatter(X,y, marker='x',c='r',alpha=0.5,label='data')
plt.plot(X,y_hat, marker='s',c='b',alpha=0.5,label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()

г) Рассчитайте значение R-квадрат

R_sq = 1-((y_hat - y)**2).sum()/((y-np.mean(y))**2).sum()
R_sq
0.991281901588877

Таким образом, мы показали, как основные математические навыки применяются для построения простой оценщика линейной регрессии с использованием алгоритма GD. Математика - это основа науки о данных и машинного обучения. Хороший математический опыт позволит вам создавать эффективные и надежные модели. Это также поможет вам избежать ошибок, связанных с использованием алгоритмов машинного обучения в качестве инструментов черного ящика.