Большим данным нужны базовые алгоритмы
предисловие
Математика похожа на осьминога, у нее есть щупальца, которые могут дотянуться почти до любого предмета. Хотя большинство людей систематически учатся, когда идут в школу, они не проводят глубоких исследований и приложений, а только используют это для расширения логики своего мышления. Но если вы хотите заниматься исследованиями или работой, связанной с математикой, вам придется усердно заниматься математикой. Если вы получили степень по математике или какую-то степень по навыкам, вы, вероятно, знаете, необходимо ли все, что вы изучали.
Вам может быть интересно: сколько математики требуется для обработки больших данных? В этой статье мы кратко разберем основные алгоритмы, которые необходимо освоить для работы с большими данными.
Алгоритмы машинного обучения, существуют сотни алгоритмов. В рамки этой статьи не входит подробное описание каждого типа алгоритма, в этой статье будут обсуждаться математические расчеты для следующих часто используемых алгоритмов, которые вам необходимо знать:
- Наивный Байес
- Линейная регрессия
- Логистическая регрессия
- Кластеризация K-средних (алгоритм кластеризации k-средних)
- Деревья решений
Наивные байесовские классификаторы
Наивный байесовский классификатор — это алгоритм, основанный на байесовской теории в наборе алгоритмов классификации.
Байесовская теория
Байесовская теория относится к расчету вероятности возникновения одного события на основе вероятности возникновения другого события. Математическое представление байесовской теории можно записать как:
【Уведомление】:A
иB
события,P(B)
не 0
Приведенная выше формула выглядит немного сложной, мы можем ее разбить. По сути, пока мы считаем событие B истинным, мы можем рассчитать вероятность события A, событие B также называется свидетельством.
-
P(A|B)
условная вероятность. - существуетB
Вероятность того, что событие А произойдет, если оно истинно. -
P(B|A)
также является условной вероятностью. - данныйA
событиеB
Вероятность того, что это произойдет, верна. -
P(A)
это событиеA
априорная (априорная вероятность, например, вероятность того, что свидетельство произойдет раньше, чем свидетельство), свидетельство является значением атрибута неизвестного события (в данном случае событиеB
). Проще говоряP(A)
иP(B)
наблюдаются независимо друг от другаA
иB
Вероятность.
Далее мы будем использовать примеры, чтобы углубить наше понимание.
кейс
Люди часто бессознательно используют теорему Байеса в жизни, как в следующем примере.
Подсчитайте, почему большинство людей считают, что жители Северо-Востока много пьют?
Условия известны:
-
P(A)
= Вероятность встретить человека, который много пьет. -
P(B)
= Вероятность встречи с северо-востоком. -
P(B|A)
= Вероятность встречи с человеком, который много пьет, с северо-востока
Рассчитайте вероятность того, что жители Северо-Востока имеют большое количество алкоголя:P(A|B) = P(A)*P(B|A)/P(B)
= Вероятность встречи с человеком, который много пьет * Вероятность того, что человек, который много пьет, является жителем Северо-Востока/Вероятность встречи с жителем Северо-Востока.
Из приведенной выше формулы мы также можем узнать, как уменьшить предубеждение против жителей Северо-Востока:
- Уменьшите вероятность встречи с людьми, которые много пьют, а вероятность встречи с людьми, которые много пьют, с Северо-Востока (трудно встретить людей, которые много пьют, и там, где людей трудно контролировать).
- Увеличьте вероятность встречи с жителями Северо-Востока. (Для этого мы можем отправиться в места с большим количеством людей на северо-востоке)
То, о чем мы говорили выше, — это применение в жизни, так что же такое приложения в обработке больших данных и машинном обучении, пожалуйста, продолжайте видеть следующий пример:
Классификация спама
Предположим, у нас есть 100 000 писем, каждое из которых было помечено как спам. По этим данным мы можем рассчитать:
-
P(A)
= вероятность спама, спам/вся почта. -
P(B)
= Вероятность того, что слово M появится в электронном письме, появится словоM
почта/вся почта. -
P(B|A)
= слово появляется в спамеM
Вероятность того, что спам содержит словоM
количество писем/весь спам.
Вы можете получить:
Вероятность того, что сообщение со словом M является спамомP(A|B) = P(A)*P(B|A)/P(B)
= Вероятность слова M в письме X вероятность слова M в спаме/вероятность того, что это спам.
Процесс изучения спама — это вычислениеP(A|B)
процесс. Как правило, будет несколько слов или комбинаций нескольких слов, пока слова M1, M2 и т. д. не будут найдены с вероятностью, превышающей ожидаемую вероятность (например, 0,7, 0,88, 0,93 и т. д.). Затем вы можете использовать расчет слов, чтобы определить, является ли новое письмо спамом.
Линейная регрессия
Линейная регрессия — это возможность использовать прямую линию для более точного описания взаимосвязи между данными. Таким образом, когда появляются новые данные, можно предсказать простое значение.
Модель линейной регрессии
В машинном обучении математические функции называются моделями. В случае линейной регрессии модель может быть выражена как:
вa1,a2,...,an
представляет собой значение параметра набора данных,x1,x2,...,xn
представляет столбец функций, который мы решили использовать в модели,y
Представляет целевой столбец. Цель линейной регрессии — найти наилучшие значения параметров, которые лучше всего описывают взаимосвязь между столбцом признаков и целевым столбцом. Другими словами: найдите линию, которая лучше всего соответствует данным, чтобы можно было экстраполировать линии тренда для прогнозирования будущих результатов. Чтобы найти наилучшие параметры для модели линейной регрессии, мы хотим минимизировать остаточную сумму квадратов модели.
Основные шаги для построения регрессионной модели
- Определите независимые и зависимые переменные в соответствии с целью прогнозирования
- Нарисуйте точечную диаграмму, чтобы определить тип регрессионной модели.
- Оценка параметров модели и построение регрессионных моделей
- Протестируйте регрессионную модель
- Прогнозирование с использованием регрессионных моделей
Следующий случай касается простой модели линейной регрессии.
Простая линейная регрессия — уравнение линейной регрессии с одной переменной.
y=a+bx+e
- у: зависимая переменная
- х: независимая переменная
- a: постоянный член (пересечение линии регрессии на оси Y)
- b: коэффициент регрессии (наклон линии регрессии)
- e: случайная ошибка (влияние случайных факторов на зависимую переменную)
Корпус — высота Вес
Как показано в данных ниже, мы случайным образом получаем рост и вес некоторых мальчиков.
Нумерация | высота (см) | Вес (кг) |
---|---|---|
1 | 165 | 60 |
2 | 170 | 64 |
3 | 172 | 66 |
4 | 177 | 68 |
5 | 180 | 70 |
6 | 157 | 55 |
... | ... | ... |
Найдите уравнение регрессии для прогнозирования веса мальчика на основе его роста и прогнозируйте вес мальчика с ростом 173 см. Хэш-точки следующие:
Решение: 1. Выберите рост в качестве независимой переменной X и вес в качестве зависимой переменной Y и постройте точечный график:
- Из графика рассеяния известно, что рост и вес имеют хорошую линейную корреляцию, поэтому для описания взаимосвязи между ними можно использовать уравнение линейной регрессии.
- Уравнение регрессии: y = 0,603x - 38,623
- Внесите, чтобы узнать вес 173см
Исходный код Python выглядит следующим образом:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
if __name__ == "__main__":
data = pd.read_csv('./linear.csv') # TV、Radio、Newspaper、Sales
print(data)
x = data[['height', 'weight']]
# 画出散点图,求x和y的相关系数
plt.scatter(data.height, data.weight)
data.corr()
print(data.corr())
# 估计模型参数,建立回归模型
# 首先导入简单线性回归的求解类LinearRegression
# 然后使用该类进行建模,得到lrModel的模型变量
lrModel = LinearRegression()
# 把自变量和因变量选择出来
x = data[['height']]
y = data[['weight']]
plt.xlabel('X')
# 设置Y轴标签
plt.ylabel('Y')
# 调用模型的fit方法,对模型进行训练
# 这个训练过程就是参数求解的过程
# 并对模型进行拟合
lrModel.fit(x, y)
# 对回归模型进行检验
lrModel.score(x, y)
print(lrModel.score(x, y))
# 利用回归模型进行预测
lrModel.predict([[160], [170]])
print(lrModel.predict([[160], [170]]))
# 查看截距
alpha = lrModel.intercept_[0]
# 查看参数
beta = lrModel.coef_[0][0]
test = alpha + beta * np.array([167, 170])
print(alpha, beta, test)
y_test = beta * x + alpha
# plt.plot(x, y, 'g-', linewidth=6, label='真实数据')
plt.plot(x, y_test, 'r-', linewidth=2, label='预测数据')
plt.show()
Суммировать
Особенности моделирования
- Скорость моделирования высокая, она не требует очень сложных расчетов, и все равно работает очень быстро в случае большого объема данных.
- Понимание и интерпретация каждой переменной могут быть даны с точки зрения коэффициентов.
- Чувствителен к выбросам.
Шаги моделирования - процесс моделирования sklearn
- Построить модель lrModel = sklearn.linear_model.LinearRegression()
- Обучите модель lrModel.fit(x,y)
- Оценка модели lrModel.score(x,y)
- Предсказание модели lrModel.predict(x)
Логистическая регрессия
Хотя алгоритм логистической регрессии является алгоритмом линейной регрессии, он отличается от других линейных регрессий тем, что существует только два результата прогнозирования логистической регрессии, а именно истина (1) и ложь (0). Следовательно, логистическая регрессия, несмотря на свое название, является линейной моделью для классификации, а не для регрессии. Поэтому алгоритмы логистической регрессии часто подходят для классификации данных.
Затем, если вы хотите, чтобы данные сопоставляли результаты подгонки данных с 1 и 0, вам нужно построить функцию так, чтобы результатом функции были только 0 и 1. Фактически, подгоночная функция алгоритма логистической регрессии называетсяsigmond函数
, выходное значение этой функции равно только 0, 1, и это гладкая функция. Мы также называем эту функцию логистической функцией. Выражение для этой функции выглядит следующим образом:
- Y - значение решения
- х - собственное значение
- е — натуральный логарифм.
так почемуsigmoid函数
Всегда возвращать значение от 0 до 1? Помните, что возведение любого числа из алгебры в отрицательную степень равносильно возведению обратного числа в соответствующую положительную степень.
Мы можем использовать Python для рисования изображения функции
Как видно из рисунка, диапазон значений Y равен (0,1), тогда объект с соответствующим атрибутом x, у которого значение решающей функции больше или равно 0,5, может быть отнесен к положительной выборке, а объект с соответствующим атрибутом x, значение решающей функции которого меньше 0,5, могут быть классифицированы как положительные образцы, классифицированные как отрицательные образцы. Таким образом, выборочные данные можно разделить на две категории.
Код для изображения выше выглядит следующим образом:
import matplotlib.pyplot as plt
import numpy as np
def sigmoid(x):
# 直接返回sigmoid函数
return 1 / (1 + np.exp(-x))
if __name__ == '__main__':
# param:起点,终点,间距
x = np.arange(-10, 10, 0.2)
y = sigmoid(x)
plt.plot(x, y, 'r-', linewidth=2)
plt.show()
Logistic Regression
Цель состоит в том, чтобы найти наиболее подходящие параметры нелинейной сигмоиды функции, что делается с помощью алгоритма оптимизации в процессе решения. Преимущество этого алгоритма в том, что его легко понять и реализовать, а вычислительные затраты невелики.
Пример 1. Сбор данных по радужной оболочке
Набор данных по радужной оболочке, пожалуй, самый известный тест на распознавание образов.
Набор данных включает 3 категории радужной оболочки, по 50 образцов в каждой. Книга. Одна из категорий линейно отделима от двух других, а другая Два внешних класса не являются линейно разделимыми.
Набор данных состоит из 150 строк с 1 образцом в строке. Каждый образец имеет 5 полей, которые
- длина чашечки
- ширина чашечки
- длина лепестка
- ширина лепестка
- Категория (всего 3 категории)
- Ирис горный ирис
- Ирис разноцветный
- Ирис Виргинский Ирис Вирджиния
Давайте посмотрим на реализацию рендеринга кода
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.pipeline import Pipeline
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
if __name__ == "__main__":
path = './iris.data' # 数据文件路径
data = pd.read_csv(path, header=None)
data[4] = pd.Categorical(data[4]).codes
x, y = np.split(data.values, (4,), axis=1)
# print 'x = \n', x
# print 'y = \n', y
# 仅使用前两列特征
x = x[:, :2]
# y.ravel()是获取矩阵
lr = LogisticRegression(C=1e5)
# pipeline 优化逻辑回归准确度 参数集在新数据集(比如测试集)上的重复使用
# 管道机制更像是编程技巧的创新,而非算法的创新。
# 可放在Pipeline中的步骤可能有 (1)特征标准化是需要的,可作为第一个环节
# (2)既然是分类器,classifier也是少不了的,自然是最后一个环节
# 标准化数据 - PolynomialFeatures类可以进行特征的构造
# lr = Pipeline([('sc', StandardScaler()),
# ('poly', PolynomialFeatures(degree=1)),
# ('clf', LogisticRegression())])
lr.fit(x, y.ravel())
y_hat = lr.predict(x)
y_hat_prob = lr.predict_proba(x)
np.set_printoptions(suppress=True)
print('y_hat = \n', y_hat)
print('y_hat_prob = \n', y_hat_prob)
print('准确度:%.2f%%' % (100*np.mean(y_hat == y.ravel())))
# 画图
N, M = 200, 200 # 横纵各采样多少个值
x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 第0列的范围
x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 第1列的范围
t1 = np.linspace(x1_min, x1_max, N)
t2 = np.linspace(x2_min, x2_max, M)
x1, x2 = np.meshgrid(t1, t2) # 生成网格采样点
print(x1, x2)
x_test = np.stack((x1.flat, x2.flat), axis=1) # 测试点
# mpl.rcParams['font.sans-serif'] = ['simHei']
# mpl.rcParams['axes.unicode_minus'] = False
cm_light = mpl.colors.ListedColormap(['#77E0A0', '#FF8080', '#A0A0FF'])
cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
y_hat = lr.predict(x_test) # 预测值
y_hat = y_hat.reshape(x1.shape) # 使之与输入的形状相同
print("y_hat", y_hat)
plt.figure(facecolor='w')
#这个函数讲x1,x2的两个网络矩阵和对应的预测值y_hat绘制在图片上,可以发现输出为三个颜色区块,分布表示分类的区域
plt.pcolormesh(x1, x2, y_hat, cmap=cm_light) # 预测值的显示
# 样本的散列点
plt.scatter(x[:, 0], x[:, 1], c=y.flat, edgecolors='k', s=50, cmap=cm_dark)
plt.xlabel(u'Iris height', fontsize=14)
plt.ylabel(u'Iris width', fontsize=14)
print(x1_min, x1_max, x2_min, x2_max)
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.grid()
patchs = [mpatches.Patch(color='#77E0A0', label='Iris-setosa'),
mpatches.Patch(color='#FF8080', label='Iris-versicolor'),
mpatches.Patch(color='#A0A0FF', label='Iris-virginica')]
plt.legend(handles=patchs, fancybox=True, framealpha=0.8)
# plt.title(u'鸢尾花Logistic回归分类效果 - 标准化', fontsize=17)
plt.show()
Частичный анализ кода
- хеш-точки данных графика
#第一种方法
#获取第一列的数据
X = [x[0] for x in DD]
#获取第二列的数据
Y = [x[1] for x in DD]
plt.scatter(X[:50], Y[:50], color='red', marker='o', label='setosa') #前50个样本
plt.scatter(X[50:100], Y[50:100], color='blue', marker='x', label='versicolor') #中间50个
plt.scatter(X[100:], Y[100:],color='green', marker='+', label='Virginica') #后50个样本
#第二种
plt.scatter(x[:, 0], x[:, 1], c=y.flat, edgecolors='k', s=50, cmap=cm_dark)
- lr = LogisticRegression(C=1e5) lr.fit(x, y.ravel())
Инициализируйте модель логистической регрессии и обучите ее. C = 1e5 представляет целевую функцию. Обратное значение коэффициента регулярного члена можно просмотреть для получения более подробной информации.Официальный сайт. - x1_min, x1_max = x[:, 0].min(), x[:, 0].max()
x2_min, x2_max = x[:, 1].min(), x[:, 1].max()
Полученные два столбца данных радужной оболочки соответствуют длине чашечки и ширине чашечки, а координаты каждой точки равны (x, y). Сначала возьмите минимальное и максимальное значения первого столбца (длины) двумерного массива X для создания массива, затем возьмите минимальное и максимальное значения второго столбца (ширины) двухмерного массива X. array для создания массива и, наконец, используйте функцию meshgrid для создания двух матриц Grid x1 и x2 следующим образом:[[4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ]
[4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ] [4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ] ... [4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ] [4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ] [4.3 4.31809045 4.3361809 ... 7.8638191 7.88190955 7.9 ]] [[2. 2. 2. ... 2. 2. 2. ] [2.0120603 2.0120603 2.0120603 ... 2.0120603 2.0120603 2.0120603] [2.0241206 2.0241206 2.0241206 ... 2.0241206 2.0241206 2.0241206] ... [4.3758794 4.3758794 4.3758794 ... 4.3758794 4.3758794 4.3758794] [4.3879397 4.3879397 4.3879397 ... 4.3879397 4.3879397 4.3879397] [4.4 4.4 4.4 ... 4.4 4.4 4.4 ]] ```
-
х.равел() Вызовите функцию ravel(), чтобы преобразовать две матрицы xx и yy в одномерный массив.
-
y_hat = y_hat.reshape(x1.shape)
Измените форму с помощью функции reshape(), чтобы преобразовать ее y_hat в две характеристики (длину и ширину). Вывод выглядит следующим образом[[1. 1. 1. ... 2. 2. 2.] [1. 1. 1. ... 2. 2. 2.] [1. 1. 1. ... 2. 2. 2.] ... [0. 0. 0. ... 2. 2. 2.] [0. 0. 0. ... 2. 2. 2.] [0. 0. 0. ... 2. 2. 2.]]
-
lr.predict(x_test)
Функция прогнозирования данных -
plt.pcolormesh(x1, x2, y_hat, cmap=cm_light)
Эта функция говорит о двух сетевых матрицах x1, x2 и соответствующем прогнозируемом значении y_hat, нарисованном на картинке, можно обнаружить, что на выходе есть три цветных блока, распределение представляет собой область классификации.
Я надеюсь, что для получения дополнительных знаний читатели расширятся после спуска.Также рекомендуется, чтобы университеты изучили последние примеры с официального сайта знаний с открытым исходным кодом Sklearn.
Случай 2
Пример логистической регрессии
Если вы хотите погрузиться в концепции, я рекомендую изучать теорию вероятностей, а также дискретную математику или практический анализ.
Кластеризация K-средних (алгоритм кластеризации k-средних)
k-means聚类
Алгоритм — это неконтролируемый алгоритм машинного обучения, используемый для классификации неразмеченных данных (то есть данных без определенных категорий или групп). Алгоритм работает путем поиска групп в данных, количество которых представлено переменной k. Затем он перебирает данные, назначая каждую точку данных одной из k групп на основе предоставленных функций.k-means聚类
Использование концепции расстояния в алгоритме для «назначения» точек данных кластеру. Если вы не знакомы с понятием расстояния, оно относится к количеству пространства между двумя заданными элементами. В математике любая функция, описывающая расстояние между любыми двумя элементами множества, называется функцией расстояния или метрикой.
определение
Кластеризация — это процесс организации наборов данных в категории, которые в некоторых отношениях схожи. Кластеризация — это метод обнаружения этой внутренней структуры. Методы кластеризации часто называют неконтролируемым обучением.
Кластеризация K-средних — самый известный алгоритм кластеризации разделов, а его простота и эффективность делают его наиболее широко используемым из всех алгоритмов кластеризации. Учитывая набор точек данных и необходимое количество кластеров k, где k задается пользователем, алгоритм k-средних многократно делит данные на k кластеров в соответствии с определенной функцией расстояния.
Существует два типа метрик: евклидовы метрики и метрики такси.
Определение евклидовой метрики
Евклидова метрика определяется следующим образом:
(x1, y1)
и(x2, y2)
является координатной точкой на декартовой плоскости. Несмотря на то что欧几里德
Мера достаточная, но в некоторых случаях она не работает. Допустим, вы идете по большому городу, и нет смысла говорить «Я всего в 6,5 единицах от пункта назначения», если вам преграждает путь огромное здание. Чтобы решить эту проблему, мы можем использовать метрику такси
Метрики такси
Показатели такси следующие:
Это не так сложно, на самом деле вам просто нужно знать сложение и вычитание, знать основы алгебры, и вы можете понять формулу расстояния. Но чтобы иметь четкое представление о базовых типах геометрии для каждой из этих метрик, я рекомендую тот, который также содержит欧几里德几何
и非欧几里德几何
класс геометрии. Чтобы получить более глубокое понимание того, что означают метрики и метрические пространства, нужно изучить математический анализ и пройти курс настоящей аналитики.
алгоритм
Действуйте следующим образом
- Случайным образом взять первым
k
объекта в качестве начального центра кластера. - Вычислите расстояние между каждым объектом и центром каждого исходного кластера и назначьте каждый объект ближайшему к нему центру кластера.
- Центры кластера и присвоенные им объекты представляют собой кластер.
- После назначения всех объектов центр кластера для каждого кластера пересчитывается на основе существующих объектов в кластере.
- Повторяйте вышеуказанные шаги до тех пор, пока не будет выполнено определенное условие завершения, которое может быть следующим:
- Никакие (или минимальное количество) объектов не переназначаются другим кластерам.
- Никакие (или минимальное количество) центров кластеров не меняются снова.
- Сумма квадратов ошибок является локальным минимумом.
Деревья решений
Базовые концепты
Дерево решений — это древовидная структура, похожая на блок-схему, в которой используется метод ветвления для иллюстрации каждого возможного результата решения. Каждый узел в дереве представляет собой проверку определенной переменной — каждая ветвь является результатом этой проверки.
сочинение
- Точка принятия решения – это выбор нескольких возможных решений, то есть наилучшее решение, выбранное в итоге. Если решение является многоуровневым, в середине дерева решений может быть несколько точек решения, а точка решения в корне дерева решений является окончательным планом решения.
- Узел состояния представляет собой экономический эффект (ожидаемое значение) альтернатив Путем сравнения экономического эффекта каждого узла состояния можно выбрать наилучшее решение в соответствии с определенными критериями принятия решения. Ветвь, полученная из узла состояния, называется ветвью вероятности, а количество вероятностей указывает на количество естественных состояний, которые могут появиться Каждая ветвь должна указывать вероятность появления состояния.
- В узле результата значения прибыли и убытка, полученные каждой схемой в различных естественных состояниях, отмечены на правом конце узла результата.
Деревья решений полагаются на теорию, называемую теорией информации, чтобы определить, как они построены. В теории информации, чем больше человек знает о теме, тем меньше новой информации он может узнать. Одна из ключевых мер теории информации называется энтропией.
Об энтропии
Понятие энтропии происходит из физики и используется для измерения степени беспорядка в термодинамической системе.
Информационная энтропия: я должен упомянуть Шеннона, капиталиста! знание теории информации. В теории информации информационная энтропия измеряет количество информации, которая является мерой неопределенности случайных величин. Чем больше энтропия, тем больше неопределенность.
Энтропию можно записать так:
Рекомендуется просмотреть эту ссылку, которая очень подробно объясняет и включает демонстрациюОбъяснение дерева решений
-
P(x)
это вероятность того, что функция встречается в наборе данных. Из определения мы знаем:0≤Entropy(X)≤log(n)
Когда случайная величина принимает только два значения, т.е.X
РаспределениеP(X=1)=p
, X(X=0)=1−p, 0≤p≤1, то энтропия равна: Entropy(X)=−plog2(p)−(1−p)log2(1−p).
Чем выше значение энтропии, тем выше тип смешивания данных, а значит, тем больше возможных изменений переменной (вместо этого это не имеет ничего общего с конкретным значением переменной, только тип значения и вероятность появления ) Чем больше объем передаваемой информации. Энтропия — очень важное понятие в теории информации, и многие алгоритмы машинного обучения используют это понятие.
Следует отметить, что любое основание b может быть использовано для логарифмов, однако мы обычно используем2,e和10
. Вы можете заметитьS
символ . Это обозначение суммирования, оно означает добавление любой функции, кроме суммирования, как можно больше раз подряд. Сколько раз добавляется, зависит от нижней и верхней границ суммирования. После вычисления энтропии мы можем использовать прирост информации для построения дерева решений, чтобы определить, какое разделение снизит энтропию больше всего. Формула получения информации выглядит следующим образом:
-
1) Вообще говоря, чем больше прирост информации, тем больше «улучшение чистоты», полученное путем деления атрибута A. Следовательно, мы можем использовать прирост информации для выбора атрибутов дерева решений.
-
2) Хорошо известный алгоритм обучения дерева решений ID3 выбирает атрибуты раздела на основе прироста информации.
Базовая алгебра и вероятность — это то, что вам действительно нужно, чтобы очистить поверхность деревьев решений. Если вам нужно глубокое концептуальное понимание вероятности и логарифмов, я бы порекомендовал курсы по теории вероятностей и алгебре.
Суммировать
Математика вездесуща в науке о данных. Хотя некоторые алгоритмы обработки данных могут временами казаться волшебством, мы можем понять детали многих алгоритмов, не прибегая к алгебре, базовым вероятностям и статистике.
Если вы не хотите изучать математику? Технически вы можете положиться на библиотеки машинного обучения, такие какscikit-learn
сделать все это для вас. Тем не менее, специалистам по данным очень полезно иметь четкое представление о математике и статистике, лежащих в основе этих алгоритмов, чтобы они могли выбрать лучший алгоритм для своей задачи и набора данных и, таким образом, делать более точные прогнозы. Так что прими боль и погрузись в математику! Это не так сложно, как вы думаете, и мы даже создали несколько курсов по этим темам, чтобы помочь вам начать работу:
Ссылка на ссылку
- Math in Data Science
- En. Wikipedia.org/wiki/naive_…
- Джерард Нико.com/wiki/data_no…
- SCI kit-learn.org/stable/Modu…
- Код
- Принцип и реализация алгоритма дерева решений
- Практика машинного обучения (3) — Дерево решений
- LogisticRegression
- MatPultLIB
- Прочитайте логистическую регрессию в одной статье
- Статистический анализ этих вещей (6) — мощная логистическая регрессия (теория + случай).
- Машинное обучение — алгоритм кластеризации: алгоритм K-средних