线性回归(一元)算法算法模型(octave,matlab)
程序目的:
以现有的“餐厅利润”以及对应的“城市人口数”作为训练数据,已达到预测在“某一人口数量城市”开设餐厅的“利润额”的目的。
程序概要:
1,导入训练数据并做二维图
2,使用梯度下降计算参数theta(参数为向量,y=theta0+theta1x)
- 梯度下降参数设定
- 代价函数计算;
- 参数theta计算
- 在二维图上画出回归直线
3,绘制代价函数J的曲面图
4,绘制代价函数等高线图
5,使用梯度下降计算出的参数thetaGD与使用正规方程(即最小二乘法)计算出的参数thetaNE比较
thetaGD =
-3.8958
1.1930
1.1930
Theta compute with Normal Equation
thetaNE =
thetaNE =
-3.8958
1.1930
1.1930
6,分别预测人口数分别为35,000和70,000的两个城市开设餐厅的利润额
For population = 35,000, we predict a profit of 2798.453151
For population = 70,000, we predict a profit of 44554.584935
For population = 70,000, we predict a profit of 44554.584935
说明:
1,下述链接为打包程序下载链接。
其中P1为主程序,m1为训练数据,其余为调用子程序。
https://pan.baidu.com/s/1IZmK8JlOYsg7jh0TbjKQJQ
2,该程序仅适用于一元线性问题,多元问题需对程序进行调整。
3,从程序内容可以看出,该程序使用了“梯度下降”和“正规方程”(最小二乘法)两种方法分别计算出了相同的参数theta。但在解决一元或者自变量数量不多的线性回归问题时,正规方程简单很多。但在解决自变量过多的问题时,梯度下降法在运算速度上会有其优势。