每日一个机器学习算法——机器学习实践

知道某个算法,和运用一个算法是两码事儿。

当你训练出数据后,发觉模型有太大误差,怎么办?

1)获取更多的数据。也许有用吧。

2)减少特征维度。你可以自己手动选择,也可以利用诸如PCA等数学方法。

3)获取更多的特征。当然这个方法很耗时,而且不一定有用。

4)添加多项式特征。你在抓救命稻草么?

5)构建属于你自己的,新的,更好的特征。有点儿冒险。

6)调整正则化参数lambuda。

以上方法的尝试有些碰运气,搞不好就是浪费大把时间。

machine learning diagonostic. 机器学习诊断。检查正确性,提升效率,节省调试时间。

一,评估假设

loss越小,不代表模型越好,有可能出现过拟合的现象。

正确的方法是:将数据分割为训练集和测试集。利用训练集训练数据,测试集进行测试求出测试集误差(test set error)

二,模型选择与训练验证测试集

如何选择正则化参数和多项式次数(模型选择)

尝试不同的正则化参数和多项式次数,选择在测试集上损失最小的model。这似乎可行,但都是针对测试集计算,无法验证泛化能力。

解决的方法就是划分出三个集合:训练集,验证集,和测试集。

利用验证集选择最佳的参数模型,之后再在测试集上计算泛化损失。

三,模型诊断:bias vs variance

过拟合和欠拟合的判断方法

绘制曲线

当d过小,有可能是欠拟合

当d过大,有可能是过拟合

对于欠拟合而言,验证集和训练集的loss均非常大

对于过拟合而言,训练集的loss很小,而验证集的loss很大。

四,正则化参数对欠拟合过拟合的平衡

lambuda很大的话,容易欠拟合,过小则容易过拟合。

如何选择?

设置一个正则化参数的选择范围,在验证集上计算每一个值所对应的loss的大小,选择最小的那个。

五,学习曲线

high bias:

Jcv和Jtrain在m很大的情况下,都很高。

此时,增加样本数将没有效果。因为模型本身出了问题。可能的问题是模型过于简单。

high variance:

Jcv和Jtrain之间间隔很大。

此时,增加训练样本数有可能会有很好的效果。

六、总结

1)获取更多样本:解决过拟合。欠拟合则不行。

2)更小的特征集:同上。

3)添加其他特征:解决欠拟合

4)添加多项式:解决欠拟合

5)减小lambuda: 解决欠拟合

6)增大Lambuda:解决过拟合

时间: 2024-10-06 15:56:26

每日一个机器学习算法——机器学习实践的相关文章

常见机器学习算法原理+实践系列6(朴素贝叶斯分类)

朴素贝叶斯NB Native Bayes是一种简单有效的分类算法, 贝叶斯定律用这个条件概率公式来表示: P(A|B) = P(B|A)* P(A) / P(B),其中P(A|B)的意思是,在B发生的前提下,发生A的概率,P(A),P(B)代表现实中发生A以及B的概率,实际上取决于我们输入样本的情况.贝叶斯分类算法在邮件分类,文本分类等等很多场景有非常广泛的应用.比如在邮件分类中,可以这样简单的理解,假如一个邮件用这个词组合(w1,w2,….wn)来表示,那么这个邮件是垃圾邮件的概率是多少.实际

常见机器学习算法原理+实践系列5(KNN分类+Keans聚类)

一,KNN分类 K-Nearest Neighbor K临近算法是一种有监督的分类算法,工作原理很简单,存在一个样本集合,也成为训练样本,样本中包含标签,将新数据的每个特征与样本集合的数据对应特征进行比较,然后提取样本最相似的分类标签,k就是选择的最相似的数据点,选择k个点中出现频率最高的分类,就是新数据的分类.一般来说k不会超过20个.Knn有两个细节需要注意,一个是相似度算法,常用包含欧式距离,余弦距离等等,另外一个在计算相似度之前需要归一化特征,比如使用离差标准化(Min-Max),把所有

常见机器学习算法原理+实践系列1(逻辑回归)

