# ML学习小笔记—Linear Regression
Regression
Output a scalar
Model:a set of function
以Linear model为例
y = b+w * $x_cp$
parameters:b,W
feature:$x_cp$
Goodness of Function
training data
Loss function:
- input:a function
- output: how bad it is
如下图,定义损失函数:

Best Function
选择出最优的损失函数:
即求出在某参数W,b下的损失函数是最小的
利用 Gradient Descent:
W与b的值在切线上每次移动一小步,直到切线斜率为0:

求切线的斜率:

存在问题:local minima\saddle point
但是由于linear regression所形成的是一个碗状形态,所以暂时不需要考虑这些。
DO better
增加参数,或者特征值
代码实现:
python:
import numpy as np
import matplotlib.pyplot as plt
x_data = [338,333,328,207,226,25,179,60,208,606]
y_data = [640,633,619,393,428,27,193,66,226,1591]
# y_data = b + w*x_data
x = np.arange(-200,-100,1) #bias
y = np.arange(-5,5,0.1) #weight
Z = np.zeros((len(x),len(y)))
X,Y = np.meshgrid(x,y) # 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值
for i in range (len(x)): # 初始化所有的代价函数
for j in range (len(y)):
b = x[i]
w = y[j]
Z[j][i] = 0
for n in range(len(x_data)):
Z[j][i] = Z[j][i]+ (y_data[n]-b-w*x_data[n])**2 # 所给定的代价函数 L(f)
Z[j][i] = Z[j][i]/len(x_data) # 平均损失
# y_data = b + w*x_data
b = -120 # initial b
w = -4 # initial w
lr = 1 # Learning rate
iteration = 100000
# Store initial Values for plotting
b_history = [b]
w_history = [w]
lr_b = 0
lr_w = 0
#Iterations
for i in range(iteration):
b_gard = 0.0
w_gard = 0.0
for n in range(len(x_data)):
b_gard = b_gard - 2.0*(y_data[n]-b-w*x_data[n])*1.0 #求b的偏微分
w_gard = w_gard - 2.0*(y_data[n]-b-w*x_data[n])*x_data[n] #求w的偏微分
lr_b =lr_b +b_gard**2 #Adagrad
lr_w =lr_w +w_gard**2
# Update parameters
b = b - lr/np.sqrt(lr_b)*b_gard
w = w - lr/np.sqrt(lr_w)*w_gard
# Store parameters for plotting
b_history.append(b)
w_history.append(w)
# plot the figure
plt.contourf(X,Y,Z,50,alpha=0.5,cmap = plt.get_cmap('jet')) #等高线
plt.plot([-188.4],[2.67],'x',ms=12,markeredgewidth=3,color='orange') #所假定的终点
plt.plot(b_history,w_history,'o-',ms=3,lw=1.5,color='black')
plt.xlim(-200,-100)
plt.ylim(-5,5)
plt.xlabel(r'$b$',fontsize=16)
plt.ylabel(r'$w$',fontsize=16)
plt.show()
# ML学习小笔记—Linear Regression的更多相关文章
- # ML学习小笔记—Gradien Descent
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 根据前面所为,当我们得到Loss方程的时候,我们希望求得最优的Loss方 ...
- # ML学习小笔记—Classification
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 通过模型可以分类输入,此时根据分类结果的正确与否会有一个Loss函数.找 ...
- # ML学习小笔记—Where does the error come from?
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 错误来自哪里? error due to "bias" ...
- 【模式识别与机器学习】——PART2 机器学习——统计学习基础——Regularized Linear Regression
来源:https://www.cnblogs.com/jianxinzhou/p/4083921.html 1. The Problem of Overfitting (1) 还是来看预测房价的这个例 ...
- 机器学习(ML)一之 Linear Regression
一.线性回归 1.模型 2.损失函数 3.优化函数-梯度下降 #!/usr/bin/env python # coding: utf-8 import torch import time # init ...
- English - 英语学习小笔记
1.It is...to do sth:做某事是.... 解析:It 是形式主语,后面一半接形容词做表语,to do sth是不定式短语作真正主语. 2.make do和make doing是两种表达 ...
- WEB学习小笔记
环境基于WIN10.IDEA最新版.JDK1.8.TOMCAT9 下面说的有错的地方希望指出,谢谢. STRUT2 1.在maven下的时候系统会系统创建一个叫做log4j的配置文件,但是到了这个版本 ...
- SQL 学习小笔记
1.FOUND_ROWS() 题目: ,; 在上边sql中使用什么选项可以使 SELECT FOUND_ROWS()忽略LIMIT子句,返回总数? *答案* : SQL_CALC_FOUND_ROWS ...
- java学习小笔记(三.socket通信)【转】
三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...
随机推荐
- Search in Rotated Sorted Array——LeetCode
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- Knockout 事件传递参数的方法
在Knockout中直接使用函数传递参数是不行的,会导致函数在初始化时就被调用. 要实现参数的传递,有2种方法: 1.方法一:使用函数包裹 <div data-bind="event: ...
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)
转载请标明出处: 首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc12-hystix-dashbd/ 本文出自方志朋的博客 最新Fin ...
- MySql开启GTID和多线程复制功能
1.修改参数 master: gtid_mode = ON --开启gtid这个必须打开 enforce-gtid-consistency = ON ...
- Docker自学纪实(三)Docker容器数据持久化
谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...
- centOS初了解--***安装node
在***买了一个VPS,用了差不多一年了,除了做FQ使用之外,同时也下载了一个node,用了express搭建了一个服务,同时我在博客园有博客,我也懒得转来转去了,直接做了一个重定向,跳转到了博客园. ...
- 【jQeury】input输入框状态,input事件,blur事件,focus事件
//输入框正在输入时 $("#test1").on('input',function(){ alert('正在输入'); }) //输入框得到焦点时 $("#test2& ...
- 利用python进行坐标提取以及筛选(文件操作的小应用)
由于目前暂时还未学习到python关于数据处理的模块方面的知识,且刚好最近朋友发来一份坐标数据文件(txt格式),让我帮他对其进行筛选, 因此利用了最近刚学过的python文件处理操作以及以前所学的基 ...
- R-描述性统计
RT...老实说这一章我是抖的...但是,加油- # 从1:100中均匀抽取size个数据,replace=TRUE指有放回抽样,数据可以重复 x = sample(1:100, size = 100 ...
- Pandas 数据读取
1.读取table # 读取普通分隔数据:read_table # 可以读取txt,csv import os os.chdir('F:/') #首先设置一下读取的路径 data1 = pd.read ...