随笔分类 -  机器学习笔记

摘要:这是我的支持向量机模型的代价函数,在左边这里我画出了关于𝑧的代价函数cos𝑡1(𝑧),此函数用于正样本,而在右边这里我画出了关于𝑧的代价函数cos𝑡0(𝑧),横轴表示𝑧,现在让我们考虑一下,最小化这些代价函数的必要条件是什么。如果你有一个正样本,𝑦 = 1,则只有在𝑧 >= 1时, 阅读全文
posted @ 2019-03-08 04:55 chalee3 阅读(1418) 评论(0) 推荐(0)
摘要:在很多应用中,我们希望能够保证查准率和查全率的相对平衡。 我们可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同: 我们希望有一个帮助我们选择这个阀值的方法。一种方法是计算F1 值(F1 Score),其计算公式为: 我们选择使得F1 值最高的阀值。 阅读全文
posted @ 2019-03-06 04:34 chalee3 阅读(564) 评论(0) 推荐(0)
摘要:如果你准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量;而是构建一个简单的算法,这样你可以很快地实现它。 构建一个学习算法的推荐方法为:1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法2. 绘制学习曲线,决 阅读全文
posted @ 2019-03-06 03:19 chalee3 阅读(408) 评论(0) 推荐(1)
摘要:我们已经讨论了模型选择问题,偏差和方差的问题。那么这些诊断法则怎样帮助我们判断,哪些方法可能有助于改进学习算法的效果,而哪些可能是徒劳的呢? 让我们再次回到最开始的例子,在那里寻找答案,这就是我们之前的例子。回顾 1.1中提出的六种可选的下一步,让我们来看一看我们在什么情况下应该怎样选择: 1. 获 阅读全文
posted @ 2019-03-03 21:19 chalee3 阅读(176) 评论(0) 推荐(0)
摘要:学习曲线就是一种很好的工具,我经常使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(𝑚)的函数绘制的图表。 如果我们有100 行数据,我们从1 行数据开始,逐渐学习更 阅读全文
posted @ 2019-03-03 17:33 chalee3 阅读(2864) 评论(0) 推荐(1)
摘要:在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。但是我们可能会正则化的程度太高或太小了,即我们在选择λ 的值时也需要思考与刚才选择多项式模型次数类似的问题。 我们选择一系列的想要测试的 𝜆 值,通常是 0-10 之间的呈现2 倍关系的值(如:0,0.01,0.02,0.04,0.0 阅读全文
posted @ 2019-03-03 01:27 chalee3 阅读(376) 评论(0) 推荐(0)
摘要:当你运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。那么这两种情况,哪个和偏差有关,哪个和方差有关,或者是不是和两个都有关?搞清楚这一点非常重要,因为能判断出现的情况是这两种情况中的哪一种。 阅读全文
posted @ 2019-03-02 01:38 chalee3 阅读(414) 评论(0) 推荐(0)
摘要:假设我们要在10 个不同次数的二项式模型之间进行选择: 显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型。我们需要使用交叉验证集来帮助选择模型。即:使用60%的数据作为训练集,使用 20%的数据作为交叉验证集,使 阅读全文
posted @ 2019-03-01 02:49 chalee3 阅读(619) 评论(0) 推荐(0)
摘要:当我们确定学习算法的参数的时候,我们考虑的是选择参量来使训练误差最小化,有人认为得到一个非常小的训练误差一定是一件好事,但我们已经知道,仅仅是因为这个假设具有很小的训练误差,并不能说明它就一定是一个好的假设函数。而且我们也学习了过拟合假设函数的例子,所以这推广到新的训练集上是不适用的。那么,你该如何 阅读全文
posted @ 2019-02-25 21:19 chalee3 阅读(309) 评论(0) 推荐(0)
摘要:小结一下使用神经网络时的步骤: 网络结构:第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。 第一层的单元数即我们训练集的特征数量。 最后一层的单元数是我们训练集的结果的类的数量。 如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。 我们 阅读全文
posted @ 2019-02-25 17:30 chalee3 阅读(185) 评论(0) 推荐(0)
摘要:当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但最终的结果可能并不是最优解。为了避免这样的问题,我们采取一种叫做梯度的数值检验(Numerical Gradient Checking)方法。这种方法的思想是通过估计梯度 阅读全文
posted @ 2019-02-23 15:37 chalee3 阅读(495) 评论(0) 推荐(0)
摘要:之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层开始正向一层一层进行计算,直到最后一层的ℎ𝜃 (𝑥)。 现在,为了计算代价函数的偏导数我们需要采用一种反向传播算法,也就是 首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 以一个例子来说明反向 阅读全文
posted @ 2019-02-22 21:45 chalee3 阅读(717) 评论(0) 推荐(1)
摘要:假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的neuron 个数(𝑆𝑙表示输出层神经元个数),𝑆𝐿代表最后一层中处理单元的个数。 将神经网络的分类定义为两种情况:二类分类和多类分类,二类分类:𝑆𝐿 = 0, 𝑦 = 0 阅读全文
posted @ 2019-02-21 20:29 chalee3 阅读(2200) 评论(0) 推荐(0)
摘要:当我们有不止两种分类时(也就是𝑦 = 1,2,3 ….),比如以下这种情况,该怎么办?如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有4 个值。例如,第一个值为1 或0 用于预测是否是行人,第二个值用于判断是否为汽车。输入向量𝑥有三个维度,两个中间层,输出层4 个 阅读全文
posted @ 2019-02-21 18:58 chalee3 阅读(1271) 评论(0) 推荐(0)
摘要:二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0 或1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND): 下图的神经元 阅读全文
posted @ 2019-02-21 00:12 chalee3 阅读(253) 评论(0) 推荐(0)
摘要:从本质上讲,神经网络能够通过学习得出其自身的一系列特征。在普通的逻辑回归中,我们被限制为使用数据中的原始特征𝑥1, 𝑥2, . . . , 𝑥𝑛,我们虽然可以使用一些二项式项来组合这些特征,但是我们仍然受到这些原始特征的限制。在神经网络中,原始特征只是输入层,在我们上面三层的神经网络例子中, 阅读全文
posted @ 2019-02-21 00:08 chalee3 阅读(397) 评论(0) 推荐(0)
摘要:( FORWARD PROPAGATION ) 相对于使用循环来编码,利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值: 这只是针对训练集中一个训练实例所进行的计算。如果我们要对整个训练集进行计算,我们需要将训练集特征矩阵进行转置,使得同一个实例的特征都在同一列里。即: 阅读全文
posted @ 2019-02-20 22:20 chalee3 阅读(560) 评论(0) 推荐(0)
摘要:神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight)。 我们设计出了类似 阅读全文
posted @ 2019-02-20 11:40 chalee3 阅读(514) 评论(0) 推荐(0)
摘要:我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。下面是一个例子: 当我们使用𝑥1, 𝑥2 的多次项式进行预测时,我们可以应用的很好。 之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。假设我们有非常多的特征,例如大于100 阅读全文
posted @ 2019-02-20 01:25 chalee3 阅读(524) 评论(0) 推荐(0)