3分钟懂线性回归预测算法(附源码)瞅一眼,懂个概念也值得

简介: 线性回归(linear-regression)预测算法C++实现

image.png

线性回归(linear-regression)预测算法C++实现

上一期,和大家分享了K-means聚类算法的基本概念和实现要点(漏了的同学欢迎加公众号回顾),本期和大家介绍线性回归预测算法的基本概念和实现要点,它一般用以解决“使用已知样本对未知公式参数的估计”类问题。估计出公式参数后,进一步的,可以对未知的样本进行计算以预测(或者推荐)。

本文主要参照 http://hi.baidu.com/hehehehello/item/40025c33d7d9b7b9633aff87 进行的浓缩,原文的作者是:苏冉旭。

再次感谢原作者写出了如此通俗易懂的文章。

首先,来看看机器学习领域,几个相关的基本概念:
回归(regression):用已知样本对未知公式参数的估计。

线性回归(linear regression):回归的一种,回归函数是一次函数,例如:
result=f(X,Y,Z,…)=aX+bY+cZ+…+…
其中X,Y,Z是训练样本集中样本的各个维度(feature),a,b,c是模型的未知参数。

逻辑回归(logistic regression):将result归一化到[0, 1]区间,即使用一个逻辑方程将线性回归归一化。

总而言之,逻辑回归是线性回归的一种,线性回归是回归的一种。

线性回归模型是有效的

既然逻辑回归是线性回归的一种,那么我们重点就线性回归展开讨论,线性回归的预测模型虽然是一元(线性)方程,但现实中很多应用场景符合这个模型,例如商品的价格与商品的销量之间的关系。一般来说价格越贵则销量越低,价格越便宜则销量越高,于是我们就能够用
“销量=a*价格+b”这个模型来最大化商家的收益。
如何确定a和b的值呢,我们可以根据历史“价格-销售”数据,来计算最优一元模型的a和b的值。
当然,很多应用场景不能够使用线性回归模型来进行预测,例如,月份和平均气温,平均气温并不随着月份的增长呈线性增长或下降的趋势。那么,什么时候可以使用线性回归模型呢?

线性回归模型的适用场景

1)可以用于预测,也可以用于分类,用于分类问题时,需要设定阈值区间,并提前知晓阈值区间与类别的对应关系
2)只适用于线性问题,可以有多个维度(feature)

如何求解线性回归中的维度参数

在已知样本集set的时候,如果根据样本集得到result=f(X,Y,Z,…)=aX+bY+cZ+…+…中的未知参数a,b,c呢?

最小二乘法
最小二乘法适用于任意多维度的线性回归参数求解,它可求解出一组最优a,b,c解,使得对于样本集set中的每一个样本data,用result=f(X,Y,Z,…)来预测样本,预测值与实际值的方差最小。方差是我们常见的估值函数(cost function)。

梯度下降法

最小二乘法实际上只定义了估值函数是方差,真正求解a,b,c的方法是梯度下降法,这是一个枚举型的求解算法,其算法步骤如下:
1)使用随机的a0, b0, c0作为初始值
2)分别求解最优a, b, c…,对于每个维度参数的求解,步骤为(以a为例):
2.1)设定a范围的最大值与最小值
2.2)设定a计算的梯度步长(这就是它叫梯度下降法的原因)
2.3)固定其他维度参数
2.4)计算a的所有取值中,使得估值函数最小的那个a即为所求

数学上可以证明:
1)上述算法是可以收敛的(显而易见)
2)分别求出a,b,c的最优值,组合起来就是整体的最优值(没这么明显了),这个结论是很重要的,假设样本个数为n,计算a,b,c的算法复杂度都是线性的O(m),这个结论让算法的整体复杂度是nO(m) + nO(m) + nO(m),而不是[nO(m) ][nO(m)][nO(m)]的关系。

为了清晰直白的用程序表达算法的整个过程,未经过任何优化的C++实现源码如下,为了简化计算,不妨设特征只有一个,预测方程为Y=aX+b,源码实现为四个部分:

1)第一部分:一维样本,抽象成二维平面上的点
2)第二部分:算法实现
2)第三部分:测试用例
2)第四部分:输出结果

目录
相关文章
|
1月前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
55 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
17天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
63 8
|
17天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
56 7
|
1月前
|
存储 算法 安全
ArrayList简介及使用全方位手把手教学(带源码),用ArrayList实现洗牌算法,3个人轮流拿牌(带全部源码)
文章全面介绍了Java中ArrayList的使用方法,包括其构造方法、常见操作、遍历方式、扩容机制,并展示了如何使用ArrayList实现洗牌算法的实例。
19 0
|
2月前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
51 5
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】线性回归模型:数据结构、算法详解与人工智能应用,附代码实现
线性回归是一种预测性建模技术,它研究的是因变量(目标)和自变量(特征)之间的关系。这种关系可以表示为一个线性方程,其中因变量是自变量的线性组合。
74 2
|
3月前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
3月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
3月前
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
87 2
|
3月前
|
存储 算法 定位技术
预见未来?Python线性回归算法:数据中的秘密预言家
【8月更文挑战第3天】站在数据的海洋边,线性回归算法犹如智慧的预言家,揭示着房价的秘密。作为房地产投资者,面对复杂的市场,我们可通过收集房屋面积、位置等数据并利用Python的pandas及scikit-learn库,建立线性回归模型预测房价。通过评估模型的均方根误差(RMSE),我们可以更精准地判断投资时机,让数据引领我们走向成功的彼岸。
24 1
下一篇
无影云桌面