监督学习应用-梯度下降
2016-07-20 23:23
204 查看
监督学习的应用:梯度下降
监督学习:就是人们常说的分类,通过该已有的训练样本(已知数据及相应的输出)去训练得到一个最优模型(这个模型属于某个函数集合,最优则表示在某个评价准则下的最优),再利用这个模型将所有的输入映射成相应的输出,对输出进行简单的判断,从而实现分类的目的,是系统具有对未知数据进行分类的目的。监督学习典型的例子:KNN、SVM。
以一个房屋价格估计为例,讲解监督学习的应用:梯度下降
首先引入一些变量,这些变量在后续的推理证明过程中会经常使用到:
m:便是训练样本的数量;
x:便是输入变量(在具体的问题中表示的意义不一样,在本例中表示房屋的面积等房屋的特征(feature));
Y:表示输出变量(在本例中就代表房屋的价格(target));
(x,y):表示一个训练样本;
第i个训练样本用(
)来表示;
基本模型:
假设h(x)=
h(x)为输出函数,即房屋价格;θ为函数参数;x是房屋的大小
当然,衡量一个房屋的价值和房屋多方面的因素有关,除了大小外,还有其他的特征作为房屋价值评估标准,所以实际的函数应该是:
使用MATLAB语言实现简单的线性回归模型:
x = [1 2 3 4 5 6 7 8 9 10 11]; y = [12 15 14 15 13 17 18 17 20 21 24]; theta1 = 0; theta0 = 0; % h(x) = theta1 * x1 + theta0 theta1 = mean(y) / mean(x); theta0 = y(1); disp("training data X:"); disp(x); disp("training data Y:") disp(y); disp("theta1's initial value:"); disp(theta1); disp("theta0's initial value:"); disp(theta0); a = 0.001; %梯度下降算法的步伐 while(1) temp1 = 0; temp0 = 0; for i = 1:size(x,2) temp1 = temp1 + (((theta1 * x(i) + theta0) - y(i)) * x(i)); temp0 = temp0 + ((theta1 * x(i) + theta0)- y(i)); end old_theta1 = theta1; old_theta0 = theta0; theta1 = old_theta1 - ((a * temp1)); theta0 = old_theta0 - ((a * temp0)); if(((a * temp1)) < 0.0000000003) if(((a * temp0)) < 0.0000000003) f = theta1 * x + theta0; plot(x,y,'bo',x,f,'g'); break; end end end disp("theta1's final result:"); disp(theta1); disp("theta0's final result:"); disp(theta0); grid on; xlabel('Independent variable X'); ylabel('Dependent Variable Y'); axis([0 15 0 25]);
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- #ML-SDN
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- Tensorflow 杂记
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误