Построение логарифмической вероятности как функции тета1 и тета2

Меня попросили построить логарифмическую вероятность для модели логистической регрессии как функцию тета1 и тета2, чтобы оценить, является ли она выпуклой функцией (модель имеет только два параметра, а тета — это веса каждого параметра). Насколько я понимаю, мне нужен декартовый график, каждая ось которого обозначает значения тета. Отрицательная логарифмическая вероятность задается как (в коде):

sigma = sigmoid(np.dot(x, weight))
loss = -1/size * np.sum(y * np.log(sigma)) + (1 - y) * np.log(1-sigma)

Как я могу построить эту функцию как функцию тета1 и тета2 в Python?


person AfonsoSalgadoSousa    schedule 29.11.2020    source источник


Ответы (1)


Как вы сказали, вы можете визуализировать ландшафт потерь, построив логарифмическую вероятность как функцию параметров модели. Обычный способ визуализировать это — создать контурный график. Чтобы получить хорошее решение, вы должны убедиться, что у вас есть достаточное количество образцов и что ваши веса оптимальны по сравнению с другими. отрицательное логарифмическое правдоподобие. Ниже приведен некоторый псевдокод.

# Use numpy and matplotlib.
import numpy as np
import matplotlib.pyplot as plt

# The size of the neighborhood around the point to visualize.
nbh = 0.25

# Create a mesh grid of the parameters within the specified neighborhood.
w1_space = np.linspace(weight[0]-nbh, weight[0]+nbh, 100)
w2_space = np.linspace(weight[1]-nbh, weight[1]+nbh, 100)
w1, w2 = np.meshgrid(w1_space, w2_space)

# Assuming loss is a function of the weights, 
# compute the negative log-likehood for points within the given subspace.
nlls = np.array(list(map(loss, zip(w1.flatten(), w2.flatten())))).reshape(w1.shape)

# Plot the result using matplotlib.
plt.figure()
plt.contourf(w1, w2, nlls)
plt.show()
person Melih Elibol    schedule 10.12.2020