一,逻辑回归Logistic Regression 逻辑回归是线性模型Y=f(x)=b0+b1*x的延伸,一般用来做2分类问题,输出标记C={0,1},C就是classification的意思,通俗的讲,就要建立Y和C之间的关系,Y是多少的时候,C是0,Y是多少的时候,C是1,传统的线性回归输出的y是实数,在负无穷到正无穷之间,而C是0,1两种,使用Sigmoid函数就可以把y从负无穷到正无穷之间转换到0,1之间,该函数为:y=1/(1+e-z),其中z=wTX,x为自变量,w为权重.P记为发生

常见机器学习算法原理+实践系列2(SVD)

SVD奇异值分解 利用Singular Value Decomposition 奇异值分解,我们能够用小得多的数据集来表示原始数据集,可以理解为了去除噪音以及冗余信息.假设A是一个m*n的矩阵,通过SVD分解可以把A分解为以下三个矩阵: 其中U为m*m矩阵,里面的向量是正交的,U里面的向量称为左奇异向量,Σ是一个m*n对角矩阵,对角线以外的因素都是0,对角线都是奇异值,按照大到小排序,而VT(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量).那么奇异值和特征值

常见机器学习算法原理+实践系列4(决策树)

决策树分类 决策树算法借助于树的分支结构实现分类,决策树在选择分裂点的时候,总是选择最好的属性作为分类属性,即让每个分支的记录的类别尽可能纯.常用的属性选择方法有信息增益(Information Gain),增益比例(gain ratio),基尼指数(Gini index). 信息增益 信息增益基于香浓的信息论,它找出的属性R具有这样的特点:以属性R分裂前后的信息增益比其他属性最大.这里信息(实际上就是熵)的定义如下: 其中的m表示数据集D中类别C的个数,Pi表示D中任意一个记录属于Ci的概率,

常见机器学习算法原理+实践系列3(PCA)

PCA主成份分析 PCA(Principal Component Analysis)主要是为了做数据降维,数据从原来的坐标系转换到登录新的坐标系,新坐标系的选择是由数据本身决定的,第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差,该过程一直重复,重复次数为原始数据中特征的数据.通常情况下,大部分方差都包含在前面的几个新坐标轴中,所以一般情况下我们选择前面几个贡献值较大的(90%以上)就是主成份了. 通过这种降维技术,它能将大量相关变量转化为一组

机器学习算法中的过拟合与欠拟合

在机器学习表现不佳的原因要么是过度拟合或欠拟合数据. 机器学习中的逼近目标函数过程 监督式机器学习通常理解为逼近一个目标函数(f)(f),此函数映射输入变量(X)到输出变量(Y). Y=f(X)Y=f(X) 这种特性描述可以用于定义分类和预测问题和机器学习算法的领域. 从训练数据中学习目标函数的过程中,我们必须考虑的问题是模型在预测新数据时的泛化性能.泛化好坏是很重要的,因为我们收集到的数据只是样本,其带有噪音并且是不完全的. 机器学习中的泛化 在In机器学习中,我们描述从训练数据学习目标函数的

机器学习算法介绍

什么是程序 计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列). 通俗讲,计算机给人干活,但它不是人,甚至不如狗更懂人的需要,那怎么让它干活呢,那就需要程序员来写程序,程序就是计算机能懂的语言(指令),然后计算机可以执行这些程序(指令),最终完成任务. int n = std::atoi(argv[1]); //求n的阶乘 double result = 1.0; for (int

1004_机器学习算法

04_机器学习算法 机器学习的算法目的是找到一种数学模型符合描述的对象. 常见的有三种机器学习的方法: 主要取决于数据的类型 A. 有监督的学习 学习的数据是有人类标识的数据,比如说看X光片,识别猫. 已有的数据结果是知道的,目标是找特征与标签(结果)的关系. 像AlphaGo学习以前的棋局也是这样. 缺点是人工的数据有限. B. 无监督学习 无标签的数据,没有答案,往往大量杂乱的数据是这样,寻找类似的特征向量集合在一起. 比如分离两种声音,自动跟踪学习天体运动规律等. 适合数据量大,不提前标识