在上一篇博客中大概介绍了一下梯度下降法,那么梯度下降法在线性回归中如何更好的应用了,本篇博客做一介绍。
在BoBo老师的课程中,梯度下降法主要讲了2中,批量梯度下降法(Batch Gradient Descent)和随机梯度下降法(Stochastic Gradient Descent)。
一、理论介绍
1、批量梯度下降法(Batch Gradient Descent)
损失函数以及未使用向量化的方程:
进行向量化后的梯度方程:
从上图方程中可以看出,每一次求theta的值都要把所有的样本遍历一遍,所以这是为什么成为批量梯度下降法。
2、随机梯度下降法(Stonastic Gradient Descent)
损失函数不变,但计算计算梯度的方法如下:
从上图的公式可以看出,计算梯度是随机取出其中一个样本进行计算的。此外还要注意学习率的区别:
a一般取5,b为50,i_iters表示当前迭代的次数。 而这个值在批量梯度学习算法中是一个常量,一般是0.01
二、在线性回归中的应用
# -*- coding: utf-8 -*-
import numpy as np
from metrics import r2_score
class LinearRegression(object):
def __init__(self):
self.coef_ = None # 表示系数
self.intercept_ = None # 表示截距
self._theta = None # 过程计算值,不需要暴露给外面
def fit_normal(self, X_train, y_train):
"""根据训练数据集X_train, y_train, 利用正规方程进行训练Linear Regression模型,利用正规方程训练的时候就不需要对数据进行向量化"""
assert X_train