机器学习day01
1.机器学习的一些概念 - - -有监督,无监督,泛化能力,过拟合欠拟合(方差和偏差以及各自解决办法),交叉验证
-
属性:反映事件或对象在某方面的表现或性质的事项。例如每条记录中的“色泽”、“根蒂”、“敲声”就是西瓜的属性
-
属性空间:属性形成的空间。例如我们把"色泽" “根蒂” "敲声"作为三个坐标轴,则它们张成一个用于描述西瓜的三维空间就是属性空间
-
特征向量:每个西瓜都可在这个空间中找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,因此我们也把这个坐标向量称为一个特征向量。
-
标记:关于示例结果的信息,比如上面例子中的 “好瓜” 就属于标记。
-
样例:拥有了标记信息的示例,则称为样例。一般地,用 ( x i x_i xi, y i y_i yi) 表示第 i 个样例,其中 x i x_i xi 是特征向量, y i y_i yi 是这个样本的标记。
-
机器学习的目标是希望通过对训练集 { ( x 1 x_1 x1, y 1 y_1 y1) ,( x 2 x_2 x2, y 2 y_2 y2) ,…, ( x m x_m xm, y m y_m ym)} 进行学习,建立一个从输入空间 X 到输出空间 Y 的映射 f: X → Y X\rightarrow Y X→Y
-
根据预测结果的类型,可以将机器学习任务分为二类。
- 分类:预测结果的类型是离散值,例如"好瓜",“坏瓜”;
- 回归:预测结果的类型是连续值,例如西瓜的成熟度0.37、0.95。
-
根据训练数据是否拥有标记信息,学习任务也可大致划分为两大类。
- 监督学习(supervised learning):训练数据有标记信息,其中分类与回归属于监督学习。
- 无监督学习(unsupervised learning):训练数据没有标记信息,代表有聚类。
-
泛化能力(generalization ability)是指一个机器学习算法对于没有见过的样本的识别能力。我们也叫做举一反三的能力,或者叫做学以致用的能力。
-
1. 欠拟合(Underfitting):模型没有很好地捕捉到数据特征,不能够很好地拟合数据。其产生原因通常是假设函数过于简单或者使用的特征不够。其中增加特征项是欠拟合的一种解决方案。
2. 过拟合(Overfitting):由于假设函数过度拟合训练集数据而失去了泛化能力,导致对新的数据预测不好。其产生原因通常是复杂的假设函数包含了一些与数据无关的不必要的特征项。
3. 偏差:偏差度量了学习算法的期望预测与真实结果的偏离程度, 即刻画了学习算法本身的拟合能力。
4. 方差:方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即刻画了数据扰动所造成的影响。
5. 经验误差:模型关于训练样本集的平均误差(也称经验风险)。
6. 结构风险:结构风险在经验风险的基础上加上表示模型复杂度的正则化项。
7. 泛化误差:模型在新样本集(测试集)上的平均误差。泛化误差=偏差+方差+噪声。
8. 如果模型是低偏差和低方差,那肯定是最好的一个选择。但是偏差和方差在一定程度上是矛盾的。如果偏差降低,那方差可能会相应的升高,如果方差降低,那偏差可能相应升高。所以我们是尽量的寻求偏差和方差的一个平衡点。
偏差太大,说明模型欠拟合;方差太大,说明模型过拟合。
欠拟合和过拟合
学习曲线
- 通过学习曲线来识别模型是否发生了欠拟合、过拟合。
横轴为训练样本数量,纵轴为误差。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019032610462174.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDY5MDkzMg==,size_16,color_FFFFFF,t_70
复杂程曲线
横轴为模型复杂程度,纵轴为误差
上图中:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大,模型欠拟合;模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大,模型过拟合。模型复杂程度控制在点B处为最优。
如何解决欠拟合和过拟合
解决欠拟合:
- 增加特征项。
- 添加多项式特征项。
- 减小正则化系数。
- 增加模型复杂度。
解决过拟合:
- 重新做特征工程。
- 增加训练样本数量。
- 降低模型复杂程度。
- 增大正则项系数。
- 采用dropout方法。
- early stoping。
- 减少迭代次数。
- 增大学习率。
- 添加噪声数据。
- 树结构中,可以对树进行剪枝。
评估方法:
留出法
注:
- 训练 / 测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对结果产生影响。通常采用分层采样。
- 在使用留出法时一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
- 通常将数据集D的大约 2/3 ~ 4/5 用于训练,剩余样本用于测试。
交叉验证法
当 k 刚好等于数据集D的样本总数 m 时,得到了交叉验证法的一个特例:留一法(Leave-One-Out,简称LOO)。
留一法的优势:
1.不受随机样本划分方式的影响;
2.评估结果比较准确(NFL定理同样适用)。
留一法的劣势:
- 数据集比较大时,训练的计算开销可能难以忍受;
- 算法调参复杂。
自助法
优势:
- 自助法在数据集较小、难以有效划分训练 / 测试集时很有用;
- 能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。
劣势:
- 自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。
2.线性回归的原理
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。(这反过来又应当由多个相关的因变量预测的多元线性回归区别,而不是一个单一的标量变量。)
3.线性回归损失函数,代价函数,目标函数
- 损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。
- 代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
- 目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。
详解:https://blog.csdn.net/lyl771857509/article/details/79428475
4.优化方法(梯度下降法,牛顿法,拟牛顿法)
- 梯度下降法:通过一步一步迭代,边训练数据,边调整参数,计算偏导,使回归使终是保持梯度下降的,即最优,来得到最小化的损失函数和此时的模型参数值
- 牛顿法:在梯度下降原理基础上,优化的二阶收敛,下降过程中采用二次曲面,考虑了每走一步对当前最大角度产生的影响,梯度下降是一阶收敛,一个平面下静态的拟合局部,只考虑了本步静态的最大方向。
所以牛顿法比梯度下降法下降要快。 - 拟牛顿法:在每一步迭代时只要求知道目标函数梯度,通过测量梯度变化构造一个目标函数的模型,使之产生超线性收敛性。不需要二阶层数信息。可以用来解决无约事,约事,和大规模的优化问题。
详解:http://www.cnblogs.com/shixiangwan/p/7532830.html
5.线性回归的评估指标
SSE(和方差、误差平方和):The sum of squares dueto error
MSE(均方差、方差):Meansquared error
RMSE(均方根、标准差):Root mean squared error
R-square(确定系数):Coefficientof determination
Adjusted R-square:Degree-of-freedomadjusted coefficient of determination
详解:https://blog.csdn.net/qq_21840201/article/details/80428526
6.sklearn参数详解
参考链接:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
sklearn参数详解:https://blog.csdn.net/qq_42370261/article/details/84852595
1.https://github.com/JRXGUGI/PrimaryAlgorithm_DataWhale_201903/blob/master/day1:线性回归算法梳理.md
2.https://blog.csdn.net/baidu_22225919/article/details/88019207
3.https://github.com/yaojunguo123/ml/blob/master/firstday/first.py
4.https://blog.csdn.net/Smile_Smilling/article/details/88044978