随着所学算法的增多,加之使用次数的增多,不时对之前所学的算法有新的理解。这篇博文是在2018年4月17日再次编辑,将之前的3篇博文合并为一篇。

1.Problem and Loss Function

首先,Linear Regression是一种Supervised Learning,有input X,有输出label y。X可以是一维数据,也可以数多维的,因为我们用矩阵来计算,所以对公式和算法都没有影响。我们期望X经过一个算法hθ(X)=θTX后,得到的结果尽可能接近label y。但在初始状态下,不可能的,所以我们需要Traning Set去训练这个hθ(X)函数。而因为函数的形式是确定的,是线性函数,所以我们通过训练去学习的,其实是参数值θ。

而怎么通过Training Set去学习呢?这里就要引入Cost Function了,其概念是预测值与真实值到底差多少?公式是:

 
至于这个公式含义,可以从数学上理解认为是把每个training example的差值平方求和,也叫最小二乘法(Mean Square Error, MSE)。从数理统计角度的解释则是,假定Y的值与模型预测值之间从在一个差值ε,这个差值是服从正态分布的,即ε~N(0,σ2)。所以y~N(θTX,σ2)。而后我们对y求最大似然估计(MLE),将最大化MLE的问题,一步步化简,最后也可以得到MSE的结果(公式我不敲了...)。
 
2.Gradient Descent
下一步是梯度下降 (Gradient Descent),我觉得是machine learning里面最重要的算法之一了。求J(θ)在各个维度上的方向,即偏导数。
然后同时在n个方向上更新θ:
 
3. Batch Learning, Stochastic and Mini Batch
可以看到,在上面的算法里,是将m个training example一起计算的,m是training set的大小。也就是每更新一步,我要计算算有training example,复杂度较高。所以有两种变种算法,Stochastic,是每次计算梯度和更新θ时,只用一个training example,同样的问题就是只用一个training example随机性太大,很有可能会路径曲折浪费时间;而Mini Batch则是指定一个Batch_size,比如32,64,每次用一小批,兼顾二者。

Linear Regression and Gradient Descent的更多相关文章

  1. Linear Regression Using Gradient Descent 代码实现

    参考吴恩达<机器学习>, 进行 Octave, Python(Numpy), C++(Eigen) 的原理实现, 同时用 scikit-learn, TensorFlow, dlib 进行 ...

  2. 线性回归、梯度下降(Linear Regression、Gradient Descent)

    转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...

  3. 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent

    最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...

  4. 斯坦福机器学习视频笔记 Week1 线性回归和梯度下降 Linear Regression and Gradient Descent

    最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...

  5. Linear Regression and Gradient Descent (English version)

    1.Problem and Loss Function   Linear Regression is a Supervised Learning Algorithm with input matrix ...

  6. Logistic Regression and Gradient Descent

    Logistic Regression and Gradient Descent Logistic regression is an excellent tool to know for classi ...

  7. Logistic Regression Using Gradient Descent -- Binary Classification 代码实现

    1. 原理 Cost function Theta 2. Python # -*- coding:utf8 -*- import numpy as np import matplotlib.pyplo ...

  8. flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )

    1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最 ...

  9. machine learning (7)---normal equation相对于gradient descent而言求解linear regression问题的另一种方式

    Normal equation: 一种用来linear regression问题的求解Θ的方法,另一种可以是gradient descent 仅适用于linear regression问题的求解,对其 ...

随机推荐

  1. 实现简单的计算器(设计UI)

    要点说明: 1.一个textedit控件,其余全部是button控件,button布局方式:栅格布局(Grid layout) 2.对窗体的Title进行修改(默认是工程名) 3.在ui文件中设计的U ...

  2. js中基本数据类型与引用数据类型的本质区别

    代码 /** * 基本数据类型:string, number, boolean, null, undefined. * * 说明: * 基本数据类型的变量是保存在栈内存中的,基本数据类型的值 * 直接 ...

  3. 构建LNMP+memcached服务

    通过PHP页面实现对memcached服务器的数据操作,实现以下目标: - 为PHP安装memcache扩展 - 创建PHP页面,并编写PHP代码,实现对memcached的数据操作 环境:部署LNM ...

  4. 网络基础-IP地址

  5. Java垃圾回收【GC】机制详解

    一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此.所以,垃圾回收是必须的. 二. ...

  6. Redis复制实现原理

    摘要 我的前一篇文章<Redis 复制原理及特性>已经介绍了Redis复制相关特性,这篇文章主要在理解Redis复制相关源码的基础之上介绍Redis复制的实现原理. Redis复制实现原理 ...

  7. 创建entityManager

    1 需要persistence.xml 完全通过属性配置没成功 <persistence xmlns="http://java.sun.com/xml/ns/persistence&q ...

  8. sqlmap 基本使用步骤(二)

    post------------------------------------------------------------------1.使用 -rpython sqlmap.py -r pos ...

  9. github上拉去代码执行 npm install报错code:128

    npm ERR! code npm ERR! Command failed: D:\Program Files\Git\cmd\git.EXE clone --mirror -q git://gith ...

  10. Linux学习-基于CentOS7的MySQL5.7的GTID复制

    一.GTID复制简介 GTID (global transaction id)全局事务标识符,MySQL5.6版本开始支持,GTID复制不像传统的复制方式(导步复制.半同步复制)需要找到binlog和 ...