一 线性回归
线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式
为了求到w,有两种方法
1, 正规方程
根据最小二乘法对误差函数求导:
求导后,推导出正规方程
正规方程:
求得w,缺点是在特征多,有求矩阵逆的步骤所以计算复杂
2, 梯度下降法
在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
(1).单变量函数的梯度下降
我们假设有一个单变量的函数 :J(θ) = θ2
函数的微分:J、(θ) = 2θ
初始化,起点为: θ0 = 1
学习率:α = 0.4
(2).多变量函数的梯度下降
我们假设有一个目标函数 ::J(θ) = θ1^2 + θ2^2
假设初始的起点为: θ0 = (1, 3)
初始的学习率为:α = 0.1
函数的梯度为:▽:J(θ) =< 2θ1 ,2θ2>
α在梯度下降算法中被称作为学习率或者步长
步长大小影响
梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以要加负号
梯度下降法的缺点:只能找到局部最优解
3, 欠拟合和过拟合的概念
欠拟合:是因为学习到数据的特征过少,会导致在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据**,即训练正确率低,测试正确率低**
过拟合:是因为原始特征过多,存在一些嘈杂特征,会导致在训练数据上能够获得比其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据,即训练正确率高,测试正确率低
对比过拟合和欠拟合:
为了解决过拟合现象,我们可以采用正则化的方法,正则化就是减少或删除一些影响不大的特征的影响
我们大多采用减少他的影响,即L2正则化
4, 正则化方法:岭回归
均方误差:作为模型特征值的影响
岭回归
正则项,在总的回归性能不变的情况下,α越大则模型的影响越小
岭回归算法:
5, 正则化方法:Lasso 回归
倾向于完全消除不重要的权重。在均方误差后面添加一个权值向量的ℓ1范数,简单的来说,就是将影响不大的特征删除
Lasso Regression 的代价函数在 θi=0处是不可导的.
解决方法:在θi=0处用一个次梯度向量(subgradient vector)代替梯度,如下式
二 逻辑回归
逻辑回归的输入就是一个线性回归的结果。通过线性回归将一堆的特征值经过一定的计算得到的一个值再经过激活函数,得到一个概率值([0,1]),设置阈值,概率大于阈值,为结果a,小于为结果b
激活函数:sigmoid函数
逻辑回归的损失函数:
这里损失函数怎么来的呢:
对比0-1分布h(x)对应于0-1分布中的概率p,y^i对应于0-1分布中的x_i,也就是样本值,对应到0-1分布中的似然函数,在前面乘以-1/m。最大似然估计的方法要求logL§的最大值,损失函数在其前面加上负号,就是求最小值.
1, 评估逻辑回归的效果
F1-score,分别考虑了精确率和召回率
精确率:预测结果为正例样本中真实为正例的比例
召回率:真实为正例的样本中预测结果为正例的比例
精确率:TP/(TP+FP)
召回率:TP/(TP+FN)
2, ROC曲线与AUC指标
假设这样一个情况,如果99个样本癌症,1个样本非癌症,不管怎样我全都预测正例(默认癌症为正例),准确率就为99%但是这样效果并不好,这就是样本不均衡下的评估问题
问题:如何衡量样本不均衡下的评估?
解决:ROC曲线与AUC指标
TPR = TP / (TP + FN)
所有真实类别为1的样本中,预测类别为1的比例
FPR = FP / (FP + TN)
所有真实类别为0的样本中,预测类别为1的比例
ROC曲线的横轴就是FPR,纵轴就是TPR,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5,这时候效果相当于无论是什么样的样本逻辑回归模型都判断为正确
AUC的概率意义是随机取一对正负样本,正样本得分大于负样本的概率
AUC的最小值为0.5,最大值为1,取值越高越好
如何绘制ROC曲线
绘制的步骤是:
如果概率的序列是(1:0.9,2:0.7,3:0.8,4:0.6,5:0.5,6:0.4)
1)把概率序列从高到低排序,得到顺序(1:0.9,3:0.8,2:0.7,4:0.6,5:0.5,6:0.4);
2)从概率最大开始取一个点作为正类,取到点1,计算得到TPR=0.5,FPR=0.0;因为所有真实类别为1的样本为2,真实样本为0的数目为4,到这里就是1/2和0/4
3)从概率最大开始,再取一个点作为正类,取到点3,计算得到TPR=1.0,FPR=0.0;
4)再从最大开始取一个点作为正类,取到点2,计算得到TPR=1.0,FPR=0.25;
5)以此类推,得到6对TPR和FPR。
得到最终图形:
AUC的意思是——Area Under roc Curve,就是ROC曲线的积分,也是ROC曲线下面的面积
三 决策树算法
决策树就是根据特征的熵的大小,也就是说按照信息量分为不同层次的
1,决策树的划分依据
1 信息增益 = entroy(前) - entroy(后)
计算:
2 信息增益率
增益度量Gain(S,A)和所分离信息度量SplitInformation(如上例的性别,活跃度等)的比值来共同定义的
3 基尼值和基尼指数
基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不一致的概率,基尼值越小,数据集越纯
选择基尼增益最大的作为划分结果
决策树类型总结
2, 剪枝方法
2.1 预剪枝
(1)每一个结点所包含的最小样本数目,例如10,则该结点总样本数小于10时,则不再分;
(2)指定树的高度或者深度,例如树的最大深度为4;
(3)指定结点的熵小于某个值,不再划分。随着树的增长, 在训练样集上的精度是单调上升的, 然而在独立的测试样例上测出的精度先上升后下降。
2.2 后剪枝:
后剪枝,在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树。
3, 特征提取
将任意数据(如文本或图像)转换为可用于机器学习的数字特征,可以提取图像,字典和文本
对中文文本提取的时候,需要注意的有:使用jieba.cut进行分词,将一句话分成一个词一个词的形式之后,再用’ '将每个词join起来,成为类似于英语的文本格式’hello python’这样的就可以进行提取了
Tf-idf文本特征提取
果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类,比如本篇博客出现了大量的’算法’这个词语,可能本篇博客就会进行分类到算法中去
词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到
计算Tf-idf
四 集成算法
集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测
集成学习有两种方法,Bagging和Boosting
1, Bagging
bagging集成优点
Bagging + 决策树/线性回归/逻辑回归/深度学习… = bagging集成学习方法
经过上面方式组成的集成学习方法:
均可在原有算法上提高约2%左右的泛化正确率
简单, 方便, 通用
使用Bagging的步骤
1, 采取样本
2, 学习
3, 生成决策树
决策森科:
4, 重复以上步骤,生成多个决策树
4 平权投票集成决策树
2, Boostig
功能`:每新加入一个弱学习器,整体能力就会得到提升
错误率等于0.5,没有投票权
错误率大于0.5,有负投票权
错误率小于0.5,有正投票权
3, 对比
bagging集成与boosting集成的区别:
区别一:数据方面
Bagging:对数据进行采样训练;
Boosting:根据前一轮学习结果调整数据的重要性。
区别二:投票方面
Bagging:所有学习器平权投票;
Boosting:对学习器进行加权投票。
区别三:学习顺序
Bagging的学习是并行的,每个学习器没有依赖关系;
Boosting学习是串行,学习有先后顺序。
区别四:主要作用
Bagging主要用于提高泛化性能(解决过拟合,也可以说降低方差)
Boosting主要用于提高训练精度 (解决欠拟合,也可以说降低偏差)
五 聚类算法
聚类算法就是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。
聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。无监督的学习算法就是没有标准答案的结果,将数据进行分类
1, K-means聚类算法
k-means聚类步骤
1、随机设置K个特征空间内的点作为初始的聚类中心
2、对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
4、如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程
k 就是要分几个类,也就是初始中心点个数
means 中心点到其他数据点距离的平均值
2, 评估聚类算法的效果
1 误差平方和SSE
随着聚类迭代,其值会越来越小,直到最后趋于稳定
如果质心的初始值选择不好,SSE只会达到一个不怎么好的局部最优解.肯定是越小越好
2 肘方法
下降了突然变缓被认为是最好的K的取值
在决定什么时候停止训练时,肘形判据同样有效,数据通常有更多的噪音,在增加分类无法带来更多回报时,我们停止增加类别。
3 轮廓系数法(Silhouette Coefficient)
聚类的凝聚度(Cohesion)和分离度(Separation)
目的:内部距离最小化,外部距离最大化
每次聚类后,每个样本都会得到一个轮廓系数,当它为1时,说明这个点与周围簇距离较远,结果非常好,当它为0,说明这个点可能处在两个簇的边界上,当值为负时,暗含该点可能被误分了。在[-1.1]之间其值越大越好
3 CH系数(Calinski-Harabasz Index)
类别内部数据的协方差越小越好,类别之间的协方差越大越好(换句话说:类别内部数据的距离平方和越小越好,类别之间的距离平方和越大越好),
tr为矩阵的迹, Bk为类别之间的协方差矩阵,Wk为类别内部数据的协方差矩阵;
m为训练集样本数,k为类别数。
分数s高则聚类效果越好
3, 优化
1 k-medoids(k-中心聚类算法)
K-means中,将中心点取为当前cluster中所有数据点的平均值,对异常点很敏感!
K-medoids中,将从当前cluster 中选取到其他所有(当前cluster中的)点的距离之和最小的点作为中心点。
流程和k-means差不多,不同的是选择中心的K-medoids选取的点更可取
2 K-means++
kmeans++目的,让选择的质心尽可能的分散
选取P值最大的作为中心点
4,主成分分析
高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
将原有的数据特征,保存重要的,或者说将不重要的整合:表示保留百分之多少的信息
减少到多少特征,这就是主成分分析,用来降低数据维数