天道酬勤,学无止境

线性回归--梯度下降【理论+案例演示】

线性回归梯度下降理论概述

在之前KNN算法中我们涉及到了权重的问题,在线性回归梯度下降的算法中,就是通过先规定0的权重,带入式子中,计算出损失值,通过公式计算出新的权重,如此反复迭代,找出最适合的步长,得出最接近真实值得权重,从而进行预测。

数据准备

链接:练习数据
提取码:lyq6

代码演示

导入jar包读取数据集

import numpy as np
import pandas as pd

data = pd.read_csv("boston.csv")
# 显示数据详细信息
data.info()

定义线性回归梯度下降算法类

class LinearRegression:
    """使用梯度下降 实现线性回归算法"""
    def __init__(self,alpha,times):
        
        """
        alpha 调控步长
        
        times 迭代计算的次数
        """
        self.alpha = alpha
        self.times = times
    
    def fit(self,X,y):
        X = np.asarray(X)
        y = np.asarray(y)
        # x.shape (100,3) 100行,3列
        # 设置初始化权重为0,w_ 行数为 X数组的列数 +1
        self.w_ = np.zeros(X.shape[1]+1)
        
        #定义损失列表
        self.loss_ = []
        
        
        # 循环迭代 times次, 计算出最终的w_ 的值
        for i in range(self.times):
            # dot 点乘
            # 将w_ 带入公式 y = w1*x1 + w2*x2 +...  + wn*xn + w0
            y_hat = np.dot(X,self.w_[1:]) + self.w_[0]
            # 计算每一个预测值与真实值之间的误差
            error = y - y_hat
            # 计算损失值 损失函数为  sum((y - y_hat)**2)/2
            self.loss_.append(np.sum(error**2) / 2)
            self.w_[0] += self.alpha * np.sum(error)
            self.w_[1:] += self.alpha * np.dot(X.T,error)
        
    def predict(self,X):
        X = np.asarray(X)
        result = self.w_[0]+np.dot(X,self.w_[1:])
        return result

在没有正太分布的情况下,测试算法

lr = LinearRegression(0.0005,20)

# data.head()
t = data.sample(len(data),random_state=0)
len(t)
train_X = t.iloc[:400,:-1]
train_y = t.iloc[:400,-1]
test_X = t.iloc[400:,:-1]
test_y = t.iloc[400:,-1]

lr.fit(train_X,train_y)
result = lr.predict(test_X)
np.mean((result - test_y)**2)
display(lr.w_)
display(lr.loss_)
  • 会发现差距有点大

用正太分布降低列欲列之间的数据差距

# 标准正太分布类 给定数据集X 求出X中每一列数据的标准正太分布
class StandardScala:
    def fit(self,X):
        X = np.asarray(X)
        self.mean_ = np.mean(X,axis=0)
        # std 均方差
        self.std_ = np.std(X,axis=0)
    
    def transform(self,X):
        return (X - self.mean_) / self.std_
    
    def fit_transform(self,X):
        self.fit(X)
        return self.transform(X)

再进行算法预测

lr = LinearRegression(0.0005,20)

# data.head()
t = data.sample(len(data),random_state=0)
len(t)
train_X = t.iloc[:400,:-1]
train_y = t.iloc[:400,-1]
test_X = t.iloc[400:,:-1]
test_y = t.iloc[400:,-1]

ss = StandardScala()
train_X = ss.fit_transform(train_X)
test_X = ss.fit_transform(test_X)

ss2 = StandardScala()
train_y = ss2.fit_transform(train_y)
test_y = ss2.fit_transform(test_y)


lr.fit(train_X,train_y)
result = lr.predict(test_X)
np.mean((result - test_y)**2)
display(lr.w_)
display(lr.loss_)

预测与真实数据的差距以图的形式可视化

import matplotlib as mpl
import matplotlib.pyplot as plt

