本系列是台湾大学资讯工程系林軒田(Hsuan-Tien Lin)教授开设的《
机器学习基石 》课程的梳理。重在梳理,而非详细的笔记,因此可能会略去一些细节。
该课程共16讲,分为4个部分:
机器什么时候能够学习?(When Can Machines Learn?)
机器为什么能够学习?(Why Can Machines Learn?)
机器怎样学习?(How Can Machines Learn?)
机器怎样可以学得更好?(How Can Machines Learn Better ?)
本文是第2部分 ,对应原课程中的4-8讲 。
本部分的主要内容:
用案例引出学习可行性的疑问;
详细介绍VC维理论,它给出了机器学习的可靠性保证;
介绍误差的度量,以及对误差权重不同的情况的处理方法。
1 学习可行性的疑问
先来一个小学奥数题/公务员考试题:
其实这个题没有标准答案,以下两种解答都是对的:
对称为+ 1 +1 + 1 ,非对称为− 1 -1 − 1 ,因此答案是+ 1 +1 + 1 ;
最左上角的格子白色为+ 1 +1 + 1 ,黑色为− 1 -1 − 1 ,因此答案是− 1 -1 − 1 ;
因此,选择不同的规则,你会获得不同的答案。那么,如果给你一些历史数据,机器学习出某种规则,是否也会遇到这样的情况呢?
2 机器学习的可靠性保证
2.1 Hoeffding不等式
来看另一个问题:有一个罐子,里面装有许许多多黄色和绿色的小球,该如何估计黄球的比例?
很简单,抽样就行了。抽出一部分样本,计算得到样本中的黄球比例ν \nu ν ,用这个比例作为罐子中的黄球比例μ \mu μ 的估计即可。这样的估计准不准呢?在统计学中,有Hoeffding不等式 给出准确率的界限:
P [ ∣ ν − μ ∣ > ϵ ] ≤ 2 exp ( − 2 ϵ 2 N )
\mathbb{P}[\vert\nu-\mu\vert>\epsilon]\le 2\exp{(-2\epsilon^2 N)}
P [ ∣ ν − μ ∣ > ϵ ] ≤ 2 exp ( − 2 ϵ 2 N )
其中N N N 为抽样的样本个数。这个式子的意思是,ν \nu ν 和μ \mu μ 相差较远的概率会有一个上限,在大样本下,这个上限会比较小,因此ν = μ \nu=\mu ν = μ 可以叫做概率近似正确(PAC ,probably approximately correct)。
2.2 机器学习中的Hoeffding不等式
现在将这个过程类比到机器学习中。罐子中的小球对应于X \mathcal{X} X 中的单个数据x \mathbf{x} x ,给定假设集中的一个假设h h h ,罐子中黄球的比例就对应于X \mathcal{X} X 中使得h ( x ) = f ( x ) h(\mathbf{x})=f(\mathbf{x}) h ( x ) = f ( x ) 的x \mathbf{x} x 的比例。现在抽取出一部分样本,这个样本对应于现有的数据集D \mathcal{D} D ,我们可以很容易地知道对D \mathcal{D} D 中每一个数据( x n , y n ) (\mathbf{x}_n,y_n) ( x n , y n ) 是否有h ( x n ) = y n h(\mathbf{x}_n)=y_n h ( x n ) = y n ,若相等,对应的小球为黄色,反之为绿色。我们的目的,是要知道在整个X \mathcal{X} X 中满足h ( x ) = f ( x ) h(\mathbf{x})=f(\mathbf{x}) h ( x ) = f ( x ) 的x \mathbf{x} x 的比例有多少。
若N N N 足够大,且x n \mathbf{x}_n x n 为i.i.d.,对于某个固定的 h h h 来说,就可以用已知的E in ( h ) = 1 N ∑ n = 1 N 1 [ h ( x n ) ≠ y n ] E_{\text{in}}(h)=\dfrac{1}{N}\sum\limits_{n=1}^{N} \mathbf{1}_{[h(\mathbf{x}_n)\ne y_n]} E in ( h ) = N 1 n = 1 ∑ N 1 [ h ( x n ) = y n ] 去推断E out ( h ) = E x ∼ P 1 [ h ( x ) ≠ f ( x ) ] E_{\text{out}}(h)=\mathop{\mathcal{E}}\limits_{\mathbf{x}\sim P}\mathbf{1}_{[h(\mathbf{x})\ne f(\mathbf{x})]} E out ( h ) = x ∼ P E 1 [ h ( x ) = f ( x ) ] ,从而判断该h h h 的表现如何,如下图:
根据Hoeffding不等式,就是
P [ ∣ E in ( h ) − E out ( h ) ∣ > ϵ ] ≤ 2 exp ( − 2 ϵ 2 N )
\mathbb{P}[\vert E_{\text{in}}(h)-E_{\text{out}}(h)\vert>\epsilon]\le 2\exp{(-2\epsilon^2 N)}
P [ ∣ E in ( h ) − E out ( h ) ∣ > ϵ ] ≤ 2 exp ( − 2 ϵ 2 N )
如果E in ( h ) E_{\text{in}}(h) E in ( h ) 和E out ( h ) E_{\text{out}}(h) E out ( h ) 足够接近,并且E in ( h ) E_{\text{in}}(h) E in ( h ) 足够小,这就能保证E out ( h ) E_{\text{out}}(h) E out ( h ) 足够小,也就能判断出对于抽样过程P P P ,有h ≈ f h\approx f h ≈ f 。
但是,这只能用来判断某个h h h 是否足够好 。如果现在是用算法A \mathcal{A} A 从假设集H \mathcal{H} H 中选出一个h h h ,再套用上面的不等式,就会有问题。试想一下,假设有150个人,每人丢5次硬币,就有超过99%的概率会出现有某个丢5次硬币都是正面的人,这能说明他的丢硬币技术比其他人高吗?如果选择他作为我们的“g g g ”,能保证他以后再去丢硬币,得到正面的概率也比其他人更大吗?
同理,如果是从H \mathcal{H} H 中选出一个在样本D \mathcal{D} D 内误差最小的g g g ,能保证它在D \mathcal{D} D 外也是更好的吗?想要得到这样的保证,还需对不等式做一些修正。
对每个h h h ,都可能会有一些D \mathcal{D} D ,使得h h h 在它上面的E in ( h ) E_{\text{in}}(h) E in ( h ) 和真正的E out ( h ) E_{\text{out}}(h) E out ( h ) 相差很大,把这种D \mathcal{D} D 称作“坏的”,Hoeffding不等式本质上是保证抽到坏的D \mathcal{D} D 的概率有一个上限。记∣ H ∣ = M \vert\mathcal{H}\vert=M ∣ H ∣ = M ,即共有M M M 个h h h ,我们想要保证的是不管最后A \mathcal{A} A 选出了哪个,D \mathcal{D} D 是“坏的”的概率都有较小的上限,因此,要计算的应该是对至少一个h h h 来说D \mathcal{D} D 是“坏的”的概率:
P D [ ( BAD D for h 1 ) or ( BAD D for h 2 ) or … or ( BAD D for h M ) ] ≤ P D [ BAD D for h 1 ] + P D [ BAD D for h 2 ] + … + P D [ BAD D for h M ] ≤ 2 exp ( − 2 ϵ 2 N ) + 2 exp ( − 2 ϵ 2 N ) + … + 2 exp ( − 2 ϵ 2 N ) = 2 M exp ( − 2 ϵ 2 N )
\begin{aligned}
&\mathbb{P}_{\mathcal{D}}[(\textbf{BAD } \mathcal{D} \text{ for } h_1) \textbf{ or } (\textbf{BAD } \mathcal{D} \text{ for } h_2) \textbf{ or } \ldots \textbf{ or } (\textbf{BAD } \mathcal{D} \text{ for } h_M) ]\\
\le& \mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_1] + \mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_2] +\ldots+\mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_M]\\
\le& 2\exp{(-2\epsilon^2 N)}+2\exp{(-2\epsilon^2 N)}+\ldots+2\exp{(-2\epsilon^2 N)}\\
=& 2M\exp{(-2\epsilon^2 N)}
\end{aligned}
≤ ≤ = P D [ ( BAD D for h 1 ) or ( BAD D for h 2 ) or … or ( BAD D for h M ) ] P D [ BAD D for h 1 ] + P D [ BAD D for h 2 ] + … + P D [ BAD D for h M ] 2 exp ( − 2 ϵ 2 N ) + 2 exp ( − 2 ϵ 2 N ) + … + 2 exp ( − 2 ϵ 2 N ) 2 M exp ( − 2 ϵ 2 N )
这才是A \mathcal{A} A 选出来的h h h 的E in ( h ) E_{\text{in}}(h) E in ( h ) 和E out ( h ) E_{\text{out}}(h) E out ( h ) 距离的上限。但在上面的过程中,因为对事件的并集直接用了加的运算,这个上限被放得太大了,由于不同的h h h 对应的“坏的”D \mathcal{D} D 很可能有很大重叠,因此真实的上限应该要小得多。如图:
另外,M M M 如果是有限的,根据上式,我们还是可以通过增大N N N 来保证E in ( h ) E_{\text{in}}(h) E in ( h ) 和E out ( h ) E_{\text{out}}(h) E out ( h ) 足够接近,但如果M M M 是无限的呢?如在PLA中,系数的取值就可以是无限多个,因此PLA的M M M 是无穷大的。
2.3 VC维
M M M 为无穷大时,还是有办法的。尽管PLA的M M M 是无穷大,但其实,我们可以对它的H \mathcal{H} H 中的元素进行分类,只要样本个数是有限的,它的类别就是有限的。比如在只有一个样本的情况中,二维PLA的H \mathcal{H} H 中的元素(就是二维平面上的所有直线)可以简单分为两类,一类是把该样本点分为正的,一类是把该样本点分为负的:
而在两个样本的情况中,H \mathcal{H} H 中的元素可以分为4类:
三个样本时可分为8类:
但若3个点共线,那么只有6类:
而当有4个样本时,H \mathcal{H} H 中的元素最多只能分成14类:
这说明,在PLA中,有N N N 个样本时,有效的M M M 会小于等于2 N 2^N 2 N 。
接下来,引入几个概念:
二分(Dichotomies) :对N N N 个样本,每个样本都有正负两种可能,将所有样本组成的每一种可能称为一个dichotomy,dichotomies的集合可记为H ( x 1 , x 2 , … , x N ) \mathcal{H}(\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N) H ( x 1 , x 2 , … , x N ) ,显然,集合中元素个数的上限是2 N 2^N 2 N ;
成长函数(Growth Function) :定义成长函数m H ( N ) = max x 1 , x 2 , … , x N ∈ X ∣ H ( x 1 , x 2 , … , x N ) ∣ m_{\mathcal{H}}(N)=\max\limits_{\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N \in \mathcal{X}} \vert \mathcal{H}(\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N) \vert m H ( N ) = x 1 , x 2 , … , x N ∈ X max ∣ H ( x 1 , x 2 , … , x N ) ∣ ,它的上限是2 N 2^N 2 N ,对于大多数模型(如二维感知机)的H \mathcal{H} H 来说,m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 比2 N 2^N 2 N 小,仅为多项式大小;
打散(Shatter) :如果H \mathcal{H} H 可以完全实现N N N 个样本的2 N 2^N 2 N 种dichotomies,则称N N N 个点可被H \mathcal{H} H 打散;
突破点(Break Point) :若k k k 个点无论如何也无法被H \mathcal{H} H 打散,则称k k k 为H \mathcal{H} H 的break point,根据定义,所有比k k k 大的整数也都会成为break points,对于二维感知机来说,从4开始就是它的break point。
接下来就是要找到,break point和m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 的关系。
我们继续引入界限函数(Bounding Function)的概念:B ( N , k ) B(N,k) B ( N , k ) ,它是当最小的break point为k k k 时的 最大可能 m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 。那么,该如何计算它或者它的上限?
首先,当k = 2 k=2 k = 2 时,表示任意两个点都不能被打散,因此当N = 2 N=2 N = 2 时有B ( 2 , 2 ) = 3 B(2,2)=3 B ( 2 , 2 ) = 3 ,即最多能列举出3种dichotomies(4种就是这两个点被打散了),当N = 3 N=3 N = 3 时有B ( 3 , 2 ) = 4 B(3,2)=4 B ( 3 , 2 ) = 4 (穷举法可知)。而当k = 1 k=1 k = 1 时,由于任何一个点都不能被打散,因此只能有一种dichotomy,即B ( N , 1 ) = 1 B(N,1)=1 B ( N , 1 ) = 1 。另外,如果k > N k>N k > N ,由于小于k k k 个样本点都能被打散,因此会有B ( N , k ) = 2 N B(N,k)=2^N B ( N , k ) = 2 N 。而如果N = k N=k N = k ,那么只需在2 N 2^N 2 N 个被打散的点中拿掉一种dichotomy,就能满足这N N N 个点不被打散的概念了,因此有B ( N , k ) = 2 N − 1 B(N,k)=2^N-1 B ( N , k ) = 2 N − 1 。
到目前为止,在下面这张函数表中还有一部分没有计算:
不妨先来看B ( 4 , 3 ) B(4,3) B ( 4 , 3 ) 该如何计算。如果用穷举法,可以得出B ( 4 , 3 ) = 11 B(4,3)=11 B ( 4 , 3 ) = 1 1 :
观察这11种dichotomies发现,它们可以分成两组,其中一组的前3个点是有重复的,它们成为不同的dichotomies仅仅是因为x 4 \mathbf{x}_4 x 4 不同,而另一组的前3个点没有重复。
如果把前3个点有重复的8种dichotomies记为2 α 2\alpha 2 α (只看前3个点就是α \alpha α 种),后3种记为β \beta β ,那么就有2 α + β = 11 2\alpha+\beta=11 2 α + β = 1 1 。而其实,B ( 4 , 3 ) B(4,3) B ( 4 , 3 ) 无非就是比B ( 3 , ⋅ ) B(3,\cdot) B ( 3 , ⋅ ) 多了一个点,假设现在把最后一个点去掉,那么前3个点只可能有α + β \alpha+\beta α + β 种dichotomies(因为第一组2 α 2\alpha 2 α 种是前面3个点各重复两次,因此需要剔除一半),由于B ( 4 , 3 ) B(4,3) B ( 4 , 3 ) 中任意3个点都不能被打散,因此前3个点也必须不能被打散,所以有α + β ≤ B ( 3 , 3 ) \alpha+\beta\le B(3,3) α + β ≤ B ( 3 , 3 ) 。
另一方面,由于2 α 2\alpha 2 α 组中的4个点中,任意3个点都不能被打散,而第4个点是在每一组前3个点固定的情况下取正/负,因此前3个点中的任意2个点都不能被打散(否则在加入第4个点后就会有3个点被打散)。因此,必须要保证α ≤ B ( 3 , 2 ) \alpha\le B(3,2) α ≤ B ( 3 , 2 ) 。
由此可知,B ( 4 , 3 ) = 2 α + β ≤ B ( 3 , 3 ) + B ( 3 , 2 ) B(4,3)=2\alpha+\beta \le B(3,3)+B(3,2) B ( 4 , 3 ) = 2 α + β ≤ B ( 3 , 3 ) + B ( 3 , 2 ) ,以此类推,有B ( N , k ) ≤ B ( N − 1 , k ) + B ( N − 1 , k − 1 ) B(N,k)\le B(N-1,k)+B(N-1,k-1) B ( N , k ) ≤ B ( N − 1 , k ) + B ( N − 1 , k − 1 ) ,最终结果如图:
用数学归纳法即可证明:B ( N , k ) ≤ ∑ i = 0 k − 1 ( N i ) B(N,k)\le \sum\limits_{i=0}^{k-1}\binom{N}{i} B ( N , k ) ≤ i = 0 ∑ k − 1 ( i N ) ,具体过程在此略过。事实上,可以证明得B ( N , k ) = ∑ i = 0 k − 1 ( N i ) B(N,k)=\sum\limits_{i=0}^{k-1}\binom{N}{i} B ( N , k ) = i = 0 ∑ k − 1 ( i N ) ,具体的数学过程较复杂,课程中也略过了。该式说明,B ( N , k ) B(N,k) B ( N , k ) 中成长最快的一项最多就是N k − 1 N^{k-1} N k − 1 的成长速度。
由B ( N , k ) B(N,k) B ( N , k ) 的定义,只要break point k k k 存在,那么m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 的上限就是B ( N , k ) B(N,k) B ( N , k ) ,也因此,m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 中成长最快的一项最多就是N k − 1 N^{k-1} N k − 1 的成长速度。
在有了m H ( N ) m_{\mathcal{H}}(N) m H ( N ) 后,想用它取代M M M ,还需要做一些处理,具体在此略过。最后可以得到的是Vapnik-Chervonenkis(VC) bound:P [ ∃ h ∈ H s.t. ∣ E in ( h ) − E out ( h ) ∣ > ϵ ] ≤ 4 m H ( 2 N ) exp ( − 1 8 ϵ 2 N )
\mathbb{P}[\exists h \in \mathcal{H} \text{ s.t. }\vert E_{\text{in}}(h)-E_{\text{out}}(h)\vert>\epsilon]\le 4 m_{\mathcal{H}}(2N)\exp{(-\dfrac{1}{8}\epsilon^2 N)}
P [ ∃ h ∈ H s.t. ∣ E in ( h ) − E out ( h ) ∣ > ϵ ] ≤ 4 m H ( 2 N ) exp ( − 8 1 ϵ 2 N )
定义VC维(VC dimension) d vc ( H ) d_{\text{vc}}(\mathcal{H}) d vc ( H ) 为满足m H ( N ) = 2 N m_{\mathcal{H}}(N)=2^N m H ( N ) = 2 N 的最大的N N N ,也即H \mathcal{H} H 能打散的最大的点的个数,或最小的break point减1。当N ≥ 2 N\ge2 N ≥ 2 且d vc ≥ 2 d_{\text{vc}}\ge 2 d vc ≥ 2 时,有m H ( N ) ≤ N d vc m_{\mathcal{H}}(N)\le N^{d_{\text{vc}}} m H ( N ) ≤ N d vc 。
对于d d d 维感知机模型来说,有d vc = d + 1 d_{\text{vc}}=d+1 d vc = d + 1 (证明略)。只要d vc d_{\text{vc}} d vc 是有限的,就可以完成泛化。d vc ( H ) d_{\text{vc}}(\mathcal{H}) d vc ( H ) 就相当于是H \mathcal{H} H 的powerfulness。
2.4 VC Bound与模型复杂度惩罚
对于g = A ( D ) ∈ H g=\mathcal{A}(\mathcal{D})\in \mathcal{H} g = A ( D ) ∈ H ,如果D \mathcal{D} D 在统计上足够大,有P [ ∣ E in ( g ) − E out ( g ) ∣ > ϵ ] ≤ 4 ( 2 N ) d vc exp ( − 1 8 ϵ 2 N )
\mathbb{P}[\vert E_{\text{in}}(g)-E_{\text{out}}(g)\vert>\epsilon]\le 4 (2N)^{d_{\text{vc}}} \exp{(-\dfrac{1}{8}\epsilon^2 N)}
P [ ∣ E in ( g ) − E out ( g ) ∣ > ϵ ] ≤ 4 ( 2 N ) d vc exp ( − 8 1 ϵ 2 N )
不等式左侧表示“坏的”的几率。若将不等式右边记为δ \delta δ ,可将ϵ \epsilon ϵ 反表示为ϵ = 8 N ln 4 ( 2 N ) d vc δ = Ω ( N , H , δ ) \epsilon=\sqrt{\dfrac{8}{N}\ln{\dfrac{4(2N)^{d_{\text{vc}}}}{\delta}}}=\Omega(N,\mathcal{H},\delta) ϵ = N 8 ln δ 4 ( 2 N ) d vc = Ω ( N , H , δ ) ,Ω ( N , H , δ ) \Omega(N,\mathcal{H},\delta) Ω ( N , H , δ ) 就代表了对模型复杂度的惩罚。
可以看出,至少有1 − δ 1-\delta 1 − δ 的概率,能满足E out ( g ) ≤ E in ( g ) + Ω ( N , H , δ )
E_{\text{out}}(g)\le E_{\text{in}}(g)+\Omega(N,\mathcal{H},\delta)
E out ( g ) ≤ E in ( g ) + Ω ( N , H , δ )
d vc d_{\text{vc}} d vc 和error的关系如下图:
要找到最优的d vc d_{\text{vc}} d vc ,才能使error最小。
VC Bound只是一个非常宽松的理论界限。比如设定ϵ = 0.1 \epsilon=0.1 ϵ = 0 . 1 ,δ = 0.1 \delta=0.1 δ = 0 . 1 ,d vc = 3 d_{\text{vc}}=3 d vc = 3 ,那么根据前式,可得到N ≈ 10 , 000 d vc N\approx 10,000 d_{\text{vc}} N ≈ 1 0 , 0 0 0 d vc ,但在实践中,往往只需要N ≈ 10 d vc N\approx 10 d_{\text{vc}} N ≈ 1 0 d vc 的数据量就够了。
2.5 有噪声时的VC Bound
如果标签被打错了,或是同一个人被打了不同标签,又或是x \mathbf{x} x 的信息不准确,都会引入噪声。在有噪声时,VC Bound依旧有效吗?
回到之前小球的例子,之前的小球,每个小球的颜色都是确定的,这种情况叫做是“deterministic”的,在有噪声的情况中,可以认为每个小球的颜色服从某种概率,即y ∼ P ( y ∣ x ) y\sim P(y|\mathbf{x}) y ∼ P ( y ∣ x ) ,这叫做是“probabilistic”的。可以证明如果( x , y ) ∼ i . i . d . P ( x , y ) (\mathbf{x},y)\mathop{\sim}^{i.i.d.}P(\mathbf{x},y) ( x , y ) ∼ i . i . d . P ( x , y ) ,那么VC理论依旧是有效的。
有噪声时,学习的目标是在常见的样本P ( x ) P(\mathbf{x}) P ( x ) 上,学习P ( y ∣ x ) P(y|\mathbf{x}) P ( y ∣ x ) 。新的学习流程如下:
VC理论依旧有效,pocket算法就是个很好的例子。
3 误差度量
在这里介绍一种逐点的误差度量(pointwise error measure),可以表达成err ( g ( x ) , f ( x ) ) \text{err}(g(\mathbf{x}), f(\mathbf{x})) err ( g ( x ) , f ( x ) ) ,g ( x ) g(\mathbf{x}) g ( x ) 可记为y ~ \tilde{y} y ~ ,f ( x ) f(\mathbf{x}) f ( x ) 可记为y。
有两种比较重要的pointwise error measure:
err ( y ~ , y ) = 1 [ y ~ ≠ y ] \text{err}(\tilde{y}, y)=\mathbb{1}_{[\tilde{y} \ne y]} err ( y ~ , y ) = 1 [ y ~ = y ] ,这一般用在分类问题中;
err ( y ~ , y ) = ( y ~ − y ) 2 \text{err}(\tilde{y}, y)=(\tilde{y} - y)^2 err ( y ~ , y ) = ( y ~ − y ) 2 ,这一般用在回归问题中。
在有了误差度量后,学习流程如下:
在分类问题中,错误可分为两类,如下图所示:
根据这两类错误的重要性不同,可以对它们赋予不同的权重。因此,不同的应用可以有不同的err \text{err} err 。在算法中考虑误差度量时(记用在算法中的错误度量为err ^ \widehat{\text{err}} err ),最好的情况当然是直接令err ^ = err \widehat{\text{err}}=\text{err} err = err ,但这可能会导致很难计算,比如会带来NP-hard问题等,一般来说,最好要设计一个对于A \mathcal{A} A 来说能比较容易进行最优化的err ^ \widehat{\text{err}} err ,最好要有闭式解(closed-form solution)或有凸的目标函数。
在A \mathcal{A} A 中加入误差度量的设计后,学习流程如下:
对于两类错误权重不同的情况,可以用“virtual copying”的策略去学习。以pocket算法为例,假设false reject错误的权重为1,false accept错误的权重为1000,在计算时不必真的对每个样本点赋予权重,可以“虚拟地”将y = − 1 y=-1 y = − 1 的点复制1000份。在实践中,也不必真的复制,可以在随机选择样本点时,让算法随机选出y = − 1 y=-1 y = − 1 的点的概率增大1000倍即可。