人工智障学习笔记——机器学习(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; //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)线性模型相关推荐
- 人工智障学习笔记——机器学习(4)支持向量机
一.概念 支持向量机(Support Vector Machine),简称SVM.是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析. SVM的主要思 ...
- 人工智障学习笔记——机器学习(16)降维小结
机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式. ...
- 人工智障学习笔记——机器学习(9)最大期望算法
一.概念 最大期望算法,也就是著名的em算法,他起源于一条dog 没错,就是这个 好吧不扯蛋了,em算法(Expectation Maximization Algorithm,又译期望最大化算法),是 ...
- 人工智障学习笔记——机器学习(5)朴素贝叶斯
一.概念 1.1贝叶斯定理:假设H[1],H[2]-,H[n]互斥且构成一个完全事件,已知它们的概率P(H[i]),i=1,2,-,n,现观察到某事件A与H[1],H[2]-,H[n]相伴随机出现,且 ...
- 人工智障学习笔记——机器学习(3)决策树
一.概念 决策树(Decision Tree)是一种十分常用的分类方法.也是监督学习的一种,是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可 ...
- 人工智障学习笔记——机器学习(1)特征工程
一.概念 学习过Machine Learning的一定听过这句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已. 所谓特征工程,做的就是[ 最大限度地从原始数据中提取特征点以供算法 ...
- 人工智障学习笔记——机器学习(15)t-SNE降维
一.概念 t-SNE(t分布随机邻域嵌入)是一种用于探索高维数据的非线性降维算法.它将多维数据映射到适合于人类观察的两个或多个维度. t-SNE主要包括两个步骤:第一.t-SNE构建一个高维对象之间的 ...
- 人工智障学习笔记——机器学习(12)LDA降维
一.概念 LDA:Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant).与PCA一样,是一种线性降维算法.不同于PCA只会选择数据 ...
- 人工智障学习笔记——机器学习(11)PCA降维
一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用 ...
最新文章
- Analysis servlet
- 重写,重载,抽象类,接口,抽象类和接口区别
- 石器时代修改完以后服务器启动不了,石器时代 石器EE 突发问题“突发断连”服务器故障说明...
- c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
- java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...
- #include 中的stat.h文件到底在哪个目录下面?
- 拨号云服务器怎么自动配置网关_云服务器配置网站卡慢怎么办
- 【Linux】生产者消费者编程实现-线程池+信号量
- Hive多用户模式搭建
- Java千百问_06数据结构(003)_什么是基本类型包装器
- 系统日期oracle,oracle系统函数(日期函数)
- 遥感大辞典_常用遥感名词词典
- linux yum远程安装软件,Linux 自己制作yum源和实现远程yum安装
- 线性回归实现人脸识别——ORL数据集
- 详解VMware CentOS网络配置
- Ext.js 自定义桌面注意
- 适合Java初学入门的几本图书
- 03.怎样调试学习mico-demos?
- 红通告小程序_博主招募新选择,“红通告”助力红人推广
- android view.gone 动画,android – 如何动画View.setVisibility(GONE)
热门文章
- jquery ajax xml attribute,获得jQuery ajax和asp.net webmethod xml响应工作
- js 字符串插入_前端利器React,为什么推荐JSX来替换JS
- bat语句中“1>2”是什么意思?
- webserver之使用数组实现阻塞队列
- 黑苹果找不到触控板_苹果高管告诉你为何要添加触控板功能
- Mybatis(16)注解开发环境搭建
- vue“路由懒加载” 技术,让网页快速加载 (优化篇)
- 小c下载样式插件Xiaocstyle适用于emlog系统
- html5拨动密码锁游戏,密码锁游戏(JavaScript)
- Copy++ 复制 PDF、CAJ 内容时,自动删除空格、空行,以及自动翻译[Win]