阿里巴巴国际贸易网站官网张家港网站设计制作早晨设计

当前位置: 首页 > news >正文

阿里巴巴国际贸易网站官网,张家港网站设计制作早晨设计,三网合一网站建设计划,wordpress主题the7中文汉化版绪论 1.1绪论1.2课程定位 科学:是什么,为什么; 技术:怎么做; 工程:做的多快好省; 应用: 1.3机器学习 经典定义:利用经验改善系统自身的性能 1.4典型的机器学习过程 1.5计算学习理论 机器学习有坚实的理论基础,由Leslie Valiant的计算学习理论现在有一个数据样本x,现在…绪论 1.1绪论1.2课程定位 科学:是什么,为什么; 技术:怎么做; 工程:做的多快好省; 应用: 1.3机器学习 经典定义:利用经验改善系统自身的性能 1.4典型的机器学习过程 1.5计算学习理论 机器学习有坚实的理论基础,由Leslie Valiant的计算学习理论现在有一个数据样本x,现在对x进行一个f(x)的判断,y是真实的结果,,我们让两个数的差小于一个非常小的数字即可 提出了两个问题,第一个问题,为什么不追求绝对的等于0 ,第二,为什么是一个概率而不是每次绝对能拿到这关乎到机器学习的根本 p ? NP 1.6基本术语 数据集训练测试 示例(instance),样例(example) 样本(sample) 属性attribute特征feature属性值属性空间样本空间输入空间 特征向量feature vector 标记空间输出空间 example是有结果instance则是没有结果的这是这两个的区别 样本这是一个比较模糊的概念对sample代称的理解需要结合上下文有可能是指某一个example也可能是某一个dataset 我们把每一个属性叫做一个轴比如西瓜就是一个三维空间任何一个西瓜都是空间直角坐标系 的一个点这就是一个特征向量这个空间就是属性空间同时也叫做样本空间因为所有样本都是在这个空间里面输出空间同理y/n 对于输出如果是个别的点比如yes/no就是01两点二分类大中小3点多分类如果是一个范围那就是回归 监督学习,有时候又把它叫做有导师的学习,Supervised learning.无监督学习有时候叫舞蹈式学习,它指的是什么呢?你在数据里面拿到样例的这个结果部分,我们没有拿到这个部分,我们没有这个部分就是无监督学习,有这个部分就是监督学习.也就是说拿到的数据里面没有期望结果是无监督学习 你可能认为无监督学习没什么用无监督学习就是你给我一堆西瓜这个好的坏的都不告诉我那我这能做什么。可能能做的是把这些西瓜分成很多堆这边有一堆那边有一堆分类回归非监督学习的典型任务有哪些呢类似于离散类别的做聚类我们把数据分成若干个离散个类别也有可能我们处理连续的就是在做密度轨迹估计我判断一下什么样的东西更多什么样的东西更少 1.7假设空间 1.8归纳偏好 奥卡姆剃刀若非必要勿增实体 简单的来说呢就是当我们发现有很多的假说很多的东西都能够完美的解释我们的观察这时候我们就选最简单的。机器学习里面我们看到的训练样本如果有多个模型都能很好地解释这个现象我们就找最简单的这个模型啊这就是基本思路 1.9NFL定理 NFL定理的重要前提所有“问题”出现的机会相同、或所有问题同等重要 实际情形并非如此我们通常只关注自己正在试图解决的问题。脱离具体问题空泛地谈论“什么学习算法更好”毫无意义具体问题具体分析 模型评估与选择 2.1泛化能力2.2过拟合和欠拟合 泛化误差在“未来”样本上的误差 经验误差在训练集上的误差亦称“训练误差”                                                                              泛化误差越小越好经验误差是否越小越好 NO!因为会出现“过拟合”(overfiting)  在多项式时间下P和M P确实会不等但是如果在单项式时间下只求最小环境下的最优解那么就有可能实现P和nP在一定时间状态下是对等的。可以理解为 确定一个模型就是最优模型这件事比NP问题还要复杂所以确定不了。  2.3三大问题 根据已有的性能指标设计方法设计一个针对你的具体业务的性能指标 2.4 评估方法 关键怎么获得“测试集”test set测试集应该与训练集“互斥” 常见方法留出法(hold-out) 交叉验证法(cross validation)                                                                                                              自助法(bootstrap) 这里面其实有个非常根本的问题大家要理解这种hold dot测试它的缺陷是什么呢我们要去理解假设这是完整的数据我们认为它假设有100个样本在这我们训练出来一个模型我们把这个模型叫做M100我们希望判断它未来的性能怎么样我们把它叫做error100这个东西我们得不到这个东西我们是能得到的但这个东西我们得不到我们现在在做一件什么事呢我们把它一切假设这是80这是20我们做的是什么呢M80你要注意我现在做的是M80已经不是M100然后呢我用它对它的测试来对error80做一个估计并且以后我说我用这个东西来监视他你有没有看到这里面就有问题了如果你这个测试数据用得太多其实你测的这个模型已经不是我最后真正用的这个模型了明白吗我最后用的应该是拿着100个样本训练出来的模型结果呢你弄了个80个样本训练出来模型你告诉我80个样本训练出来模型就好了你这个算法在这上面好但是这个是不是一定的呢有可能80个他好了90个另外一个算法更好所以我们是在用这个模型在近视它这个的近视能力肯定是随着这个值的变小近视能力差我最希望的是这个你就是到100这个是真正的就是他了所以这个不能太小这个不能太小这个越小对他的逼近能力就越差那另一方面我们要测出这个东西来这个东西测的准不准其实和你这部分数据有关系这个越小这个应该测得越不准那我实际上是希望这个要大一点这个才能测得更准一点但是你看这个我也希望要大这个也希望要大所以这是个不可调和的矛盾那所以这个问题我们怎么办呢一般来说我们只能用一个大家经验上的做法你用20%或者1/3的数据来做测试几其他的用来做训练机再小了比如说你用一半来做训练集了这个时候可能你觉得这个和这个差别已经很大了另外呢我们在这样做了之后假设我们现在有两个算法L1和L2在这上面做了之后我们发现ALE小于L2这时候我们怎么办呢我们就take a l e算法我们认为L1算法在这上面是好的那是不是我就直接把这个模型就给用户就算了呢不是的当你确定了之后你应该把所有的数据合起来再来用LE训练一下把这时候得到的这个模型给用户所以我们这个画数据之后训练测试的过程实际上只是在起一个选择的作用选定了之后你应该把整个数据合起来再训练一下模型再提交给用户。 这个折我们在英文里面叫fold经过上图的验证Turn food cross validation这不是留出法留出法是每次随机取测试集有的样本可能自始至终都没办法成为测试集中的一个。这当然很好但是对于极端的例子比如1个男生和99个女生的集合留一法就明显的错误了  叫bootstrap something那他是在做什么事呢我们想象一个盒子这个盒子里面我现在放了十个球你每次摸一个球copy一下再把这个球放回去下次再取一个球那就有的球会多次出现有的球根本没取到。但是不管怎么说你原来有十个球我现在还可以取十个球出来只不过有的是重复的嘛有的样本出现了好几次。但是以这种方式你原来是假设是100个数据做模型我现在就能采样出一个数据集来用100个样本做模型同时呢这个里面没有出现的数据我就可以留出来做测试。那这个没有出现的数据大概会有多少呢我们可以做这么一个估计非常简单的估计M个样本我们取M4那么它不出现的可能性每一次M个球啊每一次每取一次他都没有被取到是一减N分之一我们取了M个球取了M次那就是这么数那如果这个M非常大的时候它就是1/1那这个是0.368也就是说大概有36.8%的数据在取出来的这个集合里面没有出现。那现在我们就能用这个没有出现的这部分来做测试集那这样一个测试叫什么呢叫out of a bag estimation这专门有个名字啊就是叫包外估计。所以当你看到有的东西说我用了out of bag estimation的时候你就应该知道他用的测试方法是这样一种测试方法。原来的100个我闭着眼睛可重复采样取100个训练了100个做的模型然后呢用原来的这个没取到的这些来测试测出来的结果啊这也是一种很好的一种技术在特定的场合他还很有用。那我们说说它的缺陷最重大的缺陷就是它改变了训练数据的分布对吧我们应该是用这样的一个训练数据的分布结果呢他在这个用这样来做训练数据了就本来我们这十个样本这十个球应该同等重要结果你这个做的模型认为这个中这个球和这个球更重要你的模型在这上面可能得到了一个高估这是他的问题训练分布发生变化了。但是有时候如果我们认为训练分布它稍微变一点不太重要的时候啊那这个挺好而且有时候数据量不够的时候用这个也挺好所以你一定要考虑你使用的场景。bootstrap somebody这个东西非常有用以后我们还会接触到bootstrap这个词这个包括在我们讲第八部分讲ensemble methods集成学习方法的时候这个是个关键的一个技术。而这个东西怎么可重复采样你们看起来是个很简单的过程但事实上从统计上来说概率统计上研究它的性质它里面有很深刻的一些东西所以为此甚至我们非常著名的一位统计学大师Efron为此专门写了一本书这本书就是《Bootstrap》就专门在讲这个bootstrap后面的道理。 2.5 调参与验证集 调参数呢我们这里面要区别有两件事儿有一个叫超参数我们有时候把算法本身的参数叫超参数模型的参数呢我们有时候把它叫参数这个参数是要算法去学的超参数呢是人去设的 比如说我们说现在有一个算法就是用多项式函数去逼近数据那大家知道这个多项式函数有好多种用这么一个曲线在拟合这个数据。确定的是ABC那这就是算法要确定模型的参数这个就是我们直接就把它叫parameter这个超参数就是SUPERPARAMETER啊超参数和参数其实本质上它都是一种参数啊 有时候看到一个词叫验证机叫validation set这个就是为了把这件事和测试集把它区分开验证集就是专门用来调参数啊 2.6 性能度量 对于回归的判断这里有没有1/2无所谓 100个西瓜预测说10个是好的10个里面有多少是真的好的这就是查准率查全率就是其实是有20个好的查全率就是50%我们进一步更新调和平均 2.7 比较检验 在某种度量下取得评估结果后是否可以直接比较以评判优劣NO 因为 ·测试性能不等于泛化性能·测试性能随着测试集的变化而变化·很多机器学习算法本身有一定的随机性 机器学习········“概率近似正确”  第一个评估我们使用了误差、错误率和精度它们实际上是一个值。我们来看这是A算法这是B算法。在进行交叉验证时我们实际做了多次实验其中A有一个基线A1B也有一个基线B1以此类推。如果这两个算法没有显著区别本质上是一回事那么它们的误差应该是一样的可以通过做减法得到一个值我们随意加一个字母叫西格玛。这样你可以假设得到十个西格玛这十个值应该符合零均值分布因为两个算法效果相同。这个零均值分布左右可能有一点浮动比如做十次恰好有五次A比B好五次B比A好且每次差距不大一次好0.1另一次好0.09。这意味着两者没有显著差异。通过计算这些值的均值加上标准差可以判断是否属于该分布这种检验方法在数理统计中被称为成对T检验或Student t检验。 那么刚才我们讲的这个是基于一个值的你基于一个值就误差对吧那我们前面在评估的时候不还有碰到两个值的吗呃我们得到一个表我们得到一个表这边是true positive对吧那实际上你如果把它当成两个算法呢这算法一是算法二那其实可以把那个表就借用过来了这种叫联列表那实际上这个地方就不再是叫two positive了他说的是什么呢两个都做对了你认为是对的他也认为是对的那这个呢是你认为是NO他也认为是NO这个呢是第一个认为是yes第二个认为NO这个是第一个认为NO第二个认为yes你看这个部分你们是一样的不一样的就是这个部分对吧其实这两个分假假设两个分类的话不一样的不就这个部分吗那这个部分我们想什么情况下它可能就没有显著的区别你可以想一想很容易想到这样的例子假设我们100个样本这边是49个两个都说是yes49个两个都说是漏有一个这个说yes是另外一个漏有一个这个说yes那个漏这没有显著区别那考虑这两者的关系呢就可以用一个假设检验这个McNemar检验这个mcnemar就是把这个列联表考虑出来之后就考虑这个副对角线反对角线上这两个点然后呢他后面基于一个卡方检验把它用上去。 线性模型 3.1 线性回归 简单基本而且可理解性好 此处缺少一大段解析  这样一个式子fxwxbw是w1w2.x是x1x2….现在我们用表示列向量用表示行向量。如果wb解出来了原函数就是线性拟合就确定的 3.2 最小二乘解 对他求偏导然后给导数为0在上面式子中体现是对w和b求偏导 对这么一个表达求偏导的时候,实际上意味着我们希望找到一个极值点,这个点是它不动了.这个偏导在物理上它表示一个什么含义呢表示一个变化率。其实当你对偏导求W意味着你希望找到一个点我们看这个W1直在动偏导的这个东西等于零的时候它就不动了。它不动意味着什么呢一种呢是它到了最小值点不动了还有一种呢是它到了最大值点不动了。但是我们现在假设就是唯一的你想一想我现在是YFX偏离Y有多远我这个可以偏离的无限远就是说你这个模型根本对我不适用嘛他们两个相等的这一点接下来强调的必要性。 3.3 多元线性回归 其实就是你从这个议员方程 变成了一个多元方程 那我们最简单的不就是高斯消元法就解它吗 那其实这个解的过程也就类似于高斯消元法啊 没有那么多玄奥的东西 但是我们要记住一个表达 我们可以把这个B吸收到W里面去 你看我们现在的是FXWWT转置X加B 这个主要是为了以后我们书写简化 这个也是粗体的 那实际上呢我可以把这个B当作是B乘以一 那如果B乘一 你看你前面这个不是等于W1X1加W2X2 一直加WDXD嘛 那再加上B乘以一 那实际上我把这个X抽出来 那你就得到了一个X一X2XD 再加一这么一个X 而这个W呢就变成了W1等等等等等 我们把它叫做W 那这个表达没有问题吧 那所以以后我们就可以只用讨论 这个Y等于WTX啊 这就是为了一个简化讨论的这么一个表达啊 我们把它变成一个向量的形式好 那现在呢我们就可以用这种方式来解了 对于和由于两式不满秩无唯一解所以对他们做一个限定比如对c做一个约束偏好c越小越好 机器学习很多时候需要一个偏好不加你就没有办法做出来具体加这个东西我们把他叫做正则化 3.4 广义线性模型 线性模型稍加优化解决非线性问题其实是用线性回归来逼近对数的目标 3.5 对率回归 3.6 对率回归求解 看起来的道理就是让看起来复利让ln内下方更大正理让上方更大 就是对于最小二乘法变成带入其中实际上对带入后的式子求w的偏导以导数为0的解得到解这个方法是不行的 我想这个人工智能学院的同学学过优化了啊这个应该是一个基本的道理我们什么时候能够通过求梯度为零的点得到极值我们这样知道极值点它应该是梯度是零的但是梯度是零的点是不是一定是极值点啊不一定只有在什么时候才能是凸函数啊他必须是这种形状的函数是凸函数就是简单大家好就是这种U型函数你自己找两个点它的连线那这个上面的都在这个上面这是凸函数当然我们国内有些书的定义是反过来的它是以这个曲线的形状这样为突但这个没关系啊你把前面取个负号他就回来了对讨论他的数学性质没有太大的关系只有在这样的东西我们梯度为零的点它一定是它的极值点然后上节课我们讲到线性回归的时候讲到为什么我们能用均方误差最小化因为当你这条线的时候它只有两个极值点极大值点它可以无穷大是吧你可以取让这个离这个线无限无无限的偏所以它极值点一定是它的最小值点啊所以我们能这样做而现在这个函数大家回去可以做一个习题这个函数你去讨论一下它的凸性这个函数是非凸的啊这个可以做一个协调你看满不满足这个性质啊这个这个这个是非凸的那这个非凸的我们就不能直接这样去解它那所以我们在解所以我们在解这个对立回归的时候呢我们就用到一个极大似然法极大似然法这个更具体的人我们以后会再讲第六章的时候再给大家讲那么在这呢简单的先告诉一下它的基本思想其实这个东西非常简单很容易理解它是一个什么样的东西呢。 3-6.对率回归求解_哔哩哔哩_bilibili一直到最后都是 3.7 线性LDA判别分析 用一条线分开那个算法叫linear SVM后面会学。要求实现组内误差尽可能小组间误差尽可能大 类内散度矩阵指的是只考虑同类对象内部他的一个分散程度实际上就是他的协方差矩阵和第一类他的协方差矩阵 正如上式w是可以类似约去的所以真正起作用的是这个w的方向。我们看任何一个线性的东西你就可以想象在这个矩阵中啊在这个坐标空间中它就是这么一个量大小呢无外乎就是同等放大大小无关之后其实就是离这个指向哪边更重要其实最重要的就是这个指向就是k斜率而为什么指向重要呢你想想我们这个点这个点投影到这条线上去我们本来就是投影到它的延长线上去所以最重要的就是这个方向这个方向如果错了我们算出来的这个东西就不对了所以方向是最关键的啊这个是在它的物理含义上最后我们调解的时候其实就是在考虑这件事。 接下来我们解最大化广义瑞利商这是运筹学的课程内容。前面说了w的大小不重要只有方向重要才可以随意乘一个系数因为右边的标量只有那慕达左边的标量就等于那慕达 第一个式子第二个式子这两个式子相等对吧好了这两个相等我把这边拿掉对吧这个是这样的吧这个东西是个标量假设它是C没问题我们就说它等于C好吧是不是没关系吧那如果他是C那这边有个拉姆达我们又说了这个W的大小是无所谓的那这个W的大小既然无所谓我们乘一下好了我们把它存起来使得它等于number把这两边一把它凑到一起去实际上你就等于把这个东西啊除到这边来这个W里面不是有他吗W大小不是没关系吗我把这个里面插的这部分存到这里面去没问题吧那你得到的就是这个东西等于他了明白吗啊这个是个简单的从代数上的考虑那如果你要从几何的角度来考虑呢其实你考虑这个式子之后啊如果你们线性代数学得比较好你可以看到其实这一项是方向前面这项是决定方向的而我们刚才又讲到了在LDA这个广义瑞利商里面其实最重要的我们要求的我刚才擦掉了就是要找到这个方向那所以这个方向最重要就是这一项而前面这个什么东西是决定它的方向呢你把这个东西全进来如果不管W的大小它就在这里面所以我们可以得到这个东西等于它那马上你就可以得到了把这个东西求个例这就是我们解出来的W这就是得到的这个式子是所以如果直接从标准的推导我们直接就得到这样的解决方案啊你可以去这样去解它啊但是在现实中呢大家直接做的时候呢通常我们会用一个更快的一个做法求这个SWSW我们通常直接做这个奇异值分解拿原来数据它的协方差矩阵我们直接取值分解把这个UV分解出来啊然后呢SW直接通过这个奇异值分解的结果把它倒过来拼过来就得到它啊这个是我们原始拿到的数据拿到他的一个散度矩阵然后我们再来做这件事然后把SW求出来这个东西就解出来了那这个就是整个我们LDA求解的一个过程非常简单那基本思路就是你看我把所有的点投到这条直线上去那你自己内这一团应该扣得比较紧我们两者之间应该离得比较远然后把这个目标一个写在分子上应该写在分母上然后把它解出来啊解的过程用拉格朗日乘子法啊再观察一下它原来的定义一比较就出来了。 3.8 线性判别分析LAD的多类推广 迹tr aq你的特征值之和主对角线之和。其实这个形式和刚才LDA那个向量单点的样子形式一模一样把原来的二次型换成G2型这个就是那这个是用SB和SW来定义那其实你也可以把st放进去啊然后同样也可以用ST和SW来做或者ST和SB来做。所以有多种做法那么我们看这个最典型的这种那这种我们怎么来解它呢你还是得到箭头右端的这个式子最后得到的必是解 3.9 多分类学习基本思路 最后我怎么决定总输出呢把它们合起来看比如说我们投票现在说你看哪一个最多啊投C3的最多我们就决定C3了因为每一个类它一定是出现的次数是一样多的也是两两猜的嘛投C3最多就取C3了但如果打平了怎么办我们的很多模型它还提供了一个置信度我预测的同时其实还一定程度上告诉你的置信度比如说我们支持向量机它会有一个这个margin就可以把这个当做置信度还有呢比如说对率回归的时候你大于0.5就是1但实际上它输出的是0.8对另外一个输出的是0.7那我就推0.8这个那就得到最终结果 那还有一种划分的是one versus rest对其余大家注意有的书里面把这个叫做OVA他把这个A当做是or就一对全这个说法是不严格的你不可能把全部当作反对因为你自己也在里面了所以一定是自己和其余那他这个怎么做呢你看假设还有这四个类的话第一个分类器考虑第一类是正类234是负类第二个呢考虑二类是正类134是负类以此类推然后来一个新样本之后扔进去它同样会给你这些预测最后的结果这时候同样考虑可以投票如果投票再决定不了考虑你的置信度。 3.10 类别不平衡 我们怎么样要去考虑这种大类小类不平衡的问题呢这个问题很重要如果大类和小类它的代价是相同的我们不需要做任何处理大家可以想一个极端情况啊我们100个样本99个是正的一个是负类那现在我有一个简单的模型我说我看到的训练样本谁多就是谁那我来一个样本我都认为是真的那这个精度已经是99%了但是呢他把那一个负类丢掉了如果正类比负类重要那丢掉它没有关系如果我总要犯错误那我就宁可犯在代价小的这个问题上去所以如果小类它不重要那我们不需要做任何处理如果小类和正类同等重要我们也不需要做任何处理我们要做处理的一定是当小类比大类更重要的时候这一点大家记住了不是说任何时候类别不平衡都要处理的只有说你丢掉的这个小类啊它的价值很高这时候我们才要特别处理这是我们的前提那如果我们恰恰碰到这种问题我们的样本两类完全不一样那比如信用卡检测就是这样的问题100万个交易里面可能欺诈只有100个那这时候这100个对我非常重要你把所有的都说是好的99.99这个模型对我没意义那这种情况我该怎么做呢 如果Y除以一减Y这个时候alt大家还记得啊这个叫几率如果这个几率大于一我们就预测为正类其实我们到现在为止教给大家的二类分类的模型都在做这件事这个是什么东西啊我们平时做的其实是隐含的是在以1/2做一个标准当你输出大于1/2就零一之间啊当你输出大于1/2我认为你是正的小于1/2我认为你是负的你看这个几率大于一不就是上面大于下面把Y倒过来不就Y大于1/2吗所以实际上我们做的是当你的输出在这么一个轴上我们始终解说你在这边就是正类在这边就是负类但是现在的问题是我们认为正负同样重要的时候那如果正负不同样重要而且这个父类比较正类我们假设这个阵内比较重要假设这个正类比较少的假设这个镇内假设是一比三那实际上就是镇内比总样本只占1/4这时候我还应不应该以1/2为标准呢直觉的大家告诉我你直观上你觉得应该以什么样为划分标准有多少1/4大于1/4就是正小于1/4就是负对吧好我们按这个来想啊那现在就应该Y大于1/4那这个是什么呢Y除以一减Y大于1/3而这边所以当两类不平衡的时候我们应该要做的是这个准则啊我们实际上可以怎么做呢把这个东西放过来我们就是要得到一个算法这个算法本身是在做以0.5为切分点他以0.5为切分点实际上就已经做到了我以这个东西为切分点你把这个东西带进去就能得到这么一个东西这个其实只是一个基本的思路实际上我很难很精确地估计这个比例我们有时候看到这个数据集里面有一个A是100B是十那我是不是就把100÷10放上去呢如果要这样做必须有一个假设就是我们拿到的训练集是整个潜在可能的数据拿到的一个无偏采样这才有可能就是说我们拿到的这个是我们本来假设所有的数据都是从这个里面采样出来的都是从这样里面一个一个采样出来那但是我们拿到的训练集呢你可以看到说这部分是正类这部分是负类但是如果这部分负类本身很小的时候那他还能不能保证说原来你看到的这个就是原来整个数据它就是这样分布的这时候就不一定了所以如果它一致那就说明他是他的无偏的真实采样但是这件事情很难保证啊那我们来解决这样的问题有几种做法呢通常有三种典型的做法我这边给大家讲一讲这个基本思路啊很简单第一种呢我叫过采样我就是让小类增加增加到和大类一样多那这时候你就平衡了嘛就按原来的做法做就好了第二种做法呢是欠采样就on商品我把大类变小让他和小类一样多那第三种呢很少的情况下我们把阈值按这样来移就像刚才我们不是说你看我预测的时候是以0.5那现在呢我要变成1/4我把这个阈值移动一下有少数算法可以这样做到其中支持向量机就是一种我们来看看这个所谓的过采样啊假设你看这个是我们的一类的样子另外呢有一类样本是这样大小类不一样那如果我们要用小类和大类一样多怎么办大家想到最简单的是copy但是一旦你copy之后这个问题就会带来很大的问题你的OVERFITTING的可能性会大幅度增加因为如果这个东西有点噪声的话实际上你让噪声的影响加倍了甚至加几倍了那所以最著名的一种做法叫SMOTE这个是Chawla提出来的你看他的名字就知道是个印度人但是是位美国学者啊在这个圣母大学做教授他也到南大来访问过几次啊有一段时间经常来啊我们也去过那这个SMOTE怎么做呢这个是他最著名的工作我们在中间插值这就多了一个点了如果你有很多别的样本你可以再插那可以查出很多样本来这就是SMOTE的基本的想法然后你这个几个我讲两个的话我就这样差一个这再差一个就变成四个了啊如果更多了我还有别的插值的办法这就是过采样你不能完全的copy你可以在已经有的数据上稍微加点变化啊这样呢就会好很多这个做法基本上是现在处理不平衡问题过采样里面的最经典的做法而且你们在大多数的工具包里面都能看到它欠采样顾名思义欠采样要做的呢就是我们要丢掉一些大类的样本那我们能不能随机丢掉一些呢早期有这样的做法但是这个做法会带来一个很大的问题因为你不知道你丢掉的是不是关键的东西比方说如果我们这个分类本来是这个样子的其实你这个分类边界会是这样但是一旦你把这个东西丢掉了它的分类边界马上可能会有一个非常显著的变化所以随便丢是不太好的因为你不知道你是不是把关键的大类样本丢掉了所以有一个很重要的做法叫EasyEnsemble这个是我们组做出来的啊也是很多地方在用但这个做法是什么呢它是个集成学习的时候我们做很多的模型比如说你这个小类啊总共只有三个我每次就从这个大类里面找三个做一个模型这是三对三这个模型一然后下次我再找三个这三对三这是模型二每一个这样的子模型它都是均衡的但是通过做很多个这个之后呢我们最后用一个投票办法结合起来那里面每一个都是均衡的那这个做法呢就避免了你可能很有价值的大类被错误的丢掉而且反过来这个还利用到以后我们会讲到这个集成学习的好处反而还使得精度能够提得更高。 常见类别不平衡学习方法 过采样(oversampling) 例如SMOTE欠采样(undersampling) 例如EasyEnsemble阈值移动(threshold-moving)  决策树 4.1 决策树基本流程 策略“分而治之”(divide-and-conquer)                                                                                              自根至叶的递归过程 在每个中间结点寻找一个“划分”split or test属性 三种停止条件 1当前结点包含的样本全属于同一类别无需划分 2当前属性集为空或是所有样本在所有属性上取值相同无法划分                                3当前结点包含的样本集合为空不能划分. 这个节点第一种状态里面如果全是同类的样本了我不用往下分了这是第一种状态是吧第二种状态你虽然还有不同类的但是我已经没有更多的属性来用了这是什么意思呢你看我们这个决策树啊是不断的从上往下走下来的假设我们现在就考虑这个决策树就有两个属性一个是颜色一个是敲的声音我现在现在判断了说颜色是不是青绿色的你说yes下来我说敲的声音是不是浑浊的你说yes下来到了这儿还是没有全分开这时候我没有办法再往下做难道我再问一下颜色是什么那那走到这儿的颜色都是青绿色的我再问一下声音走到这儿的声音都是浑浊的没有办法往下做所以我必须停这也就是说属性极为空了或者在剩下的属性上它的取值都一样了也许你还有属性比如说这个是颜色这个是声音这边是什么耕地啊之类但是这几个样本呢前面这个划分之后后面的这个它取值完全是一样的也没办法往下分了所以这时候我必须停止明白吧属性不够用了。 还有一种情况当前节点包含的样本集合为空这会什么情况呢你看啊我们假设用颜色来划分颜色是青绿色的往左走颜色是浅白色的往右走颜色是黑色的黑色的往右走浅白色的往中间走但是很遗憾我拿到的训练数据集里面就没有出现过浅白色的西瓜那按照属性来说它有可能取这种属性的但是我训练集里面就没有这样的数据所以这个数据集是空这时候我也要停止那下面我们就无外乎要对这三种情况做处理第一种情况如果所有的都同类那很简单它是个叶节点你全是阵内就是正内全是父类就是父类对吧第二种情况我到这种情况我属性没有了没法往下分了这时候我该把这些节点当做什么呢很简单你谁多我就当做谁你这个多我就当做是正类那这种情况怎么办呢你这是空的你的这个父节点谁多我就当作是谁这是最简单的操作了吧因为我是从父节点下来的嘛我没有样本但是我父节点是有的那父节点谁多我就当做是谁所以这两个操作实际上是什么呢这个不用说了这个实际上是我们观察到数据它是以它的后验概率做一个划分而这个呢是我们把父节点的概率当做了我以后样本可能来的一个先验概率基于他在做一个划分这个道理很简单是吧。 4.2 信息增益划分 4.3 其他属性划分准则 4.4 决策树的剪枝 4.5 预剪枝与后剪枝 4.6 缺失值的处理 支持向量机 5.1 支持向量机基本型 中间那条线是超平面下面那边是负的上面是正的最关键是找到那几个有圈的样本来要和两个的在中间距离都要最大。如果说把正例和负例的距离都变成1就变成了2/w的超平面相对于数据集的间隔。 指拉格朗日乘子 5.2 对偶问题与解的特性 对偶问题的得到的是原来目标函数的下界希望原函数最好所以求一个极大 5.3 求解方法 对于上图式子有另外的方法加快求解 5.4 特征空间映射 如果遇到不明显或复杂的图难以分割若不存在一个能正确划分两类样本的超平面怎么办 我们采用将样本从原始空间映射到一个更高维的特征空间使样本在这个特征空间内线性可分 需要详细阐述 5.5 核函数 在低维空间中输入处理的结果恰恰等于高维空间两向量的积那么k怎么找将求高向量行为点积转化为在低维空间中求核函数的值其中函数起到一个空间的变化 在甚高维空间变成,这就是函数fai做的事情再定义xl的点可能就跑到x轴上去了。如果距离矩阵可以为0对应上面这样一个空间那么恰恰能够称为核函数 任何一个核函数都隐式地定义了一个RKHS(Reproducing Kernel Hilbert Space再生核希尔伯特空间“核函数选择”成为决定支持向量机性能的关键 缺少6分钟讲解  5.6 软间隔SVM 5.7 正则化 5.8 如何使用SVM 神经网络 6.1 神经网络模型 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应[T. Kohonen, 1988, Neural Networks 创刊号] 神经网络是一个很大的学科领域本课程仅讨论神经网络与机器学习的交集即“神经网络学习”亦称“连接主义connectionism”学习 那第一点我们来看看神经元模型这就是简单单元所谓的这个简单单元到现在为止我们用到的最多的神经元模型还是在1943年这个芝加哥大学的这两个人MICHAEL和Pitts提出的模型一直沿用至今哪怕今天深度学习这么红的年代里面我们用的最多的还是这个模型那这个模型非常简单它刻画的是一个什么现象呢我们在生物神经系统里面有这么一个现象一个神经细胞它会接收到来自其他细胞的信号而这个信号通过这个连接突触增强到达我这个细胞它传过来的其实是一种电位当到我这儿的累积电位高于一个阈值我就激活了往外传出一个信号所以你看现在我们把这个花当做一个细胞从很多别的地方传过来X这就是别的细胞给它提供的信号通过这个连接放大放大嘛就是乘一个W那么到我这儿之后呢就变成所有的sigma x和W乘起来如果它比较大比这个C塔要大一些我就激活激活就是产生一个输出由一个函数F来处理产生输出所以所谓的这一个神经元模型其实就是这么一个简单的数学函数X是别的神经元来的信号W是突出放大全部加起来sigma比我原来的一个阈值theta高你就用F来处理一下产生Y所以所谓的一个神经元就是这么一个函数那么我们在所谓的学习以后要学什么呢就和刚才我们说到线性回归啊等等线性模型一样要学的就是这个W还有这个theta我们线性模型不是WXT转置加乘X加B吗加B嘛你和减C塔是一回事了啊正负号把那个吸收进去就是了那所以你看他要学的还是W和B诶你看这一点和线性模型是一样的其实每一个神经元自己本身如果你不考虑这个F它就是个线性模型所以把这个F去掉它不就是个线性模型吗那么现在有这个F之后它能够处理非线性的东西了那么我们一定知道这个F要做某种变化。 sigmoid函数其实是指S型的一类函数如是最为特点的一个函数 6.2 万有逼近能力 多层前馈网络有强大的表示能力”万有逼近性” 仅需一个包含足够多神经元的隐层多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数 [Hornik et al., 1989]  任何一个输入x输出一个f(x)函数如果要求在x空间中任何一点都有值就说是连续函数可以看到我们的任何计算过程都是做连续函数。故任何函数逼近问题都可以用单隐层前馈网络解决 但是如何设置隐层神经元数是未决问题(open problem)实际常用试错法 很多人认为万有逼近性是神经网络独有的优良属性,但是是错误的,傅里叶变化等等等等也有此性质. 6.3 BP(误差逆传播算法)算法推导 难以概括提供视频理解5-3.BP算法推导_哔哩哔哩_bilibili 6.4 缓解过拟合 一个抖动的线中间抽象一条线虽然平滑掉锯齿 贝叶斯分类器 7.1 贝叶斯决策论 我们再其中选择一个风险最小的决策即贝叶斯判定准则。 h*称为贝叶斯最优分类器(Bayes optimal classifier),其总体风险称为 贝叶斯风险(Bayes risk)他反映了学习性能的理论上限 假设我们看到ground truth因此我们的问题在于无法看到groundtruth的区别是这个条件概率 7.2 生成式和判别式模型 所谓的生成式模型是先把他的联合概率做出来在此基础上进一步处理的。 为什么叫做生成式呢我们给出一个数据集都可以看到有一个数据分布并得到一个采样独立同分布 潜在我们叫他假定有一个分布的我们不知道的缺少。如果把数据集叫做C可看作关于类别模型生成即P(X,C) 总之,两个一个是拿到数据后就事论事只做他;另一个是把原来的分布尽可能还原出来。 7.3 贝叶斯分类器与贝叶斯学习 很难用什么话概述建议看视频7-3.贝叶斯分类器与贝叶斯学习_哔哩哔哩_bilibili 7.4 极大似然估计  假设有一个高斯分布中间有mseita这样一点把D_c这一数据集全部导出那么每一个x都从这个产生的概率是多少把每一个X都是独立随机事件且独立同分布用确立这个模型的产生X的概率这是若干个X即X1X2X3….可以认为是把他们的各自的对应的概率相乘即.seita有许多选择,故可以参数化(0.1,0.2,0.3……)最后调参至误差min即可 同学这里书中的log默认为ln 7.5 朴素贝叶斯分类器 从贝叶斯公式出发,从BYS公式,我们刚才的探讨一个PC一个PX啊这个我们都不用去讲了PX就是你看到的X这个PC呢是类别先验那你可以认为我也可以把它当作产生很多数据之后找后验那我们要估计的就是他但是这个东西估计呢非常困难为什么困难呢大家要注意这个X啊它涉及到一个feature space而当我们要估计的时候其实是涉及到属性它的联合展开  现在我们有西瓜青绿根底蜷缩浑浊声音我们把条件叫做x1x2x3因此现在衍生出X1|CX2|CX3|CX1X3|CX1X2|CX2X3|CX1X2X3|C这就是蓝字的问题2的3次方组合爆炸 那么举一个例子17个数据8个好9个坏  7.6 拉普拉斯修正 其中有一个问题是对于某些比如青绿蜷缩浊响模糊的西瓜他是坏的。但是没有模糊的样本 这个里面有部分没有出现现在3个口袋来一个球进入A或者B但是C一直是0会对结果产生错误预测于是拉普拉斯就预先在所有口袋放一个球 实际上这是假定属性值和内容均匀分布这是我额外有引进的bias 集成学习 8.1 集成学习 集成学习Ensemble Learning是一种利用多个模型来提升整体预测性能的技术而非单一模型。通过结合多种模型的结果集成学习通常能够获得更好的效果尤其在竞赛和实际应用中表现突出。 集成学习有两种主要类型 同质集成所有模型相同如多个决策树可称为决策树集成。异质集成模型各不相同比如神经网络和决策树的组合。 每个模型在集成中被称为个体或成分通常叫“弱学习器”。集成学习广泛应用于各大比赛和工程中。例如在深度学习中往往会将神经网络输出的特征传入其他集成模型如随机森林、XGBoost来提升性能。这种技术尤其适用于需要高性能的场景且即使没有创新使用集成学习往往能获得较好的效果。 8.2 好而不同 现在假设我们要预测的目标有三位分别是绿色、黄色和绿色。我们有三个模型来完成这项任务。第一个模型在预测最右边的颜色时犯了错误将绿色误认为黄色第二个模型则在中间位置犯错将黄色误认为绿色而第三个模型在最左边犯了同样的错误将绿色预测为黄色。每个模型都只正确预测了其中的两位颜色因此它们各自的准确率为66.6%。然而如果我们采用一种简单的方法——多数投票majority voting即当多数模型对某一位颜色的预测相同时我们就采纳这个预测作为最终结果。这样通过结合三个模型的预测我们可以得到100%准确的结果。这是因为每个模型虽然都有缺陷但它们的错误并不相同通过组合这些不同的“声音”我们可以抵消错误从而获得比任何一个单独模型更好的结果。 但是并不是所有情况下集成方法都能提高性能。比如当三个模型在同一个位置上都犯了相同的错误时使用多数投票并不会改善结果反而会保持错误不变。这说明为了使集成方法有效个体模型之间需要存在差异性。进一步来看如果每个模型都犯了多个错误并且这些错误导致了完全相反的预测结果那么即使采用多数投票最终的准确性也可能降到0%甚至比单个最差的模型还要糟糕。这表明为了使集成学习有效不仅需要个体模型之间的差异性还需要保证每个模型的基本性能即它们不能太差。 这个例子很好地展示了集成学习的基本原理和条件即个体模型不仅要具备一定的准确性还需要具有多样性。这与团队合作类似当团队成员各有所长能够互补时整个团队的表现往往能超越单个成员的能力。 8.3 两类常用集成学习方法 8.4 Boosting 8-4.Boosting_哔哩哔哩_bilibili Boosting其实是一种框架之后我会讲更具体的内容。现在大家可以先了解一下它的流程。Boosting家族的算法一般以“boost”结尾比如常见的AdaBoost而整个家族的流程是类似的。首先我们拿到一个初始训练集假设称之为DataSet1然后选择一个基础算法常用的是决策树等算法这时我们称之为Base Learning Algorithm。集成学习中有同质与异质之分Boosting侧重同质集成因其实现更为方便即使用一个算法多次训练得到多个模型即可。 同质集成的挑战在于如何保持模型间的差异性diversity这比异质集成要难。异质集成由于算法不同模型间天然存在差异而同质集成则需要通过训练集的不同来实现差异。 在Boosting框架中首先训练一个基础模型Learner1用它对训练集预测记录正确与错误的样本。为每个样本分配权重错误的样本权重上升正确的样本权重下降。然后重新采样得到新的训练集DataSet2。这样第二个训练集将更关注先前分类错误的样本进而生成Learner2。如此重复T轮最后将所有Learner加权组合。 Boosting可以用于分类、回归甚至排序任务。其核心思想是对残差最小化的高效实现设计之初便是统计学残差最小化过程的计算方法。 8.5 Bagging 8-5.Bagging_哔哩哔哩_bilibili Bagging是一个相对容易理解的集成学习方法。当我们得到一个数据集后通过对该数据集生成多个学习器来构建模型。假设我们有100个数据使用C4.5决策树来训练。如果每次都直接使用相同的数据集生成的每个决策树模型会非常相似集成起来效果不佳。因此我们引入了一种技术从原始数据集中通过“可重复采样”bootstrap sampling来生成多个不同的数据集。可重复采样允许同一个样本被多次选中而某些样本可能完全未被选中这样生成的数据集就有了差异性。 通常约63.2%的样本会被采样进入每个新数据集剩余的留在外面。基于这些不同的数据集训练出多个模型后将它们组合在一起——分类任务中投票决定结果回归任务中取平均值。这种方式让每个模型平等参与不像Boosting中模型有权重差别。Boosting是一个序列化过程前面的学习器处理简单问题后面逐步解决更难的部分权重不可均等。而Bagging可以平等地组合每个模型生成出一个集成模型。 Bagging的改进版是随机森林Random Forest到今天仍被广泛使用。这两个方法中Boosting有代表性的XGBoostBagging有Random Forest是集成学习中最重要的代表性算法。 8.6 多样性度量 8-6.多样性度量_哔哩哔哩_bilibili 在集成学习中“多样性”是一个非常关键的因素。它反映了集成学习中不同分类器的差异程度而这种差异通常能够增强模型的表现力。然而多样性如何精确度量却并不是一个简单的问题。 一种简单的度量方式是通过分类器之间的“列联表”来实现。对于任意两个分类器我们可以构造一个4项表格用ABCD四个值分别代表分类器在正类和负类的判断情况。基于这些数据可以计算两分类器的不同程度例如用 (BC)/(ABCD)(B C) / (A B C D)(BC)/(ABCD) 来度量分类器判断不同的比率或通过计算相关系数来量化分类器的相似性和差异性。 实际中已有很多不同的多样性度量方式比如不和度量Disagreement、Q统计量、卡帕统计量等特别是卡帕值越小表明多样性越大。我们甚至可以将这些度量与模型的误差表现结合起来用图表展示模型误差与多样性的关系。然而通过不同的度量和分析方式目前仍未找到最优解。 英国学者Lucy Kuncheva曾总结过当时多达76种多样性度量方法。尽管定义了如此多的度量方式依旧无法找到多样性与模型性能之间清晰的关系。学者们通过实验发现个体性能接近的模型在多样性更高的情况下理论上应表现更好但实践中并不总是如此。2003年和2006年的研究表明即使引入这些多样性度量并不总能有效提高集成模型的性能。 这也揭示了一个深层次的问题多样性如何更准确地刻画和量化。现有的定义可能还不够全面或许需要从模型结构上去考虑预测结构的差异。目前这个问题仍然是集成学习领域的“圣杯问题”即一旦能从数学上刻画出完美的多样性度量方法集成学习的构建将不再有秘密集成模型的优化也将变得更加系统化、理论化从而推动整个机器学习进入新的阶段。 聚类 9.1 聚类 9.2 距离计算 9.3 聚类方法概述