# matplotlib 不支持中文,需要配置一下,设置一个中文字体
mpl.rcParams["font.family"] = "SimHei"
# 能够显示 中文 ,正常显示 "-"
mpl.rcParams["axes.unicode_minus"] = False
plt.figure(figsize=(10,10))
plt.plot(result,"ro-",label="预测值")
plt.plot(test_y.values,"bo--",label="真实值")
plt.xlabel("样本序号")
plt.ylabel("房价")
plt.title("线性回归 梯度下降")
plt.legend()
plt.show()

在这里插入图片描述

展示损失值变化

plt.plot(range(1,lr.times+1),lr.loss_,"bo-")

在这里插入图片描述

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Python视频教程网课编程零基础入门数据分析网络爬虫全套自学课程
    本课程为python教程大合集,包含python所有就业方向,每套课程均来自市面上主流培训机构的原版教程,价值都在数百元以上每套课程均包含:视频课程+课件+源代码重要:建议根据自己工作方向和需求,重点选择2到3套课程学精,吃透,然后在工作重要:零基础小白建议先选择零基础全能篇的一套课程学精,然后再根据自 己的需求和规划选择学习其他方向课程,学完后一定要多实践 总目录 零基础全能篇(4套课程) 实用编程技巧进价(1套课程) 数据分析与挖掘(8套课程) 办公自动化(3套课程) 机器学习与人工智能(7套课程) 开发实战篇(4套课程) 量化投资(2套课程) 网络爬虫(6套课程) 数据库操作(1套课程) python高级编程(6套课程) 注:零基础全能篇中,针对windows和liunx系统均有两套课程可供选择学习,单纯学python,哪个系统都一样,初学者只需选择自己熟悉的系统学习相应课程即可。基于liunx系统的python教程,课程里也有liunx操作的详细教学,不用担心学习时不会操作liunx系统。 因篇幅有限,以下展示的只是课程里部分内容如对python课程有更多疑问 请咨询客服 1零基础入门全能班 01 –python简介 02 第一个程序 03-python执行方式和pycharm设置 04-程序的注释和算术运算符 05 程序执行原理 06变量的使用以及类型
  • 线性回归只能用sklearn实现吗?
    前戏某房地产公司老板给了小李一份数据是关于公司不同地区不同的房价数据,数据中包括房屋的大小,面积,所处商业位置等信息。而后老板想让小李预测一下在另一个商区的某几套房子的价格大概能卖多少钱。拿到数据后的小李想这我怎么知道具体怎么做呀?不慌,下面介绍如何用Python结合回归模型具体实现。通用性理论步骤大框架: 探索性数据分析 数据清洗 建模分析 模型评估01回归理论简介利用数据统计原理,对大量统计数据进行数学处理,并确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程(函数表达式),并加以外推,用于预测今后的因变量的变化的分析方法。线性回归核心模型简介: 回归方程 2. 误差方程由于样本数据不一定全部都在一个直线或者一个平面(二维),必定存在一些误差,误差可表示为如下方程。其中Ɛ是误差项,通常用一个随机变量表示。 3. 对误差项Ɛ的要求每一个Ɛ相互独立,其服从均值为0,方差为σ2的正态分布这里均值为0,意味着Ɛ求和为0拟合直线不要求完全服从期望值为0的正态分布,但要求尽量趋近 4. 目标函数根据对误差函数服从高斯分布的假设,可推导出目标函数为如下:随后求偏导计算偏导为0时的θ。理论说明:以上是用正规方程的方法来求解优化参数θ,但是有些矩阵是不可求逆的并且求逆运算量很大。后面直接使用梯度下降法来优化参数θ。02梯度下降法机器学习目标函数,一般都是凸函数。而凸函数求解问题
  • Python_机器学习_算法篇(线性回归)
    线性回归 学习目标 掌握线性回归的实现过程应用LinearRegression或SGDRegressor实现回归预测知道回归算法的评估标准及其公式知道过拟合与欠拟合的原因以及解决方法知道岭回归的原理及与线性回归的不同之处应用Ridge实现回归预测应用joblib实现模型的保存与加载 2.1 线性回归简介 1 线性回归应用场景 房价预测 销售额度预测 贷款额度预测 举例: 2 什么是线性回归 2.1 定义与公式 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归 线性回归用矩阵表示举例 那么怎么理解呢?我们来看几个例子 期末成绩:0.7×考试成绩+0.3×平时成绩房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率 上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。 2.2 线性回归的特征与目标的关系分析 线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子。 线性关系 单变量线性关系: 多变量线性关系 注释
  • 机器学习之人工智能学习笔记:每天五分钟快速学习机器学习理论
    在订阅本专栏之前,强烈建议您看一下本篇文章,因为这是本专栏将会详细介绍的内容,内容涵盖了主流的机器学习算法以及机器学习常见的技术。 机器学习是什么 主要讲解了什么是机器学习,并且机器学习分为监督学习和无监督学习,并且简单的介绍了一下,监督学习有回归和分类,无监督学习有聚类等。 单变量线性回归算法 讲解单变量的线性回归,从代价函数开始讲,为了找到最好的代价函数,也就是模型,我们需要找到损失函数(代价函数)的最小点,要想找到损失函数的最小点我们需要使用梯度下降的算法来找到最小的那个点。 线性代数和概率论的简单回顾 讲解了机器学习中的常用线性代数和概率论的基础数学知识 多元线性回归 第一节课讲解多维特征,我们前面学习的线性回归是单特征的,就是只有一个特征x,而实际问题中都是多维特征,多维特征就是指有一个样本有多个特征,要想表示一个样本,那么我们可以使用第三章学习到的向量(有下标的都不是向量,没有下标的是向量,表示一个整体)来表示: 同理我们的参数θ也不再是一维了,而是 所以最终我们的假设函数可以表示为: 我们现在可以理解为多维特征就是多个特征,并且我们可以使用向量来表示X和θ,进而表示hθ(x),我们现在已经有了多维特征的假设函数了,我们如何找到最好的参数θ呢? 这就进入了本章课程的第二节课----多变量的梯度下降,和单变量的差不多,就是更新的θj多了。 然后第三、四节课分别为
  • 机器学习之linear regression(线性回归)
    线性回归 前言 我们需要了解分类算法解决的目标值是离散的问题;而回归算法解决的是目标值连续的问题 什么是线性回归? 定义:线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合。 一元线性回归:涉及到的变量只有一个 多元线性回归:涉及到的变量两个或两个以上 注:线性回归需要进行标准化,避免单个权重过大,影响最终结果 举例 单个特征: 试图去寻找一个k,b值满足:房子价格 = 房子面积*k+b(b为偏置,为了对于单个特征的情况更多通用) 多个特征:(房子面积、房子位置,…) 试图去寻找一个k1,k2,…,b值满足:房子价格 = 房子面积*k1 + 房子位置 *k2 +…+b 线性关系模型 试图找到一种属性和权重的组合来进行预测结果: 但是预测值总是会存在误差,所以需要利用损失函数计算误差 损失函数(最小二乘法) 如何去求模型当中的W(权重),使得损失最小? (目的是找到最小损失对应的W值) 优化 最小二乘法之正规方程(不太推荐) 缺点: 当特征过于复杂,求解速度太慢对于复杂的算法,不能使用正规方程求解(逻辑回归等) 损失函数直观图(单变量举例),如下: 最小二乘法之梯度下降(❤️ ❤️ ❤️ ) 理解:沿着这个函数下降的方向找,最后就能找到函数的最低点,然后更新W值。(不断迭代的过程) 知识储备
  • 20210516 线性回归模型案例
    # 模型需要假设,最简单的假设就是线性假设 # 每一个因子,每一个特征与预测变量的关联都是线性的 # 如何求解模型?数据量很大时,唯一比较现实的是不假设能够求得准确的解析解 # 而是用一个代价函数来衡量不准确的解与真实情况的差距 # 用暴力搜索的办法可以找到参数,更好的办法叫做梯度优化 # 不要小看线性假设 # 在什么都不知道的情况下,可以先用线性回归进行尝试,判断是否存在能够使用的因子; # 什么叫回归?从一种特征预测另一种特征的方法; # 回归特指预测的特征是一组连续的实数,比如价格 # 是从不正确到正确的过程 # 洞见:从模型中提取和预测相关的内容 # 模型详解 # 引入房价数据集 1-1 import numpy as np import pandas as pd import matplotlib.pyplot as plt from IPython.display import Image import warnings warnings.filterwarnings('ignore') data = pd.read_csv('train.csv') print(data.shape,data.shape) # --> (1460,81) (1460,81) print(data.head()) # --> # 返回一个 5 rows x 81 columns
  • 线性回归分析-回归算法
    线性回归分析-回归算法 1 回归算法   机器学习中监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。回归算法用于目标是连续的,在指定区间内可以是任意一个数值,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。   首先举个房价的例子,房子的面积和房子的价格有着明显的关系,那么在坐标系中可以看到这些点:         如果那么通过一条直线把这个关系描述出来,叫线性关系      如果那么通过一条曲线把这个关系描述出来,叫非线性关系      其实回归的目的就是建立一个回归方程(函数)用来预测目标值,回归的求解就是求这个回归方程的回归系数。 2 回归算法之线性回归   线性回归的定义是:目标值预期是输入变量的线性组合。线性回归通过一个或多个自变量与因变量之间进行建模的回归分析。其特点是一个或多个称之为回归系数的模型参数的线性组合。   一元线性回归:涉及到的变量只有一个。   多元线性回归:涉及到的变量两个或两个以上。      线性模型中的向量W值,客观的表达了各属性在预测中的重要性,对于这种“多特征预测”也就是(多元线性回归),那么线性回归就是在这个基础上得到这些W的值,然后以这些值来建立模型,预测测试数据
  • 【机器学习笔记day22】4.2. 线性回归案例分析+波士顿房价预测
    文章目录 4.2. 线性回归案例分析线性回归案例分析波士顿房价预测 4.2. 线性回归案例分析 线性回归案例分析 波士顿房价预测 使用scikit-learn中内置的回归模型对“美国波士顿房价”数据进行预测。对于一些比赛数据,可以从kaggle官网上获取,网址:https://www.kaggle.com/datasets 1.美国波士顿地区房价数据描述 from sklearn.datasets import load_boston boston = load_boston() print boston.DESCR 2.波士顿地区房价数据分割 from sklearn.cross_validation import train_test_split import numpy as np X = boston.data y = boston.target X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=33,test_size = 0.25) 3.训练与测试数据标准化处理 from sklearn.preprocessing import StandardScaler ss_X = StandardScaler() ss_y = StandardScaler() X_train = ss_X.fit
  • 机器学习 线性回归----Sklearn & fit方法(多种梯度下降方法)
    文章目录 机器学习 线性回归一、一元线性回归算法1.回归的理解2.回归应用3.线性回归(1)利用Sklearn做线性回归的预测(2)例:预测一组数据中当输入为12 对应输出的值。 4.线性回归拟合原理(fit方法)(1)损失函数(2)梯度下降法(3)梯度下降的分类1>“Batch” Gradient Descent 批梯度下降2>“Stochastic” Gradient Descent 随机梯度下降3>“Mini-Batch” Gradient Descent “Mini-Batch”梯度下降 二、多元线性回归算法1.多元梯度下降法2.多元批梯度下降例3.三种梯度下降总结(1)随机梯度下降(2)Mini-batch梯度算法优化(3)多项式回归1>不同维度绘制的图形:2>对于已知数据进行多项式拟合:心电波形的绘制3>保险保费的多元线性回归模型案例 三、线性回归总结 机器学习 线性回归 一、一元线性回归算法 1.回归的理解 大自然让我们回归到一定的区间范围之内;反过来说就是,有一个平均的水平,可以让突出的事物能向他靠拢。 回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的。 Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸。Galton在大量对象上应用了回归分析
  • 最小二乘法
    参考链接 最小二乘法中的**“二乘”本质上是平方**的意思,也可以叫最小平方法。其目的就是通过最小化误差的平方和,使得拟合对象无限接近目标对象。换句话说,最小二乘法定义了一种函数的拟合标准,其目标是最小化误差的平方和。 注意,同一组数据,选择不同的f(x),通过最小二乘法可以得到不一样的拟合曲线 什么是最小二乘法 最小二乘法:所选择的回归模型应该使所有观察值的残差平方和(即采用平方损失函数)达到最小 一、核心思想 求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小: yi:观测值就是我们的多组样本, y^:理论值,是假设拟合函数。 E:目标函数,也是在机器学习中常说的损失函数 我们的目标是得到使目标函数最小化时候的参数。 所谓最小二乘,其实也可以叫做最小平方和,其目的就是通过最小化误差的平方和,使得拟合对象无限接近目标对象。换句话说,最小二乘法定义了一种函数的拟合标准 在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线的欧氏距离之和最小。 最小二乘法可以解释为什么多次测量取算术平均的结果就是真值 最小二乘法的求解 参考链接 1.模型写成矩阵形式,然后采集数据点,最小二乘法的目标是获得自变量间的关系——即系数W和噪声 注意:采集到的数据点有n个,但是对于每一个数据点有p个维度对它进行描述,比如说,一个人有年龄和收入两个维度等
  • 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究
    引言: 最近开始学习“机器学习”,早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程。今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子加深学生的印象。 视频链接(bilibili):李宏毅机器学习(2017) 另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML-Notes) 所以,接下来我的笔记只记录一些我自己的总结和听课当时的困惑,如果有能够帮我解答的朋友也请多多指教。 1、回归问题的应用 回归问题因为主要输出的是数字,所以可以有以下应用: 股票市场预测:输入历史股票数据,预测第二天大盘点位自动驾驶:输出的是方向盘应该转动的角度推荐系统:输出购买者购买某商品或阅读某文章的可能性 2、解决回归问题需要了解的一些概念 以宝可梦训练后的CP值(战斗力数值)预测为例,y=b+wxcp这组线性函数就是模型(model),xi 是特征(feature),wi 是权重(weight),b是偏差(bias) 3、宝可梦cp预测项目的分析步骤 根据数据选择模型:选择线性模型评估模型中函数的好坏:根据10只宝可梦的训练数据计算出估测误差loss function(如图3)选出最好的函数:即第二步中可以使得loss function中数值最小的函数。这里李老师推荐方法为gradient descent(梯度下降法)
  • 机器学习-使用批次梯度下降的线性回归(Machine learning - Linear regression using batch gradient descent)
    问题 我正在尝试对具有单个功能和多个训练示例( m )的数据集实施批次梯度下降。 当我尝试使用正态方程式时,我得到了正确的答案,但下面的代码给出了错误的答案,下面的代码在MATLAB中执行批量梯度下降。 function [theta] = gradientDescent(X, y, theta, alpha, iterations) m = length(y); delta=zeros(2,1); for iter =1:1:iterations for i=1:1:m delta(1,1)= delta(1,1)+( X(i,:)*theta - y(i,1)) ; delta(2,1)=delta(2,1)+ (( X(i,:)*theta - y(i,1))*X(i,2)) ; end theta= theta-( delta*(alpha/m) ); computeCost(X,y,theta) end end y是具有目标值的向量, X是矩阵,其中第一列填充为1,第二列填充为值(变量)。 我已经使用矢量化实现了这一点,即 theta = theta - (alpha/m)*delta ...,其中delta是2元素列向量,初始化为零。 成本函数J(Theta)为1/(2m)*(sum from i=1 to m [(h(theta)-y)^2]) 。 回答1
  • ML算法基础——回归算法-线性回归分析
    文章目录 1.回归问题1.1 线性模型1.2 线性回归1.3 损失函数(误差大小)1.4 sklearn线性回归正规方程、梯度下降API1.5 波士顿房价数据案例分析1.6 回归性能评估1.7 LinearRegression与SGDRegressor评估 2.过拟合与欠拟合2.1 概念2.2 欠拟合原因以及解决办法2.3 过拟合原因以及解决办法2.4 L2正则化2.5 带有正则化的线性回归-Ridge2.6 LinearRegression与Ridge对比 1.回归问题 1.1 线性模型 试图学得一个通过属性的线性组合来进行预测的函数: f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_{1}x_{1}+w_{2}x_{2}+...+w_{d}x_{d}+b f(x)=w1​x1​+w2​x2​+...+wd​xd​+b w为权重,b称为偏置项,可以理解为 w 0 ∗ 1 w_{0}\ast1 w0​∗1 1.2 线性回归 定义:线性回归通过一个或者多个自变量与因变量之问之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合 一元线性回归:涉及到的变量只有一个多元线性回归:涉及到的变量两个或两个以上 通用公式: h ( w ) = w 0 + w 1 x 1 + w 2 x 2 + . . .
  • 吴恩达机器学习--学习笔记
    1. Introduction 1.1 Welcome 如今机器学习被大规模应用于: 数据挖掘(网站点击,医学记录,生物学,工程)一些无法通过编程实现的功能(自动驾驶,手写识别,NLP,CV)self-customizing programs(各种网站的推荐系统)辅助理解人脑 这是一个快速发展的领域,我看好 1.2 What is machine learning 常用的机器学习包括监督学习算法和无监督学习算法。 此外还有增强学习和推荐系统。 1.3 Supervised Learning 监督学习的样本是带有标签的(即我们知道预测所对应的真实值是多少)。 1.4 Unsupervised Learning 无监督学习的样本是没有标签的(即我们不知道真实值)。 2. Linear Regression with one variable 2.1 Model Representation h = theta`x 2.2 Cost Function 线性回归的J采用了平方误差公式(squared error function) 2.3 Cost Function - Introduce I 代价函数J衡量了训练样本的预测值与真实值之间的整体误差。当拟合的越差的时候,J越大,也就是代价越高。那么通过找到令J最小的theta,也就找到了对训练样本集最好的拟合。 2.4 Cost
  • 深度学习01-(深度学习概述、感知机、神经网络、损失函数与梯度下降、反向传播算法、卷积神经网络理论)
    深度学习-01 深度学习-01深度学习概述引入人工智能划时代事件深度学习巨大影响 深度学习什么是深度学习深度神经网络深度学习与机器学习的关系 深度学习的特点深度学习的优点深度学习的缺点为什么要学习深度学习 深度学习的应用深度学习发展史深度网络进化过程 小结 感知机与神经网络感知机什么是感知机感知机的功能实现逻辑和实现逻辑或 如何实现感知机实现逻辑和实现逻辑或 感知机的缺陷多层感知机多层感知机解决异或门实现 神经网络什么是神经网络神经网络的功能通用近似定理深层网络的优点 激活函数什么是激活函数为什么使用激活函数常见的激活函数阶跃函数sigmoid函数tanh双曲正切函数ReLU(Rectified Linear Units,修正线性单元)Softmax 小结 损失函数与梯度下降损失函数什么是损失函数损失函数的作用常用的损失函数均方误差损失函数交叉熵 梯度下降什么是梯度下降梯度下降导数与偏导数导数偏导数 学习率梯度递减训练法则梯度下降算法批量梯度下降随机梯度下降小批量梯度下降几种梯度下降算法收敛比较 小结 反向传播算法什么是正向传播网络什么是反向传播为什么需要反向传播反向传播算法及简史图解反向传播反向传播计算链式求导法则案例1:通过反向传播计算偏导数小结 卷积神经网络卷积函数什么是卷积离散卷积与多维卷积生活中的卷积
  • 【ML模型推导】- 线性回归教程学习
    线性回归 0.数据集和目标 1.模型 2.策略 3.算法(模型求解) 正规方程法梯度下降法 4 广义线性模型 学习过程主要顺着 周志华《机器学习》第三章线性模型 内容,本次线性回归模型总结按照 “模型 + 策略 + 算法 ” 的统计学习三要素整理。 0. 数据集和目标 训练集假设m个样本,每个样本n个特征/属性,每个样本包含一个标记y。 表示为: 其中, 代表第Xj(i) 代表第i个样本的第 j 个特征 模型的目标为:对于一个新的样本,给定特征 可以给出它对应的Yk(在回归模型中,Yk是一个连续值) 1. 模型 针对每个样本: f(x) = W1X1+W2X2+…+WnXn+b 其中,W,b为模型参数,X为每一个样本的特征值 线性模型试图学得一个通过特征的线性组合来进行预测的函数 为了方面操作,简化为矩阵形式: 其中: 所以: 即为针对m个输入样本的预测值 2. 策略 最小二乘法,均方误差作为损失函数 矩阵形式: 最小二乘法:选择未知参数,使得理论值与观测值之差的平方和达到最小 所以最优参数 3. 算法(模型求解) 算法是指学习模型参数的具体计算方法 求解最小二乘问题,可以采用 正规方程法和迭代法(梯度下降法是迭代法的一种,可以用于求解线性和非线性最小二乘问题。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法) (TODO1:进一步学习数值优化算法,迭代法) 3.1
  • 02_利用numpy解决线性回归问题
    本篇文章讲解了机器学习中较为简单的线性回归算法,虽然很多细节没有涉及到,例如噪声的处理和正则化问题、方差和偏差问题、多元特征回归…… 但是本篇文章的核心目的还是想让大家能够利用numpy实现线性回归模型,从最后的代码中可以看出,利用numpy我们就是在把前面的各种数学语言一个一个实现,求误差、求偏导、求梯度,这还只是最简单的回归问题,如果更复杂呢?我们也这样,怕是能让你秃头。 也因此,我们不得不引出我们接下来要讲的框架,他有什么好处,他的好处就是把我们上面的是三个函数封装好了,你需要做的仅仅只是调个函数,传个参数即可。02_利用numpy解决线性回归问题目录一、引言二、线性回归简单介绍2.1 线性回归三要素2.2 损失函数2.3 梯度下降三、解决线性回归问题的五个步骤四、利用Numpy实战解决线性回归问题五、总结一、引言上一篇文章我们说到了torch和tf的功能,以及两者的区别。但是为了更好地去让大家体会框架的强大,我们首先不使用框架实现一个小demo。由于只是引入,因此,我们在这里使用一个比较简单的线性回归算法来讲解。穿插一个广告,如果你对统计机器学习不是特别熟悉的话,建议你也简单看看,不说学会那些数学公式的推导,但是得知道那些算法是干啥的,我这里也有全套的视频和资料,链接在此:https://www.cnblogs.com/nickchen121/p/11686958
  • 机器学习基础——梯度下降法
    在之前的文章当中,我们一起推导了线性回归的公式,今天我们继续来学习上次没有结束的内容。上次我们推导完了公式的时候,曾经说过由于有许多的问题,比如最主要的复杂度问题。随着样本和特征数量的增大,通过公式求解的时间会急剧增大,并且如果特征为空,还会出现公式无法计算的情况。所以和直接公式求解相比,实际当中更倾向于使用另外一种方法来代替,它就是今天这篇文章的主角——梯度下降法。梯度下降法可以说是机器学习和深度学习当中最重要的方法,可以说是没有之一。尤其是在深度学习当中,几乎清一色所有的神经网络都是使用梯度下降法来训练的。那么,梯度下降法究竟是一种什么样的方法呢,让我们先从梯度的定义开始。 梯度的定义 我们先来看看维基百科当中的定义:梯度(gradient)是一种关于多元导数的概括。平常的一元(单变量)函数的导数是标量值函数,而多元函数的梯度是向量值函数。多元可微函数在点上的梯度,是以在上的偏导数为分量的向量。这句话很精炼,但是不一定容易理解,我们一点一点来看。我们之前高中学过导数,但是高中时候计算的求导往往针对的是一元函数。也就是说只有一个变量x,求导的结果是一个具体的值,它是一个标量。而多元函数在某个点求导的结果是一个向量,n元函数的求导的结果分量就是n,导数的每个分量是对应的变量在该点的偏导数。这些偏导数组成的向量,就是这个函数在该点的梯度。那么,根据上面的定义,我们可以明确一点
  • 逻辑回归实战,一文把理论和实践结合
    背景 解决的二分类问题,如手写识别0-9 目标:逻辑回归返回一个概率值[0-1] 逻辑回归的特点:快、效果好、容易实时在线预测、利于分析 方法:定义一个条件概率,如p(Y|X)相当于用模型来捕获输入X和输出Y之间的关系,如 推导 对于二分类问题,由于p(Y|X)的值域在[-∞,+∞],为了令其至于范围压缩到[-1,1]之间,故推荐使用sigmoid函数,故得两式子合并,可得 关于使用sigmoid 前面说道使用该函数是由于其定义域是[-∞,+∞],且值域是[-1,1]故选择该函数,这样的说法其实并不能服众,毕竟probit也具有相同的性质。事实上选用sigmoid的意义在于,指数族分布exponential family所具有的最佳(即maximum entropy 最大熵)性质 熵原本是信息论中的概念,用在概率分布上可以表示这个分布中所包含的不确定度,熵越大不确定度越大。所以大家可以想象到,均匀分布熵最大,因为基本新数据是任何值的概率都均等。 而我们现在关心的是,给定某些假设之后,熵最大的分布。也就是说这个分布应该在满足我假设的前提下越均匀越好。比如大家熟知的正态分布,正是假设已知mean和variance后熵最大的分布。此时回过来看logistic regression,这里假设了什么呢? 在建模预测 Y|X,并认为 Y|X 服从贝努力分布(bernoulli
  • 3. 机器学习模型
    机器学习模型 学习笔记 - 杨正洪;郭良越;刘玮.人工智能与大数据技术导论 清华大学出版社.Kindle版本. 机器学习模型概念 下面通过一个具体的案例来认识机器学习中的重要概念——模型,了解模型的作用及它是怎样运作的。表5-1是从美国城市餐厅小费数据集中节选的数据,我们通过图5-1的关系图来观察小费与餐费之间的关系。 用x轴表示餐费,y轴表示小费,通过观察散点图可以看出,y随着x的增加而增加,并且近似成比例增加。熟悉美国小费制度的读者应该知道,小费通常和餐费成正比,根据顾客对用餐服务的满意程度,金额一般为餐费的10%~20%。因此,我们考虑用线性表达式来刻画x与y之间的关系: y=a0+a1*x  (1) 上述公式就是最简单的线性回归(LinearRegression)模型。因为只有一个自变量x,所以叫作一元线性回归。公式(1)所表述的y与x之间的关系就是这个任务中我们所用的模型。对于模型的概念,我们可以这样理解,它刻画了因变量y和自变量x之间的客观关系,即y与x之间存在这样一种形式的客观规律在约束。具 体来说,y约等于某个数乘以x,再加上另一个数。 使用这个模型,就意味着我们认定样本数据服从这样一个规律。换句话说,模型是对处理变量关系的某种假设。在机器学习中,a1叫作权重(weight),a0叫作偏差(bias),x是一个特征(feature),而y是预测的标签