1. Введение
В этом блоге в основном описываются принципы двух моделей классификации (модель логистической регрессии и модель максимальной энтропии) и кодовая реализация моделей. Причина объединения этих двух моделей заключается в том, что эти две модели являются логарифмически-линейными моделями, обе из которых логарифмические линейные модели, представленные условным распределением вероятностейP(Y|X)
.
Оба примера алгоритмов машинного обучения основаны наНабор данных Титаник, Детальная инженерная часть набора данных не будет подробно описана.Другие сообщения в блогеЭто было подробно описано в этом блоге, и этот блог будет напрямую использовать набор данных, который был обработан с помощью разработки признаков для обучения модели.
2 Модель логистической регрессии
Модель логистической регрессии — это модель классификации, основанная на логистическом распределении, которая может решать задачи классификации нескольких классов и относится к вероятностной модели.
2.1 Логистическое распределение
Предполагая, что X является случайной величиной, когда X подчиняется логистическому распределению, оно удовлетворяет следующемуФункция распределенияиФункция плотности вероятности:
в соответствии сФункция распределенияиФункция плотности вероятностиГрафик можно построить следующим образом.Из функции распределения вероятностей в правой половине графика, когда значение случайной величины X близко к значению µ, вероятность изменяется очень сильно. Распределение вероятностей находится в диапазоне от [0,1] и является точечно-симметричным относительно (μ,0,5).
2.2 Модель алгоритма
Основным объяснением здесь является проблема двух классов, а соответствующая модель алгоритма основана наРаспределение биномиальной логистической регрессииизМодель условной вероятности. Биномиальный означает, что каждый раз, когда значение случайной величины X, Y имеет два разных результатаY={0,1}
, Конечно, если это проблема множественной классификации, модель алгоритма соответствует множественной (K)
Условная вероятность распределения логистической регрессии. В это время для значения случайной величины X, Y имеет разные результаты в KY={0,1,...,k}
.
P — модель алгоритма, представляющая собой условное распределение вероятностей P(Y|X). где X — случайная величина, соответствующая нашей выборке. Y — категория, к которой принадлежит образец. При использовании модели алгоритма для классификации образцов введите образец X и в соответствии с моделью алгоритма P получите P (Y = 0 | X), P (Y = 1 | X). Сравните размеры P(Y=0|X) и P(Y=1|X) и выведите категорию, соответствующую большой условной вероятности значения P.
2.3 Алгоритмы обучения
Алгоритм обучения в основном используется для решения модели алгоритма, то есть процесса решения P. Для моделей алгоритмов машинного обучения, как правило, параметры в модели алгоритма решаются итеративно, сначала определяя функцию стоимости, а затем минимизируя функцию стоимости. Поскольку модель алгоритма является вероятностной моделью, оценка максимального правдоподобия может использоваться для решения параметров модели. Конечно, функцию отрицательного правдоподобия также можно понимать как функцию стоимости, и параметры можно решить путем минимизации функции отрицательного правдоподобия.
А. Модель алгоритма(вπ(x)
представляет собой функцию распределения логистической регрессии):
б) Функция правдоподобия:
C. Функция логарифмического правдоподобия(Возьмите логарифм приведенной выше функции правдоподобия и измените умножение на сложение, чтобы облегчить вычисление производной):
г. Используйте градиентный спуск(Итерационный алгоритм решает параметры модели), переменная в функции логарифмического правдоподобия равна w.
2.4 Реализация кода модели
# 主要代码,迭代求解,需要判断是否收敛
def train(self,train_X,train_y):
feature_size = train_X.shape[1]
sample_size = train_X.shape[0]
# 将w,b 融合了
self.w = np.zeros(feature_size + 1)
correct_num = 0
#梯度下降算法
for iter in range(self.maxIter):
# 随机选取一个样本
sample_index = random.randint(0,sample_size-1)
sample_select = train_X[sample_index].tolist()
sample_select.append(1.0)
sample_y = train_y[sample_index]
if sample_y == self.predict(sample_select):
# 连续预测对一定的数量
correct_num = correct_num + 1
if correct_num > self.maxIter:
break
continue
correct_num = 0
temp = np.exp(sum(self.w * sample_select))
for index in range(feature_size):
self.w[index] = self.w[index] - self.learn_late * \
(- sample_y * sample_select[index] + float(temp * sample_select[index])/float(1 + temp))
3 Модель максимальной энтропии
Модель максимальной энтропии – этоВероятностная модель, идея в томПринцип максимальной энтропииприменяется к задачам классификации.
3.1 Принцип максимальной энтропии
1. В процессе обучения и решения вероятностной модели критерием является принцип максимума энтропии.Принцип максимальной энтропии: При обучении вероятностной модели (при решении параметров вероятностной модели) среди всех возможных вероятностных моделей (всех возможных решений параметров модели) модель с наибольшей энтропией является лучшей моделью (так что параметр модели с наибольшей энтропией является наилучшие параметры окончательной вероятностной модели).
2. Как определить набор возможных вероятностных моделей? Ограничения часто используются для определения набора вероятностных моделей. Ограничения здесь нашиХарактеристика Функция- Факты уже в наборе данных.
Причина, по которой модель с наибольшей энтропией является лучшей моделью:энтропияПредставляет собой неопределенность случайной величины.Чем больше энтропия, тем более неопределенной является случайная величина, то есть тем более случайной является случайная величина, и наиболее сложно точно предсказать ее поведение. Суть принципа максимальной энтропии состоит в том, что в предпосылке известного частичного знания наиболее разумным выводом о неизвестном распределении является наиболее неопределенный или случайный вывод в соответствии с известным знанием Это единственный беспристрастный выбор, который мы можем сделать. Любой другой выбор означает, что мы добавляем дополнительные ограничения и предположения, которые невозможно сделать на основе имеющейся у нас информации.
3.2 Построение модели максимальной энтропии
Модель максимальной энтропии:Для модели классификации моделью ее алгоритма является вероятностная модель P(Y|X).Для расчета параметров вероятностной модели оптимальная вероятностная модель выбирается на основе принципа максимальной энтропии.
Сначала задан обучающий набор данных T:
как использоватьПринцип максимальной энтропииЧтобы решить параметры вероятностной модели задачи классификации, в основном существуют следующие шаги:
Шаг 1. Извлеките ограничения, которым должна соответствовать модель, а затем выразите их в виде функции признаков.
Характеристика Функцияf(x,y)
:
Он описывает факт между входом x и выходом y модели, то есть извлечение признаков как для входа, так и для выхода.
условия, которые действительно выполняются: В идеале окончательная модель алгоритма может получить информацию в обучающих данных — для окончательной полученной модели P (Y | X), ожидание характеристической функции f и ожидание характеристической функции f на обучающем наборе В идеале выше равны.
Для эмпирического распределения X и Y в наборе данных можно получить эмпирическое совместное распределение P(X,Y) и эмпирическое предельное распределение P(X), где v(X=x,Y=y) представляет выборку ( x,y) Количество вхождений, v(X=x) представляет собой количество раз, когда ввод выборки равен x, а N представляет размер набора выборок.
Возьмите ожидание эмпирического распределения P (X, Y) того факта, что функция признаков f на обучающем наборе:
Возьмем математическое ожидание характеристической функции от модели алгоритма и эмпирического распределения:
По факту выполнения условий:
Если имеется N фактов (характеристических функций), требуется N ограничений, и окончательная модель алгоритма должна удовлетворять этим N ограничениям.
Шаг 2. Создайте набор вероятностных моделей, удовлетворяющих всем ограничениям.
Постройте набор вероятностных моделей в соответствии с ограничениями N, которые должны быть удовлетворены:
На данный момент условная энтропия нашей вероятностной модели P(Y|X) в наборе C равна:
Шаг 3 Выразите энтропию вероятностной модели и максимизируйте ее, а также решите модель, которая максимизирует формулу
Согласно принципу максимума энтропии, модель, максимизирующая энтропию вероятностной модели в множестве C, может быть решена по формулам. Итак, наша целевая функция:
3.3 Алгоритмы обучения
Процесс решения целевой функции также является нашим алгоритмом обучения.Конечно, наша целевая функция должна соответствовать некоторым реальным условиям:
В соответствии с приведенной выше формулой можно рассматривать функцию Лагранжа для решения экстремального значения. где (ш0,w1,…,шnэто множитель Лагранжа)
Согласно двойственной функции функции Лагранжа исходная задача имеет вид:
Двойное преобразование исходной задачи:
Метод расчета заключается в том, чтобы сначала вычислить минимальное значение P с w в качестве фиксированного значения, а затем вычислить максимальное значение w.
первый шаг: Во-первых, возьмите w в качестве фиксированного значения, чтобы вычислить минимум о P
Чтобы найти экстремальное значение, возьмите частную производную параметра и приравняйте уравнение к 0.
Наконец получил:
второй шаг: Затем вычислите максимальное значение w, где ψ(x) представляет собой минимальное значение, найденное на первом шаге.
3.4 Реализация кода модели — реализация алгоритма BFGS
def train(self,train_X,train_y):
# 使用《统计学习方法》P92算法6.2——BFGS,求解参数
self.feature_size = train_X.shape[1]
self.sample_num = train_X.shape[0]
self.samples = train_X
self.labels = train_y
# 统计数据集中的特征函数个数
self._cal_feature_func()
self._f2id()
self.n = len(self.P_x_y) # n为特征函数的个数
# 计算每个特征函数关于经验分布p(x,y)的期望,并保持于EPxy字典中
self._cal_EPxy()
self.w = np.zeros(self.n) #wi为拉格函数中的乘子
self.g = np.zeros(self.n) #对应g(w),《统计学习方法》P92,最上面g(w)的公式
self.B = np.eye(self.n) #正定对称矩阵
for iter in range(self.maxIter):
# 算法6.2——(2)
self._cal_Gw()
if self._cal_g_l2() < self.epsion:
break
# 算法6.2——(3)
p_k = - (self.B ** -1) * np.reshape(self.g,(self.n,1))
# np.linalg.solve()
# 算法6.2——(4)
r_k = self._liear_search(p_k)
# 算法6.2——(5)
old_g = copy.deepcopy(self.g)
old_w = copy.deepcopy(self.w)
self.w = self.w + r_k * p_k
# 算法6.2——(6)
self._cal_Gw()
if self._cal_g_l2() < self.epsion:
break
y_k = self.g - old_g
fai_k = self.w - old_w
y_k = np.reshape(y_k,(self.n,1))
fai_k = np.reshape(fai_k,(self.n,1))
temp1 = np.dot(y_k,y_k.T) / float((np.dot(y_k.T,fai_k).reshape(1)[0]))
temp2 = np.dot(np.dot(np.dot(self.B,fai_k),fai_k.T),self.B) / float(np.dot(np.dot(fai_k.T,self.B),fai_k).reshape(1)[0])
self.B =self.B + temp1 - temp2
описание кода: # 算法6.2——(4)r_k = self._liear_search(p_k)
В процессе нахождения размера шага r_k необходимо выполнение следующих условий:
Среди них идея нахождения r_k заключается в следующем: поскольку p_k и w_k известны, а r_k неизвестно, поэтому найдите производную f по r_k, установите производную равной 0 и найдите r_k. Вывод тут крайне сложен.Я не знаю какие еще простые алгоритмы решения используют другие великие боги.Забыл сообщить,спасибо.
4 Резюме
1. Модель максимальной энтропии и модель логистической регрессии являются вероятностной моделью P (Y | X) для решения проблемы классификации.Для метода решения вероятностной модели метод оценки максимального правдоподобия может использоваться для поиска параметров.
2. Ключ к модели максимальной энтропии заключается в том, что проблема классификации должна быть установлена вПринцип максимальной энтропии, тем самым строя задачу выпуклой оптимизации. Второй ключевой момент заключается в том, что в процессе извлечения функции признаков это эквивалентно добавлению ограничений в задачу оптимизации. В настоящее время решение параметров представляет собой задачу выпуклой оптимизации с ограничениями, и для ее решения необходимо ввести функцию Лагранжа. Двойное преобразование исходной задачи. Это похоже на решение параметров линейных машин опорных векторов, обе из которых являются задачами выпуклой оптимизации с ограничениями.
5 справочных ссылок
Реализация модели максимальной энтропии с помощью улучшенного Python алгоритма итеративного масштабирования IIS
Метод Ньютона и метод квази-Ньютона (4) Алгоритм BFGS