上两周周有点事情耽搁了几天,继续开始学习《机器学习》,坚持。。。
在这里安利一下吴恩达老师的《机器学习》教学视频,讲的非常好,大家有空可以去看一看。
第三章 线性模型
1、概念:
线性模型试图学习得到一个通过属性的线性组合来进行预测的函数,即
优点是简单,易于建模。
2、分类任务和回归任务
回归问题和分类问题的本质一样,都是针对一个输入做出一个输出预测,其区别在于输出变量的类型。 分类问题是指,给定一个新的模式,根据训练集推断它所对应的类别(如:+1,-1),是一种定性输出,也叫离散变量预测; 回归问题是指,给定一个新的模式,根据训练集推断它所对应的输出值(实数)是多少,是一种定量输出,也叫连续变量预测。
将实例数据划分到合适的分类中,即分类问题。 而回归问题, 它主要用于预测数值型数据,典型的回归例子:数据拟合曲线。可以参考:https://www.cnblogs.com/tonglin0325/p/6044882.html
3、线性回归
线性回归:试图学得一个线性模型以尽可能地预测实值输出标记;
单变量线性回归:
多元线性回归:
如何确定线性模型,即确定w和b值,是求得线性模型的核心所在;很明显,关键在于如何衡量f(x)与y值得差别。即对模型的性能评估(可以参考上一篇博客);线性回归中,最常用的性能度量是均方误差(几何意义对应“欧氏距离”),因此我们可以试图让均方误差最小化;即
基于均方误差最小化进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使得所有样本到直线上的欧氏距离之和最小。
对数线性回归:试图让逼近y值;即
在形式上仍然是线性回归,但实质上已在求取输入空间到输出空间的非线性函数映射,这里的对数函数起到了将线性回归模型的预测值与真实标记联系起来的作用。
4、对数几率回归(一种分类学习方法)
对数几率函数(logistics function),是一种“Sigmoid 函数”:
y被视为x作为正例的可能性,则1-y是其反例的可能性,两者的比值 称为“几率”(odds),反应了x作为正例的相对可能性,对几率取对数则得“对数几率”;
对数几率回归实际上是一种分类学习方法,这种方法有很多优点:
- 它是直接对分类的可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;
- 它不仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;
- 对数函数是可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。
5、线性判别分析(Linear Discriminant Analysis, LDA)
LDA的思想:给定训练样例集,设法将样例投影到一条直线上,使得同样样例的投影点尽可能接近、异类样例的投影点尽可能远离;对新样本进行分类时,将其投影到同样的一条直线上,再根据投影点的位置来确定新样本的类别。
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。协方差为正值,则表明两个变量正相关,为负值,则表明两个变量负相关。
可以参考:https://blog.youkuaiyun.com/xiao_lxl/article/details/72730000
性能度量:使同类样例的投影点尽可能接近(可以让同样样例投影点的协方差尽可能小),同时使异类样例的投影点尽可能远离(让类中心之间的距离尽可能大
)
分别表示第i ->{0,1}类示例的集合、均值向量、协方差矩阵。
6、多分类学习
多分类学习任务可以利用二分类学习器来解决;基本思路是“拆解法”:即将多个分类任务拆为若干个二分类任务求解。具体来说就是先把问题分解为多个二分类问题,每个二分类问题训练出来一个二分类学习器;在测试时,对这些二分类器的预测结果进行集成已获得最终的分类结果。(这里感觉像是二叉树)。
这里的关键问题在于如何对多分类问题进行拆解,以及如何对多个分类器进行集成。
经典的拆解策略有3种:
给定数据集D = {(x1,y1),(x2,y2),,,(xm,ym)}, yi={C1,C2,C3,...,CN};
- “一对一”(One vs. One, OvO):将这N个类别两两配对,产生N(N-1)/2个分类任务,测试时得到N(N-1)/2个分类结果,最终结果可通过投票得到:即把被预测得最多的类别作为最终结果;
- “一对其余”(One vs. Rest, OvR):每次将一个类作为正例,其他类作为反例,训练出N个分类器;测试时一般只有一个正例预测,如有多个,可以通过分类器的预测置信度,选择置信度最大的类别作为分类结果。
- “多对多”(Many vs. Many, MvM):每次将若干个类作为正类,若干个其他类作为反类,显然OvO,OvR都是MvM的特例。MvM的正反类构造必须有特殊的设计,不能随机选取。一种常用的MvM技术:“纠错输出码”(Error Correcting Output Codes,简称ECOC)
7、类型不平衡问题
前面介绍的分类学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。如果不同类别的训练数目相差很大, 会对学习过程造成困扰。如有998正例,2个反例,则学习器只需要输出正例结果,就可以达到99.8的正确率,然而这样的学习器往往没有价值。
类型不平衡就是指分类任务中不同类别的训练样例数目差别很大的情况。
“再缩放”——类别不平衡学习的一个基本策略;例如在二分类情况下,预测的y>0.5则为正例,否则为反例,y值实际上表达了正例的可能性,几率y/(1-y)则反映了正例可能性与反例可能性的比值, 阈值设为0.5恰表明分类器认为真实正反例可能性相同,则分类器决策规则为若 y/(1-y) > 1,则预测为正例。若训练集中正例数m+与反例数m-不同,则观测几率是m+/m-,由于我们通常假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真实几率,于是只要分类器的预测几率高于观测几率就应判定为正例,即
若 y/(1-y) >m+/m- 则预测为正例。即 , 这就是类别不平衡的一个基本策略 ——“再缩放”
“训练集是真实样本总体的无偏采样”这个假设往往不成立,也就是说我们未必能有效的基于训练集观测几率来推断出真实几率。现有技术大体有三类做法:
1、直接对训练集中的反类样例进行“欠采样”(undersampling),即去除一些反例使得正、反例数目接近,然后再进行学习;不能随意的丢弃反例,可能丢失一些重要信息;经典算法有EasyEnsemble(利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习器都进行了欠采样,但不会丢失信息)
2、对训练集里的正类样本进行“过采样”(oversampling), 即增加一些正例使得正、反例数目接近,然后进行学习;不能简单的对初始正例样本进行重复采样,否则会导致严重的过拟合;代表性算法有SMOTE(通过对训练集里的正例进行插值来产生额外的正例);
3、直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将"再缩放"公式嵌入到其决策过程中,称为“阈值移动”(threshold-moving).。
另外,“再缩放”也是“代价敏感学习”的基础,在代价敏感学习中将再缩放公式中的m-/m+ 用cost+/cost-代替即可,cost+是将正例误分为反例的代价,cost-是将反例误分为正例的代价。