线性回归与逻辑回归

一、线性回归

问题概述

线性回归要解决的问题是给一堆样本点X(m, n)和每个点对应的函数值Y(m,1)要求找到一个线性函数 y=w1x1+w2x2+...+wnxn+b y = w 1 ∗ x 1 + w 2 ∗ x 2 + . . . + w n ∗ x n + b 使得其对原样本点的拟合度最好。拟合度最好就是每个样本点到这条直线的距离和最小,转化成数学语言就是使得误差函数 J(y^,y)=1/2(y^y)2=1/2(wTx+by)2 J ( y ^ , y ) = 1 / 2 ∗ ( y ^ − y ) 2 = 1 / 2 ∗ ( w T x + b − y ) 2 最小,选平方函数消除误差的正负情况。

公式推导及实现

令误差函数对两参数的倒数分别为0,即可得出其表达式。但最后 θ(w,b)=(XTX)1XTY θ ( w , b ) = ( X T X ) − 1 X T Y 高维矩阵的逆不易算,而且存在矩阵不可逆的情况。实现上往往采用梯度下降法: θ=θαJ(w,b)θ θ = θ − α ∂ J ( w , b ) ∂ θ ,下面做个简单的示例。首先统一样本及标签矩阵的格式如下:
image.png
样本特征矩阵是 n×m 的,其中 n 是每个样本的特征数,m是样本个数。标签y为 1×m 的行向量。按此格式生成100个样本点:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

def generate_data():
    x = np.linspace(-2, 2, 100).reshape(100, 1)
    y = -3 * x + 7 + (np.random.rand(100, 1) - 0.5)
    return x, y

x, y = generate_data()
x = x.T
y = y.T

print(x.shape,)
print(y.shape,)

((1, 100),)
((1, 100),)

拟合函数为 y=3x+7 y = − 3 ∗ x + 7 ,每个样本点加一个噪声。作图如下:

plt.figure(figsize=(12, 8))

plt.scatter(x.T, y.T, c= 'y')
plt.plot(x.T, (-3 * x + 7).T, c='b', linewidth=2)
plt.show()

接下来就用梯度下降法得到使得误差函数最小的 w,b w , b 。参数更新公式推导: J(y^,y)=1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值