Давайте временно обновим эту серию статей о машинном обучении вручную. В настоящее время завершена поддержка векторной машины SVM, дерева решений, KNN, байесовской, линейной регрессии и логистической регрессии. Для других алгоритмов, пожалуйста, позвольте Taoye отдать должное здесь сначала Позже будет время наверстать упущенное.
Это обновление также получило положительные отзывы от некоторых читателей. Хотя это не так много, я очень благодарен за вашу поддержку, и я надеюсь, что каждый читатель, прочитавший его, сможет что-то почерпнуть.
Все содержание этой серии статей написано Таойе исключительно от руки.Также есть отсылки ко многим книгам и общедоступным ресурсам.Общее количество слов в серии около 15W (включая исходный код), которые будут заполнены позже.Подробнее технические статьи могут посетить общественность Taoye.Циничный кодер. Документ можно распространять свободно, но будьте осторожны, не изменяйте его содержание.
Если в статье есть какие-либо вопросы, которые вы не понимаете, вы можете задать их напрямую, и Taoye ответит, как только они ее увидят.В то же время каждый может прийти сюда, чтобы напомнить Taoye в частном порядке:Циничный кодер, в официальном аккаунте также есть личная контактная информация Таое. Несколько слов, Таойе может говорить с тобой тайно только там (#`О')
Чтобы улучшить опыт чтения для всех, серия статей Taoye по машинному обучению была организована в видеPDF и HTML, эффект чтения очень хороший,Ответьте на [666] под официальным аккаунтом [Cynical Coder], чтобы получить его бесплатно.
В предыдущей статье серии машинного обучения мы подробно объяснили проблему линейной регрессии и, наконец, подобрали прямую линию с помощью алгоритма градиентного спуска, чтобы прямая линия максимально соответствовала выборке данных. и потери модели были достигнуты цель наименьшего значения.
В этой статье мы в основном разбираем логистическую регрессию, которая также называется «статистическими методами обучения» в книге учителя Ли Ханга «Статистические методы обучения».логистическая регрессия. слышатьвозвращениеСловом, некоторые читатели могут подумать, что последнее решение линейной регрессии — это проблема подгонки, эта статья — логистическая регрессия, будет ли она также проблемой подгонки? Просто принципы используемых алгоритмов разные, а решаемые задачи одни и те же? ? ?
По сути, модель логистической регрессии представляет собой обобщенную модель линейной регрессии, которая в основном нацелена напроблема классификации. Просто эта классификационная модель имеет некоторое сходство с моделью подбора из предыдущей главы, или, можно сказать, что если вы понимаете линейную регрессию, описанную в предыдущей статье, то логистическая регрессия, используемая в этой статье. Возврат контента, вы узнаете очень легко. Это также причина, почему Taoye первая линейная регрессия печени.
В серию «Ручное машинное обучение» добавлено восемь статей, и читатели могут «заряжаться» по мере необходимости (постоянно обновляется):
- «Машинное обучение в действии» — анализ машин опорных векторов, разрыв линейного SVM одной рукой:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — анализ машин опорных векторов и оптимизация SMO:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — тот, кто понимает, понимает, а тот, кто не понимает, понимает. Нелинейные машины опорных векторов:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — Taoye расскажет, что за «призрак» представляет собой дерево решений:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — дети, идите и играйте, дерево решений:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — одноклассница спросила Таое, как следует играть KNN, чтобы пройти уровень.:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — байесовский диалект:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — рассказ о линейной регрессии.:Woohoo Только tribal.com/Tian Punishment Plus…
- «Машинное обучение в действии» — Таойе рассказывает о логистической регрессии:Woohoo Только tribal.com/Tian Punishment Plus…
Эта статья в основном состоит из следующих двух частей:
- Подружитесь с логистической регрессией и узнайте друг друга (принцип анализа, вывод формул)
- Решение задачи бинарной классификации на основе логистической регрессии
1. Подружитесь с логистической регрессией и узнайте друг друга (принцип анализа)
Что касается алгоритма классификации в машинном обучении, мы уже многому научились. Логистическая регрессия также является частью алгоритма классификации и обычно используется для задач бинарной классификации, например, есть ли у пациента рак желудка, будет ли завтра дождь и т. д. Конечно, для задач с множественной классификацией у логистической регрессии тоже есть способ справиться с этим.В конце концов, у вас есть Чжан Лянцзи, а у меня тоже есть стена. В этой статье в основном рассматривается проблема бинарной классификации в качестве примера для анализа этих маленьких секретов логистической регрессии.
Предположим, что есть несколько выборочных точек данных, каждая выборка включает два атрибута, мы можем использовать прямую линию, чтобы подобрать ее, этот процесс подбора называется регрессией, и эффект подбора следующий:
Это также то, что мы подробно рассмотрели в предыдущей статье, которую можно увидеть в деталях:«Машинное обучение в действии» — рассказ о линейной регрессии.:Woohoo Только tribal.com/Tian Punishment Plus…
Логистическая регрессия-это алгоритм классификации, Основная идея его классификации основана на линейной регрессии, и она была расширена.Он в основном использует функцию, заключающуюся в том, что порог сигмовидной функции находится в [0,1], и эта функция просто соответствует интервалу вероятности.. Таким образом, суть логистической регрессии заключается в дискриминантной модели, основанной на условной вероятности (судя, к какой категории она принадлежит, исходя из известных характеристик атрибутов выборки).
Теперь давайте познакомимся с логистической регрессией и посмотрим, сможем ли мы раскрыть некоторые из ее маленьких секретов и увидеть истинное лицо горы Лу.
Я не знаю, помнят ли еще наблюдатели, что когда мы раньше объясняли SVM, мы использовалиинтервальная максимизациячтобы найти наилучшую поверхность принятия решений для классификации набора данных.
В логистической регрессии метка категории каждой выборки соответствует вероятности, и какая метка категории имеет более высокую вероятность, тогда я буду классифицировать выборку в какую категорию. Предположим, что один образец имеетпризнака, мы можем рассматривать его как векторную форму, и есть только два возможных типа меток, соответствующих каждому образцу, а именно:
Другими словами, наша цель сейчас состоит в том, чтобы найти гиперплоскость с одним классом выборок на одной стороне гиперплоскости и другим классом выборок на другой стороне. И в каждой выборке может быть только два случая: либо 0, либо 1. В связи с этим можно предположить, что в известной выборке атрибутивные характеристики и параметры моделиВ предположении вероятность того, что класс метки образца равен 1, равна, поскольку возможны только два класса, вероятность того, что метка образца равна 0, равна,который:
Для приведенной выше формулы это означает, что в известной выборке атрибутивные признаки x и параметры моделиВ предположении вероятность того, что метка выборки равна 1 и 0, соответственнои. В соответствии с нашими собственными пожеланиями, мы, конечно, надеемся, что чем больше разница между ними, тем лучше, так что полученные результаты классификации будут более убедительными.
Например, для выборки вероятность того, что метка выборки равна 0, равна 0,9, а вероятность того, что она равна 1, равна 0,1.Конечно, мы более склонны классифицировать эту выборку как 0, и такие результаты классификации легче убедить общественность. Если предположить, что вероятность того, что метка образца равна 0, равна 0,51, а вероятность того, что 1 равна 0,49, то к какой категории вы готовы отнести этот образец в данный момент? ? ? Сложно сделать выбор? ? ? Это довольно запутанно? ? ? Поскольку результат вероятности классификации, полученный таким образом, аналогичен вероятности нашего слепого предположения, он совершенно не достигает цели убеждения публики.
В связи с этим мы надеемся, что дело обстоит так: чем больше разница между вероятностями классификации меток, тем лучше, так что наши результаты классификации выборок будут более убедительными.
Вышеупомянутые две вероятности на самом деле являются двумя случаями, а метка выборки равна 0 или 1. В соответствии с этой особенностью, чтобы облегчить нам выражение вероятности классификации, два вышеуказанных значения вероятности можно объединить в одно, и получается следующее:
Вышеупомянутый метод обработки объединения двух в одно также встречался в статье SVM, если вы его забудете, читатели могут пока перейти к обзору:«Машинное обучение в действии» — анализ машин опорных векторов, разрыв линейного SVM одной рукой:Woohoo Только tribal.com/Tian Punishment Plus…
В приведенной выше объединенной формуле, когда y равно 1, член (1-y) (второй член) равен 0; когда y равен 0, член y (первый член) равен 0. То есть наша текущая цель состоит в том, чтобы максимизировать значение приведенной выше формулы в соответствии с набором обучающей выборки, чтобы точность нашей классификации набора выборок была выше.
Кроме того, вышеизложенноеЗначение вероятности представлено одной выборкой, и мы знаем, что выборка представляет собой набор, состоящий из большого количества одиночных выборок, поэтому в настоящее время следует использовать наш метод максимального правдоподобия, предполагая, что выборка и выборка независимы от друг друга, то его функция правдоподобия (при условии n выборок):
На данный момент наша цель — найти максимальное значение приведенной выше функции правдоподобия на основе набора выборок данных. Чтобы найти проблему максимального значения, мы, естественно, будем использовать функцию производной.Для вышеупомянутой формы продукта нам нелегко напрямую вывести производную, и это значительно повысит эффективность и сложность решения. В связи с этим нам необходимо его логгировать, чтобы преобразовать форму произведения в форму суммирования, более удобную для вывода.
Предположим, мы регистрируем приведенную выше формулу и называем ее как, то это наша окончательная функция потерь или целевая функция, которую нужно оптимизировать. Конкретная форма выглядит следующим образом:
На данный момент мы получили целевую функцию, которую, наконец, необходимо решить.Теперь нам нужно преобразовать приведенное вышеМаксимизируйте значение функции потерь, так что точность окончательного набора результатов классификации может быть выше.
Примечание: Для приведенной выше функции потерь у читателей может возникнуть вопрос.По логике вещей, значение потерь должно быть минимизировано.Зачем вам нужно максимизировать приведенную выше формулу? ? ? На самом деле это так.Приведенная выше формула говорит, что это функция потерь.На самом деле, что это действительно означает, так это максимально улучшить точность классификации всего набора выборок. Если у читателей все еще есть сомнения по этому поводу, они могут вернуться и подумать о процессе вывода формулы и о реальном значении, скрытом за ней.
Таким образом, для приведенной выше функции потерь существует другаяМы не знаем. Из предыдущего анализа мы также можем знать, чтоПредставляет вероятность со значением 0-1. Однако мы вычисляем, можно обнаружить, что конкретный диапазон этого значения является неопределенным. Для этого нам необходимо в определенной степени обработать вычисленное значение и преобразовать его в диапазон 0-1, чтобы оно могло соответствовать диапазонным характеристикам вероятности.
Итак, как с этим бороться? ? ?
Умные исследователи обнаружили, что существует такая функция, что независимо от того, насколько велико или мало значение, оно может быть отображено в диапазоне от 0 до 1. Эта функция является известной сигмовидной функцией, и ее конкретная форма и изображение таковы:
Благодаря выражению и конкретному изображению сигмовидной функции мы также можем обнаружить, что она просто соответствует нашим реальным потребностям. Кроме того, сигмовидная функция часто будет использоваться в будущем процессе обучения, например, в сверточной нейронной сети сигмовидная функция часто используется в качестве нашей функции активации для решения нелинейных задач.
Таким образом, мы обрабатываем сэмплы через сигмовидную функцию и получаем следующие результаты:
понялПосле конкретного выражения мы можем продолжить обработку и преобразование функции потерь, Процесс обработки выглядит следующим образом:
После преобразования функции потерь в приведенную выше формулу мы можем обнаружить, что во всем наборе обучающих данныхЭто все известно, единственная неопределенность, которая представляет собой векторную форму, соответствующую атрибутивным признакам одного образца. МыПосле вывода можно получить следующие результаты:
Отсюда вычисляем функцию потерь оПосле градиента его можно постоянно итеративно обновлять с помощью алгоритма градиентного восхождения.параметров, чтобы максимизировать значение функции потерь, то есть сделать точность классификации обучающей выборки максимально возможной.
Кроме того, мы знаемПараметр на самом деле имеет форму вектора, который совпадает сАтрибутные характеристики соответствуют, для чего имеемПри обновлении каждый элемент внутри него обновляется одновременно. В соответствии с приведенными выше результатами вывода мы получаем конкретное обновление каждого элемента следующим образом:
Обратите внимание, что здесь мы предполагаем, что каждый элемент имеетатрибутивная характеристика, т., о чем также упоминалось ранее. вУказывает перед итерацией обновлениязначение, в то время какУказывает после итерации обновлениязначение, в то время какОн представляет собой скорость обучения, которая также представляет скорость обучения, Это также подробно обсуждалось при объяснении линейной регрессии ранее.
2. Решить проблему бинарной классификации на основе логистической регрессии.
Получив модель логистической регрессии, мы можемпостоянно обновлять и повторять, что в конечном итоге максимизирует значение функции потерь.
Затем мы пытаемся реализовать классификацию логистической регрессии с помощью кода Python, на этот раз в основном для двоичной классификации. Набор данных по-прежнему генерируется NumPy случайным образом, определяяestablish_data
Код метода случайной генерации набора данных выглядит следующим образом:
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: 通过NumPy准备数据集
Return:
x_data:样本的属性特征
y_label:样本属性特征所对应的标签
"""
def establish_data():
# np.random.seed(1) # 可根据需要是否选择随机种子
x_data = np.concatenate((np.add(np.random.randn(50, 2), [1.5, 1.5]),
np.subtract(np.random.randn(50, 2), [1.5, 1.5])),
axis = 0) # random随机生成数据,+ -1.5达到不同类别数据分隔的目的
y_label = np.concatenate((np.zeros([50]), np.ones([50])), axis = 0) # concatenate合并数据集
return x_data. y_label
Распределение после визуализации данных выглядит следующим образом:
На приведенном выше рисунке мы видим приблизительное распределение данных и можем разделить два типа данных прямой линией. Здесь мы предполагаем, что вход сигмовидной функции обозначен как,Такразделить данные. Среди них, чтобы отразить пересечение прямой, будемкак фиксированное значение 1,является первым атрибутом набора данных,является вторым атрибутом набора данных. Еще z=0, тогда получается общее выражение прямой.
Для этого уравнения то, что мы знаем, является выборочными данными, то есть абсцисса равна, ордината, представляющий два свойства выборки. и неизвестный параметр, который является коэффициентом регрессии (оптимальным параметром), который нам нужно задать, а также параметром модели, который необходимо обучить алгоритму градиентного восхождения.
Прежде чем приступить к обучению параметров модели, мы итеративно обновляемСнова переместите формулу, чтобы увидеть:
который:
Мы знаем, что для формулы суммирования мы можем преобразовать ее в матрицу или вектор для ее представления, что также является операцией векторизации, такой какможет быть преобразован в. Следовательно, для приведенной выше формулы мы также можем ее векторизовать и получить следующие результаты:
Давайте еще раз объясним приведенную выше формулу.Например, у нас есть 100 выборок данных, каждая выборка содержит 2 атрибута, тогда x в это время представляет весь набор выборок, а его,так,и, поэтому форма, полученная после умножения двух,, именно так, как требуетсяРазмеры векторов одинаковы.
В соответствии с результатом приведенной выше векторизации мы определяемgradient_ascent
метод для достижения этой функции через код.
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: Sigmoid函数
Parameters:
in_data: sigmoid处理的输入数据
Return:
sigmoid_result:sigmoid函数处理之后的结果
"""
def sigmoid(in_data):
return 1 / (1 + np.exp(-in_data))
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: Logistic回归的核心方法,主要使用到了梯度上升算法
Parameters:
x_data:样本集的属性特征
y_label:样本集的标签
Return:
weights: 模型训练完成之后的w参数
"""
def gradient_ascent(x_data, y_label):
x_data, y_label = np.mat(x_data), np.mat(y_label).T # 转换成矩阵形式,方便操作
data_number, attr_number = x_data.shape # 获取样本数量以及属性特征的数量
learning_rate, max_iters, weights = 0.001, 500, np.ones([attr_number, 1]) # 一些超参数和参数的初始化
loss_list = list()
for each_iter in range(max_iters): # 更新迭代max_iters次
sigmoid_result = sigmoid(np.matmul(x_data, weights)) # sigmoid处理 x*w
difference = y_label - sigmoid_result # 计算损失值
weights = weights + learning_rate * np.matmul(x_data.T, difference) # 更新权重w向量
loss = np.matmul(y_label.T, np.log(sigmoid_result)) + np.matmul((1 - y_label).T, np.log(1 - sigmoid_result))
loss_list.append(loss.tolist()[0][0])
return weights.getA(), loss_list
После получения окончательных параметров обучения модели результаты можно визуализировать, чтобы интуитивно понять результаты классификации логистической регрессии. Для этого определитеshow_result
способ визуализации результатов:
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: 可视化分类结果,也就是Logistic回归的可视化
Parameters:
x_data:样本集的属性特征
y_label:样本集的标签
weights:模型所需要的参数,也就是权重
"""
def show_result(x_data, y_label, weights):
from matplotlib import pyplot as plt
w_1, w_2, w_3 = weights[0][0], weights[1][0], weights[2][0] # 获取权重参数
min_x_1, min_x_2 = np.min(x_data, axis = 0)[:-1] # 获取属性特征的最小值
max_x_1, max_x_2 = np.max(x_data, axis = 0)[:-1] # 获取属性特征的最大值
line_x_1 = np.linspace(min_x_1 - 0.2, max_x_1 + 0.2, 1000) # 决策直线的横坐标
line_x_2 = (-w_3 - w_1 * line_x_1) / w_2 # 决策直线的纵坐标
plt.scatter(x_data[:, 0], x_data[:, 1], c = y_label) # 绘制数据的散点图
plt.plot(line_x_1, line_x_2) # 绘制分类的决策直线
Результаты визуальной классификации следующие:
Приведенный выше рисунок в основном состоит из двух частей: одна является результатом классификации с помощью логистической регрессии, а другая представляет собой преобразование значения потерь после каждой итерации.
Судя по результатам визуализации, этот эффект классификации довольно хорош, в основном все точки данных могут быть правильно классифицированы, читатели могут решить, использовать ли случайные начальные числа в соответствии со своими потребностями, чтобы наблюдать эффект классификации различных наборов данных.
Из второго рисунка видно, что в процессе обучения с помощью Логистической регрессии значение функции потерь увеличивается. И мы также можем обнаружить, что его увеличивающийся наклон постепенно уменьшается, особенно на первых нескольких итерациях, это явление особенно очевидно. Когда значение функции потерь увеличивается до определенного уровня, в это время оно в основном достигает насыщения, то есть процесс классификации в основном завершается.
Приведенный выше рисунок представляет собой визуализацию значения функции потерь, и мы также можем наблюдать эту тенденцию по ее конкретному значению после каждой итерации:
Всего итераций 500, всего выводится значений потерь 500. Начальное значение потерь больше 300. После каждой итерации значение потерь постепенно увеличивается, а скорость роста продолжает уменьшаться. значение потери остается на уровне около 3, чтобы достичь насыщения. Это эффект алгоритма градиентного восхождения, то есть чем меньше значение нашей функции потерь, тем более очевиден эффект нашей оптимизации градиентного восхождения.
Полный код:
import numpy as np
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: 通过NumPy准备数据集
Return:
x_data:样本的属性特征
y_label:样本属性特征所对应的标签
"""
def establish_data():
# np.random.seed(1)
x_data = np.concatenate((np.add(np.random.randn(50, 2), [1.5, 1.5]),
np.subtract(np.random.randn(50, 2), [1.5, 1.5])),
axis = 0) # random随机生成数据,+ -1.5达到不同类别数据分隔的目的
x_data = np.concatenate((x_data, np.ones([100, 1])), axis = 1)
y_label = np.concatenate((np.zeros([50]), np.ones([50])), axis = 0) # concatenate合并数据集
return x_data, y_label
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: Sigmoid函数
Parameters:
in_data: sigmoid处理的输入数据
Return:
sigmoid_result:sigmoid函数处理之后的结果
"""
def sigmoid(in_data):
return 1 / (1 + np.exp(-in_data))
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: Logistic回归的核心方法,主要使用到了梯度上升算法
Parameters:
x_data:样本集的属性特征
y_label:样本集的标签
Return:
weights: 模型训练完成之后的w参数
"""
def gradient_ascent(x_data, y_label):
x_data, y_label = np.mat(x_data), np.mat(y_label).T # 转换成矩阵形式,方便操作
data_number, attr_number = x_data.shape # 获取样本数量以及属性特征的数量
learning_rate, max_iters, weights = 0.001, 500, np.ones([attr_number, 1]) # 一些超参数和参数的初始化
loss_list = list()
for each_iter in range(max_iters): # 更新迭代max_iters次
sigmoid_result = sigmoid(np.matmul(x_data, weights)) # sigmoid处理 x*w
difference = y_label - sigmoid_result # 计算损失值
weights = weights + learning_rate * np.matmul(x_data.T, difference) # 更新权重w向量
loss = np.matmul(y_label.T, np.log(sigmoid_result)) + np.matmul((1 - y_label).T, np.log(1 - sigmoid_result))
loss_list.append(loss.tolist()[0][0])
return weights.getA(), loss_list
"""
Author: Taoye
微信公众号: 玩世不恭的Coder
Explain: 可视化分类结果,也就是Logistic回归的可视化
Parameters:
x_data:样本集的属性特征
y_label:样本集的标签
weights:模型所需要的参数,也就是权重
"""
def show_result(x_data, y_label, weights):
from matplotlib import pyplot as plt
w_1, w_2, w_3 = weights[0][0], weights[1][0], weights[2][0] # 获取权重参数
min_x_1, min_x_2 = np.min(x_data, axis = 0)[:-1] # 获取属性特征的最小值
max_x_1, max_x_2 = np.max(x_data, axis = 0)[:-1] # 获取属性特征的最大值
line_x_1 = np.linspace(min_x_1 - 0.2, max_x_1 + 0.2, 1000) # 决策直线的横坐标
line_x_2 = (-w_3 - w_1 * line_x_1) / w_2 # 决策直线的纵坐标
plt.scatter(x_data[:, 0], x_data[:, 1], c = y_label) # 绘制数据的散点图
plt.plot(line_x_1, line_x_2) # 绘制分类的决策直线
if __name__ == "__main__":
x_data, y_label = establish_data()
weights, loss_list = gradient_ascent(x_data, y_label)
show_result(x_data, y_label, weights)
# from matplotlib import pyplot as plt
# plt.plot(np.arange(len(loss_result)), loss_list)
Вышеизложенное - это все содержание логистической регрессии в этой статье.Подведем итоги процесса реализации логистической регрессии:
Во-первых, получить функцию потерь логистической регрессии посредством анализа и вывода.(используя метод максимального правдоподобия):
Во-вторых, чтобыиРезультат после внутреннего продукта отображается в диапазоне от 0 до 1, чтобы отразить характеристики вероятности Мы вводим сигмовидную функцию для обработки результата внутреннего продукта:
После введения сигмоидальной функции функция потерь упрощается, чтобы получить:
Наконец, поскольку нам необходимо постоянноПараметры обновляются итеративно с помощью алгоритма градиентного восхождения, поэтому нам нужноВывод осуществляется, и результат вывода следующий:
Таким образом, мы можем передать эту пару значений градиентаПараметры оптимизируются поэтапно, и метод оптимизации в основном заключается в алгоритме градиентного восхождения:
ВерноОбновите каждый элемент внутри вектора:
Когда количество итераций достигает определенного уровня, последняя итерация обновления получаетВектор - это результат параметра, который мы получаем.В соответствии с параметром может быть построена модель для разделения набора данных, тем самым реализуя классификацию данных.
Логистическая регрессия в основном использует алгоритм градиентного восхождения, В реальном боевом процессе в приведенном выше случае наш случайно сгенерированный набор выборочных данных не особенно велик, поэтому скорость обучения довольно высока. Но если предположить, что у нас есть большое количество обучающих выборок, эффективность обучения в это время относительно низкая. В это время может потребоваться оптимизация алгоритма градиентного восхождения, и обычно используемый метод для этой части оптимизации заключается в использованииАлгоритм стохастического градиентного восхождения, из-за нехватки места и времени у нас будет возможность вернуться к печени позже.
Это девятая статья в цикле машинного обучения рукопожатий, и он почти подходит к концу.Предварительный план - закончить его на этой неделе, потому что еще много задач, которые еще не начаты. Думая об этом, Глаза Таоэ без сознания. . .
Конечно, и у моей жизни есть предел, и у моих знаний нет предела. Обучение само по себе — бесконечный процесс. Алгоритмы машинного обучения и задействованные знания — это лишь верхушка айсберга в этой области. Самое главное — сохранять позитивное и предприимчивое сердце.
Я Taoye, я люблю учиться, делиться и люблю различные технологии. В свободное время я люблю играть в шахматы, слушать музыку и говорить об анимации. Я надеюсь использовать это для записи моего собственного процесса роста и жизни. Я также надеюсь, что смогу завести больше друзей-единомышленников в кругу, и приглашаю посетить WeChat Princess для получения большего количества контента:Циничный кодер.
Увидимся в следующий раз, пока~~
Использованная литература:
[1] «Машинное обучение на практике»: издательство Питера Харрингтона «Народная почта и телекоммуникации».
[2] «Статистические методы обучения»: Li Hang, второе издание, издательство Университета Цинхуа.
Рекомендуемое чтение
«Машинное обучение в действии» — рассказ о линейной регрессии.
«Машинное обучение в действии» — байесовский диалект
«Машинное обучение в действии» — одноклассница спросила Таое, как следует играть KNN, чтобы пройти уровень.
«Машинное обучение в действии» — тот, кто понимает, понимает, а тот, кто не понимает, понимает. Нелинейные машины опорных векторов
«Машинное обучение в действии» — друзья, приходите и играйте, дерево решений
«Машинное обучение в действии» — Taoye расскажет, что за «призрак» представляет собой дерево решений
«Машинное обучение в действии» — анализ машин опорных векторов и оптимизация SMO
«Машинное обучение в действии» — анализ машин опорных векторов, разрыв линейного SVM одной рукой
print("Привет, NumPy!")
Что ты не можешь сделать, сначала поешь
Таойе проникла в штаб-квартиру черной платформы, и правда, стоящая за этим, была чрезвычайно ужасающей.
«База данных Dahua» — когда выполняется оператор SQL, какие небольшие действия выполняет нижний уровень?