回归问题
引入
优化
通过样本wx1+b、y1,wx2+b、y2等,可推测出一个(w,b)使得对于任一个xn,预估一个yn,这就是我们的目的。
叫成梯度下降的原因可能是,寻找最小值时采用导数的方法,也就是求梯度,高数中先使导数(梯度)为0时,然后再判断此点是否是极值点,最后找到最小值点。
线性回归
整个预测的取值范围是连续的。
逻辑回归
在线性回归的基础上增加了激活函数(压缩函数),例如预测值在0-1的问题。
例如ReLU函数:
R(z)=max(0,z)
分类
经典案例是MNIST数据集识别
回归问题实战
points数据集:
def computer_error_for_line_given_points(b,w,points):
totalError = 0
for i in range(0,len(points)):
x = points[i,0]
y = points[i,1]
totalError += (y - (w * x + b))**2
return totalError/ float(len(points))
def step_gradient(b_current,w_current,points,learningRate):
b_gradient = 0
w_gradient = 0
N = float(len(points))
for i in range(0,len(points)):
x = points[i, 0]
y = points[i, 1]
b_gradient += (2/N) * ( w_current * x + b_current - y)
w_gradient += (2/N) * x * ( w_current * x + b_current - y)
new_b = b_current - (learningRate * b_gradient)
new_w = w_current - (learningRate * w_gradient)
return [new_b,new_w]
优化:
def gradient_descent_ruuner(points,starting_b,starting_w,learning_rate,num_iterations):
b = starting_b
w = starting_w
for i in range(num_iterations):
b,w = step_gradient(b,w,np.array(points),learning_rate)
return [b,w]
运行结果: