77
88
99 <!-- Custom HTML head -->
10+ < script type ="text/x-mathjax-config ">
11+ MathJax . Hub . Config ( {
12+ "HTML-CSS" : {
13+ availableFonts : [ "TeX" ] ,
14+ preferredFont : "TeX" ,
15+ webFont : "TeX"
16+ } ,
17+ SVG : {
18+ font : "TeX"
19+ }
20+ } ) ;
21+ </ script >
1022
1123 < meta name ="description " content ="">
1224 < meta name ="viewport " content ="width=device-width, initial-scale=1 ">
2941
3042 <!-- Custom theme stylesheets -->
3143 < link rel ="stylesheet " href ="../theme/dark-mode-images-3cd683db.css ">
32- < link rel ="stylesheet " href ="../theme/typst-e7733abe.css ">
3344
45+ <!-- MathJax -->
46+ < script async src ="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML "> </ script >
3447
3548 <!-- Provide site root and default themes to javascript -->
3649 < script >
3750 const path_to_root = "../" ;
3851 const default_light_theme = "light" ;
3952 const default_dark_theme = "navy" ;
40- window . path_to_searchindex_js = "../searchindex-526c3190 .js" ;
53+ window . path_to_searchindex_js = "../searchindex-2663fb80 .js" ;
4154 </ script >
4255 <!-- Start loading toc.js asap -->
4356 < script src ="../toc-31a2f041.js "> </ script >
@@ -190,25 +203,25 @@ <h3 id="支持向量机"><a class="header" href="#支持向量机">支持向量
190203Machine,SVM),是一种经典的机器学习分类算法,其核心思想在于最大化决策边界到数据点的距离。在这里,我们以线性可分数据为例;对于非线性可分的数据,运用< strong > 核方法</ strong > (Kernel
191204Method)即可类似处理。</ p >
192205< p > 如果训练数据是线性可分的,SVM的目标则是最大化< strong > 间隔</ strong > (Margin)。首先,我们先来定义最大化间隔的分类器,如下:
193- $$ min_(w,b) ~~~frac(1, 2) ||w ||^2$$
194- $$ s.t. ~~~y_i (w ^T x_i + b) >= 1, ~~~forall 1 <= i <= n$$
206+ \[\ min_{{w},b} ~~~\ frac{1}{2} ||{w} ||^2\]
207+ \[ s.t. ~~~y_i ({w} ^T { x_i} + b) \geq 1, ~~~\ forall 1 \leq i \leq n\]
195208其拉格朗日乘子为
196- $$L(w ,b,lambda) = frac(1, 2) ||w ||^2 + sum_( i=1) ^n lambda_i (1-y_i(w ^T x_i + b))$$
197- 由于$frac(1, 2) ||w ||^2$ 是凸的,并且$ lambda_i (1-y_i(w ^T x_i + b))$ 是线性的(也是凸的),所以优化问题的解为
198- $$ max_( lambda>0) min_(w,b) L(w ,b, lambda)$$
199- 求$L$关于$w,b$ 的导数有
200- $$ nabla_(w) L= w - sum_( i=1) ^n lambda_i y_i x_i$$
201- $$ nabla_b L = - sum_( i=1) ^n lambda_i y_i$$
202- 令$L$关于$w,b$ 的导数均为0得到,$w ^* = sum_( i=1) ^n lambda_i y_i x_i$以及$sum_( i=1) ^n lambda_i y_i = 0$ 。
203- 由于当$ lambda$ 固定的时候,$b$ 的值对目标函数无贡献,所以可以令$ b^* = 0$ 。
209+ \[L({w} ,b,{\ lambda} ) = \ frac{1}{2} ||{w} ||^2 + \ sum_{ i=1} ^n \ lambda_i (1-y_i({w} ^T { x_i} + b))\]
210+ 由于\(\frac{1}{2} ||{w} ||^2\) 是凸的,并且\(\ lambda_i (1-y_i({w} ^T { x_i} + b))\) 是线性的(也是凸的),所以优化问题的解为
211+ \[\ max_{\ lambda>0} \ min_{{w},b} L({w} ,b, {\ lambda})\]
212+ 求\(L\)关于\({w},b\) 的导数有
213+ \[\ nabla_{{w}} L= {w} - \ sum_{ i=1} ^n \ lambda_i y_i { x_i}\]
214+ \[\ nabla_b L = - \ sum_{ i=1} ^n \ lambda_i y_i\]
215+ 令\(L\)关于\({w},b\) 的导数均为0得到,\({w} ^* = \ sum_{ i=1} ^n \ lambda_i y_i { x_i}\)以及\(\sum_{ i=1} ^n \ lambda_i y_i = 0\) 。
216+ 由于当\(\ lambda\) 固定的时候,\(b\) 的值对目标函数无贡献,所以可以令\( b^* = 0\) 。
204217这时,由对偶性理论和KTT条件,我们得到:
205- $$ y_i (w^( < em > T) x_i + b^</ em > ) > 1 => lambda_i^* = 0$$
206- $$ lambda_i^* > 0 => y_i (w^( < em > T) x_i + b^</ em > ) = 1$$
207- $$w ^* = sum_( i=1) ^n lambda_i^* y_i x_i$$
208- 如果$ y_i (w^( < em > T) x_i + b^</ em > ) = 1$ ,那么$ x_i$ 就是离超平面$(w^ < em > ,b^</ em > )$ 最近的点之一,否则就不是。因此,$w^ < em > $ 就是离超平面$(w^ </ em > ,b^*)$ 最近的点$ x_i$ 的线性组合。</ p >
218+ \[ y_i ({w}^{*T} { x_i} + b^* ) > 1 \Rightarrow \ lambda_i^* = 0\]
219+ \[\ lambda_i^* > 0 \Rightarrow y_i ({w}^{*T} { x_i} + b^* ) = 1\]
220+ \[{w} ^* = \ sum_{ i=1} ^n \ lambda_i^* y_i { x_i}\]
221+ 如果\( y_i ({w}^{*T} { x_i} + b^* ) = 1\) ,那么\({ x_i}\) 就是离超平面\(({w}^* ,b^*)\) 最近的点之一,否则就不是。因此,\({w}^*\) 就是离超平面\(({w}^* ,b^*)\) 最近的点\({ x_i}\) 的线性组合。</ p >
209222< p > 如此,通过SVM算法,我们实现了数据的分类,并且能够最大化了决策边界到最近点的距离。
210- 我们定义满足$ y_i (w^( < em > T) x_i + b^</ em > ) = 1$的$ x_i$ 为< strong > 支持向量</ strong > (Support
211- Vectors),同时把分类器$hat(y)=s g n(w^( < em > T) x_i + b^</ em > )$ 称为支持向量机。</ p >
223+ 我们定义满足\( y_i ({w}^{*T} { x_i} + b^* ) = 1\)的\({ x_i}\) 为< strong > 支持向量</ strong > (Support
224+ Vectors),同时把分类器\(\hat{y}=sgn({w}^{*T} { x_i} + b^*)\) 称为支持向量机。</ p >
212225< h3 id ="k最近邻算法 "> < a class ="header " href ="#k最近邻算法 "> K最近邻算法</ a > </ h3 >
213226< p > < strong > K最近邻算法</ strong > (K-Nearest
214227Neighbor,KNN)也是一种传统的机器学习算法,可用于分类、回归等基本的机器学习任务。和上面介绍的SVM算法不同,K最近邻算法的核心思想并不是用一个决策边界把属于不同类的数据分开,而是依靠每个数据点周围几个距离最近的数据的性质,来预测数据点本身的性质。</ p >
@@ -218,23 +231,23 @@ <h3 id="k最近邻算法"><a class="header" href="#k最近邻算法">K最近邻
218231< p > KNN算法有几个需要注意的关键问题,包括超参数K的选择,距离的度量方式,还有分类决策规则。对于超参数K,不宜过大,否则会导致很大的近似误差,反之亦不宜过小,否则会导致很大的估计误差。距离的度量,则可以选择曼哈顿距离、欧式距离和闵可夫斯基距离等等。为了降低K值对于预测结果产生的误差和影响,我们通常可以对分类决策规则做一定的规定,比如在投票决策时让距离小的点有更大的权重,距离较大的点权重较小。在编程实现KNN算法的时候,权重等参数都会以矩阵的形式进行运算,以提高运算效率。</ p >
219232< h3 id ="k均值聚类算法 "> < a class ="header " href ="#k均值聚类算法 "> K均值聚类算法</ a > </ h3 >
220233< p > < strong > K均值聚类算法</ strong > (K-Means Clustering
221- Algorithm)是机器学习中一种常见的无监督聚类算法。在这里,我们首先定义聚类问题:给定数据点$ x_1,dots.c, x_n in bb(R)^d$和$K in bb(N)$ ,需要划分为$K$个簇$ C_1, dots.c, C_K in bb(R)^d$ 以及每个数据点所对应的分类中心点$C_((1)), dots.c, C_((n))$ ,以最小化距离和$ sum_i ||x_i - C_((i)) ||^2$ 。</ p >
234+ Algorithm)是机器学习中一种常见的无监督聚类算法。在这里,我们首先定义聚类问题:给定数据点\({ x_1},\cdots, { x_n} \ in \mathbb{R}^d\)和\(K\ in \mathbb{N}\) ,需要划分为\(K\)个簇\({ C_1}, \cdots, { C_K} \ in \mathbb{R}^d\) 以及每个数据点所对应的分类中心点\({ C_{(1)}}, \cdots, {C_{(n)}}\) ,以最小化距离和\(\ sum_i ||{ x_i} - {C_{(i)}} ||^2\) 。</ p >
222235< p > K均值聚类算法是一种解决聚类问题的算法,算法过程如下:</ p >
223236< ul >
224237< li >
225- < p > 随机选择$ C_1, dots.c, C_K$ </ p >
238+ < p > 随机选择\({ C_1}, \cdots, { C_K}\) </ p >
226239</ li >
227240< li >
228- < p > 把$ x_i$ 所对应的分类置为距离其最近的聚类中心点的分类</ p >
241+ < p > 把\({ x_i}\) 所对应的分类置为距离其最近的聚类中心点的分类</ p >
229242</ li >
230243< li >
231- < p > 计算并赋值$ C_K = frac( sum_(C_((i))= C_K) x_i, sum_(C_((i))= C_K) 1)$ </ p >
244+ < p > 计算并赋值\({ C_K} = \ frac{\ sum_{{C_{(i)}}={ C_K}} { x_i}}{\ sum_{{C_{(i)}}={ C_K}} 1}\) </ p >
232245</ li >
233246< li >
234247< p > 重复以上步骤直到算法收敛</ p >
235248</ li >
236249</ ul >
237- < p > 可以证明,K均值聚类算法会使得距离和$ sum_i ||x_i - C_((i)) ||^2$ 不断地单调减小,并且最终能够收敛。不过,算法可能收敛到局部最小值。</ p >
250+ < p > 可以证明,K均值聚类算法会使得距离和\(\ sum_i ||{ x_i} - {C_{(i)}} ||^2\) 不断地单调减小,并且最终能够收敛。不过,算法可能收敛到局部最小值。</ p >
238251< p > 本章结束语:</ p >
239252< p > 在系统角度,机器学习的算法无论是什么算法,涉及到高维数据任务的现都是矩阵运算实现的。</ p >
240253< h2 id ="参考文献 "> < a class ="header " href ="#参考文献 "> 参考文献</ a > </ h2 >
0 commit comments