一.概念

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

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

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

二.线性回归

线性回归(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; //LxxL_yy = 0; //LyyL_xy = 0; //Lxyfor (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; //输出回归系数acout << "b=" << av_y - L_xy*av_x / L_xx << endl; //输出回归系数breturn 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)以防止过拟合。还有就是因为它们太简单了,所以往往不能预测更复杂的行为。

五、相关学习资源

https://wenku.baidu.com/view/c62809e66c85ec3a86c2c500.html

http://www.cnblogs.com/voyagflyer/p/5570446.html

http://www.sohu.com/a/128440208_465975

人工智障学习笔记——机器学习(2)线性模型相关推荐

  1. 人工智障学习笔记——机器学习(4)支持向量机

    一.概念 支持向量机(Support Vector Machine),简称SVM.是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析. SVM的主要思 ...

  2. 人工智障学习笔记——机器学习(16)降维小结

    机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式. ...

  3. 人工智障学习笔记——机器学习(9)最大期望算法

    一.概念 最大期望算法,也就是著名的em算法,他起源于一条dog 没错,就是这个 好吧不扯蛋了,em算法(Expectation Maximization Algorithm,又译期望最大化算法),是 ...

  4. 人工智障学习笔记——机器学习(5)朴素贝叶斯

    一.概念 1.1贝叶斯定理:假设H[1],H[2]-,H[n]互斥且构成一个完全事件,已知它们的概率P(H[i]),i=1,2,-,n,现观察到某事件A与H[1],H[2]-,H[n]相伴随机出现,且 ...

  5. 人工智障学习笔记——机器学习(3)决策树

    一.概念 决策树(Decision Tree)是一种十分常用的分类方法.也是监督学习的一种,是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可 ...

  6. 人工智障学习笔记——机器学习(1)特征工程

    一.概念 学习过Machine Learning的一定听过这句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已. 所谓特征工程,做的就是[ 最大限度地从原始数据中提取特征点以供算法 ...

  7. 人工智障学习笔记——机器学习(15)t-SNE降维

    一.概念 t-SNE(t分布随机邻域嵌入)是一种用于探索高维数据的非线性降维算法.它将多维数据映射到适合于人类观察的两个或多个维度. t-SNE主要包括两个步骤:第一.t-SNE构建一个高维对象之间的 ...

  8. 人工智障学习笔记——机器学习(12)LDA降维

    一.概念 LDA:Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant).与PCA一样,是一种线性降维算法.不同于PCA只会选择数据 ...

  9. 人工智障学习笔记——机器学习(11)PCA降维

    一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用 ...

最新文章

  1. Analysis servlet
  2. 重写,重载,抽象类,接口,抽象类和接口区别
  3. 石器时代修改完以后服务器启动不了,石器时代 石器EE 突发问题“突发断连”服务器故障说明...
  4. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
  5. java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...
  6. #include 中的stat.h文件到底在哪个目录下面?
  7. 拨号云服务器怎么自动配置网关_云服务器配置网站卡慢怎么办
  8. 【Linux】生产者消费者编程实现-线程池+信号量
  9. Hive多用户模式搭建
  10. Java千百问_06数据结构(003)_什么是基本类型包装器
  11. 系统日期oracle,oracle系统函数(日期函数)
  12. 遥感大辞典_常用遥感名词词典
  13. linux yum远程安装软件,Linux 自己制作yum源和实现远程yum安装
  14. 线性回归实现人脸识别——ORL数据集
  15. 详解VMware CentOS网络配置
  16. Ext.js 自定义桌面注意
  17. 适合Java初学入门的几本图书
  18. 03.怎样调试学习mico-demos?
  19. 红通告小程序_博主招募新选择,“红通告”助力红人推广
  20. android view.gone 动画,android – 如何动画View.setVisibility(GONE)

热门文章

  1. jquery ajax xml attribute,获得jQuery ajax和asp.net webmethod xml响应工作
  2. js 字符串插入_前端利器React,为什么推荐JSX来替换JS
  3. bat语句中“1>2”是什么意思?
  4. webserver之使用数组实现阻塞队列
  5. 黑苹果找不到触控板_苹果高管告诉你为何要添加触控板功能
  6. Mybatis(16)注解开发环境搭建
  7. vue“路由懒加载” 技术,让网页快速加载 (优化篇)
  8. 小c下载样式插件Xiaocstyle适用于emlog系统
  9. html5拨动密码锁游戏,密码锁游戏(JavaScript)
  10. Copy++ 复制 PDF、CAJ 内容时,自动删除空格、空行,以及自动翻译[Win]