机器人之人工智障学习笔记——机器学习(2)线性模型
小标 2018-10-11 来源 : 阅读 926 评论 0

摘要:本文主要向大家介绍了机器人之人工智障学习笔记——机器学习(2)线性模型,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

本文主要向大家介绍了机器人之人工智障学习笔记——机器学习(2)线性模型,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。



一.概念

线性模型:就是线性的模型。


其实我在网上搜了很久,想用一句话能够简单易懂的表达出这个概念,但是确实不知道该怎么组织语言。不过相信有一些数学基础的同学应该是能明白的。

我们可以这样认为,世界上所有的问题都可以用公式表达,如果任何问题都是可以用线性模型来描述的,那么我们人人都可以预测未来,因为其模型非常的简单。但是很遗憾,大多数问题都是非线性的。


二.线性回归

线性回归(linearregression)通过学习到一个线性模型来尽可能准确地预测实值输出标记。这句话的意思就是说,训练出一个线性模型的学习器,然后用来预测实值输出。

常用的几种求解算法:

1.梯度下降法:沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值),算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。

C++代码


#include<iostream>#include<cmath>#include<ctime>using namespace std;double f(double x){ return x*x - 2 * x + 1;}double g(double x){ return 2 * x - 2;}double GradientDescent(double xs, double s){ double x = xs; double y; int i = 0; while(++i) {  double grad = -1 * g(x);  x += grad*s;  y = f(x);  cout << "i = " << i << " grad = "  << grad << " x = " << x << "  y = " << y << endl;  if (abs(grad) < 1e-6)   break; } return x;}int main(){ double xk = -5, ak = 0.1; GradientDescent(xk, ak); system("pause");}




2.最小二乘法:通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

C++代码


#include<iostream>#include<cmath>using namespace std;class Point //Point类的声明{public: //外部接口 Point(float xx = 0, float yy = 0) { X = xx; Y = yy; } float GetX() { return X; } float GetY() { return Y; } friend float linefit(Point l_point[], int n_point);              private: //私有数据成员 float X, Y;};float linefit(Point l_point[], int n_point) { float av_x, av_y; //声明变量 float L_xx, L_yy, L_xy; //变量初始化 av_x = 0; //X的平均值 av_y = 0; //Y的平均值 L_xx = 0; //Lxx L_yy = 0; //Lyy L_xy = 0; //Lxy for (int i = 0; i<n_point; i++) //计算X、Y的平均值 {  av_x += l_point[i].X / n_point;  av_y += l_point[i].Y / n_point; } for (int i = 0; i<n_point; i++) //计算Lxx、Lyy和Lxy {  L_xx += (l_point[i].X - av_x)*(l_point[i].X - av_x);  L_yy += (l_point[i].Y - av_y)*(l_point[i].Y - av_y);  L_xy += (l_point[i].X - av_x)*(l_point[i].Y - av_y); } cout << "a=" << L_xy / L_xx << endl; //输出回归系数a cout << "b=" << av_y - L_xy*av_x / L_xx << endl; //输出回归系数b return float(L_xy / sqrt(L_xx*L_yy)); //返回相关系数r}int main(){ Point l_p[10] = {  Point(208,21.6),  Point(152,15.5),  Point(113,10.4),  Point(227,31.0),  Point(137,13.0),  Point(238,32.4),  Point(178,19.0),  Point(104,10.4),  Point(191,19.0),  Point(130,11.8) }; float r = linefit(l_p, 10); //进行线性回归计算 cout << "r=" << r << endl; //输出相关系数 system("pause");}




三、逻辑回归

逻辑回归(Logistic Regression, LR)其实就是在线性回归的基础上,套用了一个逻辑函数。逻辑回归是属于线性模型的,因为逻辑回归的决策边界(decision boundary)是线性的。它只是在特征到结果的映射中加入了一个sigmoid函数。即先把特征求和,然后使用非线性的函数将连续值映射到0与1之间。


逻辑回归与线性回归的差别:

1)线性回归要求变量服从正态分布,逻辑回归对变量分布没有要求。
2)线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是分类型变量。
3)线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系
4)逻辑回归是分析因变量取某个值的概率与自变量的关系,而线性回归是直接分析因变量与自变量的关系



总之, 逻辑回归与线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是逻辑回归。逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最为常用的就是二分类的逻辑回归。


四、总结

线性模型使用简单的公式通过一组数据点来查找「最优拟合」线。通过你已知的变量方程,你可以求出你想要预测的变量。为了求出预测量,我们输入已知的变量得到答案。

线性回归和逻辑回归都有着相同的缺点。两者都具有「过拟合(overfit)」的趋势,这意味着模型太适应于数据而牺牲了推广到先前未知的数据的能力。因此,这两个模型经常需要进行规范,这意味着它们有一定的惩罚(penalty)以防止过拟合。还有就是因为它们太简单了,所以往往不能预测更复杂的行为。



本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能智能机器人频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程