机器学习之线性回归
什么是线性回归线性回归利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间关系进⾏建模的⼀种分析⽅式。一般只有一个特征值的称之为单变量回归,多个特征值的称之为多变量回归。
线性回归线性回归可以分为两类:线性关系和非线性关系。
线性关系线性关系是指特征值和目标值之间的关系呈现多元一次关系,例如一个特征值时,则特征值和目标值呈现直线性关系;两个特征值时,则特征值和目标值呈现平面关系。非线性关系非线性关系指特征值和目标值之间的关系呈多元二次以上关系,即关系无法用直线来表达,需要用直线才能贴合。损失函数由算法得出的线性回归方程有会多种,那么模型是怎么选出最有的回归方程呢,那么让回归方程的值与实际值的误差最小,就是最好的回归方程,这就我们优化回归方程的函数:损失函数。损失函数:预测的所有数值与实际数值之间差的平方的总和,又叫做最小二乘法,数学定义如下:那么我们怎么求模型中的各个系数w,使得损失函数最小?在线性回归中常用到两种方法:
正规方程法梯度下降法1.正规方程(LinearRegression)正规方程法就是数学中的求方程的未知数,将特征值、目标值和未知数w列出方程组,求解方程组,即可得到系数w,如下图的方程组。当特征值和w较少时,比较容易算出,但特征过多过于复杂时,则求解起来很麻烦,甚至求解不出答案。例如样本量较多时,更多采用梯度下降法。特征之间存在多重共线性问题时,需要使用岭回归(RidgeRegression)。正规方程法公式如下:X为特征矩阵,y为目标矩阵。
2.梯度下降法(SGDRegressor)在求解回归方程时往往没有最优解,经常采用迭代的方法,不断沿着函数梯度的反方向更新参数,直到损失函数最小化。梯度下降法的过程如下:a.随机初始化模型参数,并计算当前参数下损失函数的地图,即当前点的斜率;b.沿着参数朝着梯度的反方向进行一定的步长调整,使得损失函数下降;c.重复a和b的过程,直到损失函数达到最小值,或者设定迭代次数的限制。梯度下降法的公式如下:α在梯度下降算法中被称作为学习率或者步⻓,意味着我们可以通过α来控制每⼀步⾛的距离,控制参数不要⾛太快,错过了使损失函数取最⼩值的点。同时也要保证不要⾛的太慢,导致太阳下⼭了,还没有⾛到⼭下。所以α的选择在梯度下降法中往往是很重要的!α不能太⼤也不能太⼩,太⼩的话,可能导致迟迟⾛不到最低点,太⼤的话,会导致错过最低点!梯度下降法分类:
全梯度下降算法(Fullgradientdescent)FGD要在所有数据集上计算梯度,所以下降速度慢;无法在线更新模型,即运行过程中无法增加样本随机梯度下降算法(Stochasticgradientdescent)SGD计算单个样本的梯度,速度更快;由于只使用一个样本,容易陷入局部最优解⼩批量梯度下降算法(Mini-batchgradientdescent)随机抽取一个小批量样本集,然后再采用FGDbatch_size=1为SGD,batch_size=n为FGD,一般设为2的幂次方随机平均梯度下降算法(Stochasticaveragegradientdescent)内存中为每个样本维护一个旧梯度,随机选择i个样本来更新该梯度,其他梯度保持不变,然后求得所有梯度的平均值n设置为1时,为SGD两种方法对比那么什么时候用正规方程法,什么时候用梯度下降法呢?
是否存在逆矩阵:从正规方程的公式可以得知,要先计算逆矩阵,有可能它的逆矩阵不存在,这就需要我们去除冗余特征值,让其逆矩阵不为0。而梯度下降法可以使用;特征值数据量是否大:特征值数据大于10000时,建议采用梯度下降法。正规方程法计算量较大,难以计算,当然可以用主成分分析降低特征的维度,再使用正规方程法计算;拟合函数是否为线性:不是线性无法使用正规方程法,梯度下降法还是可以使用;以下几种情况特殊处理:特征值数据较少,无法拟合;特征值数量与样本量一致时,正规方程法可以解决;所以线性回归的算法选择总结如下:
小数据规模:正规方程:岭回归:特征之间多重共线性大规模数据:梯度下降法线性回归API正规方程法:sklearn.linear_model.LinearRegression(fit_intercept=True)参数:fit_intercept:是否计算偏置属性:LinearRegression.coef_:回归系数LinearRegression.intercept_:偏置梯度下降法:sklearn.linear_model.SGDRegressor(max_iter=1000,loss=“squared_loss”,fit_intercept=True,learning_rate=‘invscaling’,eta0=0.01)参数:loss:损失类型max_iter用来指定神经网络的最大迭代次数,默认值为1000fit_intercept:是否计算偏置learning_rate:学习率填充‘constant’:eta=eta0‘optimal’:eta=1.0/(alpha*(t+t0))[default]‘invscaling’:eta=eta0/pow(t,power_t)power_t=0.25:存在⽗类当中eta0:初始学习率或者步长,对于学习速率α,可以先选择0.001,然后按10倍来进行调整。属性:SGDRegressor.coef_:回归系数SGDRegressor.intercept_:偏置线性回归性能评估均⽅误差(MeanSquaredError,MSE)评价线性回归模型的好坏,公式如下:对应API:
sklearn.metrics.mean_squared_error(y_true,y_pred)均⽅误差回归损失y_true:真实值y_pred:预测值return:浮点数结果线性回归应用回归分析主要用于分析自变量和因变量的影响关系,也可以分析自变量对因变量的影响因素。它的主要应⽤场景是进⾏预测和控制例如计划制定、KPI制定、⽬标制定等。
优点回归分析的优点是数据模式和结果便于理解,如线性回归⽤y=ax+b的形式表达,在解释和理解⾃变量与因变量关系式相对容易;在基于函数公式的业务应⽤中,可以直接使⽤代⼊法求解,因此应⽤起来⽐较容易。
缺点回归分析的缺点是只能分析少量变量之间的相互关系,⽆法处理海量变量间的相互作⽤关系,尤其是变量共同因素对因变量的影响程度。
回归分析实际落地场景举例回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。以在各种媒体上投放的⼴告对最终销售所产⽣的效果研究为例:
公司投入很多的营销渠道:传统大众媒体、直销媒体和数字媒体,通过线性回归能够回答不同渠道之间的销量影响;并且调整每个渠道之间的投入营销,从而获取最大收益;并且在哪个渠道的广告效果最好。销售量=营销变量+误差因素;回归分析并不能直接得出营销变量和销售量的关系,但能够分析出营销变量里的影响因素大小。回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。
人工智能算法:卷1基础算法
链接:https://pan.baidu.com/s/1AaIdUjX1k4BEgSsv7gfatQ?pwd=f03i
提取码:f03i
《人工智能算法卷1基础算法》
算法是人工智能技术的核心。本书介绍了人工智能的基础算法,全
书共10章,涉及维度法、距离度量算法、K均值聚类算法、误差计算、
爬山算法、模拟退火算法、Nelder-Mead算法和线性回归算法等。书中
所有算法均配以具体的数值计算来进行讲解,读者可以自行尝试。每章
都配有程序示例,GitHub上有多种语言版本的示例代码可供下载。
本书适合作为人工智能入门读者以及对人工智能算法感兴趣的读者
阅读参考。
《人工智能算法卷1基础算法》
第1章AI入门1
1.1与人类大脑的联系2
1.2对问题建模6
1.3对输入/输出建模11
1.4理解训练过程21
1.5本章小结23
第2章数据归一化25
2.1计量尺度25
2.2观测值归一化29
2.3其他归一化方法38
2.4本章小结45
第3章距离度量47
3.1理解向量47
3.2计算向量距离49
3.3光学字符识别54
3.4本章小结57
第4章随机数生成59
4.1伪随机数生成算法的概念60
4.2随机数分布类型61
4.3轮盘模拟法64
4.4伪随机数生成算法65
4.5用蒙特卡洛方法估算PI值72
4.6本章小结74
第5章K均值聚类算法75
5.1理解训练集77
5.2理解K均值算法80
5.3K均值算法的初始化84
5.4本章小结90
第6章误差计算91
6.1方差和误差92
6.2均方根误差93
6.3均方误差93
6.4误差计算方法的比较94
6.5本章小结96
第7章迈向机器学习97
7.1多项式系数99
7.2训练入门101
7.3径向基函数网络103
7.4本章小结115
第8章优化训练117
8.1爬山算法117
8.2模拟退火算法121
8.3Nelder-Mead算法128
8.4Nelder-Mead算法的终止条件133
8.5本章小结134
第9章离散优化135
9.1旅行商问题135
9.2环形旅行商问题138
9.3背包问题139
9.4本章小结143
第10章线性回归144
10.1线性回归144
10.2广义线性模型152
10.3本章小结155
附录A示例代码使用说明157
A.1“读懂人工智能”系列书简介157
A.2保持更新157
A.3获取示例代码158
A.4示例代码的内容159
A.5如何为项目做贡献163
参考资料164
人工智能十大算法
**人工智能是什么?**很多人都知道,但大多又都说不清楚。
事实上,人工智能已经存在于我们生活中很久了。
比如我们常常用到的邮箱,其中垃圾邮件过滤就是依靠人工智能;比如每个智能手机都配备的指纹识别或人脸识别,也是用人工智能技术实现的;比如疫情期间大规模使用的无人体温检测仪,同样也使用了人工智能;但对很多人来讲,人工智能还是一个较为“高深”的技术,然而再高深的技术,也是从基础原理开始的。
人工智能领域中就流传着10大算法,它们的原理浅显,很早就被发现、应用,甚至你在中学时就学过,在生活中也都极为常见。
一、线性回归**线性回归(LinearRegression)**可能是最流行的机器学习算法。线性回归就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x值)和数值结果(y值)。然后就可以用这条线来预测未来的值!
这种算法最常用的技术是最小二乘法(Leastofsquares)。这个方法计算出最佳拟合线,以使得与直线上每个数据点的垂直距离最小。总距离是所有数据点的垂直距离(绿线)的平方和。其思想是通过最小化这个平方误差或距离来拟合模型。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2fZhQYFI-1654181549491)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2Fba86266cj00r31ji6000jd200me00eeg00bd007a.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
例如,简单线性回归,它有一个自变量(x轴)和一个因变量(y轴)。
比如预测明年的房价涨幅、下一季度新产品的销量等等。听起来并不难,不过线性回归算法的难点并不在于得出预测值,而在于如何更精确。为了那个可能十分细微的数字,多少工程师为之耗尽了青春和头发。
二、逻辑回归**逻辑回归(Logisticregression)**与线性回归类似,但逻辑回归的结果只能有两个的值。如果说线性回归是在预测一个开放的数值,那逻辑回归更像是做一道是或不是的判断题。
逻辑函数中Y值的范围从0到1,是一个概率值。逻辑函数通常呈S型,曲线把图表分成两块区域,因此适合用于分类任务。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nkF9Y6a-1654181549492)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F1b0b9a05j00r31ji6000jd200q200e3g00dg0079.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
比如上面的逻辑回归曲线图,显示了通过考试的概率与学习时间的关系,可以用来预测是否可以通过考试。
逻辑回归经常被电商或者外卖平台用来预测用户对品类的购买偏好。
三、决策树如果说线性和逻辑回归都是把任务在一个回合内结束,那么**决策树(DecisionTrees)**就是一个多步走的动作,它同样用于回归和分类任务中,不过场景通常更复杂且具体。
举个简单例子,老师面对一个班级的学生,哪些是好学生?如果简单判断考试90分就算好学生好像太粗暴了,不能唯分数论。那面对成绩不到90分的学生,我们可以从作业、出勤、提问等几个方面分开讨论。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3Oxyxs6-1654181549492)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F9c87e3f4j00r31ji6000kd200dm00d5g00ai00a4.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
以上就是一个决策树的图例,其中每一个有分叉的圈称为节点。在每个节点上,我们根据可用的特征询问有关数据的问题。左右分支代表可能的答案。最终节点(即叶节点)对应于一个预测值。
每个特征的重要性是通过自顶向下方法确定的。节点越高,其属性就越重要。比如在上面例子中的老师就认为出勤率比做作业重要,所以出勤率的节点就更高,当然分数的节点更高。
四、朴素贝叶斯**朴素贝叶斯(NaiveBayes)**是基于贝叶斯定理,即两个条件关系之间。它测量每个类的概率,每个类的条件概率给出x的值。这个算法用于分类问题,得到一个二进制“是/非”的结果。看看下面的方程式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AYwnRbU-1654181549492)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F6fed0894j00r31ji7000ad200ah006hg00a00066.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
朴素贝叶斯分类器是一种流行的统计技术,经典应用是过滤垃圾邮件。
当然,小编赌一顿火锅,80%的人没看懂上面这段话。(80%这个数字是小编猜的,但经验直觉就是一种贝叶斯式的计算。)
用非术语解释贝叶斯定理,就是通过A条件下发生B的概率,去得出B条件下发生A的概率。比如说,小猫喜欢你,有a%可能性在你面前翻肚皮,请问小猫在你面前翻肚皮,有多少概率喜欢你?
当然,这样做题,等于抓瞎,所以我们还需要引入其他数据,比如小猫喜欢你,有b%可能和你贴贴,有c%概率发出呼噜声。所以我们如何知道小猫有多大概率喜欢自己呢,通过贝叶斯定理就可以从翻肚皮,贴贴和呼噜的概率中计算出来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlBltsYl-1654181549492)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2Fe9a2150bj00r31ji70010d200j600egg009f0073.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
猫:别算了,我不喜欢你
五、支持向量机**支持向量机(SupportVectorMachine,SVM)**是一种用于分类问题的监督算法。支持向量机试图在数据点之间绘制两条线,它们之间的边距最大。为此,我们将数据项绘制为n维空间中的点,其中,n是输入特征的数量。在此基础上,支持向量机找到一个最优边界,称为超平面(Hyperplane),它通过类标签将可能的输出进行最佳分离。
超平面与最近的类点之间的距离称为边距。最优超平面具有最大的边界,可以对点进行分类,从而使最近的数据点与这两个类之间的距离最大化。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNYzg0gA-1654181549493)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F3d2da9c1j00r31ji7000hd200hu00fag007v006q.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
所以支持向量机想要解决的问题也就是如何把一堆数据做出区隔,它的主要应用场景有字符识别、面部识别、文本分类等各种识别。
六、K-最近邻算法(KN****N)**K-最近邻算法(K-NearestNeighbors,KNN)**非常简单。KNN通过在整个训练集中搜索K个最相似的实例,即K个邻居,并为所有这些K个实例分配一个公共输出变量,来对对象进行分类。
K的选择很关键:较小的值可能会得到大量的噪声和不准确的结果,而较大的值是不可行的。它最常用于分类,但也适用于回归问题。
用于评估实例之间相似性的距离可以是欧几里得距离(Euclideandistance)、曼哈顿距离(Manhattandistance)或明氏距离(Minkowskidistance)。欧几里得距离是两点之间的普通直线距离。它实际上是点坐标之差平方和的平方根。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaSz5tyk-1654181549493)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F3ff5ef93j00r31ji7000gd200hd00esg007j006e.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
KNN分类示例
KNN理论简单,容易实现,可用于文本分类、模式识别、聚类分析等。
七、K-均值
**K-均值(K-means)**是通过对数据集进行分类来聚类的。例如,这个算法可用于根据购买历史将用户分组。它在数据集中找到K个聚类。K-均值用于无监督学习,因此,我们只需使用训练数据X,以及我们想要识别的聚类数量K。
该算法根据每个数据点的特征,将每个数据点迭代地分配给K个组中的一个组。它为每个K-聚类(称为质心)选择K个点。基于相似度,将新的数据点添加到具有最近质心的聚类中。这个过程一直持续到质心停止变化为止。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mq0X6GdC-1654181549493)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2Ffc9d0ef7j00r31ji70013d200u000bqg00hx0070.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
生活中,K-均值在欺诈检测中扮演了重要角色,在汽车、医疗保险和保险欺诈检测领域中广泛应用。
八、随机森林**随机森林(RandomForest)**是一种非常流行的集成机器学习算法。这个算法的基本思想是,许多人的意见要比个人的意见更准确。在随机森林中,我们使用决策树集成(参见决策树)。
(a)在训练过程中,每个决策树都是基于训练集的引导样本来构建的。
(b)在分类过程中,输入实例的决定是根据多数投票做出的。
随机森林拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源、保留及流失,也可以用来预测疾病的风险和病患者的易感性。
九、降维由于我们今天能够捕获的数据量之大,机器学习问题变得更加复杂。这就意味着训练极其缓慢,而且很难找到一个好的解决方案。这一问题,通常被称为**“维数灾难”(Curseofdimensionality)**。
降维(Dimensionalityreduction)试图在不丢失最重要信息的情况下,通过将特定的特征组合成更高层次的特征来解决这个问题。主成分分析(PrincipalComponentAnalysis,PCA)是最流行的降维技术。
主成分分析通过将数据集压缩到低维线或超平面/子空间来降低数据集的维数。这尽可能地保留了原始数据的显著特征。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0OIA7Og-1654181549493)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2F885454cfj00r31ji80009d200n000apg008x0045.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
可以通过将所有数据点近似到一条直线来实现降维的示例。
十、人工神经网络(ANN)**人工神经网络(ArtificialNeuralNetworks,ANN)**可以处理大型复杂的机器学习任务。神经网络本质上是一组带有权值的边和节点组成的相互连接的层,称为神经元。在输入层和输出层之间,我们可以插入多个隐藏层。人工神经网络使用了两个隐藏层。除此之外,还需要处理深度学习。
人工神经网络的工作原理与大脑的结构类似。一组神经元被赋予一个随机权重,以确定神经元如何处理输入数据。通过对输入数据训练神经网络来学习输入和输出之间的关系。在训练阶段,系统可以访问正确的答案。
如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WRnnVoiI-1654181549493)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1124%2Fc7b8a0f4j00r31ji90010d200og00jqg007z006f.jpg&thumbnail=660x2147483647&quality=80&type=jpg)]
每个圆形节点表示一个人工神经元,箭头表示从一个人工神经元的输出到另一个人工神经元的输入的连接。
图像识别,就是神经网络中的一个著名应用。
现在,你已经了解了最流行的人工智能算法的基础介绍,并且,对它们的实际应用也有了一定认识。