随着所学算法的增多,加之使用次数的增多,不时对之前所学的算法有新的理解。这篇博文是在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. HTTP协议详解??

    HTTP协议: HTTP (hypertext transport protocol) , 即 超 文 本 传 输 协 议 . 这 个 协 议 详 细 规 定 了 浏 览 器 和 万 维 网 服 务 ...

  2. MVC中easyui的easyui-combobox的使用

    一,如下代码,赋值 @{string json = ""; foreach (var dic in EnumCouponDic) //EnumCouponDic是一个字典类型Dic ...

  3. Python2/3 安装各类包的教程

    1.pycryptodome(pyCrypto) pyCrypto包已经失效了,需要替换为pycryptodome 有SSR直接 pip install pycryptodome 国内用 pip in ...

  4. Android Studio 于夜神模拟器进行连接

    本文使用夜神模拟器自带的nox_adb.exe在Android Studio中连接夜神模拟器. 1.在夜神模拟器的安装路径下,在bin文件夹下有个nox_adb.exe文件,复制黄色框路径如图: 2. ...

  5. RabbitMQ相关使用命令

    启动:rabbitmq-server -detached 停止:rabbitmqctl stop 状态:rabbitmqctl status 查看所有用户rabbitmqctl list_users ...

  6. Docker实战部署应用——Tomcat

    Tomcat 部署 拉取tomcat镜像 docker pull tomcat:8 创建tomcat容器 创建tomcat容器用于 Web应用,并且进行目录映射 docker run -id --na ...

  7. linux安装 rsync 客户端和相关权限认证

    [root@rsync-client-inotify /]# yum install rsync -y [root@rsync-client-inotify /]# echo "redhat ...

  8. Power Designer将数据库表结构导出到Word

     一.   安装与运行PowerDesigner(本例中用的版本是15.1) 二.“File”→“New Model”→“Categories”→“Information”→“Physical Dat ...

  9. python面向对象--类和实例的认识

    '''1.数据属性 2.函数属性''' #创建一个类class Chinese: "这是一个中国人的类" #类属性 money=4000 #注意类和对象均用点来访问自己的属性 de ...

  10. mysql数据按条件导出

    仅导出部分数据: mysqldump -hlocalhost -uuser -p --skip-triggers --no-create-info dbname tbname -w "id ...