0A03 无监督学习:梯度下降

---恢复内容开始---

梯度下降的定义:

  梯度下降是一种因为计算机储存及能力有限,采取逐步逼近,迭代求解的方法.

梯度下降的步骤:

  任取一点作为起始点

  查看在当前点向那个方向移动能得到最小的z值,并向该方向移动.

  重复该步骤,直到无法找到更小的z值,此时认为达到最低点.

几个基础的算法概念:

  步长:是每一次梯度下降是向目标前行的长度.

  假设函数:由特征产生目标变量的函数.

  损失函数:可以想象成给任意参数组合打分的函数.

优缺点:

  该方法比OLS求解要快,但是有时候梯度下降无法找到全局最优点.

随机梯度下降:

  是在损失函数计算时不遍历所有的样本,采用单一或一小批样本的方差和作为损失值.

和普通梯度下降的区别:

  迭代次数增加了,因为随机梯度下降的速度快很多.

  比普通梯度下降更有可能找到全局最优借.

实战:

一些常用的参数:

  penalty:损失函数惩罚项  请回顾线性回归的惩罚项的概念

  loss:损失函数类型    对训练效果和速度有所影响

  max_iter:        最大迭代次数

  shuffle:         完成一轮迭代后是否需要洗牌

  n_job:          cpu的数量

  learning_rate:      步长策略,(平均,先大后小等等的类型)

  eta0:          初始步长

  fit_intercept:       模型是否有截距

from sklearn.linear_model import SGDRegressor
from sklearn.linear_model import SGDClassifier
from random import randint
import numpy as np
import pandas as pd

# 随机梯度回归
def SGDregressor():
    X = [[0,0],[2,1],[5,4]]     # 样本特征
    y = [0,2,2]                 # 样本目标分类

    reg = SGDRegressor(penalty="l2",max_iter=10000,tol=100)
    reg.fit(X,y)

    reg.predict([[4,3]])
    print(reg.coef_)            # 查看回归参数
    print(reg.intercept_)       # 查看截据

# 随机梯度下降
def SGDclassifier():
    X = [[0,0],[2,1],[5,4]]     # 样本特征
    y = [0,2,2]                 # 样本目标分类

    clf = SGDClassifier(penalty="l2",max_iter=1000,tol=1e-3)   # 初始化分类器
    clf.fit(X,y)                        # 训练

    print(clf.predict([[4,3]]))                # 预测

# 增量学习
def partial_fit():
    reg2 = SGDRegressor(loss="squared_loss",penalty="None",tol=1e-15)
    X = np.linspace(0,1,50)                             # 50个x值
    y = X/2 +0.3 + np.random.normal(0,0.15,len(X))      # 用y=x/2+0.3加随机数生成样本
    X = X.reshape(-1,1)

    for i in range(10000):
        idx = randint(0,len(y)-1)                       # 随机选择一个样本索引
        reg2.partial_fit(X[idx:idx+10],y[idx:idx+10])   # 分部训练
    print(reg2.coef_)                                   # 查看回归参数
    print(reg2.intercept_)                              # 查看截距

增量学习就是:可以一边读数据一边学习

原文地址:https://www.cnblogs.com/liu247/p/11070060.html

时间: 2024-10-11 22:24:44

0A03 无监督学习:梯度下降的相关文章

Stanford大学机器学习公开课(二):监督学习应用与梯度下降

本课内容: 1.线性回归 2.梯度下降 3.正规方程组 监督学习:告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案 1.线性回归 问题引入:假设有一房屋销售的数据如下: 引入通用符号: m =训练样本数 x =输入变量(特征) y =输出变量(目标变量) (x,y)—一个样本 ith—第i个训练样本=(x(i),y(i)) 本例中:m:数据个数,x:房屋大小,y:价格 监督学习过程: 1) 将训练样本提供给学习算法 2) 算法生成一个输出函数(一般用h表示,成为假设) 3)

机器学习-监督学习应用:梯度下降

