机器学习笔记 (1)-线性回归模型
来源:互联网 发布:黑客帝国矩阵革命 编辑:程序博客网 时间:2024/06/06 00:13
参考资料
- 《机器学习》-周志华
- 《寒小阳机器学习讲义》-寒小阳
- 《统计学习方法》-李航
摘要
机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习又分为分类和回归两大类。线性回归模型
就属于监督学习里的回归模型
。
正文
1. 定义
- 线性回归模型
- 通过属性的线性组合进行预测的函数,即
f(x)=w1.x1+w2.x2+w3.x3+...+wn.xn+b
向量形式为:
其中
令
其中
2.线性模型的图示
3.损失函数
3.1损失函数定义
作为目标函数进行优化,使其函数值最小化。在线性模型中,损失函数为:
3.2 损失函数的图像
损失函数为一个凸函数
3.2最小化损失函数
我们模型的优化目标为最小化损失函数。要最小化损失函数,需要沿下降速度最快的方向走,使目标函数最小化。
4.梯度下降算法(GD)
- 目标函数下降最快的方向为梯度的负方向。因此梯度下降算法为沿梯度的负方向逐步的使目标函数值最小化的过程。
对应的数学表达式为:wi+1=wi−α∗dJ(w)d(w)
其中J(w)=12m∗∑mi=1{fw(xi)−yi}2 ,
则dJ(w)d(w)=1m∗∑mi=1{(fw(xi)−yi)∗xi}
2.梯度下降算法的伪代码描述:
repeat until convergence{
}
代码讲解(核心代码)
完整代码下载
# 数据加载data = np.loadtxt('linear_regression_data1.txt', delimiter=',')X = np.c_[np.ones(data.shape[0]),data[:,0]]y = np.c_[data[:,1]]# 对数据绘制散点图plt.scatter(X[:,1], y, s=30, c='r', marker='x', linewidths=1)plt.xlim(4,24)plt.xlabel('Population of City in 10,000s')plt.ylabel('Profit in $10,000s');# 计算损失函数def computeCost(X, y, theta=[[0],[0]]): m = y.size J = 0 h = X.dot(theta) J = 1.0/(2*m)*(np.sum(np.square(h-y))) return J# 梯度下降def gradientDescent(X, y, theta=[[0],[0]], alpha=0.01, num_iters=1500): m = y.size J_history = np.zeros(num_iters) for iter in np.arange(num_iters): h = X.dot(theta) theta = theta - alpha*(1.0/m)*(X.T.dot(h-y)) J_history[iter] = computeCost(X, y, theta) return(theta, J_history)# 得到模型的参数和损失theta , Cost_J = gradientDescent(X, y)
总结
线性回归-模型简单,可解释性高,在一定程度上可以防止过拟合,用途广泛,可作为各个系统的基线模型。
线性模型形式简单、易于建模。但是却蕴含着机器学习中一些重要的基本思想。许多功能更为强大的非线性模型可以在线性模型的基础上通过引入层级结构或高维映射而得。此外,由于w直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。
本章代码下载 https://github.com/yanwosky4/MLNotebookProject/tree/master/note1-LinearModel/code
邮箱: yanwosky4@gmail.com
github地址: https://github.com/yanwosky4 ,欢迎Star
阅读全文
0 0
- 机器学习笔记 (1)-线性回归模型
- 机器学习笔记(3)线性模型之线性回归
- 机器学习笔记(1)-线性回归
- 机器学习笔记_回归_3: 广义线性模型
- 机器学习笔记 - 线性模型与线形回归
- 机器学习笔记-线性回归
- 机器学习笔记:线性回归
- 机器学习与TensorFlow编程(1)线性回归模型
- 机器学习之线性回归模型
- 【机器学习】贝叶斯线性回归模型
- [机器怎么老学习]线性回归模型
- 机器学习实战(二)线性回归模型
- 机器学习实例-线性回归模型
- 机器学习之线性回归模型
- 【机器学习系列之一】线性回归模型
- <机器学习系列> 线性回归模型
- Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型)
- 机器学习实战线性回归局部加权线性回归笔记
- 单片机实验6
- 【loj6162】「美团 CodeM 初赛 Round A」身体训练
- 深入Linux内核架构之内存管理(2)
- python 魔法方法
- 习题8(8.4)
- 机器学习笔记 (1)-线性回归模型
- 函数的封装
- c语言一些常用的字符串转换函数
- git常用命令操作
- 习题8(8.5)
- Ubuntu ssh的安装和配置
- LeetCode 692. Top K Frequent Words
- 学习C#之First Project
- 从SVN导出工程,在Eclipse中没有build path或build path 灰色不可编辑