唔哄本程序糖又一个月米有更博哎,但介一个月小姐姐我过的敲美哦,下周老师就有任务啦,呐总结一下四天来的ML。
在这个全民机器学习的时代,当然也是要入门一下。学习andrew ng的machine learning课程视频,视频链接在这:我淼博客传送门 ,当然如果想好好学一下,那就下个VPN在Coursera上学这门课程,在线评测作业让Octave带你飞。
每次学习数据挖掘机器学习的各种,都会想起大四(?)与我淼一起上数据挖掘课的日子。也是觉得课没白上呦,刘老师带着入门数据挖掘了一波(感谢两个人仍旧坚持上课的刘老师)。好了随笔打住开始总结/doge
1.介绍
Carnegie Mellon University的Tom Mitchell给出Machine Learning 的定义:对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在经验E学习。
机器学习算法:监督学习、非监督学习;强化学习、推荐系统。
之前以为监督学习大概就是分类问题,非监督学习大概就是聚类问题,通过这次学习发现监督学习还有回归问题。但是还是不太清楚监督学习是否可以与回归问题、分类问题划等号,以及非监督学习是否可以与聚类问题划等号?(大佬们在哪里)
监督学习基本思想是,数据集中的每个样本都有相应的“正确答案”,根据这些样本作出预测。回归问题,通过回归来推测出一系列连续值的输出。分类问题,目标是推出一组离散的结果。
无监督学习是一种学习机制,提供给算法大量的数据,要求它找出数据中蕴含的类型结构。
2.单变量的线性回归
- 算法概述
m表示训练样本的数目;x表示输入变量/特征量(输入的特征);y表示输出变量/目标变量(预测结果);(x,y)表示一个训练样本;h表示hypothesis(假设),h根据输入的x值来得到y值,因此h是一个从x到y的函数映射。
该模型为线性回归(linear regression)模型,即为单变量线性回归,θi为模型参数。
代价函数
在训练集中,给出训练集中x值,合理准确地推测出y的值。代价函数为训练集中预测值和真实值的差的平方的和的1/2M,其中最小化问题是,θ0和θ1最小化过程,要找到θ0和θ1的值使代价函数表达式值最小,即最接近训练集数据。代价函数也被称为平方误差函数、平方误差代价函数。
这分清楚假设函数与代价函数,假设函数h(x)是对于一个固定的θ1,是一个关于x的函数;代价函数J是一个关于参数θ1的函数,任何一个θ1的取值对应着一个不同的假设函数。最小化代价函数J(θ)对应着寻找一个最佳拟合直线的目标。
当有两个参数θ1、θ2时,J函数为三维图,还可用轮廓图(contour plot/contour figure)表示,其中每个圈表示J(θ1、θ2)相同的所有点的集合。梯度下降定义
梯度下降算法可以使代价函数J最小化,梯度下降算法就是,不停地一点点地改变θ0和θ1,试图通过这种改变使得J(θ0,θ1)变小,直到找到J的最小值或许是局部最小值。起始点的位置略有不同,会得到不同的局部最优解,这是梯度下降算法的一个特点。
一直重复直到收敛,其中α是一个数字,称为学习速率,要注意的是同时更新θ0和θ1。梯度下降深入
梯度下降公式中,θ1-α*直线的斜率,当直线斜率为正数时,θ1即会向左移,当直线斜率为负数,θ1即会向右移,使其更接近最小值。α太小时,梯度下降会很慢;α太大时,梯度下降法可能会越过最低点,甚至可能无法收敛导致发散。
学习速率α保持不变时,梯度下降也可以收敛到局部最低点
在梯度下降法中,当接近局部最低点时,导数值会变得越来越小,所以这时梯度下降法会自动采取更小的幅度,继而实际上没有必要再另外减小α。梯度下降法可以最小化任何代价函数J。线性回归中的梯度下降
专门用于线性回归的梯度下降,反复执行括号中的式子直到收敛。
用于线性回归的代价函数总是弓形样子,即为凸函数(convex function)。没有任何局部最优解,只有一个全局最优解。
有一种计算代价函数J最小值的数值解法,不需要梯度下降这种迭代算法,这是另一种称为正规方程(normal equations)的方法,在大数据集下梯度下降比正规方程更适用一些。
3.多变量线性回归
n表示特征量的数量,x的上标(i)下标j表示第i个训练样本的第j个特征量。θ的转置为行向量与X向量相乘,内积即为假设函数。
- 梯度下降
把n+1个θ参数想成一个n+1维的向量θ,J是带有一个n+1维向量的函数,不停地用θj减去α倍的导数项来替代θj,θj被更新为θj减去学习率α与对应导数的乘积,代价函数对参数θj的偏导数。
特征缩放
确保不同特征的取值均处在一个相近的范围内,这样梯度下降法就能更快地收敛。不要过于担心你的特征是否在完全相同的范围或区间内,只要它们足够接近,梯度下降法就会正常地工作。可以使用均值归一化(mean normalization)方法。μ:在训练集中特征x的平均值,S:该特征值的范围(最大值减去最小值),即(max-min);用(x-μ)/S替代x。学习率
只要学习率足够小,那么每次迭代之后代价函数J(θ)都会下降,因此如果代价函数没有下降,那可能是学习率过大,这时应尝试一个较小的学习率;但学习率过小,梯度下降算法可能收敛的很慢。所以要不断改变学习率,找到最合适的学习率。正规方程
利用微积分,对于每个参数θ求J的偏导数,然后将它们全部置零,即可得到最小化代价函数J的θ值。
这样就得到能够使得代价函数最小化的θ(完全不知道为什么。。),然后使用正规方程法,就不需要归一化特征变量;使用梯度下降法,归一化特征变量就很重要。
假设有m个训练样本和n个特征向量,梯度下降法缺点是选择学习效率α,需要多次迭代。但梯度下降法在很多特征变量的情况下也能运行地很好(上百万),然而计算逆矩阵需要计算大致n的三次方。对于n上万的情况,正规方程有点慢,开始倾向于选择梯度下降;对于n较小的情况下,选择使用正规方程。所以梯度下降适合解决大量特征变量的线性回归问题。
4.逻辑回归
分类问题
在分类问题中,预测的变量y是离散的值。对于二元分类问题,标记为0的类叫做负类(negative class),标记为1的类叫做正类(positive class)。对于两种类别的分配,0或1对应什么都可以,通常负类表达缺少某样东西的意思,正类表达存在某样我们寻找的东西。假设函数
函数g为S型函数(Sigmoid function)或逻辑函数(Logistic function),取值在0到1之间,用来拟合参数θ的学习算法。假设函数h(x)的输出是,是对于新输入样本x的y等于1的概率的估计值。
决策边界
假设函数输出y=1的概率大于等于0.5,即y更有可能等于1而不是0;y=1的概率小于0.5,就应该预测y=0。同时如图,当z>=0时,g(z)>=0.5。
决策边界把整个平面分为两部分,决策边界是假设函数的一个属性,取决于其参数,不是训练集的属性。不是用训练集来定义的决策边界,而是用训练集来拟合参数θ。代价函数
逻辑回归的代价函数,y=1时代价函数曲线如上,如果假设函数输出为0,相当于说y=1的概率等于0,但是y=1那么我们用非常大的代价值惩罚这个学习算法。
- 简化代价函数
(不太明白Cost函数变为J函数为啥酱紫变)该式子是从统计学中的极大似然法得来的,同时它是凸函数,即为逻辑回归代价函数。
如何最大限度最小化代价函数J(θ),作为一个关于θ的函数,这样才能为训练集拟合出参数θ。用梯度下降法公式同时更新所有θ的值,把更新规则和之前用在线性回归上的进行比较的话,发现这个式子正是用来做线性回归梯度下降的。但是h(x)发生变化,实际上是不同的。理想情况下,提倡使用向量化的实现,可以把所有n个参数同时更新。
高级优化算法
梯度下降的思路就是我们需要写出代码来计算J(θ)和偏导数,然后把这些插入到梯度下降中,然后它就可以为我们最小化这个函数。除梯度下降之外还有更高级更复杂的方法,计算这两项,即优化代价函数的不同方法。
共轭梯度法BFGS(变尺度法) 和 L-BFGS(限制变尺度法)就是其中更高级的优化算法。其优点是不需要手动选择学习率α,他们含有智能的内部循环,称为线性搜索(line search)算法。它可以自动尝试不同的学习效率α并自动选择一个好的学习速率α,甚至可以为每次迭代选择不同的学习效率,但是更复杂。多类别分类
“一对多”(one-vs-all)的分类算法,如图得到三个分类器,每个分类器都作为其中一种情况进行训练。训练逻辑回归分类器h(i),其中i对应每一个可能的y=I。最后,为了做出预测,我们给出输入一个新的x值用这个做预测,就在这三个分类器里面输入x,然后选择一个让h最大的i。