Алгоритмы машинного обучения — модель логистической регрессии и модель максимальной энтропии

машинное обучение

1. Введение

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

2 Модель логистической регрессии

Модель логистической регрессии — это модель классификации, основанная на логистическом распределении, которая может решать задачи классификации нескольких классов и относится к вероятностной модели.

2.1 Логистическое распределение

Предполагая, что X является случайной величиной, когда X подчиняется логистическому распределению, оно удовлетворяет следующемуФункция распределенияиФункция плотности вероятности:
图3
в соответствии сФункция распределенияиФункция плотности вероятностиГрафик можно построить следующим образом.Из функции распределения вероятностей в правой половине графика, когда значение случайной величины X близко к значению µ, вероятность изменяется очень сильно. Распределение вероятностей находится в диапазоне от [0,1] и является точечно-симметричным относительно (μ,0,5).
图4

2.2 Модель алгоритма

Основным объяснением здесь является проблема двух классов, а соответствующая модель алгоритма основана наРаспределение биномиальной логистической регрессииизМодель условной вероятности. Биномиальный означает, что каждый раз, когда значение случайной величины X, Y имеет два разных результатаY={0,1}, Конечно, если это проблема множественной классификации, модель алгоритма соответствует множественной (K)
Условная вероятность распределения логистической регрессии. В это время для значения случайной величины X, Y имеет разные результаты в KY={0,1,...,k}.
图5

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)представляет собой функцию распределения логистической регрессии):
图6
б) Функция правдоподобия:
图7
C. Функция логарифмического правдоподобия(Возьмите логарифм приведенной выше функции правдоподобия и измените умножение на сложение, чтобы облегчить вычисление производной):
图8
г. Используйте градиентный спуск(Итерационный алгоритм решает параметры модели), переменная в функции логарифмического правдоподобия равна 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:
图22

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

Шаг 1. Извлеките ограничения, которым должна соответствовать модель, а затем выразите их в виде функции признаков.
Характеристика Функцияf(x,y):
图10

Он описывает факт между входом 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 представляет размер набора выборок.
图9
Возьмите ожидание эмпирического распределения P (X, Y) того факта, что функция признаков f на обучающем наборе:
图11
Возьмем математическое ожидание характеристической функции от модели алгоритма и эмпирического распределения:
图12
По факту выполнения условий:
图13
图14
Если имеется N фактов (характеристических функций), требуется N ограничений, и окончательная модель алгоритма должна удовлетворять этим N ограничениям.
Шаг 2. Создайте набор вероятностных моделей, удовлетворяющих всем ограничениям.
Постройте набор вероятностных моделей в соответствии с ограничениями N, которые должны быть удовлетворены:
图15
На данный момент условная энтропия нашей вероятностной модели P(Y|X) в наборе C равна:
图16
Шаг 3 Выразите энтропию вероятностной модели и максимизируйте ее, а также решите модель, которая максимизирует формулу
Согласно принципу максимума энтропии, модель, максимизирующая энтропию вероятностной модели в множестве C, может быть решена по формулам. Итак, наша целевая функция:
图17

3.3 Алгоритмы обучения

Процесс решения целевой функции также является нашим алгоритмом обучения.Конечно, наша целевая функция должна соответствовать некоторым реальным условиям:
图18
В соответствии с приведенной выше формулой можно рассматривать функцию Лагранжа для решения экстремального значения. где (ш0,w1,…,шnэто множитель Лагранжа)
图19
Согласно двойственной функции функции Лагранжа исходная задача имеет вид:
图20
Двойное преобразование исходной задачи:
图21

Метод расчета заключается в том, чтобы сначала вычислить минимальное значение P с w в качестве фиксированного значения, а затем вычислить максимальное значение w.

первый шаг: Во-первых, возьмите w в качестве фиксированного значения, чтобы вычислить минимум о P
图23
Чтобы найти экстремальное значение, возьмите частную производную параметра и приравняйте уравнение к 0.
图24
图25
Наконец получил:
图26
второй шаг: Затем вычислите максимальное значение w, где ψ(x) представляет собой минимальное значение, найденное на первом шаге.
图27

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 необходимо выполнение следующих условий:
图28

Среди них идея нахождения 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