3
respostas

Erro na Avaliação do R² após otimização

Olá. Encontrei uma divergência (erro) no valor do R² em comparação ao do instrutor. Poderiam me auxiliar, por favor?

Avaliando melhor o modelo
def r_2(previstos, y):
    variancia_prevista = sum([(y_i - y_previsto) ** 2 for y_i, y_previsto in zip (y, previstos)])
    variancia_original = sum([(y_i - y.mean()) ** 2 for y_i in y])

    return 1 - variancia_prevista / variancia_original

r_2(previstos, dados['Valor'])
0.641975652487156

Quanto custa um apartamento de 72m²

np.exp(prever(np.log(72), theta1, theta0))
568778.5698688689

Regressão linear com o Gradiente Descendente

def derivada(theta0, theta1, x, y):
    dtheta0 = 0
    dtheta1 =0

    for x_i, y_i in zip(x,y):
        dtheta0 += prever(x_i, theta1, theta0) - y_i
        dtheta1 += (prever(x_i, theta1, theta0) - y_i) * x_i

    dtheta0 /= 0.5 * len(x)
    dtheta1 /= 0.5 * len(x)

    return dtheta0, theta1

def gradienteDescendente(theta0, theta1, x, y, alpha):
    dtheta0, dtheta1 = derivada(theta0, theta1, x, y)

    theta0 -= alpha * dtheta0
    theta1 -= alpha * dtheta1

    return theta0, theta1

Inicializando nossos valores iniciais aleatóriamente e executando a otimização

theta0 = random.random()
theta1 = random.random()
​
for i in range(10000):
    if i % 1000 == 0:
        previstos = prever(dados['Area'], theta1, theta0)       
        print(erro_quadratico_medio(previstos, dados['Valor']))

    theta0, theta1 = gradienteDescendente(theta0, theta1, dados['Area'], dados['Valor'], 0.01)
168.22116350027565
0.8163531768601124
0.816354065738248
0.8163540657766233
0.8163540657766248
0.8163540657766248
0.8163540657766248
0.8163540657766248
0.8163540657766248
0.8163540657766248

Avaliando com o R²
prev = prever(dados['Area'], theta1, theta0)
r_2(prev, dados['Valor'])
-3.774758283725532e-15

np.exp(prever(np.log(72), theta1, theta0))
885921.6670914496
3 respostas

No aguardo

você não se esqueceu de setar o random.seed(42) ?

Oi, Luiz.

Marquei sim. Obrigado pela ajuda de qualquer forma.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software