机器学习
(1)监督学习:人类教计算机做某件事情
回归问题:设法预测连续值的属性
分类问题:设法预测一个离散值输出
(2)无监督学习:让计算机自己学习,最初给与计算机的是没有标签的数据集
分为聚类算法和鸡尾酒会算法
监督学习
1. 线性回归模型(回归模型)
- 线性回归模型总体:
- 代价函数(cost function):
便于理解,等价于loss function
简单举一个例子(单一变量线性回归问题)如下:
梯度下降算法
-
batch梯度下降算法:
-
batch梯度下降法关注整个训练样本集
- 注意上图中的正确方法,一定要保证同步更新
- 同时考虑:学习率既不可以太小也不可以太大
- 如果一开始选择的θ已经是一个全局最优值(或者是局部最优值)之后该怎么做:
θ值将不会再更新,这也是我们所期望的到达一个局部最小值或者是全局最小值;
当我们接近最小值时,梯度下降法会自动采取更小的幅度(因此,学习率可以设定为固定值);
必须掌握一些关于矩阵的运算和基本用法
- 矩阵的加法、乘法、逆和转置
多变量(多特征量)线性回归问题
- 假设函数:
其中:x1、x2…分别代表不同特征量;
假设函数可以进一步简化为下式:
多变量(多特征量)梯度下降函数
-
梯度下降函数如下:
-
梯度下降运算中的实用技巧:
-
特征缩放(feature scaling)
确保特征值在同样的尺度(make sure features are on a similar scale)
进行特征缩放时,通常是希望将feature值缩放进-1到+1之间(只要接近-1到+1之间就可以,不一定要完全满足)。
例子:
左边,未进行特征缩放,会导致梯度下降时来回摆动,不能快速下降,右边采用了特征缩放,使得梯度能够快速下降。
之后,通常会进行均值归一化,让特征值具有为0的平均值。 -
学习率
如果得到的关系图如下两种:
说明学习率设置的过大,需要用一个更小的学习率
正规方程
- 直接通过分析法计算损失函数最小处的θ值。
- 例如在一元二次情况下通过求导数的方式,缺点在于不适用于复杂的分类算法,例如logistics回归算法等。
- 计算θ的公式如下:
对于可能导致矩阵不可逆问题:
- 特征:存在多余的特征
- 特征过多:删除一些不重要的特征或者考虑使用正规化的方法
2. 逻辑回归(是一种分类算法)
分类
分类问题就是有明确规定是某一类或者不是某一类,从分类问题开始,有二分类问题和多分类问题:
-
二元分类问题:
逻辑回归是一种用来解决二元分类问题的算法
-
多分类问题
逻辑回归算法
- 逻辑回归算法如下:
-
假设表示(Hypothesis representation)
就是hθ(x) -
决策边界(decision boundary)
因为sigmoid function的特殊形式,使得θx>=0,就代表着y=1类;因为θx>=0,代表g(θx)>=0.5,也就是hθ(x)>=0.5,那么就是预测为y=1类。
-
cost function(代价函数、优化目标):
如何拟合logistic回归模型的参数θ;
其实就可以理解成损失函数;
不能再考虑和线性分类的损失函数一样,因为这样会使损失函数成为非凸函数,使用梯度下降法就较难找到全局最优点。
-
简化代价函数与梯度下降:
形式看起来跟线性回归模型的梯度下降一样,但其实是不同的函数,因为当中的hθ(x)的值是完全不同的。
高级优化方法
用逻辑回归算法解决多分类问题
3.正则化
-
为了解决过拟合问题;
欠拟合和过拟合问题:
-
为了解决过拟合问题:
(1)降低特征的数量
(2)正则化 -
拥有正则化的代价函数
由此可知,一般性来讲在一个代价函数中,我们不知道要去缩小哪一个θ,因此我们会加入一项正则项来缩小所有的θ;
-
线性回归的正则化
-
逻辑回归的正则化
过拟合是方差元素,欠拟合是bias元素;
高偏差问题(bias):
单纯增加训练数据量是不能起到很好效果的;
高方差问题:
过拟合问题,训练误差和交叉验证误差之间有一段很大的差距。
在高方差问题中,使用更多的数据训练对改进算法是有帮助的;
4. 非线性分类器(神经网络)
-
怎么用神经网络解决多类别分类问题:
就像逻辑回归解决多分类问题一样,其实来讲神经网络就是在套娃,把一个一次线性函数一直套娃,而逻辑回归就是对一个多元函数做了一次非线性处理。 -
反向传播是用来让损失函数(代价函数)最小化的算法;
5. 其他
(1)准确率和召回率
6. SVM(支持向量机)
把逻辑回归的cost function改成了折线函数。
相比于逻辑回归算法,SVM还在中间保持了一个安全距离;
代表SVM获得的决策边界可能会更稳健,鲁棒性会更好;
- SVM能够保持中间安全距离的原因:
核函数:利用核函数的支持向量机算法
针对非线性分类问题;
为了使得支持向量机的决策边界是非线性的;
相似度量的函数就被称作核函数;
在下面的例子中用的是高斯核函数:
如果想要确定θ的值,就直接将损失函数定为svm的损失函数进行训练,如下图所示:
-
在核函数+svm中的方差和偏差问题:
如果不使用内核参数时,就自动代表使用线性内核,就是f直接由x代替即可。
个人理解:高斯核函数就是将一些非线性问题,通过该核函数转成了一个类似于线性的问题,其实本质上也就是一个线性内核。 -
对于逻辑回归和SVM如何选择的问题:
无监督学习
1. 聚类算法:K-means聚类
-
- 操作步骤:
假设是想要最后分成两个簇;
(1)随机生成两点,这两点就叫做聚类中心
(2)然后进行簇分配
遍历每一个样本,然后将每一个样本点分配给那个与它更近的点
就等价于选择c值来最小化代价函数了;
- 操作步骤:
(3)移动聚类中心
将两个聚类中心,移动到同色点的均值处,之后再进行簇分配
等价于选择u值来最小化代价函数;
-
- 优化目标函数(用于最小化的代价函数):
- 优化目标函数(用于最小化的代价函数):
-
- 如何初始化k-means聚类算法:
为了避免该算法陷入局部最优;
主要需要关注的是如何初始化聚类中心;
真实情况下较为推荐的是,随机选取K个训练样本中的点,作为初始化聚类中心;
局部最优的情况如下图:
为了不落入局部最优的情况,我们可以尝试多次随机初始化,而不仅仅是只初始化一次;
- 如何初始化k-means聚类算法:
-
- 如何选取聚类的数量(choosing the number of clusters)
采用“肘部原则”,可是一般曲线没有这么好看,所以还是主要依赖人为选取;
- 如何选取聚类的数量(choosing the number of clusters)
2. 降维算法
(1)数据压缩
不仅仅压缩数据占用更少的内存,同时还能加速算法的运行。
-
- 数据压缩的定义:
通常是用于压缩一些不必要的特征,如果拥有过多特征,其中有一些不必要的,可以直接压缩掉,减少一些特征冗余。例如将某些特征从1000D降到100D;
- 数据压缩的定义:
(2)数据可视化
(3)PCA(principal component analysis)主成分分析算法
既可以用作数据压缩问题,同样是一个降维方法;
对于降维问题来说,目前最流行的算法就是PCA算法;
- PCA做的是会找到一个投影平面对数据进行投影,使得所有数据到该平面的平方距离能够最小(注意首先要做数据标准化操作);
- 线性回归和PCA的区别:
(1)线性回归为了预测y值,而PCA不是,对PCA来说x1,xn都是平等的,没有特殊的
(2)二者确定最短距离不同,线性回归是y方向距离,PCA是正交距离
- 在使用PCA之前也是要进行数据预处理的(feature scaling/mean normalization)
- 计算数据的协方差矩阵–>计算它的奇异值分解svd,后续的具体步骤如下:
- 主成分数量选择:(根据右侧公式来慢慢增大k的值,为了选择的k能使得分布后的数据最大程度的保持差异)
- PCA的主要运用:
- 模型压缩:降低储存数据的内存或者硬盘空间
- 模型压缩:加入PCA部分后可以加速一些学习算法
- 降维后方便可视化
3.异常检测问题
(1)高斯分布(Gaussian distribution)也叫正态分布(normal distribution)
(2)异常检测算法
-
异常检测和监督学习应该选择用哪一个:
(1)异常检测:叫少量数目的正样本(通常是0-20个),较大数量的负样本(负样本代表的是正常表现的东西,而正样本代表的是不合规矩的少量不好的东西,例如差的发动机之类的);
如果将要出现的正样本,跟你本身已有的是完全不同的情况,那么就使用异常检测。
(2)监督学习:大量的正样本和负样本 ;如果将要出现的正样本和你当前训练集中的正样本类似,那么使用监督学习算法就更加合理。 -
设计、选择异常检测算法的特征:
画出你数据的分布图,如果不是高斯分布,那么就去调整数据的特征,让它更接近高斯分布
(3)多元高斯分布
-
用于异常检测:
-
什么时候采用本身的高斯模型或者是多元高斯模型:
4. 推荐系统
(1)预测电影推荐的例子
(2)基于内容的推荐算法
因为我们已经拥有对于各个电影描述的特征了;
基本等价于线性回归算法的优化函数:
(3)协同过滤算法(collaborative filtering)
-
不基于内容了,也就是没有最初的内容特征信息;
-
当你执行算法时,要观察大量的用户,观察这些用户的实际行动,来协同地得到更佳的每个人对于电影的评价值,因此每一个用户对电影做出了评价,每一个用户都在帮助算法学习出更合适的特征,这就是协同过滤算法;
-
这种算法能够自行学习所需要使用的特征;
-
怎么能够自行得到x1和x2的特征值:
通过个人喜好的情况,偏向于哪种电影,以及这个人对于某一部电影的评分,来判断具体每部电影的爱情特征和动作特征是多少。
因此在这个阶段中,需要做的优化函数如下:
-
协同过滤算法的思路如下:
先预测一些θ值->得到x->然后得到更好更合适的θ值,不断继续,最后得到合适的收敛后的θ值和x值。
-
改进上述算法,让它变得更为高效:
只需要将上述的两个步骤的最优目标函数结合为一个最优目标函数;
优化该函数的过程如下:
(3.1)向量化:低秩矩阵分解(low rank matrix factorization)
- 例子:一个用户一直在寻找一个商品,有没有一些相关的其他商品可以推荐给这个用户
- 目的在于通过另一种方法来表示协同过滤算法的
大数据集学习
- (1)随机梯度下降
1.1 online learning(在线学习)
点击率预测学习问题
在线学习的问题都能够被转换成一个拥有固定数据集大小的机器学习问题。
在线学习也是会用到随机梯度下降的一个变种。 - (2)map reduce(减少映射)
可以应用在大规模机器学习上
机器学习实例:photo OCR(照片光字字符识别)
- text detection
滑动窗口法 - character segmentation
- character classification