1.绪论
以很高的概率 得到一个很好的模型
1.1 机器学习过程
训练数据 (数据样本)
色泽 | 根 | 敲声 | 好瓜 |
---|---|---|---|
青绿 | 蜷缩 | 沉浊 | 是 |
乌黑 | 蜷缩 | 沉浊 | 是 |
青绿 | 硬挺 | 沉浊 | 否 |
乌黑 | 蜷缩 | 清脆 | 否 |
经过训练(学习算法),得到
模型:决策树,神经网络,支持向量机,Boosting,贝叶斯网
1.2 基本术语
-
数据集:数据样本
训练数据:用于得出模型
测试数据:把模型拿来用
-
示例(instance):色泽 根 敲声
样例(example):色泽 根 敲声 好瓜(结果)
-
属性(attribute):色泽 或者 根等
属性空间:有几个属性就是几维属性空间(样本空间)
特征向量(属性向量):属性空间中的向量(结果)
-
不可知样本(unseen data):未来的数据,不可知
-
假设:所用的模型,模型学到的东西,拟合函数f(x)
真相:正确的答案y
-
分类:离散的输出 {yes,no},{big,middle,small}
回归:连续的输出 [0,1]
-
监督学习(supervised learning):拿到的数据中有结果(知道好瓜标准是如何)
无监督学习:拿到的数据中没有结果
-
独立同分布:只有样本满足独立同分布,他们之间才是无关的
泛化:模型的泛用性 |f(x)-y|<e (越小越好)
1.3 归纳偏好(Inductive Bias)
一般准则:奥卡姆剃刀(若非必要,勿增实体)
到底什么是更简单? ax2+bx+c还是ax3+c ,进一步研究
学习算法的归纳偏好是否匹配问题决定了算法性能
1.4 NFL定理
A和B谁更好?
黑点:训练样本 白点:测试样本
NFL定理(No Free Lunch没有免费午餐): 一个算法某些问题上A好,那比存在另一些问题B好
即脱离具体问题,谈论什么算法更好没有意义
具体问题,具体分析
2.模型评估与选择
2.1 泛化能力
什么模型好?
能很好适用于 unseen instance不可知样本
2.2 过拟合和欠拟合
泛化误差:在"未来"样本上的误差(越小越好)
经验误差:在训练集上的误差,即"训练误差"(可控)
经验误差是否越小越好? 经验误差越小可能出现"过拟合"
过拟合 VS 欠拟合
研究问题:这个算法是怎么解决Over Fitting的,这个办法什么时候会失效
2.3 三大问题
-
如何获得测试结果?
没有unseen data的情况下用什么样的评估方法获得结果
-
如何评估性能优劣?
性能度量,对于不同需求有不同的度量标准
-
如何判断实质差别?
比较检验
2.4 评估方法
如何获得"测试集(test set)"
测试集应该与训练集"互斥",不可以从训练集中找几条数据进行测试
常见方法:
-
留出法(hold-out)
将已有数据集留出一部分进行测试
注意
-
保持数据分布一致性(eg:分层采样)
不能训练集中的80个瓜都是好瓜,测试集中的20个全是坏瓜(所以要保持数据分布的一致性)
-
多次重复划分(eg:多次随机取样)
-
测试集不能太大,也不能太小
-
-
交叉验证(cross validation)
解决留出法中随机取样取不到全部数据的尴尬情况
-
k-折(k-fold)交叉验证法
上图为10折发,划分10个子集进行10次测试,每次取其中一个子集作为测试集,保证所有数据都会被用到
-
-
自助法(booststrap)
上面两种方法对已有数据集M(100)进行评估时,总是要划分出m(k)作为测试集
无法保证模型结果是100个数据的结果
基于自助采样(有放回的采样,牺牲数据分布的一致性,换来数据量的一致性)
原盒中取s个数据,将这s个数据复制一份放回原盒,然后取另外s个数据进行测试,这样就能在总数100不变的情况下,以牺牲数据分布一致性为代价换来数据个数的一致性
2.5 调参与验证集
-
算法的参数:人工设定,也称"超参数"(即人工对于模型的选择)
-
模型的参数:由学习确定
-
调参过程相似:先产生若干模型,然后基于某种评估方法进行选择
eg.利用多项式函数逼近数据
算法的参数:多项式的次数?由用户提供,是"超参数" ax^2+bx+c
模型的参数:确定上式abc
-
验证集(validation set)
用于确定上述参数的选择
2.6 性能度量
什么样的模型是好的?
不仅取决于算法和数据,还取决于任务需求
-
回归(regression)任务常用的均方误差
-
错误率
-
精度
-
查准率
TP:true positive
FN:false negetive
查准率:
2.7 比较校验
在某种度量下取得评估结果后,是否可以直接比较评判优劣?
NO
-
测试性能不等于泛化性能
-
测试性能随着测试集的变化而变化
3.线性模型
通过属性的线性组合进行预测的函数
3.1 线性回归(Linear Regression)
wi是属性,xi是权重
好瓜模型中:w1\*青绿色+w2*声音沉浊+w3\*根形态 显然是不合理的
对于属性这种离散的数据,要考虑期间是否存在'序'的关系
即考虑离散数据连续化
- 如果有序:(高 中 低)->1,0.5,0
- 如果无序:(蓝 绿 白)->(100),(010),(001) k维属性变成k维向量
3.2 最小二乘解
线性回归问题目的就是求w向量和b求最似函数,相似度量可以采用均方计算
*argmin:*取到后式最小值时,自变量的值
求最小值: 对w,b偏导,令偏导数为0 ,得到似然函数最小值时的解(w,b)
多元函数无条件极值必要条件: 令x,y偏导=0
线性回归问题中,对似然函数求导的极值点一定是极小值点
3.3 多元线性回归
线性回归问题中,
xi是i个值
多元线性回归中,xi是向量比如x11为敲声,x12为根形态,x13为色泽
**求解:**x解向量的求解可以采用矩阵方程
-
r(A)=r(A|b)=n,唯一解
-
r(A)=r(A|b)<n,无穷解
求出无穷解w如何选用最好的w拟合模型呢?
归纳偏好
对于解出多个w,也就是多个对应模型,那么用哪个更好,这就是归纳偏好所研究的内容
方法:正则化 对于求出的多个模型 a*x^2+b*x+c和 c*x^3+d*x^2+e*x+f 加入一个限制如:要求最高次最小or要求x系数最小等
3.4 广义线性模型
普通的线性回归时用f(xi) = y
广义线性回归就是以f(xi) = g(y)
如 lny = f(xi)
求解线性的方式得到一个非线性的解决方案
3.5 逻辑回归(对率回归)
将回归模型解决分类问题
3.5.1 回归和分类
分类(classification): 将实例数据划分到合适的类别中。例如 判断网站是否被黑客入侵(二分类 ),手写数字的自动识别(多分类),多目标分类(多分类)。
回归(regression): 主要用于预测数值型数据。例如: 股票价格波动的预测,房屋价格的预测等。
-
联系:对输入做出预测,并且都是监督学习。说白了,就是根据特征,分析输入的内容,判断它的类别,或者预测其值。
-
区别:
-
输出不同
-
分类问题输出的是物体所属的类别,回归问题输出的是物体的值。
如明天天气晴还是阴为分类问题,明天天气多少度为回归问题
-
分类问题输出的值是离散的,回归问题输出的值是连续的
-
分类问题输出的值是定性的,回归问题输出的值是定量的
这是一杯水,这句话是定性;这杯水有10毫升,这是定量。
-
-
目的不同
分类的目的是为了寻找决策边界,即分类算法得到是一个决策面,用于对数据集中的数据进行分类。
回归的目的是为了找到最优拟合,通过回归算法得到是一个最优拟合线,这个线条可以最好的接近数据集中的各个点。
-
结果不同
分类的结果没有逼近,对就是对,错就是错,什么类别就是什么类别,最终结果只有一个。
回归是对真实值的一种逼近预测,值不确定,当预测值与真实值相近时,误差较小时,认为这是一个好的回归。
-
应用场景不同
分类:判断动物是猫还是狗,判断天气阴晴,判断合格
回归:判断年龄大小,判断零件尺寸,判断天气温度
-
3.5.2 逻辑回归(将连续问题转换为离散问题)
线性回归的输出是连续的,但是我解决分类问题期望输出是离散的y∈{0,1}
使用逻辑函数(对率函数)可以将连续输出转换为离散输出
理想的"单位越前函数"是
但是由于不可导,所以性质不好
所以采用光滑可导的逻辑函数(对率函数)
以逻辑函数为联系函数
注意:逻辑回归是利用回归模型借用联系函数(对率函数)解决分类问题的算法,所以是分类算法
3.6 逻辑回归求解
线性回归问题中,导数为0的点一定是极小值点(最优点)
而在对率回归问题中则不一定,故不可采用均方根
求极小值的方式求解
而应采用极大似然法估计w和b两个参数的取值
极大似然法求解思路:
3.7 线性判别分析(Linear Discriminant Analysis)
线性模型做分类有两种方法
- 广义线性模型通过联系函数做分类(如对率回归)
- 直接分类
如何直接分类? 最基本的一种:线性判别分析
线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。
想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不用类之间中心的距离尽可能大。
基于这样的考虑,LDA定义了两个散度矩阵。
- 类内散度矩阵(within-class scatter matrix)
同类样本点距离投影点的距离,越小越好
- 类间散度矩阵(between-class scaltter matrix)
不同类之间的中心距离,越大越好
3.8 类别不平衡
什么是类别不平衡?
当一个数据可以划分为小类和大类,且小类更重要时。就要研究类别不平衡。
比如100w个电话中研究100个诈骗电话
-
思路:
-
类别平衡时
-
类别不平衡时
平衡点发生变化
即:权值(代价)发生变化
-
-
常见类别不平衡学习方法:
-
过采样(oversampling): 小类增加到和大类一样多
不能随便增加小类样本,或者复制小类样本以达到增加的目的,这样会造成overfitting(过拟合)的结果
比较经典的算法如下:
SMOTE算法:
-
欠采样(undersampling): 减少大累采样和小样一样多
同上,不能随便丢,可能丢掉关键样本导致分类边界变化等
EasyEnsemble算法:
每次拿小类样本个数的大类样本和小类样本建立模型,多次重复以上步骤
-
阈值移动(threshold-moving):如支持向量机
-
4.决策树
机器学习中很重要的一个模型