如何评判一个训练集的好坏
如果我们想要得到一个训练集,并使用训练集训练的模型,训练集中的误差与整个数据空间中的误差之间的差异很小,即写下以下表达式:
[En]
If we want to get a training set and use the model trained by the training set, the difference between the error in the training set and the error in the whole data space is small, that is, write the following expression:
[L(h^{train},D_{all})-h(h^{all},D_{all})\leq \delta ]
那么训练集(D_{train})应该满足的条件为:
[\forall h \in H,\lvert L(h,D_{train})-L(h,D_{all}) \rvert \leq \frac{\delta}{2} ]
即 对于假设空间中的任何模型在训练集上的误差和在整个数据空间上的误差之间的误差都小于某个值。推导过程如下:
[L(h^{train},D_{all}) \leq L(h^{train},D_{train}) + \frac{\delta}{2} \ \leq L(h^{all},D_{train}) + \frac{\delta}{2}\ \leq L(h^{all},D_{all}) + \frac{\delta}{2} +\frac{\delta}{2}=L(h^{all},D_{all}) +\delta ]
因此, 我们总希望得到一个好的样本集,其能够满足:
[\forall h \in H,\lvert L(h,D_{train})-L(h,D_{all}) \rvert \leq \varepsilon\ ]
下面则来探讨一下我们选取到坏的数据集的概率。
由前述的讨论可知,一个(D_{train})是坏的,则 至少存在一个h使得它不满足上式,那么可以认为:
[P(D_{train}\quad isbad)=\bigcup_{h\in H}P(D_{train} \quad is bad\quad dueto\quad h)\quad 所有可能的交集\ \leq \sum_{h\in H}P(D_{train} \quad is bad\quad dueto\quad h)\ \leq \sum_{h\in H}2exp(-2N\varepsilon ^2)=\lvert H \rvert 2exp(-2N\varepsilon ^2)\quad 根据不等式得到的 ]
那么可以看到: 增加训练集样本的数据(N) 或者减少假设空间的大小(\lvert H \rvert) 都可以使得拿到坏数据集的概率降低
但在实践中,很少用它来衡量,因为随机计算的上界大于1,这正好给了我们如何做的启发。
[En]
But in practice, it is rarely used to measure in this way, because the upper bound of random calculation is greater than 1, which just gives us inspiration on how to do it.
而在现实中通常另外收集数据这个方法很难实现,那如果刻意去减少(H)的大小呢,这虽然可以使上界降低, 但如果使得(H) 都没有能够让损失函数很小的假设,那这个减少就很没有意义了。如下图,虽然在更小的(H)能够让训练假设的误差更接近于完美假设的误差, 但这个完美假设是在这个小的假设空间中选出来的,很可能它本身的误差就很大。

那么有没有可能 有一个loss很低的完美假设,同时还能够让现实训练出来的假设和理想很接近呢?,即图中两个small都要。
鱼与熊掌可以兼得的机器学习
承接上文,如果我们要 有一个loss很低的完美假设,同时还能够让现实训练出来的假设和理想很接近,那么最简单的想法当然是 假设空间很小,但是假设空间里面的假设都是能够让损失函数非常小的好假设
这里需要补充一下前面讲过的内容”为什么需要隐含层”,可以看我这篇文章点此跳转,具体即讲述了 神经网络是如何利用隐含层来逼近任何函数的。
那么,只有一个隐蔽层就足够了吗?那么,你为什么需要深度学习呢?
[En]
So is only one hidden layer enough? So why do you need deep learning?
事实上, 在实现同一个复杂函数时,使用深度较大宽度较小的网络,相较于只有一层而宽度很大的网络来说,其参数量会小很多,也就是说其效率会更高,同时参数量小也就说明需要的训练数据量也会小,也就更加不容易过拟合。
那么结合前面的说法,深度学习可以使得(H)的大小减小,并且效果也能够与(H)很大的宽度方向的神经网络相当。而在一些函数是复杂但有一定规律的情况下,深度学习的效果可以更好,其参数量可以更小。
Original: https://www.cnblogs.com/FavoriteStar/p/16985470.html
Author: FavoriteStar
Title: 【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
相关阅读
Title: Pandas小白入门原理解释(一)—将value_counts的结果转为DataFrame
文章目录
- 序言
- 代码示例
- 工作原理讲解
* - 带名index 和 默认index
- rename_axis
- reset_index
- rename_axis,set_index,reset_index对于DataFrame下的应用
- 其他应用
* - quantile结果转为DataFrame
序言
本例讲了如何将value_counts结果转为dataFrame,本质是将Series转为DataFrame,学会后触类旁通。
学到的知识包括:
- Series
- index简介
- rename_axis
- reset_index
- set_index
代码示例
value_counts
的结果是一个 series
,其 index
为原来列的值, value
为值的个数。要将其转为 DataFrame
需要两个函数 rename_axis
和 reset_index
.
代码如下:
>>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df
a b
0 0 0
1 1 10
2 2 20
3 3 30
4 4 40
5 5 50
6 6 60
7 7 70
8 8 80
9 9 90
>>> df.b.value_counts().rename_axis("b").reset_index(name="counts")
b counts
0 0 1
1 10 1
2 20 1
3 30 1
4 40 1
5 50 1
6 60 1
7 70 1
8 80 1
9 90 1
工作原理讲解

问题变成,将
series转为DataFrame
,在这个过程中需要介绍下index类别和两个函数。
; 带名index 和 默认index
rename_axis
和 reset_index
对于 Series
和 DataFrame
都可以用。现在讲一下在 Series
下的功能。

rename_axis
value_counts的结果是 无名index
,要给他一个名字,使用rename_axis即可。rename_axis给index改名字,不支持给value列改名字。对于DataFrame时候,支持对列改名字。如下:

rename_axis只有一个axis轴,所以参数
axis
值为0。在series下,rename_axis只有给index改名字的功能。
; reset_index
reset_index
对于 series
对象来说,将 series
转为dataframe,同时做三件事:
- index转为普通列
- 给新的dataFrame设置一个默认RangeIndex
- 给value列一个名字,这个名字用name参数传递。如下:
>>> s = pd.Series(["dog", "cat", "monkey"])
>>> s.rename_axis("key").reset_index('key', name="animal")
key animal
0 0 dog
1 1 cat
2 2 monkey
rename_axis,set_index,reset_index对于DataFrame下的应用
set_index
是给DataFrame指定某一列作为index,并抛弃掉原来的index。
如下:


reset_index
是将DataFrame的index重置为普通列,并设置一个默认index。如下:


; 其他应用
quantile结果转为DataFrame
>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df.a.quantile([i/4 for i in range(5)]).rename_axis("a_decile").reset_index(name='value_pointer')
a_decile value_pointer
0 0.00 0.00
1 0.25 2.25
2 0.50 4.50
3 0.75 6.75
4 1.00 9.00
Original: https://blog.csdn.net/mantoureganmian/article/details/128331277
Author: mantoureganmian
Title: Pandas小白入门原理解释(一)—将value_counts的结果转为DataFrame
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/369573/
转载文章受原作者版权保护。转载请注明原作者出处!