回归与梯度下降: 回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归,等等,这个将在后面去讲. 用一个很简单的例子来说明回归,这个例子来自很多的地方,也在很多的open source的软件中看到,比如说weka.大概就是,做一个房屋价值的评估系统,一个房屋的价值来自很多地方,比如说面积.房间的数量(几室几厅).地 段.朝向等等

【机器学习】1 监督学习应用与梯度下降

监督学习 简单来说监督学习模型如图所示 其中 x是输入变量 又叫特征向量  y是输出变量 又叫目标向量 通常的我们用(x,y)表示一个样本  而第i个样本 用(x(i),y(i))表示 h是输出函数 监督学习的任务是学习一个模型,使模型能够对任意的输入,做出很好的预测. 习惯的样本训练数目用m表示 梯度下降算法 h(x) = Θ0 +Θ1x1+...+Θixi J(Θ)= 1/2 *∑(i from 1 to m) (h(Θ)(x (i) - y(i))^2 Θ(i) := Θ(i) - α *

斯坦福大学公开课:监督学习应用,梯度下降

监督学习应用例子:以房屋大小和价格为例,本次采用47个样本. m: training examples,训练样本集 x: "input",variables/features变量,x为输入变量,在本次例子中,表示房屋大小 y: "output", variable/"target" variable,y为输出变量,在本次例子中,表示房屋价格 (x,y): training examples 表示训练样本 监督学习的流程如下(以房子为例): tra

1. 监督学习的应用与梯度下降

监督学习的应用与梯度下降 监督学习 如上图所示,监督学习:对于给定的训练集合,按照某一学习算法学习之后,得到一种好的假设(Hypotheses)用于预测新的数据. 梯度下降 已知m组数据(x1,y1)-(xm, ym),其中xi是具有n维特征的向量,此外,我们设定xi(0) =1(即截距项).我们做如下假设: h(x) = = (此为回归模型的假设模型) 对于给定的训练集合,如何选择最优的θ值(权重或参数)呢(这里的x是n+1*m维矩阵)?一个合理的方法是:至少在训练集合上,θ会使预测值h(x)

2.监督学习应用.梯度下降

// 搜索算法 --- 挨个尝试 1. 梯度下降 批梯度下降, 随机梯度下降 2. 矩阵求导方法

斯坦福大学机器学习公开课学习—2.监督学习应用·梯度下降

这节课的学习,相信一般上过统计或者运筹相关课程的同学应该都会有所了解.课上涉及的知识虽然很基础,但是也是很重要的. 在搜集了一些房价相关数据的基础上,利用线性回归算法来预测房价. 为了方便算法的训练推导,进行了很多符号的标准规定,从这当中也学到了一些知识,以后自己在进行一些算法的推导时也可学习课上的这些标准符号和推导方式. 下面给出这堂课上的一些干货. 1.机器学习算法的基本框架 2.最小二乘法——线性回归常用的代价函数,即误差平方和最小 3.参数学习算法——梯度下降算法,包含批量梯度下降和随机

第二集 监督学习的应用 梯度下降

一:线性回归: 例:上一节课的房屋大小与价格数据集 本例中:m:数据个数,x:房屋大小,y:价格 通用符号: m = 训练样本数 x = 输入变量(特征) y = 输出变量(目标变量) (x,y) – 一个样本  –第i个训练样本 = 对假设进行线性表示  h(x)=θ0+θ1*x 在线性回归的问题上大部分都会有多个输入特征,比如这个例子的输入特征可能也有房间大小,卧室数目两个特征,那么就用x1=房间大小,x2=卧室数目.则方程式就变成了: h(x)=θ0+θ1*x1+θ2*x2 为了将公式简洁

梯度下降(Gradient Descent)小结

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微积分里面,对多元函数的参数求?偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度.比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(?f/?x, ?f/?y)T,简称grad f(x,y)或者▽f(x,y).对于在点(x0,y0)的具体梯度向量就是(?f/?x0, ?f/?