首页 > 其他分享 >七月在线公开课笔记-五-

七月在线公开课笔记-五-

时间:2024-10-23 18:34:36浏览次数:8  
标签:这个 在线 一个 笔记 公开课 就是说 具体 然后 我们

七月在线公开课笔记(五)

【七月在线】机器学习就业训练营16期 - P1:在线视频:1-线性回归、logistic回归、梯度下降_ev - IT自学网100 - BV1Z9T5ewEKL

好没问题好,那我嗯好,我重新说一下啊,然后欢迎大家来到我们机器学习的这个课程,然后今天是我们正式给大家讲,机器学习算法的第一课,所以在今天这节课当中,我们会给大家介绍到回归类的算法啊。

这个回归类算法是一个所谓这个所谓的回归类,算法,是一个广义的回归算法,就是啊一一会儿我们会给大家介绍到这个啊,机器学习的这个不同类型啊,就是做做一个分类包,涵盖的这样的不同类型的板块。

然后大家会看到这样一个概念叫做回归,那在那个概念当中呢,我们的回归指的是你的输出结果是一个连续值,那我们这个地方指的回归类算法是一大类,所以今天的课程主要会给大家讲的是,一个是线性回归啊。

叫linear regression,然后这是一个很常见到的一个啊回归模型,还有一个叫logistic regression啊,叫逻辑逻辑回归或者逻辑思D回归,这是一个用于分类的一个问题。

然后这两个啊这个这个模型,同时你在周志华老师的西瓜书机器学习当中,它叫做对数几率回归,就是有不同的这个叫法啊,啊不好意思,这个地方的手写板可能有一点点怪啊,大家就是勉强看一下啊,叫对数几率回归好。

我们今天主要重点是介绍到这样两个算法,那在介绍这两个算法之前呢,我会先给大家梳理一点小小的machine learning的概念啊,大家在之后会学到很多的算法,但是希望大家不要对。

大家对这些算法的认识不是孤立的,一个小的算法呃,希望大家能建立起来一个地图,一个大的框架,然后你把这些算法逐一的放到这个框架当中啊,同时也能了解到算法和算法之间的一个模型,和模型之间的一些联系。

和他的一些啊优缺点啊,他们的一些对比,那这样的话会有一个更完善的了解啊,所以今天的课程呢,我们会先交代机器学习的一些基本的概念和基,本的板块,让大家有一对这个内容有一个基本的认识。

然后我们会给大家讲到回归大类的算法,包括linear regression和logistic regression,然后今天给大家讲到的这个logistic regression。

这个算法叫做逻辑斯蒂回归,或者是对数几率回归,也是你在工业界会看到很重要的一个baseline model,一个机械模型就是你会看到各种各样的应用呢,呃他都会先用它去试一下啊。

有一句在工业界有一句话叫做一招LR打天下,所以你看到的除掉嗯,没像BATTMDJ这样的公司以外,其他的大部分公司啊在广泛的使用这个base model,对啊好的,所以就是今天的一个大体的说明。

关于今天的课程,然后大家现在看到这个页面,我们给大家画的这样一幅图,实际上是告诉了大家整个机器学习解决,从解决问题的角度上,我们对它的一个分类,首先整个机器学习啊。

大家如果听到这个名词叫machine learning,这个笔好像不太好用啊,那大家要知道它可以分成啊,叫做监督学习和无监督学习啊,所以我给大家写一下可以分成啊,Superez learing。

监督学习和无监督学习,你看到的算法的,都大部分都是可以归到这个板块的,这两个板块的啊,但又会有一些特殊的一些一些这个呃板块啊,所以监督学习做的事情和无监督学习做的事情,我说明一下,监督学习呢。

类似于大家之前在上学的时候学习的这个过程,所以老师会给你一些题目,然后在这些题目的基础上,老师会给你一些参考答案,比如说你买的参考资料,它会有参考答案,或者老师会给你批改作业。

他会告诉你说这个东西做得对和不对,也就是说你做每一道题,你都有一个参照指导的一个参考答案,去验证自己做的对与不对,你是在有有题有参考答案的这个条件下去学习,如果如何更好的去做这些题。

所以你会总结出来一系列的做题的方法和思路,那这个时候你不仅有数据,你不仅有提,你还有标签,你还有标准答案,所以这个我们把它叫做监督学习啊,你看到了很多工业界的很多很多算法,都是这样一类模型。

而我们今天一会儿给大家讲到的,线性回归和逻辑回归都属于监督学习,无监督学习呢,它就像是没有标签的,这些数据给到你手里,你去总结它里面的一些规律,举个例子来说,在电商。

比如说淘宝或者京东里会有大批的用户数据,这些用户每天都会在这个app上发生,各种各样的啊动作,会有各种各样的行为啊,会浏览会有评论,会有加车,会有点击,会有购买,那你手上拿到的是一堆的这个数据。

没有任何人告诉你,说你的屏幕的背后是一个什么样的人,他不会给他刻意的去打一个标签,但是你有了这么多数据之后,你可以在这些数据上去挖掘出来一些信息,举个例子来说,你可以找到一波群体。

这波群体他是他的行为是比较类似的,你发现这群小姐姐都还很爱去逛口红品类,这群小哥哥都非常喜欢各种各样的电子产品,所以你会在无监督的场景下会拿到一堆的数据,这一堆数据是没有标签的。

你要在它的基础上去学习出来,一些模式和规律啊,那这个叫做无监督的学习是没有标签,没有答案,你只有这些数据啊,你需要去根据他的统计,根据它的分布去总结出来一些规律,一些模式。

比如说刚才我说的是典型的机器学习当中的,一个聚类这样的一个问题,比如说另外一些场景下呃,大家也会知道会有一个很典型的一个啊,一个问题叫做啤酒与尿布的这样的一个故事啊,说的是在大型的超市连锁超市当中。

也会有大量的用户的这个购物的流水,那这个东西呢是没有标签的,上面不会告诉你说这是一个什么样的用户,以及它的一些呃详细的情况,你唯一看到的就是这样,有这样的一堆的用户购购物之后的流水,那根据这个东西呢。

你可以发现哪些东西和哪些东西,可能是会被一起购买的,那你在做这个商场的这个这些货架栏,它的摆放的时候,你就可以去做一些调整啊,方便他们去购买,Ok,所以你需要树立的第一个概念是整个机器学习,通常情况下。

大家在互联网公司当中用到最多的两类,叫做监督学习和无监督学习,然后还有第三类叫做强化学习,叫做reinforcement learning啊,强化学习是另外一个分支啊,就是可能在咱们这个课程当中。

不会特别去讲这样一类学习呃,他有一点点像监监督学习,但是它的不同在于它的结果Y,这个东西是一个有有延迟的反馈,就是举个例子来说,你下围棋,你下围棋的每一步落子,都有可能会影响你最后的输赢。

但是他不会在当时这个时刻显现,你若下错了一颗子,可能会在10分钟或者15分钟之后,引起这盘棋的结局是输的,或者说他是赢的啊,这取决于你这一步下的好还是不好,所以你会拿到一个结果,你会拿到一个反馈。

但这个东西是有延迟的一个反馈,再给大家举个例子,你们知道有一家有一个公司叫做滴滴,然后滴滴很重要的一个场景,是去做一个啊运输力的一个调度,但是你他想做一些事情,比如说滴滴。

也许他关注去把每一个司机一天的收益最大化,但是你想一想,这在这个场景当中,我的每一次派单,我把滴滴这辆车派到另外一个地方,它的终点给到了A这个地方,和给派到了B这个地方,这个是会影响司机的下一次阶段的。

我把他派到了A这个地方,他下一次接单只能在A附近去接吗,我把他派到了B这个地方,他下一次接单只能在B这个地方去接,所以你的每一次你的每一个动作,你的每一次决策都会影响他,从下一个时间点开始之后。

所有的动作,而这些这些结果它最终会有一个反馈回来,你今天一天结束之后,你去看一看今天所有成交的这个单,所以我接了班加在一起,你才知道我今天的收益有多大,所以强化学习它有一点点像监督学习,但是他的这个Y。

通常情况下是一个有延迟的反馈,他不会在当时那个时刻就发生,它的结果不会在当时那个时,结果在当时那个时间点就反馈给你,所以这类算法很特殊啊,大家我在我们这个课程当中,不会特别去给大家讲这一类算法。

我们关心的点是上面的监督学习和无监督学习,这也是大家在互联网,至少在互联网公司会更频繁用到的两类算法,而其中的监督学习,如果大家再对它细分一下,会细分成这个地方啊,sorry我箭头画错了。

这个地方的分类和回归,那这个是如何区分的呢,这个场景区分的方式是根据输出的结果Y,在有些场景底下我们做的事情是选择题啊,一会儿下一页你会看到在有些场景底下,我们需要去解决的是一个问答题。

你需要给我一个明确的一个连续值的结果,或者多个连续值的结果,OK那无监督学习呢,它也有很多算法,很典型的AA算法叫做聚类好,所以大家先竖立起来一个大的框架,这个大的框架就是在机器学习的场景下。

我们在这门课当中,我们关注的算法是supervise,当你监督学习和unspots learning无监督学习,而其中的监督学习又可以像下一页一样,去分成分类和回归两个问题。

那所谓的分类问题是什么问题呢,在很多很多的场景底下,我们需要解决的问题是去做一个选择题,所以你在一个很典型的垃圾邮件识别的,这个场景下,你最后的结果就是一个选择题,有两个选项给你。

你要判断你现在给到你的,这个有一堆的文本或者图像的这个这封邮件,它到底是一个垃圾邮件,还是一个不是一个垃圾邮件,所以你的选项就是两个选项,A和BA是B不是,比如说你去做一个文本情感分析。

今天你打开了淘宝,你打开了京东,你看到了评论,你看到了买家秀,你要去判断你现在这个地方的用户,到底这段评论是一个啊,对这个商品是一个称赞还是一个这个批评,那你你在这个情况下给到你的就是文本。

你需要去判定的结果,就是这个结果是一个positive还是一个negative,OK所以这个时候你做的是一个选择题,你的选择题有两个选项,一个选项是这是正面的情感分正面的一个呃。

一个褒义或者说一个鼓励的这个评论啊,另外的选项是这是一个批评或者贬义的,这样的一个评论,OK然后第三个安利是啊,我们知道现在深度学习非常热对吧,所以大家会看到一些所谓的deep learning。

或者neural network啊,从某种角度上来说,它实际上也是一一种机器学习啊,只不过他这个时候的形态用的是神经网络,那在这样的模型当中,你解决的问题也会有很多很多的问题,比如说一个典型的问题。

是关于图像内容识别的问题啊,你们千万不要以为这个地方的图像内容识别,他做的事情是他做的事情,是真的让这个模型去看到世界上的万事万物,去告诉你说他是什么,大家想一想,你平时你你在你的世界当中,你放眼望去。

你看看你周边的这些东西,你能够给给出来一个能够报出来他的名字,或者说给出来一个解释,根本原因在于你从小到大的成长环境当中,你知道有这么一些东西,所以计算机去完成图像的内容识别。

实际上也是有一个大的知识库,大家知道有这么一些东西,比如说我现在在这个地方列了四个选项,叫做喵星人,汪星人,人类和草泥马,当然它会有第五个选项,发现不在这四类当中,所以第五个是都不是。

那这就是一个选择题,他完成的是一个五分类的选择题,我会给你五个选项,你从里头选一个,OK总之大家想了想,发现这个地方分类问题,说的事情是我去做选择题,那不屑于我上面给大家列到这些例子,举个例子来说。

在电商当中场景当中,我们很关心一些东西,比如我们很关心在淘宝这个这个商品下,你会不会发生购买这样一个行为啊,所以最后你也是完成一个选择题,你的最终结果无非是两种,我买了它,我没有买它。

所以我会去构建一个模型去区分一下,说哪个商品你更有可能会购买,那我就把它放在前面了,所以这就是一个很典型的分类问题,OK那下面的回归问题,对比上面的选择题呢,对他做的是一个问答题。

所以呃你不需要告诉我说,刘德华和吴彦祖都很帅,请告诉我他的具体颜值的得分谁更帅一点,到底是吴彦祖是9。4,刘德华是9。2,还是刘德华是9。8,吴彦祖是9。6,所以你不需要告诉我,Yes or no。

你不需要告诉我啊,它它是某一类,我需要你告诉我一个具体的值,举个例子来说,头号玩家的票房值有多高啊,某一个电影的票房值有多高,魔都的房价具体是什么样的一个值,那你思考一下,它显然不是一个选择题。

因为具体的这个值它有无穷种取法啊,你只需要你的票房多一块钱,少一块钱都不一样,房价也一样啊,颜值的得分多0。1分多,00:05分都不一样对吧,所以这个地方的分类问题和回归问题呢,其实啊都是监督学习。

我都有X都有Y,仅仅区别在于,我这个地方的Y到底做的是一个选择题,还是一个填空题,OK所以大家有一个基本的概念,OK好的,那下面这一页呢讲到的是聚类问题啊,这是我刚才给大家说的,在淘宝和京东的场景下呢。

你可能会有很多很多的用户行为,那这个时候你不可能呃,找一个人去把所有这些记录全看一遍,是看不完的啊,就是在阿里的场景下,尤其在京东的场景下,他会有有非常非常多的用户,非常非常多的数据啊。

就是数据量级可能在几10亿,几百亿这样的量级啊,在一段时间内就会有这样的量级,然后数据的维度可能也会高达几亿几10亿啊,这个时候你是看不过来的,所以你想去挖掘一些信息出来,你想对这些用户去看一看。

这些用户群体有什么样的差异,他们都有什么样的贡献,你就可以基于你的数据X,去用一些无监督学习去挖掘一下,比如说最典型的无监督学习叫做聚类,你可以让用户和用户之间去抱抱团,基于他们的用户行为去抱怨抱团。

所以你就会发现,那些爱买口红和连衣裙的小姐姐们,你也会发现那些爱买电子产品的小哥哥们好,所以大家在这个地方有一个先有一个认识,我们将来看到的几乎这门课当中,所有的模型都可以被分到这个地方的监督学习。

更具体一点,分类和回归的监督学习以及无监督学习,比如说聚类或者是其他类型的啊,降维数据,降维等等这样的一些无监督学习当中啊,相信大家也有一个基本的认识,他们区别在于说到底是给题给标准答案。

这样学习的方式,还是说是只给数据去挖掘这样的信息,这样的这个方式,同时呢你也知道做选择题和填空题的差别好,只是一点小小的概念,然后来到下面这一页,这个地方呢我们找了一个周志华老师的机器。

机器学习西瓜书里面的一个案例对吧,所以呢我想给大家建立一点小小的概念,就是你需要知道呃,我们会有一些称呼,我们会有一些术语,你需要知道这些称呼和术语到底说的是什么,所以刚才我已经给大家介绍过了。

无监督学习和监督学习,那在这本书的这个例子当中,显然这是一个监督学习呃,我需要根据这个地方的三个信息,颜色,西瓜的色泽和西瓜的耕地和西瓜的悄声,去判断它到底是一个好瓜还是西瓜,更具体一点说。

这是一个做选择题的一个问题,我最后的结果就是两种情况,我要么判断它是一个好习惯,要么判断它是一个坏的西瓜,而我的依据是前面的这样的三列,我们通常会把数据组织成这样的一个形态,大家如果有兴趣。

将来去参加数据科学的比赛,你会发现所有数据科学比赛的数据啊,他都很习惯,会用这样很很规范的,行行列列的数据给到你手里,那在这个数据当中,大家来看一看这个方阵的数据,行行行行列列的方阵数据。

在这个数据当中,你的每一行是什么,每一行是一个西瓜,每一行是一个西瓜,所以每一行是一个什么,是一个事例,是一个样本,是一个样例,Ok,所以在这个数据当中的,每一行都会是一个他找过来的西瓜。

用于学习的西瓜,在你初高中的学习过程当中,这里的每一行都会是你找过来的一道练习题,要带着答案的练习题,所以这个地方的西瓜是一个,他会找过来一个西瓜,他会告诉你,它到底最后这个选择题的结果是一个好习惯。

还是一个坏习惯,同时它会给到你前面这样一些,用于最终西瓜是好西瓜,还是坏西瓜的这样的一些判断啊,你会拿到手里题目的参考答案,选择题的参考答案,你也会拿到选择题的题干或者是他输入的信息。

所以这个行行列列数据当中的每一行,大家对它的理解就是一个样本,在这里就是一个西瓜,所以大家记住他的称呼,可以叫做示例,可以叫做样例,可以叫做样本,他们说的是一回事,那每一列是什么呢。

你去推断这个西瓜到底是一个好的西瓜,还是一个坏的西瓜,你总有一些你需要去判断的依据,那这些依据可能会有很多很多不同维度的信息,所以每一个维度的信息,我们把它叫做一个属性,叫做一个特征。

所以大家在这里看到的每一列,包括西瓜的颜色,包括西瓜的敲的声响,包括它的根地,这个东西都是属性,都是特征,所以在将来的大家学习机器学习的过程当中,你会更多的看到这样的一些概念,当提到这个概念的时候。

你要在脑子中浮现这样的一幅图,你告诉自己说,实际上他说的就是行和列,当他提到一个样本的时候,它指的是一行,指的是一个西瓜,指的是一道题,当他提到一列的时候,它指的是我的一个。

用于完成这道选择题的一个属性,或者是一个特征,而最后的这一列显然是label,是我们最后选择题的答案,也就是我们的标记空间和输出空间,好OK所以这是一些基本的概念,大家了解一下。

那整个机器学习做的事情是什么呢,所有的事情在于我准备好了这么多题,我准备好,我在夏天准备好了这么多西瓜,我送到你手里的时候,你能通过我们在这个课程当中学到的,一系列的模型。

从前面的这个选择题当中去学习出来,一个X到Y的一个映射,注意哦,这是有监督的学习,所以我学习出来的东西是这个地方的一个映射,而种种模型只是这个地方的映射不一样,这就像大家解题的时候。

你有不同的解法是一样的,你去解决这一道数学题,如果它是一道选择题的话,它的标准答案一定是固定的,但如果它是一道解答题的话,你可以有不同的方式去解决这个问题,而这个地方的机器学习。

实际上对应的是这个地方的解法,这个地方的F比如说同样是这个地方的色泽,耕地和敲声,我要根据这三个维度去推断,一个西瓜到底是好瓜还是坏瓜,我有很多推断的方式,比如说今天大家看到了逻辑回归。

一会你看到逻辑回归或是一种计算的模型,去拿到一个概率值,比如说大家在民间课程里学到的决策树,它会是一种规则,所以我的种种方法体现最终的差异,在这个F上我会用一个不同的表示啊,实际上它也有它的称呼啊。

你可以叫做表示,可以叫做表达,你也可以叫做假设函数,它会通过一个这样的东西,这个东西最终的目的就是我每送进来一个X,我每给你一道题的时候,你可以基于这个方法去达到一个答案。

而这个东西就是你通过不断的学习,去不断的这个学习的过程,去不断的完善和积累出来的,这样的一个模式或者规律,所以你做的事情是我数据已经准备好了,而且我知道这个地方的数据有行有列,我知道有样本。

我知道有属性,我知道有标签,在这个的基础上,我把它送到各式各样的model当中,我把它送到各式各样的模型当中,我试图去学习出来一个学习出来一个模式,学习出来一个规律,而这个东西最终目的在于。

在将来某一天你去参加高考的时候,没有标准答案摆在你面前的时候,你拿着这些题你也能积极,你也能根据我之前总结到的规律,总结到的做题的方法方式去完成这个题目,就给出来一个答案。

而且我会希望你给出来的答案越来越正确越好,所以这个地方会有一些其他的概念,比如说给到大家的那些叫做训练集,给到大家的那些题呢,是你平时去做练习的训练集,OK那还有另外一个问题,那叫做测试集。

那个东西你是提前看不到的,高考之前高考题虽然出好了,一定是密封的,一定是在高考当天你才可以看到这份题,而且你只有一次机会,当你做完了这些题,当你去评估它的结果之后,你不可能再跟他说。

老师我再高考一次一模一样的题,No,这个地方不可能,所以你要从你的训练集上,你要从你的训练数据上学习出来做题的规律,学习出来这个模式,而在高考的时候,面对新的样本,面对新的题的时候,用这个模式和规律。

用这个F去对这个地方的X做一个预估,拿到一个答案Y,我们会希望这个地方的F越通用越好,我会希望这些同学们在参加高考的时候,准备的越充分越好,学习到的知识越稳固越好,学习到的做题的方法通用性越好越棒。

所以这个地方大家看到其他的一些概念,说的是这个事情啊,右边这个东西刚才我已经解释过了,所谓的分类回归,所谓的二分类是啊做选择题的A和B啊,就是正面反面啊,抛一颗硬币的正面反面说的是一样的。

OK这个地方是一点小小的介绍,这一页当中有一些概念,大家将会在未来的机器学习的学习过程当中,会再次见到好,我先往后跳一跳,我们来到今天的第一个model叫做linear regression啊。

OK这我知道这个模型很简单,但请大家静下心来听一听,因为我想阐述的不仅仅是这个模型,而是让大家建立一点基本的概念,我们将将来所有的模型会丢到一个套路当中,你可以把它总结成以同样的一个套路。

但是它有不同的表达,会有不同的优化,所以导致了他最后的结果,或者它的形态,或者是他的方法是一种不同的表示,这个是一个确实,你在很久以前就学过的一个模型对吧,所以大家上初中没上高中的时候,就知道说。

我可以基于一堆东西的这个运算去做一个预估,老师会告诉你说你怎么去拟合一个二次函数,你怎么去拟合一条直线对,所以这个东西你和一条直线,这个东西叫做线性回归对吧,那我们用专业的术语来形容一下这个东西。

他说的事情是这样的,首先它是一个有监督的学习,大家要明确一下,linear regression是一个有监督的学习,他要学习到的,每每一个每一条记录,都可以记录成这样的一个样本。

都可以记录成这样的一个样本,这样的一个样本就是我刚才说的X和Y,只不过这个时候你为了去学习到这个规律,你需要很多的X和Y,你需要去做很多的题,你才能总结到规律对吧,为什么高三的时候。

老师会让大家反复的去做题,因为你只做一两道题,你是学不到通用的通用的规律的,所以我在这个地方会准备好一批所谓的一批,这个地方是N个样本,N个题,N道题,那这N道题每道题都会有它的输入,X会有它的输出。

Y这个地方的输出Y因为它是一个连续值,所以它是一个回归类的问题,我要学习到的东西是一个映射,F从X到Y之间的一个映射,对于输入的X可以输出连续值Y,我假定输入和输出之间对,是一个线性的相关关系。

OK所以我们建立了一个基本的认知,说线性回归这个东西,大概就是说你准备了一堆的XY,然后我会用一个线性的表示,去完成X到Y之间的一个映射,而我可能想去学习出来一个这样的映射,好啊,没关系。

这个model很简单,但是这个model啊,待会我们会用机器学习当中的这个套路和板块,就给大家重新的阐述一下啊,这个地方有一个小小的问题,让大家去思考一下,说如果你去让一个6年级的小学生。

在不问同学具体体重的情况下,把班上的同学按照体重从轻到重去排队,这个同学会怎么做呢,他可能会环顾一下他的周边的同学,然后他可能会通过观察大家的身高和体格,来完成这个排队。

这个事情是一个非常合理的事情对吗,因为根据我们的常识,好像一个人越高,他的体重应该是越重的,基本是这样的,然后一个人越壮,他应该可能是越重的,所以你从里头拆一个维度出来。

比如说这个地方我们采集了一些样本,我们找了一个班上的同学过来,我们把他的身高和体重啊,以横纵横横纵坐标的形式,标到这样一个二维的坐标系当中,所以大家在这里看到每一个蓝色的样本点。

实际上是我找过来的一个同学,然后我在这幅图上戳了一个点,而线性回归想做什么样的事情呢,线性回归扫了一眼这幅图,他告诉你说,哎我发现了这个上面,好像随着我的身高不断的变大,好像我的体重有一个递增的趋势。

那我能不能用一个简单的线性的表达形式,比如说这个地方是一个一条直线去拟合出来,这样一个变换呢,所以啊线性回归,最终的结果会是这样的一个形态啊,所谓的线性,就是因为它这个地方是一个在二维平面当中。

它是一条直线,这样那你要学习到的就是这条直线的斜率,和它的截距,OK好,这是一个简单的例子,另外一个啊就是有一定年代,有一定历史的例子,是这个皇家预估的例子,相信很多同学都见过这个例子了。

所以在这样一个例子当中呢,我们知道影响房价的面,房价的具体的价格有很多很多的因素啊,举个例子来说,和它的面积有关系,和它是几居有关系,和他的地理位置有关系,和他是否是学区房有关系,和他的楼层有关系。

和他的建筑年龄有关系,OK好,所以大家看到这个地方我们给到的这一页,实际上呢我们抽了一个最直接的一个影响因素,叫做面积,很显然在大家直观的理解当中啊,房子的面积越大,应该它的房价是越高的。

所以在这里面我们找到了一些房子过来,我们把这些房子的数据记录在这,我们说每套房子它到底是多大的面积,我记录在左边,它到底最后是什么样的一个价格,记录在右边,所以我积累了一些数据。

这个数据同时同样和我们前天给大家讲到的,数据形态是一模一样的,它是一个行行列列的数据,他的每一行会是一套房子,它的每一个列呢啊除掉最后的这个价格,这个标签列,它其他列都会是对应的X对应的输入的属性。

对应的输入的特征,OK好,所以啊对大家在这里看到的这份数据,就是最简单的一份数据啊,好所以这个地方呢同样有一幅图去拟合出来,这个地方的面积和这个地方的price啊,它之间的一个关系啊。

大家有问题可以先在我们的边框里头,而且可以在我们的这个呃讨论区去提问,那我会视情况会做一个回答,或者我会每一段时间之后,给大家做一个集中的回答,好吧,就是希望那个大家先跟着我的节奏去啊,往后走。

因为你们问到的有一些问题,实际上是一些和今天的模型本身,并没有太相关的一些问题啊,我们一会集中来给大家交流一下好不好,所以啊这个地方所谓的线性模型,对模型确实很简单,我理解。

所以它的横坐标呢就是它的面积,它的纵坐标就是它的price,你发现有这样一个正相关的关系啊,如果你这时候用简单的模型去做拟合,很有可能就是这样的一条直线好,那刚才我说了。

房价影响的因素远不可能是这一个因素,影响因素多的很,所以在这种情况下,你很有可能会有其他的一些因素,比如说它是几居,比如说我刚才说的一些房林呢,比如说它是否是学区房啊,比如说它的地理位置啊等等。

那所以当你把这些信息,以数字化的形式表示出来的,表示出来之后,你会发现这个时候的变量就变多了,那只不过这个线性模型由刚才大家在二维,在二维平面当中见到的一条直线,变成了在高维平面当中的一个平。

这个大家相信大家有一点小小的概念,就是我们可以把这个东西写成这样的一个形式,C打零加C打1X1加C的2X2啊,以及你在机器学习当中,你可能要习惯另外一种表示形式,是向量化的表示形式。

如果我把这个地方的seed写成一个列向量啊,一般情况下我们会习惯用列向量啊,就是C大于零啊,C打1C大二,那我这个时候的X呢,它是一个也是一个列向量啊,所以它是X1X2X三。

那这个时候很显然我对C打去做一个转置,它变成了一个什么向量,我对C打去做一个转置,它变成了什么向量,给它变成了一个行向量,那一个行向量和一个列向量去做啊,或者说你可以理解成,这两个列向量去做一个内积。

它的形式实际上和大家在这看到的是一样啊,当然这个地方那个所以X0X1X二对,然后X0呢它大家可以认为它等于一啊,对吧好,所以拿到结果会是一个数,对不对啊,好的啊,当然了,实际的情况就像我刚才说的。

你见到因影响这个房房价的因素多的很,所以你最后看到这个情况,它又会变成,刚才我们在西瓜那幅图当中看到的一样,有很多行,有很多列,那其中的每一行就是一套房子,其中的每一列它就是这套房子的决定。

最后价格的一个因素,一个属性,一个特征,嗯好的,那你要完成的东西就是在大量的样本,大量的训练集当中的题,大量的训练集当中的房子当中总结出来的规律,F去用在我现在的未知的这次高考。

或者这个新的房子的价格预估上去预估,拿到一个结果,抽象一下做的事情,实际上就像这一页给大家写到的一样,我需要去学习出来一个这个地方的training set,上面X到Y的映射F。

只不过这个F它的形态可以有各种各样的形态,那在linear regression当中,我们给了一个最简单的形态,是一个线性组合的形态,那在这样一个线性组合的形态里头,大家看到它可以写成。

它可以写成一个向量化的表示形式,刚才我已经给大家提过了,是像这个地方的最大的转置,乘以X这样的一个形态,那在这个表述里面,我们认为所有的C大和X它都是列向量啊,这是我们习惯的一个表述啊,叫做列向量好啊。

相信大家没有问题,那问题来了啊,师兄师姐告诉我说用这样的学习方法去学,所以我知道了,我固定住了一个这样的F对吗,我的F就是一组这一组输入的X,去做这样的运算,拿到一个结果,所以啊是考入考进清华。

北大的师兄师姐给了很多的方法,告诉你说你就这么学吧,你每天就先学呃,先做这个,早上起来先做英语去读一会儿英语做英语,然后做什么题,然后做什么题啊,所以那个道理大家懂很多,方法,大家懂很多。

但是并不一定并不一定每个人都能做好,对不对,那都是这样的一种形态,并不是每一个线性模型都能把这个问题预估好,同样是用这样的模型,大家都是用这样的模型去做项目去参加比赛,有些人能进前三。

有些人连前300都进不了,所以显然是有差别的,所以差别在哪,差别很显然,大家发现了,就在这个地方的C打上,所以我已经知道是这样的一个形态了,我已经知道师兄师姐告诉我,是这样的学习方法了,为什么会有差别。

大家学的不一样,大家的C打不一样,所以我怎么去找到最好的这样一组C打,可调的这样的一组theta,对于我的输入的X我能最好的去几何,我现在的每一个答案为这是我们关注的东西,那我想另外再说一点东西。

因为这个模型很简单,所以我知道有些同学会觉得说,唉我想学高逼格的模型,为什么老师要一开始给我讲这么简单的模型啊,这个模型本身不是,并不是我们想给大家重点去啊,就是说特别重点去给大家详述的。

这样的一部分内容,我想讲述的内容是,如果你看一看整个机器学习所有的模型,包括深度学习的模型,你会发现一个很有意思的事情,这个意意思有意思的事情是这样的,首先呃我这地方会给大家列一下公式啊。

比如说我们把所有数据机器学习当中,解决问题的方法叫做数据驱动的方法,叫做数据驱动的方法啊,这个名词啊,这个啊有些同学可能听过啊,叫beta jing数据驱动方法,那数据驱动方法关注两部分。

第一部分叫做数据,第二部分叫做算法或者模型,好没问题,那数据这个东西以后再跟大家说,它同样非常重要,就是它同样非常非常重要,你们看到那些大型互联网公司,B a t google,FACEBOOK啊。

TMDJ这些公司当中,它的能做好的,很大一部分原因是因为它的数据量够在小公司,中小型数据中小型公司当中,你要去用这些AI的算法,它的数据不一定足以支撑模型,学习到非常好的模式,这个东西我们之后再说。

我们会有专门的课告诉大家如何去做数据处理,如何去做数据上的信息抽取,好这个先放一放,我们看一看后面的模型的部分,也就是和更多同学关心的这些很fancy的model啊,大家都很想知道这些逼格很高的模型。

说老师我听说这种隐马尔可夫模型,条件随机场都是很高级的模型,能给我讲一讲吗,请不要把每个模型当做一个孤立的模型来看待,这些模型的产生是为了解决问题,所以每个模型它会有有不同的部分。

如果我们这个地方对模型去做一个拆解的话啊,这是我自己写的一个公式啊,它不一定啊,你不一定在某本书上可以查到它,或者是你可以看到一个呃,某一个学术巨作上会有这样的一个写法。

但是这个东西它当你看完这些模型的时候,你可以把它套到这个公式里,那每一个模型会是什么呢,它会有一个假设函数,或者说你叫做表达啊,假设函数,那这个假设函数呢它是一个F,这个F可能是可能是一种计算的模型。

可能是一个规则,可能是任何一个其他的东西,当你有这样的东西以后,就是师兄师姐告诉你一个学习方法,你能不能用好,取决于你要在这个大的架子下,你要再给给定你的这个学习方法的基础上,去完成什么。

后面的部分叫做优化,如何去让这个地方的C打一步步的去,朝着让这个模型变得更好,你和更准的方向走,这个部分叫做优化,所以等学完今天的课,学完明天的课学完再往后学完其他的课,你再来看一看这个公式。

你会发现无非是我换了一种表达,我在线性回归当中,我用一个这样的方式去完成预估,我在决策树当中,我用这个规则的方式去完成预估,我在后面其他的FM当中,我用另一种方式去完成预估,我在其他的模型。

而更多的模型当中我选择其他的方式,其他的形态的方式去完成预估,你选了某一个师兄师姐的方法,然后后面的优优化的部分,实际上在做的事情是,我如何让我现在学到的这个,找到的这套学习方法。

最好的去适合我现在的这个数据,去学习出来最有用的做题的方法,能让我在高考里取得最好的成绩好,所以刚才我们提到的这个部分,对有些同学在其它很简单,对它非常简单,它仅仅是用了告诉我们假设函数是什么。

所以当有XL我这么算,但是拜托你要算的话,你要知道这个C的,而且它会影响最后的结果,他怎么算呢,好请来到第二个部分叫做优化,所有的学习过程必须有一个方向吧,你在做题的时候。

你也得知道有同学会老师会告诉你一些事情,说你得你得加油学习啊,你得合理分配一下的时间呢,你得看一看你的错题在哪,请拿出你的本子,把你的错题记一记,多去看一看这些错题到底错在哪。

总结一下你做得不好的点在哪去优化一下,所以这个东西变到机器学习里面,它是什么样的一个过程,你方法已经给你了对吧,师兄师姐能凭借这套方法考进清华北大浙大,上海交大,复旦啊,这样很好的学校。

你用这套方法能不能学好呢,对你来看一看你该如何去学,所以在学学习的这个过程当中,你会再看到这样的一个概念啊,刚才我们讲到了一部分叫做优化对吧,好优化这个东东东西,我再给大家做一个公式的拆解。

通常情况下在监督学习当中啊,我们来那个做一个约束啊,在监督学习当中它会等于什么呢,它会等于你的一个评估,你每个部分做的好与不好的一个loss function啊,这个东西呢一会儿再说它是什么啊。

大家先听听一下,有这样一个东西,再加上一个什么对optimizing的一个呃,一个呃算法啊啊有点丑啊啊,那我就写写这个优化算法叫做中文好了对啊,有这个英文的字样啊,但是给大家说一下啊,这个叫损失函数。

这个叫做优化算法啊,我跟你说这个公式是通用的,这个公式是通用的,所以你今天学到的东西要机器学习对吧,等等你有时间了,往后看看深度学习,你看TENSORFLOW,你看PYTORCH啊,你觉得逼格很高对吧。

谷歌家的TENSORFLOW啊,FACEBOOK的PYTORCH,然后呃但是你去看一看,你会发现诶这里头有个东西叫optimizer,他做什么样的事情,对他就做优化所有的所有的模型,你往下拆。

它就是这样的公式好,所以这个东西是什么,它做什么用啊,没关系,我来给大家讲一讲,所以现在我们要提一提这个概念,叫做损失函数,叫做loss function啊,有些同学第一次听到这个东西对吧。

这个东西非常的重要,呃,我先说明一下,你会在其他地方听到其他的一些称呼,说的和他是一个意思,你会听到一些什么样的称呼呢,对cost function代价函数你会听到objective啊。

客观度或者目标函数啊,他说的和LOFUNCTION实际上是一个意思,所以这个东西在中文当中,我们把它叫做损失函数,哎,等一等等一等损失损失函数是个什么东西,好像到目前为止。

你还没告诉我这个东西是什么东西对吧,损失函数是什么呢,刚才我说过了,我说你要做题,老师会叫你拿出一个小本本,来把自己做得不好的那些题目记下来,去分析一下自己为什么没做好,哪个方法没掌握好。

那你得知道哪些题做错了对吧,错的程度到什么程度,做的有多不好,哪些环节做的不好,偏差有多大,这个东西我需要一个数学定量的东西,给我指明一个方向,所以损失函数就是这样一个东西。

所有人都知道前面的假设函数长,这样,我给一组塞达就会有一个结果出来,问题是不同的,C大凭什么说他好,凭什么说它不好,你怎么去评估啊,你如果都评估不出来,这个东西你衡量不了的话,你凭什么让我去做优化。

去做学习,所以这个地方的损失函数就是一个衡量,你现在这一组参数下,你做这个事情和标准答案之间,差异的这样的一个函数,它就叫做loss function,叫做损失函数,举一个最简单的例子,在这个例子当中。

我们只有一个变量X我们输出的结果是Y,我们只有三个样本点,112233,我们要用一个Y等于WX,或者Y等于KX,这样的方式去拟合现在的三个样本点,当然了,有些同学会跟我说,老师我肉眼就看出来了。

Y等于X,OK好,我们先不管这个东西,因为现在这个例子非常的简单,所以你肉眼就看出来了,嗯很好很棒,但是当这个数据的维度高起来的时候,你肉眼是看不出来的,好没关系,我们需要找到一套通用的东西。

去衡量说我做的好与不好,首先可动的东西是什么,是K对吧,或者说Y等于C的X啊,那无所谓啊,就是这是不同的表达形式,那在这个情况下,我认为C打X啊,那大家去看一下这个地方可以调的是C的啊。

我我我先为了简单起见,我没有加B啊,我没有加后面那个偏置项,只是说这条直线一定是一条穿过原点的直线,你想一想它可以变的东西是什么,是不是你拿着这样的一条直线开始甩呀,他开始绕着原点在旋转呢。

诶我每每旋转到一个地方,我是不是有一个我预估的结果值,会有一个真实的结果值,我是不是这两个东西之间,可以求一个什么差值啊,我是不是可以求一个德尔塔差值出来,所以这是一个很直观的一个概念。

你需要有东西去告诉你说我选定了这一组C的,我做的到底怎么样,你必须要有一个数学定量的东西去衡量,这个东西,我才知道我下一步的优化方向在哪,所以很简单,你预估的结果,你对于每一个输入的样本,输入的X。

你的预估的结果是你C达X,你的真实的结果是什么,对是你的label,是你的标签,我把我预估的结果减去真实的结果啊,但它可能可正可负对吧,所以我给一个平方,OK给个平方以后,它衡量的就是差距。

把它们加在一起除以2M分之一啊,注意啊,前面的2M分之一,它M分之一是求一个平均,这个大家能理解吧,就是你有很多道题,老师说你这这份题做的好与不好,不能只看单道题对吧,所以我要看你平均做的好与不好。

你有100道题对吧,你100道题,你这100道题做的结果怎么样,我要把它加在一起,我要把它加在一起,OK我也把它加在一起,然后我把它加在一起以后,求一个平均的差异有多大,我应该除以总的题目的数量对吧。

那我问大家一下啊,因为有同学说这个地方是N,我问大家看大家一下是M还是N,是M还是N,我对这个地方的多少多少道题,多少个样本求了和N是什么,不要搞错了,这个地方的M和N先看清楚它们分别是什么。

我的样本数是M哥,你看到了I等于一到M,我是对我的M道题去求了我的差异,我是不是应该除以M分之一,为什么要给二好,有同学会说老师为什么要1/2啊,为什么要1/2啊,啊不要着急,这个东西没有意义。

它仅仅是为了我们待会去做数学优化的时候,求导的方便仅仅是这样的一个原因啊,所以比如说老师给你给班上的同学,去做一个打分,我给的分数是198,然后九十六九十四,这样的分数和我给的分数是五十四十九四十八。

这样的分数并不影响大家的序对吗,就是做得好的同学还是做得好,做得不好的同学还是做得不好,所以前面这个地方的1/2,是不影响我这个结果,它的取不同的C打的时候,它的大小顺序的对不对,这个东西是不影响的。

所以给我们带一个1/2,大家不用,大家不用太纠结这个问题,他没有关系啊,因为你在后面的处理当中,你会发现它为我的数学计算提供了一些便利,所以我把它整体除以二,我不影响我的顺序啊。

原本是一百九十八九十六啊,94P变成现在的50,那个49,四十八四十七,实际上没有关系,Ok,哎呀刚才那个东西啊,我写了一个函数对吧,我说OK这个地方是西格玛前面2M分之一,这个地方从I等于一到M好。

然后我后面呢是一个HC的啊,xi k减去这个地方的YI好,我给了一个啊平方好,大概是这样的一个公式好,是这样的一个公式好的,然后这个东西呢他在回归类的问题当中,另外一点是是这样的,首先我问大家一下。

这个这个公式当中未知数是什么,请告诉我现在这个JC大当中的未知数是什么,我的每一个样本送进来的样本X是知道的,Y是知道的,谁是未知数,谁是我现在哪个东,哪个变量是我现在不知道的未知数。

我要去调整的未知数好有很很好,很多同学告诉我是C的,是C的啊,因为X和Y都是知道的,seed是不知道对不对,好好很好,那所以大家现在抽象一下我做的事情是什么,来不要看到这个复杂的公式。

你看到的东西就是一个JC的好,这个东西首先告诉我它的它的它是用来干嘛的,它是用来干嘛的,它是不是用来评估,不是评估啊,用来衡量我做的好与不好的,就是衡量我和标准答案或者说F的好坏的。

它是用来衡量F的好坏的,好记住啊,这是第一个点好,第二个点是啊,不同的C打是不是会有不同的JC打值,不同的CA是不是有不同的偏离量,所以我现在想让我和标准答案之间的差异最小,我是不是要去找到一个C大。

使得我现在这个函数最小,是不是使得我现在这个函数最小,告诉我我是不是希望去找到一个塞达,使得我现在这个JC达最小,使得我现在我的预估值和标准答案之间的差异,越小越好好,所以抽象一下。

你发现它变成了一个问题,它变成了一个求函数最小值的问题,好这个有问题吗,大家有问题吗,它变成了一个这样的问题,叫做求函数最小值的问题,而你这里的变量是C的,唉但是大家想一想啊。

你想一想这个地方我Y等于C打X哎,我的C大可以动对吧,因为我们来看一看,当这个C打从很小,从从很小从零的地方开始往上走,再往上走的时候,大家告诉我,这个时候的JC打是什么样的一个变化呀。

是不是我在右边这幅图当中描述的变化呀,开始的CA等于零的时候,是不是在这标准答案在哪,在这它们之间是有差异的,对不对,它们之间是有差异的,对不对,随着我这条直线往上走,差异会怎么样。

对会先减小减到什么位置,对在这是一个特例啊,这是个特例,在这个特例当中,它会刚好穿过它,所以它会走到零,然后会再变大呃,告诉我从左边这幅图到右边这个函数,大家有问题吗,有同学有问题吗。

我要去求这个函数的最小值,我用一种最直观的方式,把这个函数的形状变化趋势给画出来了,我要求的东西在哪,我要求的东西在哪,我要求的东西在这,这是我想要的东西,这是我想去找到的那个点,当我找到他之后。

我就可以很自信地告诉你说,这个师兄师姐的方法用的很好,我在我的数据上有非常棒的效果,好有一个问题就是刚才这个是一个一元的情况,一元情况就只有一条轴嘛,啊多元的情况是什么样呢。

对多元的情况画出来是这个样子啊,对这个样子啊,啊大家听清楚了,我的最终的目标一定是希望去找到一个最小值,只不过在很多情况下,比如说大家在后面学到更复杂的函数啊,更复杂的更复杂的模型当中。

它的损失函数是一个非凸的,也就是说在那个情况下,它它是凹凸不平的,所以他很多时候你是找不到全局最低点,所以你找到的是一个一个这个局部最低点啊,或者叫做极值点啊,但是有可能在工业界可用就好了。

好这个问题不用纠结,总之回到刚才我们这个例子当中,我们就是这样的一个曲线,对不对,就是这样的一个曲线,对不对对,就是这样一个曲线好,那在二元的情况下是什么,对是这样的一个碗状的形状有问题吗。

我每取定一个函数值,它都会有一个有一个有一个取值嘛,这个取值注意啊,这个时候的取值不是原来的函数的预估取值啊,我再强调一遍,这个时候的函数取值是什么,这个时候的函数取值是什么,是差异啊。

请请盯盯着这个东西看啊,它不是我原来的Y等于K啊,这个C打X不是不是那个Y,他现在是一个用于衡量我每取第一组C的,我和标准答案之间差异的,这个函数叫做损失函数啊,它不是原来那个假设函数啊,它是损失函数。

好好相信大家没问题,然后对有同学问到这个问题,说老师老师老师这个我知道这个这个好简单的,那个数学老师告诉我们说求求最求极值,我好像求导让导数等于零就出来了对吧求导,然后导数等于零就出来了。

OK你说的东西没没有问题,就是你说的这个很棒啊,说明你的数学基础非常好啊,但是你要知道唉,通常数学家,这些学统计的数学家和做计算机的人同学,他们会有不同的解决问题的思路,数学家他会给你很多很复杂的公式。

他会告诉你说你这样算就可以了,但是它会有一些问题,举个例子来说,有一些场景下你的计算的计算量是很大的,大到你在工业界没有办法用,你没有办法很快速的去算出来,比如说哎数学家会告诉你说你求个逆就好了。

这矩阵求一个逆,然后你再再用力去和,和这个这个这个X去做一个矩阵的乘法,这个事情就解决了,问题是你求矩阵逆,那个事情是可能是一个计算量很可怕的事情,所以有些东西从数学上理论上来说很简单,求解起来。

但是当这个问题变复杂了之后,呃,他的求解和计算,他的那个数学公式求解起来可能是很复杂,所以呢在计算机的角度,我们我们更我们更倾向于用这样的方式去解决,这个方式叫做迭代法,所以我们再回顾一下。

刚才我给到大家的这个公式,这个公式当中告诉大家一件事情,说我们的优化是等于loss function加optimizing,所以我的优化是等于损失函数加上,使得这啊那个有点丑啊,大家那个忍一下。

损失函数加上啊,这个优化算法啊,就是损失函数对损失函数去最小化的,或者说去减小的这样的一些优化算法,所以损失函数我们已经定义了,它就长那样,所以优化算法有很多种,没错是有很多种啊。

我今天讲到这个方法是最最最最常见的方法,它并不是唯一解,你会在其他地方看到其他的一些优化算法,没错,这个事情没做好,所以我们在计算机的世界,我们更习惯用这样的一类方法,叫做迭代法去解决问题。

迭代法说的事情是不要着急,不要一不能没有办法一口吃成一个大胖子,所以怎么办呢,一步一步来,他问你,他问你说,你已经知道现在这个东西是一条抛物线,或者说他是一个这样的网状的结构了,你怎么去求这个最小值呢。

然后他想了一下,他告诉你说,我好像可以在这上面放一个玻璃弹珠,然后我让这个玻璃弹珠往下滚就可以了,他最后应该会停在最低点,如果它是一个网状结构的话,这个大家有问题吗,我把那个玻璃弹珠往上一放。

它是不是可以往下滚,滚到最低点,当它啊它可能有可能会小震荡一下啊,但最后是不是一定落在最低点对吧,所以这个时候我们来模拟一下那个过程,我要做的事情是放一个小球,我让这个小球顺着他往下滚。

我希望他最后停在这,所以这个地方会涉及到一个问题,就是K小球从哪放,第二个问题,小球怎么滚好,我们从数学上来,我们从数学上来解释一下他说的事情是什么,我们来翻译一下上面说的那句话。

第一你得给我一个初始的位置,小球放哪初始位置好,初始位置可以是任何一个位置,比如说在这个地方啊,那个啊抱歉啊,这个地方我纠正一下,这个不是X啊,这是C的啊,抱歉。

这是做PPT的时候的一点小的那个那个失误啊,就是这个地方应该匹配一下,所以横坐标是C打,我举例不同,C打社会有不同的FC打,然后刚才大家已经告诉我说,这个东西长成这样啊,长成这个形状啊。

刚才大家告诉我的好,那我我刚才告诉大家一件事情,我说诶那把它做的有趣一点,我来放个小球,让它往下滚吧,那这个小球里头会涉及到两个问题,第一球放哪,第二球怎么滚,球放在哪,没问题,你随便放。

因为这是个管嘛,你大概就放高一点,会放高低放低一点,所以没问题,我会让我的C大取一个C大start一个一个取值,这个可以是默认值,比如说取零,比如说取某一个值都可以啊,好然后接下来你要做的事情是。

我希望他往下滚,诶,有同学能告诉我,从数学上来说,这条曲线变化最快的方向是什么方向吗,高中数学就告诉你了,这个地方抛物线变化最快的方向在哪,是它的斜率的方向对吗啊,当然这是单元这一元的情况啊。

多元的情况我们把它叫做叫做gradient,梯度对吧,叫梯度好,所以呢他告诉我说这个东西是切线的方向,是切线的方向对吗,所以好,我来把刚才说的这句话翻译一下,这句话翻译一下,是这样的。

请帮我找到一个方向,在我起始位置开始,请帮我找到一个方向,我会顺着这个方向往下滚一段,然后我再顺着这个方向再往下走,所以他每一次都是这样的迭代,它犹如一个下山的过程,当你蒙住你的眼睛,让你下山。

你可能会用脚去试探一下周边的地形,找到那个往下走最陡的方向,去往前迈一步,往前找到往下最陡的方向,往前迈一步,而这个所谓最陡的方向就是斜率,或者是啊在高原的寒情况下,它的梯度,所以我每次去迈一步。

所以大家能理解吗,当我在这个位置,在我在这个位置的时候,在这个位置的时候,当我在这个位置的时候,当我在这个位置的时候,我往下滚,我是不是去找到一个方向,大家告诉我这个地方的JC打对C打一球偏导。

大家看这个地方的函数对C的去求偏导,他拿到的方向是什么,就是这个值是一个正值还是负值,大家告诉我这个小球,现在球的斜率是正的还是负的,直观理解一下它是负的对吧,我应该往正的方向走还是往负的方向走。

我应该往正的方向走还是负的方向走,我应该往正方向走对吗,所以记住一件事情,就是梯度,或者说啊梯度,或者说他的这个它的gradient啊,现在这个gradient或者是斜率,这个时候是让他变小。

让让他这个变大的方向啊,就梯度是变大的方向啊,所以这个时候呢你的负梯度才是往下走的方向,才是才是你真正的让这个函数减小的方向,所以我翻译一下这句话,就是这样的,我原本有一个C的位置。

我希望他朝着我现在的,这个最大的负梯度的方向走,所以负梯度的方向我希望朝着这个方向走,我是不是要加上阿尔法贝的这样一个东西啊,那加上阿尔法贝的一个这样的东西,是不是就是这样的一个公式啊。

我朝着负梯度的方向去迈进一步,然后我下山的过程走到了一个地方,我再环顾一下四周,我再基于我现在判断最陡的方向再去迈下一步,没错这个就是最简单的一种优化方法,叫做gradient descent。

梯度下降叫梯度下降,你们千万不要小看这个方法哦,这个方法在神经网络当中,有一个和它对应的方法叫做随机梯度下降啊,就是唯一的区别在于随机梯度下降,没有用全部的样本去求梯度啊,他用的是一部分部分的梯度。

但是那个算法在神经网络当中非常好用啊,大家很多同学都会用那个方法去做优化,他做的事情就是我去找到那个下山的方向,我朝着方向一步步走,呃虽然数学家告诉我说,我只需要求导等于零。

我只需要去求这个矩阵的逆就可以了,但是我发现这个事情并不好求,所以OK啊,有同学问到说为什么是负梯度的方向,我刚才已经解释过了,你看一看这幅图当中梯度是朝朝左还是朝右的,梯度是大于零还是小于零的好吧。

梯度是大于零还是小于零好,所以从刚才那个是一元的情况,如果是二元的情况呢,现在有一个碗,现在有一个碗,你在上面放了个球,它会怎么滚,对在碗这样的一个形状当中,如果我找一个横截面,我往上一层一层的去截。

我拿到的是什么,是等高线对吗,是是不是等高线,大家对这个图没有问题吧,我拿着一个水平的平面去做截取,我拿到的是不是这样的,一个一层一层的等高线呢,我最底下的这个地方是碗底,它是最低的。

我希望去找到他对吗,所以这个地方大家看到的这个箭头是什么,对就是那个球滚的方向,我是垂直于等高线的方向,垂直于等高线的方向往里走的,这个是我认为比较快的方向诶,你也可以朝其他方向走啊,你当然可以这么走。

这么走这么走绕回去对吧,但这个很慢,所以最快的方向就是刚才说的啊,gradient啊,就是所谓的这个法线的方向,在二元的情况里头,就是大家看到这个情况,OK嗯好的好啊,有同学说这个不是等高线。

这个不是等高线吗,每一圈它是不是处在一个高度,这里面的每一圈是不是处在一个高度,你就把它当做等高线就好了,二元的情况和一元的情况实际上一样,仅仅的区别在于你有两个方向,你有两个方向。

有问题一会儿我们再课间的时候再说好吧,所以这个地方,这个地方大家看到的这个一环一环的,实际上每一环它的高度是一样的,在现在这个这个曲面上啊,就是取经不同的C大C大于零和C打一,实际上它的取值是一样的啊。

就是这一圈实际上是一样的,然后大家现在看到的这个地方的梯度下降,在多元的情况下,仅区别仅仅在于你有很多个未知数,你需要对这些未知数都同样,用这个地方的gradient design去做一个迭代啊。

这个函数求导大家会吗,X平方求导你会吗啊sorry,不是立方平方,X的平方求导,你会吗,好你是会的啊,好没问题,所以你知道你会把二拿下来啊,所以这个地方2M分之一,你会知道它会变成M分之一对吧。

好好很好啊,然后啊还要还大,大家知道这是一个复合函数对吧,就是C大X减去Y1的平方,这是一个是一个复合函数,所以它最后呢呃对C打求导,还要乘以一个部分对吧,好没问题啊,这是个复合函数。

所以它求导的话两部分先对啊,外层求,然后再对里边的这个小的这个函数去求导好,所以这个大家都没问题啊,然后所以这就是那个梯度下降啊,刚才大家注意到这里头有个东西叫做阿尔法,刚才大家注意到这里头东西。

有个有个东西叫做阿尔法,刚才大家注意到这个地方会有一个阿尔法,那阿尔法这个东西呢,它就是所谓的学习率叫做learning rate,大家想一下这个阿尔法会有什么样的影响,先别管它。

别纠结这个东西怎么去求我问大家一下,阿尔法如果太大会怎么样,阿尔法太大会怎么样啊,不好意思啊,这个地方都有修正C的GC的好,如果步子迈太大会怎么样,步子迈太大会怎么样,会直接跳过最低点,甚至足够大。

它是不是会往上走,告诉我啊,如果你给的这个阿尔法非常大,你给个100万,它会跳到这个位置,他下次可能会跳到这个位置,可能会跳到这个位置,他不收,他不收敛,他可能不收敛,那一般情况下你取得大的话。

他有可能越过最低点,那我再问大家一个问题,哎那个如果如果它小呢,如果取得特别小呢,哎你告诉我说老师我取的小,这个总稳妥了吧,我取0。000001诶,好没问题,对。

这个时候他的时间会非效时间消耗会非常的多,它的速度会非常非常的慢,速度会非常非常的慢,好没问题,所以怎么去求这个阿尔法呢,对这个东西叫做超参数啊,所谓的超参数是指的在这个模型开始学习之前。

请帮我把它敲定,请帮我把这个值敲定,我需要用它去完成迭代,所以这个地方呢对它有一系列的方法,可以去完成梯度下降啊,但大家注意一点啊,就是一般情况下我们为了简单,你可以敲定一个恒定不变的。

恒定不变的这样的一个阿尔法啊,他也确实有一些其他的方法,但是呃我们在我们在工业界当中,有一个说法叫做NO free lunch,叫做NO free lunch,这个意思是告诉你说啊。

这个世界没有那么美好的事情,你告诉我说老师我有个非常牛逼的算法,它可以自动去学习这个地方的阿尔法,取什么样的步长是最最合适的,没错可能会有这样的算法,但你知道他一定付出了其他的代价。

比如说他需要先去扫描和计算一遍,这个地方的阿尔法,这个东西也同样是需要费时间的,所以啊千万不要去想想象,有任何一个东西比另外一个东西一定是要好的,经常有同学会问我说,老师老师老师哪个模型最好啊。

哪个模型最好,这个问题我回答不了没,有没有所谓的最好的模型,你想你就想一件事情吧,如果这个世界上有最好的模型,我干嘛要其他的模型啊,我就不用去学这些其他的模型了,我直接学那个最好的模型就好了。

我编一本书,我不需要去想其他的模型了对吧,所以所以没有这种事情啊,大家不要去问这样很傻的问题,说哪个模型最好,哪种方法最好,没没有这个事情的好,所以呃你知道这个地方用的方法叫做梯度下降。

你知道学习率会有什么样的影响,好OK这个点就够了,然后这个地方的阿尔法怎么取对,它是一个超参数,针对超参数它的优化的方法,我们在后面会讲到呃,实际上它是一些实验的方法,就是你需要去选取不同的这个阿尔法。

比如说呃取这个0。000呃,一啊,0。001啊,0。01啊,一等等,他会去做一些实验,他会去做一些实验,这样好吧,然后那个这个在后面会给大家讲到,我今天在这不给大家细讲啊,好了,下面我们要讲到。

非常非常非常非常非常重要的一个概念,叫做叫做OVERFITTING和under fitting to the model,没model的状态,模型的状态哦,这个东西非常重要哦,你我我告诉大家。

你你你以为参加比赛的时候,你以为工业界做实际项目的时候,参加比赛的时候,这些前面的选手在撕什么样的东西,他他在所有东西就是就是这个东西,谁能让现在的模型学习到的方法更通用一点点。

就是他的他的表达更通用一些,这个是大家在努力学习的东西,所以你去参加比赛,你会看到很多很高高逼格的东西对吧,我去年参加了一个开go比赛,然后最后最后呃排名在在第二,然后第一。

然后然后我当时用了大概八个模型去做融合,然后第一名告诉我说,后来我们和我们和第一名交流一下,让第一名告诉我说,他们用了啊160多个模型,然后我们就说OKOK那个啊就是输了输了没错,那个160多个模型。

他们去利用了模型的差异化去,当然我们成绩和他们差的非常小,就是前面几名的成绩其实差的幅度很小,而他会它的单个模型做的承承,做的效果是没有我们好,但是他用了很多模型做集成的时候。

能够把把学偏的那部分拉回来一点,所以最后的表现总体的表现会好那么一点点啊,OK好,所以你记住一件事情,就是我们在我们所谓的模型的好坏,其实说到底就是这样一个比,去比谁的模型泛化能力更好一点。

谁的模型学到的这个模式,学到了这个映射关系会更通用一点,所以这个地方就会涉及到这个概念,叫做fitting和OVERFITTING呃,under fitting和all fitting是这样的。

这个地方有个很简单的例子,这个例子是这样的,你现在决定了要用多项式回归,多项式回归去解决一个问题,然后这个问题呢是一个啊多项式回归嘛,完成一个连续值的预估嘛,然后标了一些样本点。

然后咔咔咔的上甩了一堆样本点了,大概长成这样,然后呢这里头有个很纠结的问题,就说嗯你要知道啊,这个数据如果能画出来,好简单的画出来谁如果可以画在这幅图上,你告诉我说老师老师这个我一眼就看出来了。

我应该用一个类似于二次函数这样的方式方,式去去做做预估嘛,对吧,但是问题是实际工业界的数据维度高得很,你画不出来的,OK你画不出来的,所以在这个地方有个很纠结的问题,就是多项式模型。

我我的那个次数选多少比较好啊,我我可以选一次,我选二次,我可以选这个3456789十次,所以这是个很纠结的问题啊,那你想一下,如果是一次的话,大家告诉我这是什么,这是一条直线,这是一条直线,这个是什么。

对,这是一个抛物线,啊这是什么,是一个高次曲线,呃大家先不用纠结纠结,那个模型集成的那个那个事情啊,我们在后面会给大家讲到,然后另外我需要给大家说明的就是,还是NO free lunch。

这个天下没有那么美好,没有那么好的事情,这个是什么意思呢啊亲爱的同学们,如果现在有一套模板,或者现有现有的这个工具,可以帮助你自行的去找到最优的解啊,你们就不用学这个课了,你们就下岗了,工业界也不需要。

你们也不要招这么多的算法工程师了,为什么我直接阿里云或者腾讯云,或者各种云平台,只要一集成,把这套模板这套套路往上一套,你来数据,你往里头怼呗,我直接就能拿到模型了对吧,所以不要也不用去问说。

有没有一些现成的框架或者软件,可以解决这个问题没有,如果有的话,你们就失业了嗯,所以所以啊大家往后学就好了,对呃谷谷歌的做法只在部分,我知道谷歌在做这个事情,谷歌和微软做的那个东西。

只对一些多媒体数据是有用的,呃我自己在工业界做这个事情,我们的场景他们搞不定,你一定要手动的对数据去做一些分析,他们理解不了场景,你所谓的人工智能没有那么智能,他做不到,你甩给他一个题。

他就能解决这个问题,它在一些特定的场景底下有用,比如说图像识别,就是这很特殊,因为图像这个东西人不太好去做分析,它本身就是raw data,原始数据,他绝对做不到通用的人工智能,不然的话大家就下岗了好。

所以这个地方呢有一个很纠结的问题,是说我到底取直线还是抛物线,还是高次曲线才能拟合得更好呢,其实我也不知道,但是大家想一想,如果你取直线的话,会有一个问题,哎我问大家一个问题啊,如果你取直线的话。

这个直线当然他会努力的去学了对吧,就是你你刚才那个优化算法,其实梯度下降做的事情,就是在调整这条直线的斜率,和它的它的这个截距嘛,所以这条直线他就拼命的学,他不断的去去做旋转,不断的去上下平移。

但是我问大家一下,他能他能学好这些点吗,它能拟合好现在的这些点吗,它拟合不好对吧,所以这个状态叫做欠拟合,就是这个模型的学习能力很差,学习能力有点差,所以以至于说他没有办法去拟合好,所有的样本点。

它它刚对其中的一些样本点拟合的好一点,他对另外一些样本点就偏了,所以他很挣扎的在学这个东西,但是学不好抛物线呢,抛物线它可能不会穿过每个点,但是它离这些点都挺近的吧,可能是这样的一个形态。

OK啊高次曲线呢哦高次曲线太牛逼了,你想一想他有这么多的项,而且还有平方立方四次四次方向,大家告诉我一个数的平方立方四次四次方,如果它是一个大于一的数,它是不是他是不是这个空间会非常大呀对吧。

平方向嘛他可以直接甩得很高,它的立方向可以甩得很高,四次方向可以甩得很高,所以这个时候呢,你有你有非常充足的空间去把这条曲线拉下来,或者是丢上来,所以它可以有很很很很诡异的方式啊,很很扭曲的方式。

就穿过每个样本点,很开心对吧,大家他特别开心,他说我每个点都传过了,哇这个事情太棒了,但有个问题就是最左边这种状态显然是不OK的,这种状态对应了什么呢,对隔壁家的傻儿子啊,所以这个很尴尬了啊。

所以你让他去学习呢,他其实很努力啊,他他不是不努力,他真的很努力在学,但是他可能他的这个记忆力,或者是这些能力就很有限,所以你要让他去同时学九门课,或者多少门课的时候,他就,有点吃力啊,就怎么都学不好。

我拼命的在学,我拼命的在调这条直线的这个斜率,和它的截距根就学不好,那那那这个东西是什么呢,这个东西是什么呢,对这个东西是反的啊,你另外一个邻居家有一个天才儿子,然后呢问题是呢大家没好好教他。

所以什么意思呢,就给了他十道题,说你来来把这十道题做一下,一般的小朋友做十道题,要一个要可能要要40多分钟一个小时啊,然后这个同学太牛逼了,就是这十道题呢可能呃5分钟就搞定了。

但是他问题是他做这个题的方式,他学这些题的方式呢,并不是去好好的把底层的规律和模式学下来,而是直接把它背下来,因为他记忆力好啊对吧,他很聪明啊,对你而言很难的东西对我而言很简单啊,我直接背下来呀。

我不用看题目啊,我去看一下这里的关键词是什么选项,选什么好,背下来了,然后明天你给我出一模一样的题,好,咔咔咔,写完了100分,明天我换一道别的题目好,不认识,没有见过。

所以这个地方的左边这个状态就叫做欠拟合,欠拟合,通常情况下是因为model的学习能力不够引起的,就是你有一个很复杂的场景,你用了一个非常弱的模型去学它啊,当然这个情况在工业界不太可能。

就是你现在看到的工业界,大家不会用特别弱的模型,不太可能大家上的都会是相对比较复杂的模型,所以更有可能会出现右边这个地方,就是你那个模型的学习能力太强了,问大家一个问题啊,你去解一个方程组。

这个方程组有三个未知数,只有两个方程,你告诉我有多少组,几三个未知数,两个方程,就是啊你给他太大的空间了,你给他太大的空间了,你三个未知数得有三个方程啊,一般情况下啊,而且这三个方程还没。

不得不不能有两个方程之间,是一个线性相关的啊,就是在这样的情况下,在这样的情况下,他才有可能拿到的是唯一一组解,但是有如果你给他的空间太大了,你这个模型的能力太强了,你给他太多的参数哎。

拜托他的学习能力太强了,你这几个小小样本对他而言简直就是小case,我我随便找一组解过来,但是啊我我随口举个例子啊,我知道有很多同学这个对线性代数比我要熟啊,所以你说的这些不能其次啊。

等等这样的一些要求对啊,先抛开这个不说,我们就说那个那个呃,就是我大家明白我刚才说的这个意思啊,就是当我有三个或者四个,或者这个五个未知数的时候,我只给两个方程的时候,这个事情太好办了。

我随随便便找一组数,我就我就完成拟合了对吧,所以这个东西对应到的是过拟合,过拟合通常情况下是因为你的model capacity,是因为你的模型的容量太大了,然后你没控制好。

他是因为你那个呃天才儿子太聪明了啊,可惜呢你没有好好教他,你没有跟他说,你不能这样做,你得好好的去看题目底层的原理啊,不许背题目啊,啊那个什么什么不用,不要着急的去看小猪佩奇,OK啊等等不啦不啦。

咱就说一堆这样的,这个这个这个一会儿我们会有方法去限制它好,所以这个地方的过拟合和欠拟合,大家有一点基本的印象了,有一点点基本的印象了,所以过拟合和欠拟合里面更可怕的是。

后面这个过拟合是这个over fitting啊,这个事情更可怕,然后你看到的参加比赛,你没有别人效果好,或者说前面几名之间有差异,最根本的原因在于大家过拟合的程度不一样,就是你你学的这个程度不一样啊。

然后这个地方呢,我给大家做了一点小小的解释啊,大家都希望自己更聪明,都希望去用神经网络对吧,他说啊老师这个模型超级牛逼的那个啊,好复杂的,逼格非常高的对,但你不一定能用得好,就是更复杂的模型。

更多的参数意味着它有非常非常强的能力,但也有可能你约束不住他,他可以用很很随机的方式,就可以解决你这个问题,但是他没有任何的意义,第二点是你要知道你的这些数据,它并不一定每一个数据都是和全局分布一致的。

这样的数据它有可能是一噪声点,才有可能是噪声点,但是你的模型如果学习能力太强了啊,他是有可能会把这种东西背下来的,好好,所以这个地方我们要提到一个很重要,很重要的概念。

叫做regular arization,正则化,正则化是一个什么样的东西呢,正则化就是你你隔壁家的那个天才儿子,他爸爸妈妈已经意识到了,说不能这样教了,所以呢要约束约束他啊,所以要要给他去加一些限制。

刚才大家的损失函数长成这个样子,刚才大家的损失函数长成这个样子,然后你只告诉他说,今天我给你这些题,我只看标准答案,我只看你做的标准答案,他标准答案都对了,就给100分,OK好。

然后那个那个天才儿子呢就啊好牛逼的啊,反正记答案啊就开始抖抖抖抖抖抖抖抖啊,每个点都穿过了啊,所以就有问题了对吧,这个鬼东西呢它就抖动非常大,意味着它非常的不平稳,非常不平稳,意味着新的样本过来的时候。

卡可能就挂掉了,所以怎么去限制它呢,你盯着这个东西仔细的看了一下,你说好像是因为C大X当中的C大啊,这个地方的XX可能是你做完变换的那些,X平方,X立方X4次方啊,就是这个地方是因为这个地方的C达。

你给他太大的自由的空间了,因为你想一下啊,如果你刚才拟合的这个值太小了,那怎么办,对给后面一项给高一点的C大呀,把他拉起来呀,所以他就拉起来了,如果这个东西太高了,怎么办,以后面一个C打一个负的值啊。

把他拉下来呀,他就拉下来了,所以最根本的原因在于你仔细想一想,在于你这个地方不对C达做任何的限制,它可以通过别的方式去把刚才你和不好的结果,强行的拉下来,或者是拉上去,让这个曲线甩起来对吧。

这是当然这是一个很口语化的说法,大家能理解我的意思就OK了啊,就是把这个东西甩起来了,所以很可怕对吧,这个事情就很可怕了,所以你抖一抖,你感觉很开心啊,你现在样本点你好开心啊,全穿过了,分析这东西没用。

OK怎么限制他呢,今天呢老师检查作业啊,你父母检查作业说答案没用,答案没有用,帮我把过程写好好吗,所以限制一下它,那这个地方呢我不仅要求看标准答案,去计算这个地方的JC达,我还要求去看你C达的幅度。

如果你是用这种很随意的甩动的,这样的方式很,也就是说很大的seed的什么绝对值啊,这样的形式去完成拟合的话,不好意思,不可以,我要给你在尾巴上加一项东西,我评估你做的好与不好。

不仅看你和标准答案之间的差异,我还看你这个地方这一项,这一项就是刚才C大的幅度吗,能理解吗,没有问题吧,啊这个叫做L2胜则换啊,就是它的幅度嘛对吧,所以这个地方的拉姆达是什么,对拉姆达是一个超参数啊。

用来控制说我给他加多大的,我给他加多大程度的,我给他加多大程度的惩罚,Ok,啊对那个有有同学有同学提到了一个问题啊,说这个地方那个C达不应该用2M分之一,需求平均啊,啊这个其实它和你的C大取值有关系嘛。

对吧,你可以你把C你就是其实它是C打,是需要调的啊,所以如果如果你把它放在这个中括号以内的话,对加在中括号以内的话,你就需要去调C的啊,他也可以加在这个位置,对就是这个同学说的说的没有问题啊。

因为有同学提到了这个,说那个C达不应该被M平均,对你可以把中括号放在这个位置没错,然后有同学问到说拉姆达怎么去求对,拉姆达是一个超参数,这个乘法项的程度,就是说你天才的这个这个小朋友。

家长的管太多也不好对吧,人家是有创造力的,天天打就打傻了对吧,不能打太厉害啊,但也不能不管啊,不管就天天就玩手机了啊,就天天这个去吃鸡了好,所以这也这也是不好的,所以得管一管,但是又不能管太过了。

所以这个拉姆达呢就是一个约束项啊,大家得调一调,但这个拉姆达的取值怎么取呢,对它是一个超参数,然后这个超参数呢,就是呃大家要通过一些实验的方法去取啊,就这个没有办法,你就算不出来。

因为这个东西一旦能这种超参数,如果能算出来,哎还是刚才那句话,大家就失业了啊,啊对他有一些方式可以去做出来啊,但是它没有数学的公式,可以直接去求解到最大的最好合适的拉姆达,它和你的数据分布有关系。

它和你的数据是有关系的,所以你可以通过一些方法方式去做,但是这个方式它不是全自动的,或者说不是一个数学公式,往里头一套就能取到的,对啊是的,所以这是一个正则画像好,然后这个地方的损失函数没错。

叫做L2loss啊,叫做l two los l2的一个损失啊,好大家在后面会见到其他形式的损失,嗯嗯那个这样大家呢我们休息几分钟好吧,大家可以去上个洗手间,或者是这个喝口水啊,然后一会儿我们一鼓作气。

把后面给这个算法去给大家讲一下,你会发现你会发现这个,你会发现这个地方呢啊,后面这个算法和前面那个算法呢,他从刚才我拆解的公式上来说是很一致的啊,有同学问了一个问题,我再回答一个问题吧。

那个这个同学问到问题说,为何过拟合会加大variance,哎刚才我说了过拟合是什么现象啊,我我我用一个直观的方式给你解释一下,过拟合什么现象,过拟合是甩起来了,所以你甩上甩下它的波动不会变大吗。

这个模型不稳定啊,所以就像这样的抛物线是很稳定的,像这样的曲线是非常不稳定的,你可以去做一些事情,你可以把C塔压下来,不让它甩那么高,它会相对平滑一点啊,所以它的variance会会降。

OK他的variance会会降它的方差,而它的这个波动性会会往下降啊,就是限制最大的幅度,OK大概这个意思啊,然后那个呃如果要从数学的角度上来来说的话,你可以去查一下,会会有一些证明去告诉你说过。

你和他为什么是这样的一个方式嗯,好吧,那我再解释一个问题吧,为什么误差项求和范围到M,因为我有M个样本,为什么乘法项加到N,我只有N个C打,我只有N个seed,OK说明白了吗。

所以注意一下他们的计算的时候是不太一样的,OK好的啊,切几分钟啊,23分钟,然后一会儿我们回来给大家一鼓作气,把后面的算法讲了,好的我们回来,然后我来给大家解释一下几个问题啊。

有同学说前面的C打是从零开始的,这个地方C打应该从零开始了呃,这是一个习惯,一般情况下我们加正则画像,我们不会对C打零去做,我们不会对C打零去做乘法,我们不会对偏置项去做乘法呃,因为你想一下C打零。

它是不会X做乘积的,后面的C打一,C打二,这些东西他会和后面的具体的X去做乘法,但是这个东西无所谓啊,你把C打零加上来也也无所谓,他也没有关系,它它也可以啊,这个model一样可以run起来。

只是一个习惯而已啊,就是我们习惯不对这个偏执,向这个C点零去做乘法,呃其他的问题我再说,我们先往后走,这个地方我们要讲到一个很牛逼的算法,叫做logistic regression。

老just regression源于这样的一个问题,说今天我要去做一个事情,我希望去对我现在的这样的样本,去做一个分类啊,注意啊,我现在来到场景不是不是那个填空题了,是选择题啊,做分类做分类啊。

然后在做做这个分类的问题当中,当然你赶紧有两倍两类样本点了,所以这个地方有个场景,这个场景的横坐标横坐标是呃,tumor size是这个肿瘤的这个大小,然后纵坐标呢是它是是否是一个恶性肿瘤。

那大家可以看到这个地方有四个样本,是很不幸啊,这四位同学呢是恶性肿瘤,左边这个地方呢啊,这四位同学是诶那个良性肿瘤没有关系啊,很健康好,所以你要解决的问题就是,我希望把这两类东西区分开,好了好了。

然后有同学说,老师老师这个我知道刚才刚学了线性回归,刚才刚学了线性回归,嗯那个如果大家对前面我讲到的部分,有疑问的同学,你可以在回头录播课出来了之后,再仔细听一下我的描述方式啊,我没有说C打越小越好。

我后面那个乘法项,仅仅是为了控制住C打的幅度,嗯然后我刚才已经说过,C大大的话,这个模型它的偏,它的方差会很大,它会甩起来嗯,好所以所以那个呃可以去听下我的描述啊,我我的原话不是说这个东西越小越好。

所以这个地方呢,当我解决这样一个问题的时候啊,有同学说老师老师刚讲过线性回归这个,这个好开心的对吧,找条直线咔拟合一下啊,这有一堆的X和Y吗,有一堆的X和Y嘛,然后我就拟合一下好,这个事情就搞定了。

那我说哎只要现在Y取0。5,然后我去取到这样一个X的阈值,只要在这个阈值的左侧的XK全都是好的,右侧的一直OK很不幸啊,现在大家要去处理一下哎但是呢这个方法,并不是那么完善的一个方法,为什么呢。

当你现在如果有两个异常值进来,三个异常值啊,如果你来了两个这个这个很严重的这个同学啊,就是他的这个肿瘤大小非常大,然后他显然是恶性肿瘤,在这种情形下,你再去做线性回归,你会发现一个问题。

这条直线被拉偏了,这个很好理解吧,因为他要兼顾到所有的样本嘛,他要兼顾到所有样本,所以他被拉偏了,拉偏之后呢,你如果你取0。5做阈值,哎,这俩东西就分错了吗,就分错了吗,对不对,所以这俩东西就分错了好。

所以呃所以这告诉我们一件事情,说你思考一下线性回归,我应该可以拿到负无穷到正无穷之间的一个啊,一个值,对吧啊,负无穷到正无穷之间的值诶,但是这个东西呢你不太好去取那个那个阈值吧。

就是刚才那个阈值你不太好去取定这个阈值吧,因为你取了一个阈值以后,如果我回头那个来个新的样本,我把这条直线拉偏一点,我输出结果好像你这个阈值就不适用了,对吧对,所以他的健壮性不太够,他对噪声非常敏感。

好这个地方有一个很神奇的函数,数学上的函数叫SIGMOID函数啊,这个函数这个函数神奇到什么程度呢,就是哎我去什么情况,啊SIGMOIDSIGMOID这个函数长什么样呢。

对他就是GZ等于一加上E的负X次方分之一,哎这是一个,这是一个数学特性很好的一个函数啊,就是数学家找到了一个函数,这个函数有什么用呢,对它可以把负无穷到正无穷之间的一个数,压缩到0~1之间啊。

你想一下嘛,当Z很小很小的时候,你想想Z取负的100万的时候,大家告诉我Z取负的100万,E的负Z次方就是E的100万,1+1=1000000分之一,它是不是一个非常非常接近零的一个值。

它是不是一个非常非常接近零的值,如果我的Z取100万很大很大,你带进去E的负X次方是一个很小很小的值,所以这个时候它是一个非常非常接近一,的一个值,所以他们把一个负无穷到正无穷之间的值。

压缩到0~1之间,这个大概没问题吧,就是这个函数,然后这个函数呢还有一个很很好的一个优点,就是你你发现你把零这个点带进去啊,你把零这个点带进去,你发现你把零带进去,一加上E的零次方分之一。

大家告诉我是多少,一加上E的零次方分之一,这是多少,它等于1/2,所以我们通常大家说一件事情会说,我有半数的概率,我能做成这件事情,我有半数的概率他会怎么样,我觉得有0。5的概率他会怎么样。

我觉得我有超过0。5的概率,他会怎么样,OK好,然后这个函数还有一个很有意思的事情,就是哎我不知道大家认不认识这个函数,我问大家一下,你们知道啊,这这这个是那个面试题啊,是校招的面试题。

就是GZ这个函数啊,啊你知道它导数是多少吗,G撇Z你知道它导函数是什么吗,好所以现在拿出笔来算的同学,不好意思,这个函数你都不熟,GZ这个函数的导函数,就等于GZ自己乘以一减,GZ不是本身啊。

GZ乘以一减GZ啊,EE的X次方才是啊本身啊,没错没错,GZGZ乘以一减GZ啊,没错,所以所以这个是很好的一个数学特性,这意味着说如果我要对这个东西求导,我可以一步写出来对吧。

就是说我我如果知道GZ等于多少,那这个地方G撇Z等于多少,我是可以直接套这个公式一步求出来的啊,所以它的数学特性非常好,它是一个中心对称的一条曲线,在0。5这个在一零这个位置的输入,取到0。

5这样一个值,然后对这个点是一个中心对称的,在啊很小很小的时候,它取到的值是接近零的,很大很大的时候取到的值是接近一的啊,这样好先先记一下有这么一个函数,好的呃,然后你要知道所有的分类问题。

所有的分类问题,本质上是在空间当中去找到一个decision boundary,找到一个决策边界,在空间当中去找到一个决策边界,去完成这个地方的,去完成这个地方的决策,决策边界去完成这个地方的决策。

所以这个地方两个样本点,红色样本点和绿色样本点,我可以找到一条这样的线完成决策,我这个地方有红色样本点和绿色样本点,我可以找到一个这样的曲线完成啊,区分这个地方有红色样本点和绿色样本点。

我可以找到一条很扭曲的线去完成区,分,好往下走,看到一个例子,这是一个很经典的例子,这个例子告诉我们说如何由线性回归,哎呀这个比呀,这个得到的这个拟合的哎呀,我要换一个手写板了啊。

拟合拟合的这个直线或者曲线,去把它变成这个东西,变成一条决策边界,好我们来看一下这个事情怎么做的,这两个样本点啊,这两个样本点呢啊一个是这样的啊,小圈圈,一个是这样的小叉叉。

我要去找到一个模型去把它分开好,所以其实我就要找到一条决策边界,叫decision boundary呃,先不管这个东西怎么来的,就是我们记住这个公式,我们需要的东西是这个。

这个这个叫做这个表达表示或者是假设函数啊,假设函数再加上优化好,我假定它的假设函数是这样的啊,我再给一个值我的C大零取多少,C大零取啊,去去去去去这个地方的啊,这个这个这个三好,然后C打一呢去取122。

OK然后C答案呢去去去这个这个这个一好啊,大家告诉我这里面的这个形式是什么,就是三加X1加X2等于零,这是什么呀,就这个东西是什么,从数学上来说它是什么,它是一条直线吧,就是你把零三和三零带进去啊。

他发现这个东西都等于零,对不对,然后两点决定一条直线,对不对,所以你就把它连起来,它就长成这样,好很好,哎呀对它就长成这个样子好啊,O那个再问大家一点小小的数学知识,在这条直线上方的上方的点。

带到这条直线里头取值是多少,直线上方的点,你的X1取100,你的X2取啊,那个200带进去,它是一个什么样的值,对他是个大于零的值对吧,你随便带一个直径不就知道了吗,所以在直线上方的时候,对它是A对啊。

大于零的直线下方呢,直线下方呢,直线下方呢对直线下方是小一点,你随便带个值进去,你试试看,你带一个-100,带个-200好诶,这有什么用呢,哎大家还记得刚才的SIGMID函数长什么样吗。

哎大家还记得西格玛的函数长什么样吗,我把一个大于零的值带进去,和一个小于零的值带进去,最终的结果会怎么样啊,就是我把一个大于零的值带进去,和把一个小于零的值带进去,我最终的结果会怎么样啊,分别怎么样。

我把一个大于零的值带进去,它是大于1/2的嘛,我把一个小于零的值带进去,它是小于1/2的嘛,对不对,你看你把一个大于零的值带进去,是不是大于0。5啊,你把一个小于零的值带进去,是不是一个小于0。

5的值啊,所以他告诉我们说我把这一堆的点带进去以后,我去求一个这样的函数,把一个线性回归的结果丢到一个sigma当中,我是不是能拿到一个概率P,大于0。5的一个结果,哎我把下面这个东西丢进去。

我是不是拿到概率P小于0。5的一个结果呀,哎所以这个东西有什么用呢,它实际上是告诉你说告诉你哦,在直线上方的这些点它是小叉叉的,概率是大于0。5的,它是小叉叉的概率是大于0。5的。

而下方的这些样本点是小叉叉的,概率是小于0。5的,而你就可以基于0。5去给一个判定的边界,完成这一次的分类,所以我希望给大家说清楚了,我们再跳到下一个场景,有同学说老师老师你刚才那个东西太简单了。

谁告诉你说我搞一条直线就可以区分开呀,你太弱了吧,好是太弱了,那就换一个听好了啊,这个显示好了,样本点呢对你刚才说直线好简单的,我就不用直线了,因为这个情况下我有一堆的小圈圈,我有一堆的小叉叉。

你发现了,你搞一条直线来啊,你拼命的选那条直线,你调整它的斜率,你调整它的截距诶,分不开对,分不开啊,你被包围了啊,就准备投降吧,好所以这个时候怎么办呢,唉我们来做一点小小的处理啊,非线性的处理。

我让这个地方的C打零取什么呢,取啊一这个地方C打一取什么呢,取0C打二取什么呢,取0C大三取什么呢,取1C到四取什么,取一好问大家一个问题,X1的平方加X2平方减一等于零,这是一个什么。

这是一个什么形状,哎你先别管现在怎么来的,一会再说,那是那是下一个环节,假设函数之后的东西好,有同学告诉我说,老师老师这东西好简单,它就是这样的一个圆,它就是这样的一个圆,哎呀我再问大家一个问题啊。

我把圆外的点,我把圆外的点带进去,带到这个函数里头,带到现在这个表达式里头,这个结果会怎么样啊,对我把这个地方带一个100进去,我把这个地方带一个200进去,这个结果会怎么样啊,哎很好,同学告诉我说。

圆外的所有的都是大于零的,圆内的呢,圆内的呢对园内的都是小韵的对吧,就带到这个表达式,带到这个表达式诶,那我再问大家一个问题,当我套一个G函数在外面的时候,X1平方加X2平方减一。

我猜到它代入这样一个SIGMOID函数,我得到了什么,OK他又告诉我一件事情,他说哎,哎哎在这个圆外面的概率P是大于0。5的,在圆内的概率P是小于0。5的,所以事情又解决了。

他告诉你说在圆外面的是属于小叉叉的,概率是大于0。5的,在圆内小于这个属于小叉叉的,概率是小于0。5的,那我认为大于0。5的我就判定成这一类呗,小于0。5的我就判定成另外一类呗,诶这个问题是解决了。

好好好,所以好像看起来形式很简单,好啦好啦,回到第二个问题啊,所以假设函数已经有了好,请告诉我优化怎么做吧,我不知道theta怎么取,请告诉我告诉我theta怎么做啊,那个优化怎么做吧。

好所以回答这个问题,回答这个问题呢,我们要做的事情是求这个theta,呃有同学说老师老师还损失函数,对不对,损失函数对不对,loss function对吗,求一求啊,所以我把我预估的这个概率结果。

P去和这个标准答案零和一去做一个差值,这个事情不是搞完了吗,好简单的,和线性回归一样,嗯这样做不能说不对,但是我们不选这个东西去做损失函数,为什么,因为这个函数的数学特性不太好。

因为这个函数的数学特性不太好,这很尴尬啊,所谓的数学特性不太好,实际上是指的,如果你用这个东西去做它的损失函数,做它last function,你会发现说这货呀糟糕了好多,最低点啊,凹凸不平的。

根本就不像之前提到的碗状的那么乖啊,凹凸不平,所以呢你就搞一个小球滚,咔咔咔滚到第一个位置出不来了啊,环顾一下四周,你说我就是最矮的呀,我比周边都要矮,你凭什么还要我再滚呢,对吧,我就呆在这好了。

所以这个就非常糟糕了,所以你那小球就滚不动了啊,然后所以这个数这个函数它的特性不太好,数学大家就不用它,所以大家提出来另外一个损失函数叫做lock loss,就是我们会我们希望最后是可以滚小球的。

我们会希望它是能够滚小球的,我们希望这个JC打能是啊,随着这个C打是能是这样的一个变化的啊,这个会比较好好,所以呢我就往下走呃,所以这个地方提了一个损失函数,这个损失函数是这样的,它的公式有一点小小的。

有一点小小的麻烦,然后我来给大家,我来给大家解释一下这个公式啊,就是我给大家推一下,为什么损失函数会长成这样,HC打X刚才我说的是什么,这个东西是什么,是不是概率P啊,是不是属于正样本的概率P呀。

刚才大家都见到了吧,属于小叉叉的概率吧,P吧,我们用一个这个这个SIGMOID函数,里面套了一个C打转置X,然后送到一个sigma的函数里头就得到它嘛,对吧,好给大家推一下诶,我问大家一个问题啊。

如果你的标准答案是一,就是这是正样本,这是负样本,标准答案是啊,这个是正样本,那你的你的你应该就是标准答案取一,非标准答案取零嘛对吧,就是我的意思,就是说你明确你的答案就是这个东西吗。

然后你现在你给的呃,这个预估的结果告诉我说这个是P,就是这样本的概率是P,是负样本的概率是一减P哎,你告诉我你是不是希望这个P越大越好,就是大家告诉我是不是希望概率P越大越好,如果他是一个正样本。

你是不是希望概率P越大越好,就希望它是正样本的概率越大越好,好,你希望是P的概率越大越好,是不是希望log p越大越好,是不是希望log p越大越好,是不是希望负的log p越小越好。

是不是希望food log p越小越好好,所以损失函数就求出来了,就长这样,负的漏个PK当它是负样本的时候,当它是负样本的时候,你是不是希望这个东西越大越好,你是不是希望log1减去P越大越好。

你是不是希望负的log1减P越小越好,哎我刚才的这个推理大家听明白了吗,我给大家说的这个大家听明白了吗,你的概率P就是预估的正样本,预估的是小叉叉的那一类的概率,我会希望正样本的时候。

我会希望它越大越好,我会希望它越大越好,然后如果是那个呃负样本的时候,我会希望一减P越大越好,所以我会去做这样一个一个事情,OK有同学问到了一个问,答了一个问题,说老师老师为什么叫log。

为什么要加log,我会不加log不行吗,不加blog没有关系,但是你别忘了你现在有一批样本,你做题不是做一道题,你你不是做一道题,是做一批题,所以你一批题你不是不希望第一道题的P啊,越大越好。

第二道题的P越大越好,第三道题的P越大越好,如果是这样的话,你是不是希望把它们乘起来越大越好啊,所以你会去做一个乘法啊,比如说P啊,P1撇,PPP1撇不是那个导数啊,是是另外一个P啊,这是第第第三道题。

P两撇,你是不是希望这个东西越大越好,但大家问大家一下,一个01之间的数,一个01之间的数越乘是不是越小,我给你100道题,我给你1万道题,最后这个连乘是不是它会变得很小,这个连成一旦变得很小。

它就很糟糕了,你的计算机超过你计算机可以去计算的精度了,怎么办,求一个log,把它变成加法,加法是不怕数量多的,你加1万个数,它也没有做乘法那样的危险度那么高,做乘法用0~1之间的数做乘法。

连乘乘在一起,你待会就糟糕了,所以我解释清楚了,为什么要加log吗,就是这个其实和自然函数有关系啊,就是log自然大家之所以会去做这样的一个事情,就是因为你不你不做这个东西,它会可能会溢出。

可能会在计算机当中超过它能计算的精度啊,所以我说清楚了吗,好接着往下走,用加法肯定是不行的,用加法肯定是不行的,这个地方你的这些,你你现在这个自然,你是希望每一个都尽量的大啊。

用加法体现不出来这个东西啊,就加法加法的话呃,加法是做不到这个事情的,那你你肯定是用连乘的形式对,然后这个时候呢,你的损失函数可以写成这个形式,你的损失函数可以写成这个形式,啊这个大概没问题吧。

当它是正样本的时候,是不是这个东西就取一,当它是负样本的时候,是不是这个东西就取一,是不是就把刚才的这样一个分段的函数,统一成现在这样的一个形式了,有这个这个部分大家有问题吗,啊哪个同学有问题。

就是把我刚才给大家推出来,正样本的情况下,和负样本情况下的损失函数合在一起,大家有问题吗,因为两分段函数这个太讨厌了啊,他的他不太好求啊,明白吧,就是一个函数比较好求,分段函数的话就有点麻烦啊。

所以呢我就不分段了对吧,我就不分段了,Ok,好吧啊,那个同学说西格玛那个P体现在哪,来问大家一下西格玛log啊,这个H的费达xi,我把这个地方的西格玛啊,对这一堆的东西求和log。

求和是不是等于上面的东西求乘积,log求和是不是等于上面的东西求乘积啊,是不是就变成一堆东西,连成了体现在损失函数呢,是不是体现在这为什么前面要乘以一个Y啊,这个这个同学我们要把公式合到一起啊。

看清楚了,我只有在正样本的时候才取它,我在负样本的时候取它,看到了吗,啊去去这个地方啊,负样本,然后我我我这个时候的取正样本的时候,我这一项不就没有了吗,我取正样本的时候,Y等于一,这一项不就没有了吗。

我取负样本的时候,后面等于一,前面这项不就没有了吗,所以它是不是就变得和前面的公式一模一样了,OK了吧,好好有同学说log为什么前面要有负号啊,记住损失函数评价的是什么,损失函数评价的是什么。

损失函数评价的是我和标准答案之间的差异,你差异越大,这个函数应该越越大才对对吧,所以你这个地方的概率P在正样本的时候,概率P越大,这个值是越大的,在负样本的时候,概率P越大,这个东西是这个东西。

它是它也是越大的,所以你要加一个负号,去符合你的损失函数的含义,损失函数的含义,听明白了吗,我说清楚了吗,我说清楚了吗,这个地方,所以所以要加负号的,明白吗,损失函数是什么,刚才我们希望它越大。

我们希望是正样本的时候它越大,希望是负样本的时候它越大,对那我加一个负号,它就变成对的啊,所以它就它它它就和我的损失函数的定义,一样啊,损失函数是要求评估的是差异度,就这个函数越大他是越不好的。

它越小它是越好的,对吧好呃那个呃亲爱的同学们,不要忘了后面的正则化,就是你要知道哦,你刚才在做线性回归的时候,你是可以,你是线性回归的时候,你是可以扭动的去去拟合这些样本点,你现在在逻辑回归当中。

你同样可以扭着去做做区分哦,你可以扭着去做区分哦,去去把这两个样本点分开来哦,所以这个也是一个很可怕的事情,所以这个地方呢啊对你就同样要去限制一下,限制一下它的幅度,限制一下它的幅度。

所以这个地方的幅度呢,大家可以同样加一个正则画像啊,比如说你这个地方是一个l two的,一个一个lol two的一个正则化啊,不是l to lose l two的,抱歉。

刚才可能是前面同学有问到这个不叫l to lose,这个叫l two的regularization啊,l two的正则化啊,它不是l to loss,l to lose是一个用在回归当中的loss啊。

l two的正则化啊,这样L2的正则化,然后呢加在尾巴上呢,就是为了去限制住C打的这个幅度,限制住C达的幅度,对这个损失函数有不同的叫法啊,最大最大最常规的叫法叫LOGLOSS。

叫对数损失叫LOGLASS,他有其他的叫法,比如说它叫做binary cross entropy loss,就是二元的交叉熵损失啊,或者叫做对数损失都一样都一样对都一样啊,啊对对对。

然后这个函数的数学特性非常好,对这个函数的数学特性非常好,它是一个凸函数啊,它是一个凸函数啊,哦对有同学发现了一个问题啊,说老师这个地方好像你的那个中括号放错了,中括号放错了。

我应该我应该去那个纠正一下这个东西啊,中括号放错了啊,中号放错了,然后这个地方少了一个括号,哎呀抱歉抱歉,这实在是敲公式,一敲多了就容易蒙对,就容易懵啊,所以大家看一下,实际上啊现在这样是对的对吧对。

现在这样我相信大家大家是没有问题的对吧,所以所以那个大家看一下啊,就是前面的部分应该是应该是应该是这样,好好大家现在看到这个式子啊,大家那个那个这个这个公式,还是有点那个书写的时候有点问题啊。

我们应该纠正一下啊,这个函数它是一个凸函数,它是一个convex function,所以凸函数你是可以直接滚小球的,对你是可以直接滚小球的,所以同样的方式去求他的这个gradient,求它的梯度啊。

同样的方式去求他的梯度,然后照刚才一模一样的方式去做,优化细节的东西呢,我没有在,我没有在这里就给大家推导那个导数啊,因为我刚才说它有很好的特性,就是大家别忘了这个GZ是等于GPC。

是等于GZ乘以一减GZ的啊,你们自己去求一下,你发你可以验证一下这个结果,所以它求导其实不难,它的导函数,虽然刚才大家看到那个函数,老师你说老师老师这个感觉好复杂,那个里头又有什么。

一加上E的这个这个负Z次方分之一,然后这个Z又是W的转置X,OK然后然后然后你又在前面求log,感觉这东西好复杂,但其实它不复杂,没有大家想象的那么复杂啊,啊所以这个地方求解的方式。

求解求解的部分没有给大家细说,它还用的方式还是梯度下降啊,依旧是梯度下降啊,顺着这个方向去做优化好呃,再说一点其他的内容,就是这个世界上不只是二分类的,谁告诉你说做选择题只有两个选项呢。

没有人告诉你说做选择题只有两个选项对吧,这个世界上东西多着呢对吧,我我这幅图像里头可能是猫,可能是狗,可能是大象,可能是鸽子,可能是其他动物,所以如果我只知道二分类,刚才我们的逻辑回归只完成二分类对吧。

我只拿到一条决策边界,Decision boundary,决策边界,我只能完成二分类,我怎么去完成多分类呢,这个地方有些思路啊,所以从二分类迁移到多分类,有两个常见的思路。

一个叫做one with one,一个叫one with Rest,他们分别做什么样的事情呢,我还会翻做这样的事情啊,这个地方有三类三角形,小叉叉和小方块,我怎么去做三分类呢,我做不了啊。

我只能做二分类好,没关系,我一步一步来,我先构建一个分类器,C1去区分小三角形和小叉叉,为构建第二个分类器,这个地方的C2去区分小三角形和小方块,我去构建第三个分类器,去区分这个地方的小叉叉和方块诶。

你告诉我,如果我来新的一个样本点,我来新的一个样本点,比如说这个样本点可能是啊,在这哎,这个样本点是不是可以丢到这三个分类器当中,分别去拿到一个属于这个三角形的这个概率啊,P1和属于叉叉的概率一减P1。

然后以及丢到第二个分类器当中去,找到属于三角形的概率啊,这个地方啊叫做叫做P111撇和一减,P11撇是不是可以丢到第三个分类器当中啊,C3当中去区分出来属于方块的概率啊,属于方块的概率P啊。

那个啊一两撇,然后属于叉叉的概率啊,一减P一两撇有有问题吗,我对其中的每两类啊,不不不,这个地方和soft max没关系,这个地方和soft max一点关系都没有啊,大家不要不要。

那个我知道你们知道一些多分类的分类器啊,不要搞混了,这个地方就是用二分类去解决,去解决多分类啊,那它的两种思路,one with one或者one Rest用的都是二分类。

和soft max一点关系都没有好,OK所以这个思路大家听明白了吗,我对里头的任意的两个类去构建一个分类器,我会拿到三个分类器,没错他会拿到二分之N乘以N减一个分类器,没错没错。

啊你你们你们我知道你们想在想什么,你们觉得计算量很大对吧,构建三个构建这么多个分类器,计算量很大对吧,唉谁谁跟你说了,谁跟你说了,这些分类器在构建的时候一定要做串行了,唉谁告诉你说要做做串行啊。

我估计这个资源多的很,我我任意的两个分类器,我去构建这个分类器的话,我可以很简单的去构建,构建一个并行的去构建很多个分类器,可以同时跑起来啊,还有一个还有一点是这样的,哎你你知道你你自己想的是什么。

你觉得构建这么多个二分类器和你你猜一下,构建这么多个二分类器和构建一个多分类器,哪个计算量大呀,我知道你在想什么,因为你直接想要模型吗,你说我这个地方有二分之N乘以N减一个模型。

那个地方只有一个多分类器的模型,但谁告诉你说,那一个模型比这个地方的一个模型,和这个地方的一个模型,构建的时间复杂度是一样的,所以不一定的这个东西不是你想象的那样哦,你要任何的事情。

万事万物你都要考虑不同的维度,所以这个地方的one with one,是一个在工业界里头依旧在用的方式,比如说大家如果看SBM,你看后面讲到的支持向量机,它在做分类的时候,它就有可能会用到呃。

用到这个地方的思路啊,就one with one或者one with Rest的思路对,所以大家可以稍微那个留意一下对,就任何的事情,你我还是还是那个大家要多多思考啊,他总会有自己的一些利弊啊。

可能和你直观想的东西不一定一样好,这是one with one,One,One one,One with one,做的事情很简单,就是在任意的两个类别之间,去构建了一个分类器。

那one with Rest呢,那one with Rest呢好很多同学很聪明,你已经猜到了one with Rest是什么,when we switch告诉构建,同样会构建三个分类器。

只不过这三个分类器是区分说诶是小三角形,不是小三角形,是小叉叉,不是小叉叉,是小方块,不是小方块,有问题吗,同样去取最大的那个概率P啊,注意啊,他这个地方构建了三个分类器之后。

它取的是这里头最大的那个概率啊,就是P1P11减P1啊,P1撇,一键P1撇,P一两撇,一键P一两撇里头哪个最大,它就算是就是说这个里头啊,Sorry,就是P1P2P三啊。

不对P1P1P2P一两撇哪个最大,他就取哪个,OK能理解能理解我说的意思,就是他取最大概率的那个类,作为他最后判定结果的lo,所以这是一个思路啊。

就是one with one和one with Rest,这样的思路,我希望能给大家说清楚了,one way spend是两两之间去构建,然后one way stress呢就是是否对吧,是小三角形。

不是小三角形,是小方块,不是小方块,是小叉叉,不是小叉叉,好这样啊,代码一会儿给大家讲,然后说一点点说一点点那个工程应用的经验,这个就是我刚才给大家说的那句话,因为有同学总会觉得说老师。

老师前面写的这些模型好简单的呃,我想学复杂的模型,我要去学那些什么什么比较比较牛逼的,那些model啊,那些神经网络的model,什么支持向量机啊,那些这个啊GREGBDT等等这样的机械模型。

我觉得他们好牛逼的,我觉得洛基回归好弱的啊,这个没有啊,没有就是呃模型简单,工资低,谁告诉你的,你这句话的前提是,简单的模型和复杂的模型你都能用好,所以而且你要知道,不同的场景里适用的模型是不一样的。

嗯我我跟你说啊,如果你这个问题非常简单,你用神经网络去做这个事情,可能是一个吃力不讨好的事情,逻辑回归的优点在哪,逻辑回归你可以拿到,你可以拿到C答,你可以直接根据C塔去看每一个特征,它的重要度有多高。

对,所以所以这个时候,你它有非常非常高的可可解释性,我们今天给大家讲到的模型和明天讲到的模型,都有非常非常高的可解释性,可解释性是什么,是工业界非常看重的东西,举个例子来说啊,你们去看一看。

有些很牛逼的行业哦,叫做互联网金融,大家知道吧,很牛逼吧,天天跟钱打交道啊,互联网金融,然后里头有一个领域叫做叫做风控反作弊,我告诉你神经网络他们是不敢用的,为什么,因为神经网络出现问题了,完蛋了。

你查不到问题,就是它的可解释性很差,你不知道他为什么做了一个这样的决定,但是如果今天大家用逻辑回归,你去检查一下这个地方的C打,你就知道他为什么会做这个决定,是因为我的某个C打比较大。

是因为我的某个输入的X比较大,才会有这样的一个结果,所以你可以第一时间对你现在这个东西,问题去进行处理,如果你用神经网络,你现在出现问题了,你只能把它先降级,降到一些其他的模型上,然后先顶着。

然后你再去查它,它短时间内是查不出来他的,你你是很难去查出来他的问题的,所以可解释性意味着有更高的可控度,有更高的可控度,而且直到几年以前,你看到的最牛逼的那些公司,包括百度,包括阿里。

他们还在用这个模型,用的用逻辑回归,只是只是在到近两,近几年大家的那个数据量幅度起来了,然后不那么容易过拟合,然后这些工程师又能在一定程度上,能去debug一下呃,像神经网络这样的一些model之后。

现在线上的baseline,就是现在这些模型才切到deep learning上对,但是你看到大部分公司我们有一句话叫做,一招L2打天下,真的你去工业街问一下,这个大家都都都是知道这句话的啊。

就是我只需要这一个模型就可以了啊,就是关键就在于你的数据处理的有多好,然后所以这个地方呢我给大家写了一堆东西啊,大家看一下就好了,就是模型本身是没有好坏之分的,千万不要有这种想法。

觉得啊老师这个模型好简单,然后会这个模型的人是拿不到高的工资的,没我我跟你说逻辑回归我,我去面试你的话,我去问你问题的话,我同样可以问得出来,你对你的机器学习的功底到底是怎么样的,所以你不用。

你不要去觉得这个模型很简单,它的里面也有一些细节啊,你需要再消化一下,然后呃模型本身是没有好坏之分的,然后它有它的优点,它有它的优点,它最后能输出一个概率P,然后它可解释性高啊。

他做完特征功能以后效果很好,然后他可以去做一些其他的,因为它可以输出概率,他可以去排序啊等等等等,然后它的应用也很多啊,就大家看到那些什么呃,最大的几家公司,包括这个这个什么头条啊等等啊,抖音啊。

他们里头做一些工作可能都会用到,可能都会用到这个模型啊,是对啊,现在写的这些内容来源于我,来自于我自己的一些总结,所以那个不是书,如果你要看书的话,你可以看一下周志华老师的机器学习西瓜书,在那本书当中。

他把逻辑回归叫做对数几率回归啊,就是他认为最后是一个回归,回归的是一个概率,所以它叫做对数几率回归啊,然后你可以去看一下,好吧啊,然后这个地方关于算法的调优啊,你可以去调正则化的系数。

C可以去调收敛的阈值,E可以去调损失函数,给不同的权重啊,这些东西都是可以调的,你在工具库里头是可以可以可以见得到的啊,先简单的说一下,然后推荐两个工具库是呃。

来自于台大的LIBERIA和PCLEARN中的logistic,Regression,然后LIA这个库是一个它是一个C加加的库啊,然后LIN里头有一部分是对他做的那个,Psychloe,当中。

有一部分是对这个东西这个库去做的封装啊,就是它是一个Python的封装啊,你可以认为OK好啊,所以这个库大家可以看一下,我给了一些链接啊,这是这是台湾大学的一个库叫LIVINA啊,如果数据量大的话。

也可以用spark spark当中呃,这个应该是以前的酷啊,这以前的版本1。6,现在应该已经到2。3了,Spark,然后这个spark当中有两个板块,一个叫ml lib,还有一个叫做ml。

然后这两个板块当中都有LR,然后它都能完成并行化的优化,OK好,然后那个我带大家来看一下代码嗯,所以那个稍等一下,我来把它切上来,呃能看到我的屏幕吗,能看到我的屏幕吗,嗯大家能看到我屏幕吗。

好啊我我做一个小小的说明啊,第一节课的代码,里头有我自己纯手写算法的部分,听清楚啊,里面有自己纯手写算法的部分,所以如果大家看这个代码,觉得老师好复杂的,这个很正常啊,在大家今后使用这些模型的时候。

更多的时候你不会自己手写代码,你会基于一些工具库去完成这些任务,只是工具库用的好与坏,和你对模型的理解之间会有非常大的关系,所以如果你看这一次课的两个代码,这两个我手写模型的代码看的有问题的话。

这个不要不要因为这个东西而觉得很啊,对自己的否定情绪很高啊,是不用因为这个地方的底层的这个这个代码啊,一方面是他确实比较麻烦,另外一方面是我只是为了告诉大家说,你看我给你写了一个逻辑回归。

我给你写了一个梯度下降,我用这个东西确实能跑起来,确实能解决这个问题,我只是为了给你加深一个印象,告诉你说你看我写一个线性回归,我写一个损失函数,我写一个梯度下降,我去迭代一下诶,它的损失函数下降了。

他最后能够收敛哎,和工具库的结果还比较类似,只是这样的一件事情,并大家实际工业界的在解决问题的时候,并不会去手写模型啊,这是一个非常好的事情,手写模型肯定是比不过那些前辈已经吹出来的。

很完善的这样的工具库,所以大家在这次课看到的这两个代码啊,linear rebrushing example和logistic regression example,对我自己手写了一部分代码。

就是关于这里头的这个就是大家知道的啊,这里头会有一些模型的这个呃拟合呀,会有一些优化迭代,这样的过程我全都自己手写了,所以你看起来代码会有点复杂,实际在工业界当中去完成拟合,可能就一句话啊。

所以所以这个地方会有一些其他例子吗,比如说你看这个地方的cable的,这个旧金山的犯罪啊,类型的这个分类这样一个问题呃,最终的你知道建模的部分在哪,建模部分在这看清楚啊,建模部分就在这。

他就是用一个模型去拟合一下我的数据,去feat一下我的数据,X和Y看到了吗,这个东西就完成了,这个过程训练就完成了,不需要你自己去写,而我前面给大家写的这个东西,是为了加深大家对知识的认识。

所以我给大家手写了一遍啊,所以大家不需要去抠这种细节点,比如说你说老师老师这个可视化我不会做,怎么办啊,会不会后面的课学不下去,不会啊,老师老师这个地方的这个向量化的表示形式,这种南派的计算。

我不会会不会影响后面课的学习,不会OK好,所以这个地方我先做一个简单的说明啊,然后我来说一下这个地方的例子,这个例子是这样,大家看这个代码不用一行一行的去看啊,就是不要求大家每一行都去看。

搞清楚他在做什么啊,因为你在后面的,我刚才我说了,就是使用方法不一定是这样的,使用方法哈啊这地方会有一些工具库啊,Python这个语言我不知道大家熟不熟啊,但是建议大家熟悉一下。

这是数据科学领域呃比较牛逼的一个语言,如果现在大家看各种各样的AI工具,如果它没有,它不是Python写的,他一定会有Python的接口,基本上是这样的,你看google的TENSORFLOW。

你看你看那个FACEBOOK的PYTORCH,他以前有个很好用的库叫做touch,这个库呢早在非什么CANCEFLOOR,什么carry,什么什么什么,这些工具库全都没有出现之前就有,大概在那个时候。

我们1114年一几年在用的时候啊,1314的时候,可能那个时候就已经有touch这个工具库了,然而那个工具库的主语言不是Python,所以谷歌爸爸一旦一一把甩出来之后,大家用Python去写。

然后那个啊就那个FACEBOOK肯定也是,他也在构建自己的AI生态嘛,所以受到压力了,所以他立马推出了一个叫做PYTORCH的工具库,那个工具库就是touch的一个Python的版本啊。

还是Python的版本啊,有同学问到说老师,老师这个地方的这个i Python这个notebook,用什么东西去打开啊,你如果是Mac的话,你可以装jupiter notebook啊。

如果你是windows或者Mac的话,你同样你可以去装一个anaconda,Anaconda,然后我来给大家拼一下吧,对我敲到里头了,敲到我们聊天区了,叫anaconda,然后你把这个东西下来。

下下来以后,下一步下一步下一步安装好了,它里面就可以启动一个NO no9,peter notebook就可以下载这个代码,好吧啊,然后这个代码呢我不想每一行每一行就讲,我事先说明一下。

在Python当中呢,工具库是这样做的啊,有些大神已经写好的工具库,Import pandas s p d,说明说我要把pandas这个工具库引入进来,我取一个别名叫做pd,我把NPI这个工具引入进来。

取个别名叫做NP,然后我要做可视化,所以要用的Mac polip这样的工具库好,中间这一大坨东西不用管,他们就是一些基本的设定啊,前面的东西也不用管,就是用当派去产出了一个数组而已,一个矩阵啊。

你可以认为OK啊,然后这个地方的单变量线性回归,先准备好数据,数据我已经给大家准备好了,叫做linear regression data1啊,Linear regression data1。

然后所以这个地方我把它加载进来,它就是一个大的矩阵,然后在这个矩阵的基础上,我就可以去取出来对应的和Y好,所以把X和Y画一画图啊,就长成这个样子,那个大家读这个代码的时候啊,你是第一遍读的时候。

不要去抠每一行代码,不然的话你读的会很会会很费劲,呃会很费劲,所以这个地方呢大家以以这个嗯,大家大家以现在这个地方的这个案例为准,去看一看他在做什么样的事情,我做了一个格式化。

我给大家画出来的横坐标是population of city,就是城市的这个人口数,纵坐标是什么呢,纵坐标是它的一个perfect啊,就大概是这个城市的一个收入啊,或者是他的GDP啊等等这样的信息好。

然后所以我画了图,大概长成这个样子,然后我现在,我现在想对这个地方的数据去做一个拟合啊,我想对这个地方的数据去做一个拟合,那怎么办呢,对我我这个地方显然是一条直线。

所以我要做的事情是我的假设函数已经有了,是C的X对吧,那我就要去计算一下我的损失函数啊,所以loss function或者computer function实际上是这样的啊。

loss function和computer function实际上是这样的,那我给定C打给音Y给定X的时候,我做什么,你看是不是C达和X去做一个内积啊,就是C大乘以C达的转置乘以X,然后求完那集以后。

我是不是用求完预估的结果值,减去真实的结果值,再求了一个square啊,再求了一个平方啊,H减去HC的X减去Y求平方,再求和,再除以2M分之一对吧,这个和我们的公式一模一样。

这个和我们在我们在我们刚才的PPT当中,公式一模一样对吧,然后我们写了一个gradient descent,就我们手写了一个梯度下降,我们手写了一个梯度下降,这个地方的梯度下降是每一次的C打。

都沿着负梯度的方向,负梯度我们已经求出来了,就是啊H减去Y再乘以X啊,就转置乘以X这样的一个,那X的转置乘以这个H减去Y对吧,然后我沿着负梯度的方向,以阿尔法这样一个学习率去做一遍调整。

我写了一个for循环,我就一步一步的去做这样的啊,一步一步的去做这样的调整对吧,我一步一步去做这样的调整,我把中每次调整之后的这个损失函数,做一个记录,那大家会发现随着我的迭代次数。

往随着我的这个地方的迭代次数啊不断的增多,大家会看到这个地方的cost j,实际上最后的这个损失函数,这个JC打是往下降的,往下降,就表示说我和结果之间的差异值越来越小,越来越小了。

然后最终我就可以把这个结果画出来,所以当我求我迭代到一定程度的时候,我就求出来了,C打了求RAC的,你就知道斜直线的斜率了吗,你知道斜直线的斜率,你就可以画出来这条直线嘛。

所以大家看这个地方我用了两种方式,一种方式是我自己用用这个呃,这个这个梯度下降去学习到的这个参数,另外一种方式是我调用了大神的一个工具库,就是啊逻辑回归,把那个psychic learn。

psych learn当中的这个这个这个linear,regression线性回归,然后去feit data对,去feit data,然后拿到的结果大家看,实际上我自己手写的这个算法。

和工具库的算法是非常类似的,就结果基本上是一致的对吧,结果一般基本基本上是一致的,然后我就可以对它做一个预估好,这是这个代码正确的打开模式,这是这个代码正确的打开模式,OK啊好。

然后第二个代码是逻辑回归啊,逻辑回归前面的东西我也不说了,这一大坨好,然后pro data就是一个函数,这个函数用于绘出来样本点的一个分布好,所以我现在通过data把加载进来的数据叫做data one。

点TXT加载进来的数据去绘制出一幅图,这幅图就长成这个样子,所以这幅图是说我参加了两次考试,我两次考试有两次考试的成绩,example one score和example to score。

最后我能不能通过这次考试,我要基于两次考试的得分去做判断,所以大家看到这个地方会有啊,黑色的部分是通过了啊,这个地方的黄色部分是没有通过,是挂掉了,所以啊有没有通过,有没有挂掉,取决于取决于你两科成绩。

如果你有些科目非常非常的好,只要你另外一科不要太差,我就让你通过,结果大家发现了吗啊,然后或者是你两科都很好,当然了,妥妥通过,如果你两科都很差,不好意思,你肯定通不过,如果你某一科很好。

但是另外一科太差了,不好意思,也通不过,很多同学考过研对吧,你教考研的时候,实际上单科是有单科线的,你过不了单科线的话,不好意思,你是没有办法的,OK好,所以我需要去找到一条决策边界。

把这样的两类样本点分隔开,没错,所以呢底下这个地方我就开始给大家写了,好计算一下损失函数,损失函数是什么,对刚才大家回到PPT里头,看一下损失函数怎么求的,损失函数是不是正样本的时候是啊。

这个log p啊对吧,负样本的时候是log1减P,然后前面加个负号对吧,记得吧,然后我就把这个东西写出来了啊,Python Python其实它是一个可读性很好的一个语言,所以我就把损失函数写出来了。

然后到损失函数写出来了以后,我应该怎么样对,我应该用这个地方的梯度去完成梯度下降,去优化吗,所以你就可以优化一下,然后呃这个里面有一些细节啊,我没有办法一行一行给大家解释,如果你们有看不懂的。

可以在群里头啊,那个提出来,大家可以一起讨论啊,我会给大家做解释,然后你往下看底下这个地方的话,决策边界就是我如果通过梯度下降去学习到了,这一条角色边界的斜率和它的截距,我就可以把它画出来。

所以大家看这条这条线学得还不错吧,这个学得还不错吧,你看他是能把它是能近似的,把这两类样本点分隔开的,因为它是一条直线啊,所以它啊他是没有办法做到完全分隔开的,因为你看一下这里头的样本点是不可以。

线不是线性可分的,你找不到一条线把它分开的,所以他很努力很努力学,大概学到这个程度好啊,下面呢这个例子是一个加正则化项的逻辑回归,因为我们说正则化很重要对吧,你要去限制住他的这个呃逆合能力。

所以呢这个地方呢我们把数据放出来,它长成这个样子啊,它有两类样本点,一类样本点是这个地方的黑色的小叉叉,另外一个样本点是这个地方的黄色的啊,这个小圈圈我要把它分开,所以要学习出来一个决策边界好。

我们搞一点点多项式的特征出来,因为显然这个没有办法线性可分嘛,大家看到这幅图能找一条直线,是咔咔咔分不开的,所以怎么办呢,线性分不开,搞成非线性,所以他找了一个多项式的变换。

去把映射后的数据映射成最高六阶,就是最高是六次方啊,这样的一个一个多项式的啊,表达就是有X1的例六次方,X26次方啊,那又包括X1的五次方,四次方,三次方,X1的平方乘以X2,X1的立方乘以X2。

X1的立方乘以X2的平方啊,等等等等等等,反正这里头造了很多的这种,交叉项和多项式的特征出来了,然后我把这个多项式的特征,利用刚才的啊逻辑回归去完成一个分类,我同样去计算一下损失函数。

只不过这个损失函数,要记得加上尾巴上的正则画像啊,去加一个正则画像好没问题,然后底下这个地方是同样的方式去做调优诶,刚才有同学说,老师老师为什么那个问题里头不去做啊,超参数的不做这个参超参数的选择啊。

对啊,因为刚才不做调参吗,因为刚才那个linear regression太简单了,他没有要调的东西,大家现在看到这个地方,罗辑logistic regression,它有一个要调的东西叫做C的啊。

这不叫做拉姆达,就是这个地方的正则画像的强度,拉姆达呃,你先看图,先看图,拉姆达等于零表示什么意思,拉姆达等于零表示什么意思,拉姆达等于零,是不是说你们家这个天才的这个小孩,我管都不管。

你爱怎么学怎么学,你你自己你随便去学对吧,我不对你做任何的约束,所以大家看到最左边这样一幅图,是不加任何惩罚的,我不做任何的惩罚,你看他可以学得很扭曲,不做任何的限制,他可以学得很扭曲,它扭它很扭曲的。

这个结果很可能效果是不太好的,在新的样本上,大家看中间中间是我加了一个拉姆达等于一啊,就是我加了一些拉姆达,中间啊中间是我加了拉姆达,拉姆达等于一,说明我稍微惩罚了一下他,但是又没有太过。

大家看这个学习的这个曲线怎么样,是不是平滑了很多,你们看结果是不是平滑了很多,最后这个拉姆达等于100,拉姆达等于100,也糟糕了啊,拉姆达等于100来表示大多了啊,这个小孩就就就那个管的太严了啊。

打太多了,这个没有创造力了啊,也畏畏缩缩,不太敢去学了,所以效果就不太好,你看右边的效果就不太好,所以拉姆达太大和太小都不好啊,你不管它也不好,管太多了也不好稍微管一管,所以这个拉姆达怎么去调对。

后面会讲到具体讲到如何去调参,但是这个地方给大家一个基本的认识啊,基本的认识我这个代码,大家把他的kernel换成python3跑一下,我而且你们用过Python吗。

你们知道python2和python3的差别不是太大吧,就是大部分情况下是通用的,除掉print代码除法和啊,你的一些map filter这样的东西,它一个一个是迭代器,另外一个阐述结果是list。

差别不是太大,你要你如果要保python3,你把这个地方的cell你不PROCEL,你把这个地方的kernel,你把它换成python3的kernel去跑一下就好了。

我不知道大家装的JUPITER有没有两个环境啊,我自己本地的JUPITER是两个环境,都装了python2和python3,所以如果你们要做python3,你们就在你们自己配一下环境。

在kernel里头把把kernel换成python3的kernel,所有东西都可以跑,代码没有动啊,代码不用去动啊,这里头的代码是大部分代码是兼容的啊,除掉print这样的函数,其他的代码大部分是兼容。

所以你们直接跑就可以了,OK所以不要觉得python2和python3之间有太大的差异,没有你想象那么大的差异呃,呃至少对用户而言差异不是那么大啊,基本上你的可以感知的部分比较少。

当然了我是我也是很提倡大家用python3的,因为在2020年以后,那个python2是不会再维护他那些工具库的更新了,所以建议大家用python3,我这个地方用python2的原因是。

因为我公司的服务器投入的Python的环境,有些还是python2的,这是有些历史遗留原因啊,大家知道在前几年我们就开始用Python了,然后有一些项目当中用到了Python,是python2诶。

你要全切成python3的话,有一定的风险,线上的项目,这个意思好吧,对,那个是这个意思,如果大家用python3跑这个代码有有小问题的话,你们提出来,我们帮大家去改啊,其实改动的地方很小,明白吧。

就改动的地方其实很小啊,K好那个这个这两个就是那个呃我手写的代码,然后大家可以看一下,这个这个是实际工业界里头解决问题,我们用工具库去做啊,这个代码,然后这个里头就是读数据啊,包括读数据啊。

数据的处理啊,这个我们在后面会给大家讲啊,读数据和数据处理,然后它的建模很简单,它建模就这一行启动一个逻辑回归的分类器,拟合一下数据就完了,就一行对这个就是你用工具库和不用工具库的。

你用工具课不会用工具库的区别,OK啊,所以用了just regression,直接去feat一下data就可以了啊,多余的东西我不想,我不想给大家再啰嗦多说,你们如果在跑这个代码。

或者是查这个API的时候遇到了问题,你就在群里艾特我问就好了好吧,我的代码已经在课前啊,在昨天已经传到了我们的QQ群文件里,大家打开QQ群文件把代码拉下来,本地装一个anaconda。

就可以把它把我的代码加载起来,可以去跑,OK啊,anaconda是有python2和python2的,python3的不同的版本,大家用python3去跑,我这个地方这个代码也没有问题。

也是没有问题的好吧也是没有问题的,然后大家注意一下,这个地方的代码阅读是需要花一些时间的,所以我希望大家下课以后花一点点时间,去把我这个地方给到的这个啊,案例和代码去消化一下,OK去消化一下。

如果你们有问题的话,可以提一下,OK啊,然后我我觉得大家可以在学过一点点模型之后,再动手去做一点东西啊,回头我们会有一些小的比赛案例丢到大家手里,让大家去做,你们不用着急。

因为你今天学到的模型是很基础的模型,你在明天学完以后,你会学到新的模型,你会你需要去感受一下模型和模型之间的差异,这个东西对你的这个东西,对你的学习是有帮助的,然后案例我会传到我们的QQ的群文件当中。

然后大家那个去呃看一下好吧,然后自己去把这个代码拉起来去跑一跑,你去看一看里头的细节,最好的学习方式是在已有的代码上,去看别人是如何实现,以及里面需要注意的一些点。

这样啊我这个代码应该用python3跑是没有问题的,你们可以试一下啊,对啊,你可以试一下啊,我今天就给大家讲到这好吧,我就不再拖堂了,不好意思,今天那个因为第一次课,我想给大家把一些基础的知识。

和一些我的一些理解给大家那个说清楚,就没有赶时间,所以呃可能拖堂拖了一会儿,然后希望大家见谅啊,就是那个可能影响大家休息了,然后那个大家有更多的问题,你们就在那个群里面再找,再再艾特我去提问好吧。

对那个我就不再给大家再拖时间了,然后那个对就是你们有问题的话,你们就问,然后我我我有可能工作会啊忙,但是我看到的话,我肯定第一时间回复大家好不好对对,所以OK那我今天就给大家讲到这,然后大家辛苦了。

早点休息,你们有问题的话,你们在那个QQ群里去艾特,我再去问,然后我看到了,我会给大家做一个解答,参与大家讨论,好不好啊啊那个作业我说了,先把代码看一下,先把代码看一下,我现在让你建模。

你也做不了这个事情,对对,你先把先把这个地方我给到了四个四个代码,先去看一下,等你学完了几个模型之后,我会给你一个作业,会引导你去完成好不好,所以先不要着急啊,然后这个地方代码你一定要先看。

如果你不看的话,我给你一个题,你是动不了手的啊。

OK好好,谢谢大家,大家早点休息啊。

【七月在线】机器学习就业训练营16期 - P10:在线视频:1-机器学习基本流程,基础模型与sklearn使用_ev - IT自学网100 - BV1Z9T5ewEKL

好那么我们就开始我们今天的课程呢,嗯那么我们今天的课程呢。

我们在今天这呃两个小时呢,我们带着大家看一看,在呃机器学习里面,如何学习这个机器学习的一个呃实战部分,然后我们在今天这节课呢,我们会嗯,就是说呃讲解这个机器学习的一个基本流程。

主要是以SKN的这个库来要进行讲解,然后在这两周呢,我呃我就是来,就是说带着大家来学习机器学习的实战,然后呢我们的实战内容呢不会讲的特别难,但是也不会特别简单,就是如果对于SKN有掌握,有基础的同学呢。

可能掌握起来会比较轻松一些,当然你也不用担心啊,我们嗯就是说也会给到一些练习题给到大家,所以就是说你如果觉得呃,就是说讲就是说讲的不讲的太浅了,你也可以直接做练习题,这都是可以的,然后呢我是刘老师。

然后在这两周呢我会带着大家一起来进行学习,然后大家如果对我们的课程呢有什么问题。

也可以直接在我们的直播,直播的过程中呢提出来啊,我也都会,我也会第一时间看到就进行解答,然后我们首先呢来看一看,我们这个实战阶段要学什么以及要做什么,勇哥同学勇勇哥。

这位同学说每个模型都会用SK单练习一遍吗,大部分都会进行一个练习的,然后我们来看看我们这个阶段要做什么啊,其实在我们的一个机器云里面呢,我们在之前的阶段是其实学习了这个基础,再加上机器学习的一个原理。

那么有很多同学刚才已经有同学说了,就是说呃原理重要还是实战重要,这个呢其实两者都很重要,那么一般情况下呢,我们在学习一个机器学习的时候呢,其实是原理和动手都是要掌握的,那么这个呢就是说。

其实并不是说你只掌握了原理就能找到好工作,也也并不是说你掌握了动手,你也就能找到好工作,这两者都是需要掌握的,那么嗯我个人感觉呢,就是说原理它可以告诉你这个算法是怎么来的,但是呢动手呢。

可能就是给你增加一些实战的经验,那么这个实战呢,其实它往往都是从一些具体的例子,来进行一个讲解的,那么还还往往都是从一个库来进行讲解的,那么这个呢其实是可以增加你对算法的一个,具体的一个理解。

比如说我们在机器学习的一个原理的过程中,会讲解这个x g boost,那么在讲解X级boos的时候呢,我们的老师会给大家讲解他每他有哪些超参数,他的一个模型的一个学习过程是怎么样的。

那么在具体实践的过程中,是不是就是这样呢,大家可以在之后的课程可以体验一下,第三个呢就是说我们的一个实战呢,其实它是往往更接更加接近于具体的案例,这个案例呢其实更加能够帮助大家理解,工业级别的案例。

以及能够呃为我们后续的一个项目的一个,实践过程中啊,增加一些经验的,那么我们既然实战是非常重要的,那么我们如何进行实战,如何学习呢,其实也有一些嗯,学习的路径和学习的一些建议吧。

第一个呢就是说我们既然现在都是呃,大部分情况下,99%的情况下,都是基于Python环境下的一个而学习,那么我们就肯定是要学习这个Python的一个基础,对吧。

那么我们在之前的阶段已经学到这个Python的一个,pandas以及NP以及magiplot lib,这些基础的库的使用,那么在我们的实战部分呢,可能要学习一下这些呃机器学习的库。

那么在n Python下面呢,机器学习的库其实是非常多的,那么我们其实首先第一第一个点呢,就是说我们要学会使用这些库呃,这个使用这些库呢,就是说我们需要学会啊,所以我还是不放大啊。

我们是需要学会用这个库来完成一个,具体的问题,那么我们为什么我们不自己实现这个库呢,就是说我们既然学了这个逻辑回归,学到这个数模型,我为什么不自己实现一遍呢,当然我也是推荐大家。

如果大家有精力的情况下啊,你可以自己实现一遍,当然但是呢其实呃,你自己实现的可能会有很多的一些呃,在这个精度和这个运行速度上,没有已有的库好,那么已有的库呢其实是嗯更加稳定和通用的。

而且呢你学到这个已有的库呢,对之后的一个就业都非常有有帮助的,那么比如我们今天所讲解的的这个SKN,这个库呢其实在很多互联网公司,或者说所有的互联网公司,都有这种库的一个应用场景。

那么我们既然这些库很重要,我们如何学习呢,这个呢就是说你学习这个库,你就要学习它的具体的用法,以及它的一个场景和细节,这个是要需要需要学习的,然后呢学习完这个库之后,你不仅需要学习他这个库的具体使用。

你还要学习用这个库解决一些具体的问题,因为你学习完这个库,其实本质还是呃要学要解决问题的对吧,问题肯定是呃我们最终要解决的,那么在我们的实战部分,我们可能还会讲解,就是说在机器学习的这个领域里面。

我们会遇到什么问题,以及如何动手解决这些问题,这个我们都是会给大家进行讲解的,然后呢嗯还有同学问,就是说我们的实战和面试有什么关系,我们面试不就是讲呃就是说考察这个额算法吗。

或者说考察我们的一个项目经验吗,他跟这个实战有什么关系呢,其实这个面试和实战还是有一定的关系的,首先呢第一点就是说,其实这个实战的,它是能够体现你个人能力的一部分,而且呢这个库的一个使用是必备的。

有很多时候呢他的一个面试的问题,都是直接问这个库的一个基础,比如说SKN里面哪些函数,是可以用来做数据划分的,s kn里面的一个数模型有哪些哪些,那么我们对实战的一个呃项目。

或者说对这个课程这一个阶段的理解呢,其实也是能够帮助大家理顺一下,这个机器学习的算法的应用流程以及案例,也是这个必备的技能啊,也是必备的技能好,然后呢这个是我们第三点,就是说实战和面试有什么关系。

然后第四点呢我们就看一看,其实我们这个实战部分我们要学什么,其实有一些库我们大家已经学习过的啊,我们就不会进行讲解,然后呢其实在我们的实战部分呢,其实主要学两部分的内容,第一个还是库。

这个库呢就是说我们Python环境下的这些库,你是需要掌握的,比如说pandas long psk,N x g,boos h b m以及chaos tensorflow pythority。

这其实是深度学习的库啊,这是深度学习的库,那么我们在我们这两周的过程中呢,可能会讲解一部分深度学习的代码,但是呢我们不会讲的很深,然后呢在这个库这个阶段呢,我们还会嗯给大家介绍一下。

基于spark的这个呃这个大数据开发的能力,然后呢这些是库的使用,或者说是技能的使用,然后还有一些是知识的,这个知识呢,就是说我们的一个呃呃,机器学习和数据挖掘的一个知识,比如说我们的特征如何编码。

我们的数据如何进行分析,我们的一个嗯数据如何进行构建,以及我们的数据如何进行划分,以及一些具体的一些案例和解决方案,好这是我们第四点啊,就是具体的学习内容,然后第五点呢就是说嗯其他的一些相关问题。

这是之前的一个呃,就是说我们这个阶段呢,有一些同学问到的问题啊,收集了一下额,第一个呢就是说实战部分能不能不学,直接学就业案例,就是说有同学就是说我觉得实战太简单了,我能不能学就业案例,额。

这个是可以的,如果你有基础的情况下,且你觉得讲的太简单的情况下,你可以直接跳过,这个是没有关系的,因为我们都有录播,第二个呢就是说实战的API,特别是我们上面所说的这些库的API。

我不记得是不是需要背下来,额这个不是的,你不需要背,你只需要在用到的时候能够找到就行了,第三个呢就是说实战的学习太枯燥怎么办,其实实在进入实战这个阶段,可能就大部分的情况下,都是一个写代码的过程啊。

那么写代码可能对于有同学来说,他可能是比较枯燥的,那么我建议大家还是要学会啊这个调试代码,如果你按照这个一部分一部分来调试代码,可能是呃啊啊,我觉得原理更枯燥啊,这个分人啊。

分人有的同学可能就比较喜欢这个公式推导啊,有的同学就比较喜欢公式推导对好,那么这是我们这一阶段要学到的问题啊,学学的内容啊,以及一些相关的一些点,我们在开始的一个嗯学习的过程之前呢。

我们会给大家讲清楚啊,这个好,那么我们就开始我们今天的一个学习啊,那么我们今天的一个学习呢,就是主要讲解这个机器学习的一个基本的流程。

那么我们这节课呢,我们会花这个呃一个多小时给大家讲,s kn这个库,以及用一些案例给大家讲解s kn嗯,他的一些具体的API的使用,首先呢我们看第一部分,就是s kn的一个建模的要点。

首先呢我们来看SKN的一个介绍啊,那么我们这个地方先把这个这个移开一点啊,那么SKN呢其实它是呃Python环境下的,非常强大的机器学习的库,它基本上能够解决所有的你能够看到的呃,机器学习的问题啊。

因为s kn里面包含了很多的一些,机器学习的呃,他的一些算法的实现,那么在SKN里面呢,这个图是s kn它啊官方的一个导图啊,就是说当我们遇到一个机器学习的,一个问题的情况下。

我们如何判断我们用什么样的算法,那么其实这个呢其实是一个比较好的一个,就是说呃分支脉络啊,或者说是一种思考模式,首先呢当我们拿到一个问题之后呢,我们首先可以看一下我们的一个问题,所拥有的样本的个数。

这个样本的个数是不是足够多,比如说他是足够,他的样本的个数是大于50的,50个的情况下对吧,如果是小于50的情况下,那么就说明这个数据集其实是太小了,我们不足以完成机器学习模型的训练。

如果是大于50的情况下呢,我们接下来看一看我们的一个标签的一个情况,我们标签到底是需要是不是需要额,就是说呃做一个具体的一个分类,那么如果是分类的情况下呢,我们可以进一步的划分把刀。

就是说你如果是分类的情况下,那么如果是有标签,有标签的情况下,那么就是分类任务,如果是没有标签的情况下,那么就是一个聚类任务对吧,把我们的一个样本把它聚到一个个的类别里面。

如果是我们想要完成的一个目标呢,它是不是一个分类任务,那么我们接下来可以把它划分成,我们具体是一个回归任务,以及到底是一或者是不是一个降维任务对吧,那么对于我们的有监督任务,就是我们的一个分类和回归。

这是主要的,那么我们再看其中其中一个分支啊,比如说对于回归呃,对于我们的分类来说,卡了吗,可以刷新一下啊,刷新一下,然后呢我们就看我们的一个分类的一个分支啊,就是说如果我们在看单独的一个分类的分支。

情况下,我们就看看我们如何判断,我们的一个具体使用哪一个算法,那么对于此种情况下呢,我们可以根据我们的样本的个数,就是如果我们的样本的个数足够多的情况下,我们用什么样的算法,如果我们的样本个数不足。

不是特别多的情况下,我们用什么算法,然后呢根据我们具体的一个样本,它到底是不是文本,我们可以根据嗯它进行进一步的划分,那么我们的一个就是说如果是按照这个卖的话,你可以看一看。

就是说基本上我们最终就可以映射到,或者找到我们具体用什么样的一个算法,所以说嗯上述这个PPT里面显示的所有的算法,在SKN里面都是有实现的啊,就是说分类,聚类回归以及降维在SK那里面都是有实现的。

那么sk learn呢,它全称sin keh learn啊,是这个Python环境下功能最强大的机器学习的库,它涵盖了机器学习的各方各面的,一个细节和实现,那么这个呢就是说它基本上是包括。

所有你能想到的机器学习的一些细节啊,而且呢它涵盖了大部分的机器学习的算法,以及提供了标准的实现流程,那么SCHN呢,它底层是以是用这个long派来实现的哦。

那么大家也知道long time底层是用这个嗯C加加,那C和C加加那一些,所以说它在效率上其实是有保证的,而且呢s kn它是提供了标准的API,文档以及学习路线啊,我们待会可以看一看s kn的一个文档。

其实写的非常清楚,那么如果我来推荐大家来学习,Python环境下的机器学习呢,我会推荐大家学习这几个库啊,就是pandas,Npis clearngbm,或者说叉t boos以及TENSORFLOW。

PYTORCH这些深度学习的库,那么这些库呢基本上是涵盖了Python环境下的一个,机器学习,深度学习的一些嗯,就是说技能啊,所以说大家也可以啊,就是说参考这些库来进行一个学习。

那么我们刚才所就是讲的SKN,它其实是非常强的,那么它如何强大呢,我们这个地方举举两个例子啊,首先呢SKN它提供了非常丰富的一个,机器学习的模块,我们举个例子就是数模型,那么我们从我们看这个代码啊。

from eclient import tree这个模块,然后呢我们假如说想要定义一个分类数,decision trick的class file,然后呢,我们的一个节点的分裂的一个准则。

是这个ENTROP,然后呢我们想要让我们的模型,就是说这个地方第一行是实例化,我们的一个输入模型,然后一行代码完成训练,fit这个地方T就是我们实例化的一个数模型,然后费城呢。

就是说给定我们的一个训练的一个数据,以及它对应的标签,构建一个我们的数模型,然后在我们的测试集上进行一个预打分,这个地方的一个点score呢,我们传入测试集的数据以及测试集的标签。

我们直接得出我们在测试集上啊,这个地方的score呢它默认是计算的准确率,就是我们的ACCURRENCY,然后呢假如说我们想要在我们的测试集,或者说在新的样本上面做一个预测,我们就是点predict。

点predict就行,当然我们假如说想要在我们的一个利用,我们的一个数模型,在我们的所有的样本,所有的数据集上完成一个交叉验证,那么我们直接调用这个cross validation score。

这个函数就可以完成这个交叉验证的一个步骤,那么大家可以看一下,就是说我们在SPN里面一个模型分为FEIT,就是训练,Score,就是打分,predict就是预测,那么在SQL里面呢。

其实它所有的一个机器学习的模型,都是包含这几个函数的啊,那么这个呢我们这个大家注意的一点啊,需要注意的一点就是说s kn里面的一个class,一个类,其实它是以大写的,它是大写的啊,adapt哦。

adapt classif它是大写的啊,大家看一下首字母大写的,那么这种首字母大写的情况下,它就它大家也知道这是这是一种命名规范对吧,那么在Python的,特别是在s kn这个库呢,它是用这样就是取名。

就告诉我们这是一个class,是个类类型,然后呢在SCN里面还有这种函数的,比如说我们这个地方第二行from s cln,对data AI import make classification。

那么这个make classification呢它是一个小写的,首字母小写的,那么它就是一个函数,所以说呢在SCN里面,你基本上是可以根据这个呃,就是说这个呃变量的一个命名命名啊。

就可以判断它到底是一个函数或是类,那么在SQL里面的每个函数和模型呢,他都写的非常清楚啊,比如说我们这个地方的一个呃,我们的一个adapt adapts classifier。

他的一个文字介绍它的调用方法,以及它的参考文献都写的非常清楚啊,我们可以切到他的一个参考额,就是它的一个文档啊,那么我们这个地方打开的呢,就是s kn的一个呃官网,Scikit learn,点ORG。

然后呢,假如说我们想要找里面的一个具体的算法,比如说我们想找里面的PCA,那么我们可以看一下他的PC,我们点开的是这个PC这个库啊,这个呃这个class,那么我们可以往下翻,在这个在这个下面。

由于它的一个具体的使用方法,我们想要它的保留的主成分是多少,以及我们具体的一个使用的函数,以及它的一个参考文献都是写的非常清楚的,所以说我们假如说想要使用这个库呢,其实是非常方便的对吧。

我们直接用s kn对吧,from s cn点这个降维的模块,Import pca,然后我们这个地方呢在进行实例化,PC的时候也是一样,首先把它实进行实例化,然后呢进行fit对吧。

大家也知道对于PCA来说呢,其实它本质也是一个呃,就是说它本质也是一个我们的一个呃,无监督学习模型对吧,它用来作为降维的,那么对于降维的模型呢,其实在SKN里面呢,它也是用费城来进行一个额。

就是说来进行个礼盒的,这个费城呢不仅仅是用就是说训练的意思,它也是一个礼盒的意思,有些没学的原理呃,原理不明白啊,呃其实是这样的啊,其实这样的大家可以先看一下,我们这个这个这个思维导图,大家发现就是说。

其实这里面的每一个机器学习算法,你其实可以把它划分,每个机器学习算法,我们就可以把它划分成分类回归降维聚类对吧,那么你把它划分成具体的用途的情况下,你先可以结合,就是先把它用起来。

然后再去看书也是可以的,就是说你可以先学习原理再去用,也可以先用再去看书,也都是可以的,这两者都是可以结合的,也并不是说额就是说要把它学懂了再去用这个,也就是说都是可以的,都是可以的。

我是比较建议是相辅相成的一种形式啊,相辅相成的一种形,然后这位同学说他推荐李航老师的书啊,都可以啊,你不管是看李航的统计学,统计学习方法,或者说是周志华老师的嗯,就是说机器学习都是可以的,都是可以的。

那么SKN呢,它为什么是Python环境下最通用的机器学习库呢,因为它包含了非常非常多的一些,不仅是包含了机器学习的一个原理啊,它包含了数据的预处理模型的选择,降维方法。

以及包含了我们常见的一些应用场景,的一些模型分类,回归聚类都是包含在里面的,所以说你假如说想要找,想要用这些具体的机器学习模型用起来,那么SK呢肯定是你最最就是第一选择啊。

比如说我们想要假如说用我们的一个,我们的一个随机森林对吧,Render,对吧,大家可以看一下random first classify,Random first regression,对吧。

一个是分类期,一个是回归期,对吧,假如说我们想要逻辑回归,对吧,Logistic regression,那就是green对吧,假如说我们想用其他的一些我们的领回归对吧,或者说其他的一些我们的一个呃。

分类器都是可以来嗯,就是说很快就能找到的,这个地方,我们直接是用这个浏浏览器的一个CTRL加F啊,然后搜关键字就可以搜到的,然后呢这个地方其实大家也可以看到啊,大部分的一个s kn其实他写的非常清楚。

我们还是用这个,Windofirst,大家可以看一下这个地方,叉叉CLASSIF,叉叉regression对吧,其实就写的很清楚,什么什么的分类器,什么什么的回归系呃,这个在哪看啊。

这个直接打开SKN的官网,我待会会把这个我看一下,这个发到群里啊,SKN的官网,你点开之后,然后点这个API,点这个API对吧,就可以找到这个具体的一个链接了,然后你就可以在这个链接里面搜。

你具体的想要的算法,想要的算法对,是不是很方便,比方假如说我们想用这个tree decision,tree decision哦,直接搜trap对吧,这个地方左边是这个模块啊,左边是这个目录的模块。

然后右边呢是他的DC线程train,勇哥说看SKN的中文手册更好,嗯这个地方呢我不是不是反感看中文手册啊,我绝对不是反感看中文手册,但是呢毕竟啊毕竟就是说英文它更新的更快啊。

呃中文手册大部分是国人自主翻译的啊,就是说难免在一些细节上有差有误差啊,你如果觉得看英文就是说有点困难的情况下,你可以去看中文的手册,但是我个人比较建议你去看嗯,哈英文官方的API嗯。

而且但是就是他的一些API,基本上没有用到很复杂的单词啊,而且SKN里面假如说你不懂他的一些具体的用,就是说他的一个就是一些常用的术语啊,你可以在这个这个s kn,它很方便的给了一个术语表。

比如说我们来看一看啊,他给了个数字表,比如说这个叫什么叫binary classification,Mute classification,Mutual classification,对吧。

以及什么是feat,这个在SKN他都给清楚了,这个术语表啊,都是基本上都是一些常见的单词,而且看了之后他的文档写得真是非常好啊,所以说嗯我是推荐大家如果有能力啊,以及想学好的同学。

那真的是想就是说非常建议学习一下好,那么这是我们的第一部分,就是SKN的一个介绍啊,初步介绍,然后呢我们再看一看s kn的一个建模技能啊。

就是它包含了什么样的功能,那么其实呢SK呢它包含了,基本上包含了额机器学习,他在运用到具体问题,就是解决具体问题的时候的各个步骤啊,它都包含了,比如说数据的预处理特征,编码特征,工程模型的训练与验证。

产能机器学习模型,模型的评价函数以及误差分析,这些呢这些模块在SC里面都包含了,所以说你假如说学习S可能基本上是一步到位,就是不需要关注,你可以不关注它的原理,你可以直接用SKN来完成所有的一个操作。

这个都没关系,这个都没关系,所以说大家就说如果有面试经验的话,你就会发现我在面面试的时候,面试官问我一大堆的问题,再具体就是说进入了这个岗位之后,其实发现就是用的这些库,这个是很正常的。

所以说现在一些机器学习算法工程师,都是本质都是在调库,其实本质也没有对这个算法有什么改进,这个这个本质就是这样的,但是为什么我们还是要学习这个原理呢,其实这个原理它能够帮助我们更好的用。

更更好的解决问题,以及更好的用这些库,对有同学问这个模型的对应的输出模型,对应的输入数据维度和输出数据维度,在哪可以看呢,我们待会会讲个例子啊,讲个例子你可以体体体会一下啊,待会我给你讲个例子。

可以体会一下,我们首先呢来看一看在SKN里面,它包含了数据的一个预处理啊,首先呢是这个标准化,大家也知道对于我们的一个呃,就是说一个数据而言呢,其实它很多情况都不是说,直接能送到我们的模型里面的。

我们在之前的原理的过程,讲解机器学习原理的过程中呢,我们老师可能会给大家讲到,我们的数据呢可能要做一个标准化对吧,嗯我们可能是需要用这个嗯减去它的方差啊,减去它的一个平均值,然后除以它的方差。

让他把把它变变成一个标准的一个形态,或者把它转成一个正态分布,那么在SKN里面呢,它还提供了其他的一些scanner,这个scanner呢你可以理解他就是一个标准化,不同的标准。

比如说你可以用这个MIUGINNER,那么这个mini next gner是什么原因呢,我们来看一看他的文档啊,其实都是非常简单的,我们来看搜一搜他的文档啊,我们搜这个min max好找到他的。

那么这个MMAX根呢,它它的编码方法,它的一个预处理方法是怎么样的呢,当我们输入X的时候,这个X呢它是一个,我们你可以理解它就是111列啊,一列活动,或者说你可以试他就是呃一个单独的一个特征。

那么这个单独的特征呢,我们先先看下它的分母,分母就是一个这单这一列的一个最大值,减去最小值,然后分子呢是这个单独一列减去它的最小值,那么这个呢相当于是我们把这一列用他的LINUX,当做它的命。

它的一个级差对吧,最大值减去最小值称为极差,当他的一个分母,然后呢把它做一个具体的一个转换,当成它的分子,这个呢就是说我们直接用一个MMAX,把它做一个转换对吧,然后呢我们把它转换之后呢。

还可以把它转换,当然也可以把它转成这个min max的啊,当然也可以把它转转换回去对吧,然后呢这个min max呢,它就是说额其实是使用到的,这一列的最大值和最小值来进行计算的,当然有一些其他的。

比如说我们用这个max abs,就是说next abs跟哪的,就是说我们这个特征呢,除以它的一个绝对最大值,绝对最大值对吧,那么就是说不同的一些我们的一个呃,就是说预处理方法呢都是可以的。

那么在excel里面呢,它其实一些一些函数啊,一些操作都是放在一起的,比如说我们刚才所讲的这些scanner呢,都是放在这个叫as s cl点propose嗯,prepose passion啊。

这个预处理这个模块里面啊,所以说我们其实可以很方便的可以找到啊,那么在SKN里面呢,它还提供了这个我们前面所讲到的呢,这个是基本上是这种常规的skin,当然还有一些其他的啊这个非线性的一些转换。

比如说把它做一个分位点的转换,或者说把它做一个嗯,就是说嗯指数变化都是可以的,那么我们在SKN里面呢,还可以把它就是说我们这一列呢,把利用这个预处理模块把它做一个额,就是说取他的一个L1或者L2。

你把它转成一个呃,就是unit norm,这个都是可以的,然后呢在SCN里面呢,它可以利用我们的这个IMPULT这个模块呢,完成这个缺失值填充对吧,我们的一些机器学习的算法呢,它是有很多的一些模型。

它是不支持额包含缺失值的一个数据的对吧,我们如果想用这些模型呢,我们可能要首先完成一个缺失值的填充,那么在SCN里面呢,是支持一些缺失值的填充的方法的,那么在之后的一些嗯实践过程中呢,我们也会给大家讲。

它包含了哪些缺失值填充方法,那么在S坑里面呢,它还包含了一些特征的一个预处理方法,比如说我们的一个特征的常见的编码,Neighbor encoder。

完后请encode以及我们的ordinary encoder,都是额这个常见的一些特征的编码的操作,都是在SK里面所包含的,那么我们给大家讲一个,就是说先举个例子啊,就是说我们特征编码到底在做什么。

那么我们假如说大家去应聘的情况下呢,其实呃很多的很多时候呢面试官都会问啊,这个我们给一个数据的情况下,你如何对这个数据集进行编码,或者说我给一个数据的数据集的情况下,你如何对这个数据集做一个特征工程。

这种呢其实是常见的一个呃面试的一个问题啊,这个是常见的面试问题,或者说对于一个字符串的一个字段,我们如何对它进行编码,那么这个这一类问题呢,其实就是一个特征工程的一部分,那么我们首先呢在这个地方呢。

大家首先要理解一个概念啊,或者说弄清楚一个呃两个名词,就是说数据挖掘和机器学习到底是什么,它们之间的区别是什么,那么我们如果大家现在学习机器学习,或者现在学习数据科学呢。

一般情况下都是直接学习机器学习是吧,直接学习机器学习算法,但是呢对于老师我啊,我是这个old school的这个程序员呢,我是在这个10年左右,就开始看一下这个机器学习的一个原理的书,然后呢在当时呢。

其实机器学习的一个它的一个名字啊,最开始它还有一些分支叫这个模式识别,不知道大家知不知道,那么其实在早期的时候呢,机器学习它是作为这个数据挖掘的一个子流程,他是他是作为数据挖掘X流程。

数据挖掘它是更加关注于全流程的数据采,从数据的采集,数据的一个编码,再到模型的构建,再到最终的一个模型的部署,所以说数据挖掘和机器学习,它的一个主要的区别就在于数据挖掘,它其实是更加关注于数据全流程的。

那么数机器学习呢更加关注于这个模型的构建,与它的优化好,那么我们讲了一大串这个数额,数据挖掘和机器学习的一个区别,我想表达的意思就是说,如果一个你想成为一个合格的算法工程师。

你就不仅仅是要弄懂这个机器学习的一个原理,和它的应用,你还要掌握我们如何把数据把它转换成模型,它需要的形式,比如说我们看一看啊,我们这个原始数据它是一种JSON格式的啊。

是类似于这个Python环境下的,Python语言里面的这个DK是格式,那么这个DK的格式呢,它其实是一种非规整的形式啊,假如说我们最外层的零是表示的是这个呃,一个样本的一个样本的id,然后呢。

原始的数据集里面还包含了一层这个house info,然后这house info里面有一些字段,Number rooms,Number bedrooms,以以及这个STRATEWAY。

相当于是这个街道的编码,以及这个lo basement rooms是个一好,那么接下来就是说,假如你遇到了这四呃四个特征,你怎么对我们这四个特征做一个编码呢,对吧。

其实这个呢并不是说是一个嗯机器学习的语,嗯模型的问题,但是呢其实是我们日常生活中,或者说在实战的过程中,经常会遇到这个问题,就是说我们拿到一个字段的情况下,我们如何对这个字段进行一个编码。

比如说我们对于数值字段,其实我们的现在的机器学习的模型,大部分都是直接可以识别,或者直接可以输入这个数字段对吧,那么我们对于数值字段我们可以不做任何处理,但是呢对于这个字符串字段,其实我们现在继续模型。

他是不能直接输入字符串的对吧,它本质还是完成这些计算,那么我们对于这个字符串我们怎么进行操作呢,我们可以做把它做一个编码,比如说我们用这个独热编码,独热编码呢就是one hot encoder。

one hot encoder呢,他的意思就是说,我们把它转成一个稀疏的一个向量,那么这个向量里面呢一就代表它对应的位置啊,就是说对应的取值零呢,就表明它就是说没有取值。

那么对于呃这个呃这个是shore bird一个呃位,然后呢对于这个嗯字符串进面板呢,它的一个操作就是说,我们首先统计一下这个stress name,就是所有样本的string name。

它总共的一个空间是多少,就是总共包含多少个独立的字符串,那么我们把它做一个one hot,就是说我们把它转成一个1×5的一个向量,在某一个位置它取值为一,其他的位置取值为零,就one o k。

One o k is hot,比如说one o k是编码的,然后其他的位置都是没有编码的好这是one hot,编码数值一般要标准化,标准化规律化吗,哦这个呢其实是这样的,对于不同的机器学习模型。

它的就是说是不一样的对吧,比如说对于线性模型,我们一般是要做这个预处理的,那么对于数模型其实我们可以不做是吧,那么对于不同的机器学习模型,我们是可以就是说区分对待的,那么在SKN里面呢。

它不仅仅是包含了这些,这些数据的一个预处理啊,它最最核心的就是说,它包含了很多的机器学习的模型,而且这些机器机器学习的模型呢,你可以在不不理解它原理,或者说不去弄懂,不去深究它原理的情况下。

就可以很方便地进行使用,在SK里面呢,其实他所有的机器学习的模型,模型都是有四个函数可以进行调用的啊,fit模型的训练,或者说模型的拟合,predict模型的预测。

predict pro这个probe呢就是probability模型,预测概率值啊,这个predict是直接是预测成标签,这个predict probability呢,是预测这个标签的一个概率值。

然后这个score呢默认是打分,做一个准确率打分对你可以就是记住啊,这个四个函数是可以记住的,就是所谓的GSKN里面的嗯,机器学习的模型都是支持,大部分都是支持这些四个函数的,而且呢SKN里面它支持了。

嗯老师,那有同学问老师,那一个优秀的算法工程师,的核心竞争力在哪些点上,这个其实蛮多的,就是说在知乎上也有蛮多讨论的啊,一个优秀优秀的算法工程师,他的核心竞竞争力,我个人认为在于能不能快速解决一个问题。

核心竞争力就是你能,就是说能不能快速解决一个问题,如果都是掉包的情况下,那就是谁看谁掉的快呢对吧,谁掉的快呢,就是说我现在你有这些库,我有这些库对吧,看谁用的更好,这个就是核心竞争力。

只能叫算法应用工程师,那你本质上就是这样的,你去不管你是本科还是硕士呃,或者是博士,你去嗯,互联网公司90%的岗位都是算法工,他所谓的算法工程师都是解决具体的问题,他没有开发算法。

他都是用算法去解决具体的问题,还是业务问题,额第一个是对于这个具体库的一个使用,就是说你能不能把它用的很熟练,第二个是对业务能力的一个掌握,熟练掌握程度啊,额一般情况下业务能力我觉得嗯不是制约。

就是说现在很多场景下嗯,就是说不管是互联网啊还是金融啊,很多场景下其实业务并不是很复杂,往往是这个具体的一个额建模的能力,可能是一个就是说能够考察大家的点吧,对就是说嗯是不是数据处理能力很重要。

嗯数据处理能力当然很重要,这个肯定很重要,就是说我举个例子啊,我举个例子,你如何用pandas,你如何用pandas完成一一千万行数据的一个呃,读取并完成它的一个特征工程,就是说你假如说你现在的一个。

你现在就是你的笔记本,你能不能完成这个操作,对,或者说你能不能用pandas完成,你想要提取的特征,比如说我们前面举个例子啊,这个举个很简单的例子,比如说现在你想要你用这个已有的库啊。

数据的预处数据预处理,这个数据处理的这个pas的库,你假如说你想要统计number rooms,Along number bad rooms,它整体两列的一个相关性。

或者整体它两列构造出一些新的特征对吧,其实这个呢就是很基础的,你要把这个数据处理的一些库给他掌握好,当然我这个地方是只举了一个很简单的例子啊,这个数据处理里面还包括这个数据的一个清洗,数据分析对吧。

以及数据的预处理都是很多的,然后呢我们就回到我们PPT啊,大家如果还想就是说提问的情况下呢,也可以继续提问啊,对然后呢在SKN里面呢,它其实是支持的,它支持的一些机器学习模型呢都是比较基础的。

都是比较基础的,但是是一般情况下,都是在涵盖了我们现在所有的机器学习的教材,里面的啊,比如这个线性模型,数模型以及神经网络以及无监督学习模型,在SKN里面都是有具体的一个实现,但是需要注意的是。

就是说SSKN呢,它是不包含这些高阶的一些数模型的,实现比如说呃这个呃charge boost,Nice,Gbm,Catch boost,这些呢都是在s kt里面,它是没有具体的实现的。

那么SKN的一个神经网络呢,在SKN里面它也有全连接网络的实现,在SKN里的全连接网络呢,它是实现了这种CPU环境下的全新用全连接网络,它是没有实现GPU环境下的一个全球网络,对好。

然后就是说这个SK呢,它是基本上涵盖了基础的一些,机器学习的模型嗯,呃有同学问,用大量的数据和小量的数据,在使用pandas的方法上一样,在性能和机器要求上有哪些注意的点呢,这个就细节蛮多的。

就是说我们在使用pandas的时候呢,首先有哪些点你需要注意的,第一个是数据的类型,就是你读取数据集的时候,数据的类型你需要注意,其次是数据的一个处理,就你具体的处理函数。

就是说是不是嗯就是说能不能进行矢量化加速,这个呢都是非常非常关键的,有些pandas的函数它是是串行执行的,但是有一些函数它是其实是可以把它转成number派,这种矢量化执行的,对都是有很多细节啊。

这个细节都蛮多的,比如说在pandas里面的apply对吧,其实他都是哦,就是说在速度上可以做蛮多的一个加速,能不能讲讲这方面的一个实力啊,可以呀,呃我们我们下节课吧,下节课我找找找几个例子吧。

因为这节课我没准备对下节课啊,下节课,那么在SKN里面呢,它还支持了这种数据的一个,我们的一个评价函数啊,就是评价指标以及误差分析,它不仅仅包含了这种回归的分类的啊。

无监督学习的以及一些排序等等问题的一些,就是说评价函数在SKN里面都有包含的,一些实现,所以说你假如说想要计算这个UC呀,要计算这个logo loss啊,其实直接用SKN就行了。

好那么前面呢我们就用这个在第二部分呢,我们就讲解了这个s kn它具体的一些呃,就是说他的一些包含的一些模块对吧,那么我们接下来就看一看,s kn如何用它的一个额,就完成一个具体的一个建模。

首先呢我们来讲一讲在这个地方,可能在之前的课程可能已经有讲过啊,就是说哎我们的数据划分方法,那么在我们讲具体的一个嗯实践的过程中呢,其实数据划分方法呢是非常重要的,数据划分其实它非常非常重要。

就是说首先呢我们在遇到一个问题的时候,我们首先要确定这个问题的到底是什么对吧,我们这个问题到底,我们前面这个PPT所讲到的问题到底是回归啊,分类啊,还是聚类还是降维,确定的问题是什么。

之后接下来我们要确定什么,我们就要确定我们数据的一个具体使用的算法,对吧,我们到底是用线性模型还是数模型,还是等等其他的模型,然后第三步呢,我们就要确定我们的数据划分方法。

这个呢就是要确定我们具体要使用的训练集,以及我们的验证集,以及我们的测试集到底是由什么组成的,这个其实非常重要的,那么在很多情况下,其实我们的一个数据对于我们的数据集而言啊。

我们的训练集以及测试集都是给给定的对吧,很多情况下我们的训练集和测试集是给定的,我们很多情况下呢,我们的一个呃就是说验证集它有可能没有给定,验证集没有给定,那么我们验证集我们如何进行划分呢。

这个可能大家如果知道的啊,你可以就是说我们稍微讲快一点,如果不知道呢,大家这一点其实非常重要的,有三种数据划分方法,就是三种验证级划分方法,第一个是流出法,就说我们直接按照比例原始的训练集。

我们把它按照比例划分成训练的部分,以及我们的一个验证部分,第二种,第二种方法方法呢我们叫这个cross validation,交叉验证,cross validation呢。

我们就是说把我们的数据集划分成N份啊,这个地方挡住了啊,应该是啊K分啊,K分或者N份,然后呢对于K分的,或者说把它划分成K分的情况下呢,我们对于每份这个嗯这一份啊,这个一般情况下。

KK呢它是小于我们的样本的数量的,所以说我们每一份其实它包含了嗯,可能包含几十个几百个我们的样本,那么在每次训练过程中呢,我们会随机啊,就是说循环选择一份做我们的验证集,比如说在第二次我们训练的时候呢。

我们用第二份做我们验证集,第在第三次训练的时候,我们用第三份做我们的验证机,这是K折交叉验证,那么K折交叉验证,其实它和流出法其实是很类似,在每次训练的过程中呢,其实它就是单单次的训练过程中。

其实就是一种流出法,只不过呢K折交叉验证它的一个数据集,它每份在不同的部分充当了验证集对吧,还有一种方法就是我们的采样法对吧,自主采样不是STP,那么他是从我们的原始的数据集里面,做一个有放回的采样。

得到我们的训练部分,以及我们的一个验证部分好,那么我们的数据这是数据数据集的划分方法,就是说怎么划分得到数据训练集以及验证集啊,那么主我们在具体的实践过程中呢,主要是用我们的流出法和K值交叉验证。

两种比较多啊,K折叠乘验证它的优点,就是说是能够训练得到K个模型,而且这K个模型在一定程度上是,拥有一定的多样性嗯因为他的一个数据集,参与训练的数据集是不一样的,那么K值这交叉验证它的缺点。

就是说它的复杂度是稍微高一点的,需要训练K个模型,那么如果数据量比较大的情况下,如果我们拥有的数据量比较大的情况下,我们可以直接用这个流除法,如果你想要追求精度的情况下,你可以用K折交叉验证啊。

如果我们的数据集比较小的情况下,你可以用这个嗯,不是strap采样的方法好,那么我们刚才所讲的呢是我们化数据化的方法,第三个呢就是说额这个还有一个呢,就是说我们的数据的一个具体的应用流程啊。

这个呢就是说我们在具体的使用到一个,用使用一个模型来进行建模的过程中,我们怎么知道,或者说怎么根据我们模型的一个阶段去进行,就是说下一步的操作呢,这个其实也有一定的一个实践流程的。

这个思维导图呢是温达在neo lips上面的,一个就是问答,它原始的一个PPT上面的啊,我截取的,那么我们在应用机器学习的算法的时候时候呢,首先呢其实是有一定的具体的流程的。

我们首先呢看一看我们的一个训模型的,训练集的一个误差是不是比较高,如果我们的模型在训练集的误差,就比较高的情况下,那么说明此种情况下,我们的一个模型的一个误差,是由我们的一个偏差所占据。

那么我们可以要做的呢,可能就是说用更大的模型训练更长的时间,以及用其他更好的一个模型的网络结构,去获得比较好的一个训练的精度,如果我们的训练集的一个误差,就是说他已经比较低了。

但是呢我们的验证集这个train d EV呢,就是说我们是从训练集里面划分得到了验证集,它的一个误差比较高,那么此种情况下,那就是说明你训练集误差低了,但是呢在验证机的误差比较高。

那么说明你的一个模型是过拟合了对吧,那么你说明你此时的一个模型的一个误差呢,是由这个方差所占据,那么你可以考虑加入一些正则化方法,或者说用更多的一个数据参与我们的一个训练。

如果我们的模型训练集的误差比较低,验证机的误差也很低,然后在我们的DVL,这个DEVL是我们的公开测试机啊,就是说你可见可见的测试机,可见的测试机它的误差很高,那么就说明这种情况下。

就说明你的一个验验证集和测试集啊,这个验证机这个DEVL啊,这个DEV是可见的一个测试集啊,这两部分的一个数据集它是分布不一致的,说明你的train test data是mismatch。

就是它是不匹配的,那么在此种情况下,我们在划分验证集的时候呢,你尽可能把我们验证集的一个数据分布呢,让他去和我们的最终的测试集更加匹配,那么如果我们的模型训练集的误差很低,验证机的误差也很低。

以及我们的公开测试集的误差很低,但是呢最终假如说我们模型上线以后,你的具体的上限,上线的一个最终的实践的过程中,你的一个误差很高,那么这也是有可能的,就说明你的一个公开的一个测试集,其实你也过拟合了。

那么有很多同学就是说不理解这一点,就是说我们为什么还能过礼盒验证机,为什么还能过拟合测试集,其实我们的机器学习模型,其实你只要有这种打分反馈的一个情况啊,你就有这种调参的这种就是说要机会。

那么只要有调仓的机会,那么你就有过拟合这个数据集的一个可能性,所以说我们为什么会用这个,未未知的一个样本来预测,或者说用为为什么用这个未知的样本来验证,我们模型的精度呢,就是有这种一种考量啊。

所以说大家在具体应用到一个,具体问题的时候呢,我们就是可以用这个思维导图来进行一个啊,具体的一步一步来进行一个实践,那么我们在具体的一个,具体的一个应用的过程中呢,其实我们怎么能完成建模呢。

首先呢把我们的数据集划分成训练的部分,以及测试的部分,然后确定好我们的模型,然后呢,我们首先呢需要对我们的数据集,进行一个预处理,而且需要对我们特征进行一个转换,然后对我们的一个模型进行训练。

以及模型进行选择,然后我们模型训练完成之后呢,然后对对我们的模型的一个预测结果,进行一个后处理,然后最终最终得到我们的结果,然后呢,这个地方我们的一个机器学习的一个框架呢,它我们这个地方的思维导图。

它是涵盖了数据的预处理以及特征的一个编码,而且呢它还包括了这个模型的选择,以及模型的调参,那么其实呢这整个的这个步骤啊,其实这是我们机器学习,它具体应用到具体问题的时候,我们要做的。

那么其实这整个步骤呢,我们可以用一个工具叫autumn mon,就是自动机器学习的这个呃工具来完成,那么AUTOML呢其实大家如果有知道的话,其实AUTOMA这种自动机器学习呢。

其实在一定领域它是能够代替算法工程师的,在一定领域能够代替三种工程师,但是呢在很多情况下都是呃,还是不能完全代替啊,它只能在一领域能够代替,因为这个AUTOMI的一个嗯学习呢,其实它也是一种算法。

它也是在特定的领域领域才是有作用的,好那么这是我们第三部分,就是SKN的一个建模流程,我们其实也是以这个机器学习算法的一个,建模流程来给大家讲的,就是说我们模型的数据划分怎么样的,我们的一个误差。

在判定我们的误差的情况下,我们如何完成下一步,以及我们的机器学习的算法的流程是怎么样的。

好,那么我们接下来呢,就用一些具体的代码来进行实践吧,对吧好,勇哥同学说现在奥特曼家用的多吗,是不是还得学奥特梅尔额,其实是这样的呃,AUTUMON在特定的特定的领域用到的比较多。

就是特定的领域是比较多的,NAS是什么,n a as是这个NAS是一个呃网神经网,深度学习的网络结构的搜索方法,NAS啊,是深度学习里面的一个网络模型,结构的搜索方法,DEV啊。

这个地方的DEV是对应于可见的测试集,对可见的测试集,然后这个test呢是这个未见的未知的啊,或者说未来的一个测试集,或者说是线上的测试集,那么大家如果额自己学习SKN呢。

一方面是可以从我们的一个官网来进行学习,这个官网其实他给定了很多例子啊,打开这个SPN的官网之后呢,其实是在上面有一个叫example,这个页面呢,其实它下面就包含了很多的例子啊,比如说我们来看一看啊。

在S看的里面,对吧,我们用SKLN能不能完成这个聚类呢,当然可以呀对吧,这个地方他是用SKN完成嗯,他是用SQL里面的key means呃,以及呃我们的beat kings。

以及呃PC之后的KMEANS来完成一个聚类,然后他也会把这个聚类的结果,给他做一个可视化,对所以说SKN呢你能够想到的一些操作啊,他都是能够就是说完成的啊,在这个呃example这个页面呢。

是包含了很多的一些具体的案例的,你也可以如果感兴趣的同学,也可以就是说分步骤来进行学习,好那么一嗯,第一种方法呢就是说根据SKN的官网,以及他的一个具体的一个例子案例来进行学习。

第二个呢就是说你可以从这个嗯。

嗯我们这个地方呢我会给大家以一本书,叫s clan的一个嗯s kn的一个kid book啊,这个书呢也是蛮也是英文的。

但是并不是很复杂,这个书呢就是讲解了SK的一些具体的一些模。

型的一些一些使用方法,嗯这本书我也看过,这也是非常非常嗯就是说比较实操的,而且也比较基础。

如果感兴趣的同学呢,也可以就是说根据这个书来进行学习,好,我们接下来呢就看一看SKN的一些,具体的一些呃,就是说一些使用案例啊,一些使用案例,我把我的这个notebook给大家打开。

然后呢我在写这个代码的时候呢,我基本上也是用SKN的一个这个JUPITER,JUPLAB啊,然后大家如果是用汽车在线的一个云平台,其实本质上和这个我们这个网页是一样的啊,网也是一样的好。

那么我们就来看一看具体的代码吧,那么我们就看第一个例子啊,然后我们就休息一下啊,那么我们首先呢来一步一分,一步一步来给我们讲代码对吧,首先呢from excent import labors。

以及data sense,以及proper proping这个三个模块,neighbors呢,它主要是包含了我们的一个,就是说KN的一些计算,KN模型,或者说最近邻模型。

然后这个DATASET呢是完成了数据集的读取,然后proposal呢是这个是这个我们的数据,预处理预处理,然后这个地方model selection呢是我们的数据划分方法。

以及我们的交叉验证的一些模块啊,在这个model selection里面,然后呢这个SKN里面呢还有这种matrix啊,这个我们刚才所讲的这些评价指标,我们翻译一下啊。

在API文档里面有这个matrix,matrix对吧,我们的一个AOC啊,我们的准确率啊,以及我们的F1score,在这个matrix模块里面都有实现好,那么我们接下来看一看这个代码啊。

我们首先呢从DATASET里面node i r s,这是一个我们test conn里面,它包嗯就是说自带的一个训练数据集啊,自带的啊,然后呢我们读取完成之后呢,我们就读取它的一个训练的部分。

以及它的一个标签,然后接下来呢,我们就用我们的一个给定的数据集呢,把它做一个训练的部分和验证的部分的,做一个划分,这个地方我们的train test split,本质就是一个hold out的这种划分。

Hold out,流出法啊,流出法,这个地方我们的train test split,它是有一个默认的,我们的一个验证集的划分比例,这个地方大家可以看一下文档,这个地方它的划分比例是多少呢。

它的划分比例是我们的一个0。25,就是说25%的一个数据集呢,我们划会划分到我们的一个test test set,这个地方我们就把它充当成我们的测试集,然后呢,我们如果想要对我们的数据集做一个预处理呢。

我们就是从PROPING里面调用这个scanner对吧,比如说我们这个地方调用我们的一个嗯,Standard scanner,然后做一个feature好,然后呢我们假如说啊。

这个地方我们首先呢看一看这个stand standard skinner,这个地方的fit用来做什么,有同学问到这个润润动stage,它是用来做什么的啊,我们待会给来可以给大家讲啊,嗯那么需要注意的是。

就是说这个地方给大家写一下,大家记住这样一句话,就是说SKN里面的,所有的机器学习模型,它的模型啊,所有的模型加上一些预处理,都是支持这种状态的,那么有同学他可能不知不理解这是什么,是状态。

那么这个状态呢比如说我们举个例子,假如说这个地方我们用这个min max scanner,Min max scanner,他是要计算它在计算的过程中,是需要得到需要通过这一列的一个最大值。

最小值完成一个处理的,所以说在这个feature的这一步呢,其实它会计算这个SKINNER要用到的,比如说在standard skinner的过程中,它会用到什么,这个standard scanner。

它会需要用到我们这一列的一个均值,和这一列的一个方差来完成一个转换,那么有同学可能还不理解啊,我这样跟你说啊,在feature的这一步会计算均值和方差,那么在这个transform这一个这个步骤。

我们这地方的SKINNER他是从STARDSKINNER做一个feature,得到一个他的一个具体的实例化的一个对象,然后这个对象呢直接做一个分transform,这个transform呢。

它会以我们上面所计算得到的一个均值和方差,对我们的数据集做一个转换,那么这个地方我们transform呢,它是直接做一个转换,它是没有再做feature的,这个地方我们一定要注意。

就是说这个fit呢它是保存了这个状态的,保存状态的,那么如果是直接对我们的训练集和测试集,同时把它做transform,那么就会保证就会可以保证我们的一个训练集,测试集,它的具体的预处率。

它的标准是一样的是吧好,然后这个地方其实也跟我们前面所讲到,这个在excel里面所有的大写的啊,这种首字母大写的其实都是这种class class呢,它是支持需要实例化再进行使用的。

然后呢我们接下来定义一个kn的一个模型,K neighbors classifier,然后呢我们最近的一个样本我们用来做判别呢,我们是三个样本,然后我们就kn做feature。

用对我们的训练集做一个feature,然后对我们的一个测试集做一个predict,然后我们就用我们的准确率,Accurrency score,我们从matrix里面import的做一个打分。

然后我们的计算得到的准确率是8%,19好,然后我再回答这个同学的问题啊,Random stage,你假如说你想要看它的一个具体的一个含义,对吧,很简单,我们看他的一个,但它的一个文档类型呢。

windows stage其实就是一个呃seed,这个windows seed呢,就是说我们在做做数据集划分的时候啊,其实它是一种随机打散的划分,它是随机划分的啊,它不是啊。

就是说我们这个hold out这种划分方法,它是一种随机划分的,也就是说他其实是随机挑选,挑选了一定的比例充当我们的训练集,随机挑选的一定比例,当做我们的一个验证机,那么这个就有一定的随机性。

那么我们如何固定住这个随机性呢,我们就设置这个random stage,Real stage,对它可以用来控制我们的一个这个可复现性,就是说当我们设置成real stage情况下。

我们的数据集的划分方法就固定了,好我们稍微休息5分钟啊,稍微休息5分钟,我们继续好吧,对大家,对我们刚才所讲的这些内容有什么问题吗,以及觉,你就是说大家觉得我们这个讲课的一个节奏,是不是啊有改进的方向。

或者说有一些不舒服的点,呃,这个,呃satisfied对吧,这个含义是什么啊,这个含义其实嗯非常非常好的一个问题啊,我们待会会讲啊,待会会讲他是什么样的一个额,就是说含义啊,我们待会会讲的。

对我们先休息一下啊,先休息一下好额,那么我们回来啊,大家对我们刚才所讲的这个内容OK吗,OK的同学扣个一,我看一下啊,OK的同学扣个一,我看一下,或者说有什么问题也可以直接提出来啊。

好额只有两位同学扣一啊,那么我希望其他同学也能够完全掌握啊,我就默认其他同学没有问题啊,好,那么你这个地方我们刚才有同学问我们的train,Test split,这个呃satisfy这个是什么含义啊。

这个呢就是说我们看他的一个解释啊,If if not none,就是说这个参数如果它is not known,就是说他设置的情况下。

Data is subsplit in satisfied fishing,Use use this as the class label,好,那么我们可以演示一下这个到底是什么意思啊。

我们可以构造一份数据集,我们的Y呢,我们的X就是哦放大一点啊,嗯我可以先把这个运行一下啊,免得我没有long派啊,这个long派没导入是吧,input是浪派,H m p。

然后呢我创建一个训练集P点zeros,然后呢我们创建一个20行四列的一个X啊,20行四列的X,然后呢我们的Y我创建它是1234,一乘以额四五是吧,四五那就是5+2乘以5+3乘以,五加上,4×5。

我们在这个地方呢,我们创建了这个我们的数据集和我们的标签,我们的Y呢我可以给他打印一下啊,他是这样的啊,121这个地方呃,四个五个,一五个,二五个,355个,四五个,四对吧,那么也是20个。

那么我们也是用这个train test splish now,然后对我们的数据集进行划分啊,我们来看一看啊,我们这个地方我们把windows stage把它去掉啊,这个无所谓的。

我们也是传入我们的X和Y,然后我们可以把我们的一个训练集,它的一个标签,和我们的一个验证集测试集的标签给打印一下,大家就看出来,大家可以看一下我们的验证集的标签,它是23221,为什么呢。

因为这个地方他其实是随机,从我们原始的一个数据集里面进行采样得到的,它并不是说是一个规制,或者说标按照比例进行采样的对吧,每次采样都是非标准的,那么如果我们用这个函参数啊,如果我们用这个地方的一个参数。

我们来进行设置,那么就这个这种情况下啊,我们再设置一下我们的一个n split,对吧,假如说我们这个地方我们没有加这个额参数啊,它其实得到的验证机,它的比例并不是说是一比一比一比一的。

那么如果我们加了这个参数的情况下,我们得到的一个验证集的比例就是一比一比一,这个参数就是说你在进行划分,我们的一个验证集的时候呢,尽可能的把我们的验就是说你划分得到数据集,保留原始的类别的比例。

就是这个作用就是这个作用,那么这个作用这个参数呢,其实也是蛮有蛮有用的,就是它是Y需要有排序吗,不需要这个地方,这个地方的Y他不是说从Y的排序得到,他其实是随机。

先随机挑选一些我们的样本的一个index,然后再从这个次序得到它对应的一个Y对好,这个理解了吧,好然后我们就继续啊,然后呢我们的SKN呢,他其实能够做很多的一些操作啊。

比如说数据的预处理域特征的编码模型,训练验证场景,机器学习模型都是可以做的,那么比如说我们在这个嗯SPN里面啊,比如说我们假如NOSKN里面的progress,这个模块。

假如说我们在导入我们的一个额一个error,这个导入一个三行三列的一个嗯,嗯矩阵的情况下呢,我们假如说直接用for personal scale这个函数,那么这个地方哎大家可以看一下。

我们这个地方其实是直接用的一个函数,对它进行一个处理,那么我们处理之后的这个矩阵呢,其实他长得这样的啊,可能你觉得他平白无奇,但是呢你假如说直接求这个矩阵的一个均值,和它的方差。

你会发现他都帮我们处理好了对吧,均值为零,方差为一,那么其实我们这个呃proposal their skin呢,它其实这个函数本质就是我们这个standard scanner,这个具体的一个实现。

不信我们来看一看嗯,我们定义一个progression,点SKINNER,Scanner,点feature,然后对我们的这个把实例化的这个嗯,对象呢把它对我们的这个矩阵呢,做一个转化成form。

然后就可以看到其实它是可以直接转换的,结果是一样的,然后呢,其实这个地方我们如果用这个class大写的class,Status scanner,它是能够记住下我们这个地方。

你x train里面的一个均值和方差,然后接下来,假如说你直接对我们的一个新的数据集,做一个transform呢,我们就用我们之前记录下的均值和方差,做一个处理就行了。

好那么我们这个MMAX其实也是一样的,那么在这个地方呢,我们也是定义一个我们的一个矩阵,然后呢我们用in max,那么这个地方其实我们的min max呢,或者说所有的skin呢。

它可以这个地方我们是上面这个例子,是feature和transform分开做的,当然我们也可以把feature和transform同时做,比如说我们把feature下划线transform。

也就是说我们用这个数据集,同时把它计算它的一个最大值和最小值,以及我们想要的参数,以及同时把我们的数据集做一个转换,那么这个地方需要注意的一点,就是说。

不管你是用feature transform还是废纸纯子,不管你是把feature transform分开做,还是把它一起做一,非常非常注意的一点,就是说你一定要保证只能FEH一次,只能保证废止一次好。

还有一个呢,就是说如果我们在训练,训练好这个CISCANNER之后呢,接下来做一个转换的情况下,其实我们传入要需要传入跟他原始维度一样的,比如我们这个地方我们定义的是一个3×3的。

那么你假如说做一个转换呢,其实你要传一个跟他样本维度一样的,才符合他的一个转换,当然还有这种命嗯,就是max abs的一个,为什么只能feature一次,我这个地方给大家举个例子啊。

为什么只能feature一次,假如说我这行这个地方有两行代码,第一行代码是对我们训练集的数据,用这个这个代码完成一个转换,第二行是对我们的测试机代码做一个转化,那么就会出现一个问题,什么问题。

标准不统一啊,标准不统一,你能get到吗,因为你在这个地方,你在做第一行代码转换的时候,你的最大值最小值是虚拟机的最大值最小值,第二个转换的时候,你用测试题的最大最小值来进行一个转转换。

你就表它的一个标准就不统一了,所以说这个fit它是记录下这个标准,然后transform呢就是用这个标准做一个转换,所以说你在任何情况下只能fit一次,这样这样能理解吗,这样能理解吗,对。

所以说你不能是各自用各自的标准啊对吧,那你在用这个来完成我们的模型的训练时候,就肯定会出现问题对吧,可能出现的问题好,那么这个max abs呢其实操作也是一样的啊,操作也是一样的好。

然后呢还有这种其他的robots skinner,这个robot skin呢它是主要啊对于这种异常值啊,可能更加鲁棒啊,这种转换,然后还有这种我们的一个额就是分箱的这种。

就是说分位点的transformer啊,这种转换呢其实也是非常方便的,还有就是我们的一个呃就是说非线性的转换,比如说power transformer都是可以进行转换的。

然后呢在S坑里面呢它是很很方便的,可以把就是说把它做一个L2的一个LM,这个大家在我们的机器学习的原理里面,已经学过对吧,Ai long,它把它把我们的每一行把它转成这种嗯unit农。

然后呢对于我们的数据集,假如说我们它是有缺失值的填空情况下,我们直接是可以用这个缺失值来做一个填充的,那么这个缺失值呢我们如果在SK里面呢,我们是直接从这个impulse这个模块呢可以玩。

就是导入我们的缺失值的填充方法,比如说我们在做一个缺失值填充的时候呢,我们可以用这个这一列的一个平均值,做一个缺失值填充,这一列,这个平均值对于趋势值进度怎么怎么说呢,我们来看一看。

首先呢我们传入这个三行两列的一个数据,三行两列的一个数据,我们包含那个数据是一二缺失值37676,那么我们在做一个缺失值填充的时候呢,其实我们可以看一下啊,我们首先呢完成一个FEIT。

然后接下来作为作为我们一个额,就是一个transform,那么我们可以看一下,在我们原始数据集做废纸的时候,这第一列的一个平均值是1+7除以二等于四,第二列的一个趋势,第二列的平均值是2+3加六。

再除以一个三,等于我们的一个哦,2+2加2+3加六啊,这个是11对吧,11÷3是呃,就是说3。6对吧,3。6,然后呢,我们接下来对我们的数据做一个转换的时候,他是直接用这个平均值,第一个是平均值。

第一列的平均值四,第二类平均值是这个11/3,做个填充即可,当然我们这个缺失值填充,它不仅仅是可以对于数值的列,做一个缺失值填充,也可以支持对于我们的一个嗯,就是说啊类比的例做一个趋势填充,举个例子啊。

我们这个地方呢我们的这这个数据集呢,其实你可以用这个long派进行表示,也可以用这个data frame,其实本质是一样的,我们这个地方呢有两列,第一列呢是这个也是类别类型的A缺失值AB。

第二列XY确实值Y,然后然后呢我们可以用这个most frequency,就是说出现次数,这一列出现次数最多的一个取值,做一个取值值填充,比如说第一列出现次数最多的是这个A。

impulge feet里面的参数可以解释一下吗,哪一行吗,是这一行吗,我们这一行吗,我这一行我说了啊,是这个任务,这个most most frequency,就是说用出现次数最多的这个取值来做填充。

对,上面这个这个不就是一个嵌一个,一个就是说嵌套的历史吗,这个不就是嵌套的list吗,嗯需要解释吗,第一个这个就是一个list,这是一个元素啊,这是一个样本啊,一二确实值376,就是三行三行两列的啊。

我们如果把它写开,是这样的,我写开你就知道了,就是这样,三行两列对吧,三行两列,第一列我们用第一列算他的一个平均值,1+7啊,缺失值我们不算1+7除以二,然后2+3加六,对你可以理解它就是一个小数据集。

对我们三行两列,三行两列可以理解吧,嗯好,那我们继继续啊,那么这个地方呢我们就设置它的一个填充方法,是用这个most most frequency,然后就是这一列出现次数最多的一个取值。

这一列出现次次数最多的一个取值,当然我们也可以用这个KNN的一个填充方法,就是说我们找他最近邻的样本来做一个填充,那么这个呢我们再来看一看啊,这个填充方法啊,我们用这个嗯最近邻的样本呢。

我们算它是两个最近邻两个样本,然后呢,我们这个地方呢其实再做一个嗯,最近邻的一个计算呢,它其实呃会抛弃这个,就是说他会在计算我们缺失值的时候呢,这个是一个样本,这是一个样本,这是一个样。

这个样本四行三列,四行三列,然后他在计算这个最近邻样本的时候呢,其实我们第一个样本,它最近邻的其实是我们这个呃,呃这个第二行和第三行,第二行和第三行,然后他就用第二行,第三行对应的列做一个平均值。

得到我们的这个缺失值,然后我们对于这个样本呢,它最近最近您的两个样本,是我们的第二行和第四行,然后我们第二行,第四行的一个第一列的一个平均值,做我们的一个我们的这个缺失值一个一个填充,那么这个KN呢。

一个填充呢其实是找最近的样本,它和上面的一些填充方法其实是不一样的对吧,他其实是有这种用其他行其他列的一个计算,找到最均匀的样本,然后再去填充对应的一个额,就是说列。

然后上面的方法其实是直接做一个简单的填充,所以说上面的填充方法呢叫这个simple impputer,下面的呢叫这个KNINPUTER,所以说他的一个实现的逻辑是不一样的,然后呢我们再做一个具体的额。

接下来呢就讲我们的在kn里面,其实他是支持这种我们的一个呃,数据的一个转换的啊,数据的转换的,比如说我们首先呢来看我看一下我们的这个呃,额这个我们的一个嗯ordinary encoder。

alerary encoder呢,其实它本质在做一个编码的时候呢,其实是额对于我们这这整个额怎么说呢,这整个我们的一个额一一行,就是说他元素做一个编码,比如说这个地方我们有这个嗯,应该是2×3的一个额。

就是说两行三列的对吧,然后呢我们会把这个from第一行,假如他属于第一行,那么就是说这一列他的第一个取值,那么我们会把它编码成一,如果他是在我们这一列的第二个区域,那么我会要把它编码成零。

这是直接是整体的一个feature啊,就是他是同时feature多列的,那么如果我们想要对我们的这一列做一个one,hoing code呢,那么就稍微更加复杂一些。

我们这一列这一列male female,它是有两个取值的,有两个取值,那么我们在做一个one hot的时候呢,其实是会把它转成一个一零和零一,这两两种情况。

那么这个from u s s和from europe其实也是一样的,它是有两个取值,那么我们也是会把它转成这种零一和一零呢,这两种情况,然后有同学就说老师你这个不是多此一举吗,然后我可以举个例子啊。

就是说其实我们这个例子他举的是这种binary的,这种就是说出现次数是这种二元的情况,你假如说我们出现次数是这种多元的情况,比如说from china,你再看一看他做一个转换的时候。

他就是from us s from europe from china,这个地方啊,我再复制一行啊,这个地方再多复制一行,你可以看一下001010100,他就完火结合这个binary encoder。

就是这种二元的这种布尔型呢,其实还是有点差距啊,大家可以体会一下好,还有这种多样式的编码,多项式的呢,其实呃这个编码可能,ordinary encoder和label encoder有什么区别啊。

这是一个非常好的问题,说明这个同学在对SKN,有一定有一定的一个理解啊,一定能理解这两个在功能上其实没什么区别,但是在就是说在具体实现上是没什么区别,但是在使用上其实是有一定的区别的。

Label encoder,你可以看它的一个原始的一个叫法叫label,label是什么,Label encoder,它就是对我们的一个标签标签做一个encoder。

所以说一般情况下label encoder它只支持单列的,那么ordinary encode它是支持多列的,主要是这个区别对嗯,在我们具体使用下,就是说这两者其实是可以混用的。

对就是说功能实现其实没什么区别,对,然后呢还有这种我们的多,在我们的预处理里面呢,还有这种多项式的编码,多项式的编码呢,就是说我们可以看一看他的文档啊,多项式的编码,比如说我们传入AB的情况下。

我们可以得到多得到什么1ABA的平方,AB以及B的平方,这个呢就是说我们一个我们可以传入这个,多项式以及它的degree,就是它的具具体的多项式的一个就是几阶,对吧几阶,然后呢。

我们就可以就是说根据这几阶的一个组合,得到的新的特征,比如说我们传入的是零一这个2345,这个地方是我们的一个呃三行两列啊,三个样本两列,然后默我们完成的是什么,1AB以及我们的AB啊,以及我们的A方。

我们的一个AB以及B方对吧,这个地方我写一下啊,1a b,A方以及我们的B方以及AB,这是说我们这几列分别对应的我们的这个哦,我们的一个取值对吧,这个其实是从我们的两列构造,得到了多列的一个特征。

当然这个多项式啊其实这个用到的比较少,因为它既它其实是一种暴力提取的啊,在提取这个特征的时候,他其实就是做这种简单的组合,就是说哎多项的二项的三项的组合嗯,并不是很实用啊,并不是很实用好。

然后我们接下来就看一看一些具体的例子啊,就是加深大家对我们的个人的一些印象啊,我们还是用IRS这个数据集这个地方,我们这个例子我们上面已经讲了啊,直接读取我们的数据集,完成数据划分。

构建我们的KN的classifier,以及计算我们的一个准确率,就像我们准确率,然后呢,当然我们这个地方在SK里面,它还支持这种cross validation score。

Cross valization,我们在PPT里面讲了,他就是这种交叉验证,那么什么是cross validation score呢,就是说我们在进行交叉验证的时候,我们可以对我们的验证机进行打分对吧。

那么我们既然对我们验证集就可以进行打分,那么我们就可以验证集,它打分可以不是五折吗,我们这个地方的CV就是五折划分成五折,就是我们的PPT里面的K是等于五的情况下,那么我们就可以算一算我们的一个五折。

分别的一个验证集的精度是多少,这个地方我们的第一个输出啊,Sorry,第一这一行,我们的输出就是我们的五折的一个验证集,的一个打分是多少。

那么我们还可以做一个cross validation predict,这些呢都是从我们的model selection,这个模块里面引入进来的,这个地方,我们可以对我们的验证集的一个它的一个呃。

就是说预测结果把它进行导出来,多折是取平均值吗,在这个地方我们是没有取平均值的,当然你如果是想要衡量一下我们的一个模型,交叉验证的打分呢,我们是用平均值来嗯,就是说做的对的。

那么我们接下来呢就看一看其他的例子,在SQL里面呢,我们这个地方是读取了一个m list,就是一个手写数字的一个数据集,然后呢我们读取完数据集之后呢,我们其实这个原始的数据集呢。

它额我们是用CSV给出的,那么我们直接使用pandas为这CSV,从这个这个是一个HTTP链接啊,就是嗯这个read csv呢,它不仅仅这个函数呢不仅仅可以读取本地文件,也可以读取这个网络链接啊。

都是可以进行读取的,然后读取完成之后呢,我们就用我们的一个hold out值的划分方法,把我们的数据集划分成训练的部分,以及我们的验证的部分,然后呢,我们可以把我们的一些图呢把它进行可视化。

这个就是一些手写数字啊,手写数字就是说就是0~9啊,数十个数字,04999667517对吧,就是手写数字,然后呢我们就能能不能构建一个模型,完成这个手写数字的识别呢对吧,我们就一步一步来构建。

首先呢我们在进行一个识别之前呢,其实我们可以做一些可视化啊,这个可视化呢不仅仅是可以用来,我们把原始的样本给它画出来,这个画图啊,其实是用magipch live来画图,大家可如果感兴趣这个画图啊。

可以自己去看一下啊,我们绘制得到的是一个figure,size是1515的这个图,然后他的n rose n calculum,就是说是十行十列的,然后就是说我们这个地方每每一行啊,十行十列啊。

我们根据这个十行十列就得到100个数字啊,对100个数字进行可视化,然后呢,我们设置一下我们的一个具体的画图的,一些title啊,以及它的一些元素,对嗯,我们不仅仅是可以对这个样本的原始知识。

进行可视化,我们也可以对我们的样本把它做一个PCA,把它降维之后,然后做一个可视化,其实我们嗯做完可视化呢,这个地方我们是用这个SKN里面的一个PCA,把它做一个降维,然后降成两个维度之后呢。

我们就可以把我们原始数据集的,主要的两个维度啊,主要降维的得到的这个嗯维度呢,把它做个可视化,大家绘制到二维的一个维度上,然后呢在绘制成二维的维度上呢,我们还做一个操作。

就是说我们这个点啊就表示的是一个样本,这每个点就是一个样本的情况下呢,我们还给定一个颜色,这个颜色怎么来的呢,这个颜色就是原始这个样本的一个类比,原始这个样本的一个类别,就是说是这个由它的一个。

就是它的颜色就相同的点啊,就是表明是相同的元素啊,类比是相同相同的,我们可以看一下,就是说其实大部分的相同的这个数字,都是在PCA之后也是处于相同的位置对吧,处于相同的位置。

然后呢我们可以构建一些我们的一个模型对吧,比如说我们可以用SKN里面的这个,我们的一个嗯嗯,MIP的CLASSIFI就是全连接网络,这个全局流网络呢,它是有100个隐含隐含节点的。

就是隐含层的维度值是100,我们让他来构建一个全连接网络,然后直接对我们的数据集做一个feature,然后呢这个地方我们的原始的一个图片呢,它是一个灰度图,他的一个取值范围呢,是从这个0~255的对吧。

那么我们可以把它做一个处理,就是直接除以除以一个255,就是把我们的数据集呢把它转换成一个呃,就是说0~1这个范围内是吧,然后直接做一个fit,直接把它完成训练,然后呢直接做一个predict。

就是做我们的一个预测对吧,那么做做完我们的一个模型训练和预测之后呢,我们还可以分析一下我们的一个模型,它的一个呃就是说预测的一个准确率对吧。

以及它的一个混淆矩阵,混淆矩阵呢,就是说我们这个模型它对预测就是真实的预的,预测结果和我们的一个额,就真实的一个结果和预测结果,它的一个整体的一个分布的情况,就是说比如说我们的这一个取值。

就是说真实标签为五的情况下,但是呢我们的预测结果为一的情况下,的取值个数是吧,我们其实如果这个模型全对的情况下,我们的一个它的一个样本呢,都是处于我们的对角线对吧,也就是说真实标签是四。

我们的模型的预测标签也是四,那么通过这种混淆矩阵呢,我们其实是可以看出,我们的模型主要在哪个地方错了,哪些样本错了啊,需要注意的是,这个混淆矩阵它不是一个对称矩阵啊。

它不是一个对称矩阵,那么这个混淆矩阵呢,我们也可以直接从我们的SKN里面嗯,他的matrix里面进行一个计算,我们只需要传入我们的模型的预测结果,以及真实的标签,就可以完成这个混淆矩阵的一个计算。

那么我们也可以打印一下我们的classification report,这个函数呢主要是完成我们这些每个类别,它的一个procession record以及F1score的计算。

这个呢可能是更加就是说计算的准确啊,也就是说每个类别它的一个呃就是说查准率,召回率以及F1score,当然我们也可以用其他的模型来完成一个实践,比如说我们任务KNN对吧。

也可以的,完成时间也可以类似的画,绘制出我们的一个混淆矩阵。

那么我们也可以用线性模型来完成,我们的一个训练都是可以的,好那么我们接下来呢就看一看啊,我们前面不是有同学讲到问到这个数据划分嘛,其实在SKN里面数据划分,我们前面所讲的例子呢。

就是我这个地方想讲的例子啊,提前讲了,我们首先呢可以构建我们的数据集的情况下,我们构建20个,我们一般情况下啊,我们的数据集它的一个适用这种矩阵啊,矩阵来进行,可以用来举证来进行表示的这种数据呢。

我们一般情况下称它为结构化的数据,结构化数据呢就是说他的一个行业比较规整,一行代表一个样本,一列代表一个特征,或者是一个字段,所以说大家如果看到一个矩阵,或者说一个数据集,它的维度数五五千乘以十。

那么就表明它的有5000个样本,以及每个样本是十列特征好,那么我们构造得到的一个标签呢是111,就是说也是先是一,后是二,再是三,再是四,如果我们不设置这个satisfied,这个参数的时候呢。

其实它是不均匀分布的,如果我们设置了这个satisfied的时候呢,我们的一个标签就是均匀分布的,当然对于k fold也是一样的啊,k fold就是我们的一个交叉验证,如果我们不设置它的情况下。

我们的label其实划分的也不太好,如果我们设置它的一个划分的时候啊,我们重新把它运行一下啊,如果我们设置它的一个情况下,其实它就划分的比较啊,这个地方嘶,啊运行这个吧,这个地方还是没设置啊。

这个地方这个地方呢,就是说如果我们想用key fold让它做数据划分,也划分的比较均匀呢,我们就用这个satisfy,satisfied key fold就行了,就是他直接来进行划分就行,对,好。

那么我们刚才呢所讲到的是这个数据划分划分,然后呢在SPN里面呢,它还支持这种模型调参都是帮我们写好的啊,我们可以直接来进行使用,那么我们也知道,就是说对于机器学习模型而言呢,我们的嗯。

就是说参数分为这个我们的数据模型的一个,参数呢分为这个普通的参数和这个超参数对吧,参数呢就是说我们的数据,这个数据呢它是能够从我们的一个这个数值呢,是能够从我们的数据集里面学习得到的。

超参数呢就是说我们需要人工进行设置的,那么比如说我们如何来对我们的一个模型,来进行调参呢,嗯有两种比较基础的方法,一个是这种great search网格搜索。

一种是render search这种随机搜索,我们首先来看两个比较简单的例子啊,我们首先呢给定两个超参数,每个超参数呢有一个有三个取值,那么在此种情况下,其实我们第一个,超参数有三个取值的情况下。

第二个超参数有三个取值情况下,我们总共就得到了九组超参数,需要注意的是,就是说我们是需要确定每个超参数的取值,才得到了一组超参数的组合,也就是说我们所有的超参数一致的情况下,我们才确定了一组超参。

这个需要大家注意啊,不是说我确定了一个超参数,不是的,所以说当我们有两个超参数的情况下,每个超参数有三个取值情况下,我们就得到了九组超参数,那么这九组超参数里面,哪一组超参数是最优的呢。

哪一组超参数是精度最好的呢,我们就需要如果是用great search呢,就是说我们把它构造得到一个点对吧,假如说我们把第一个超参数划分,得到坐标轴上面,第二个超参数呢也这画不画到我们坐标轴上面。

我们就得到这些点九个点,如果我们是RENWINDORESEARCH呢,它就相当于是我们第一个传参数呢,从一个范围里面随机生成,第二个套参数呢也是从一个范围内随机生成,然后做一个组合好。

那么这个具体的一些操作呢,其实在我们SKN里面都有一些具体的实现了,你不用担心,那么我们怎么进行实践呢,首先呢你可以定义一下你的模型的超参数,的一个取值范围,或者说你的一个具体的取值。

比如说你的一个这个地方,我们是用这个gradient,gradient boosting的一个CLASSIF,然后呢他的一个具体的超参数,我们可以设置成他的一个estimate,他是50或者十。

学习率呢是0。02或者0。05数,模型的深度呢是这个一或者2min,simple sniff是五或者十好,然后传入之后呢,我们接下来这是我们的一个网格,就是我们的网络的一个嗯。

或者说我们的一个超参数的一个网格啊,然后呢我们传入,我们接下来还传入我们的一个呃模型,它的实例化,然后呢我们还需要用传入一个交叉验证的折数,以及我们总共要训练多少次,这个n letters呢。

就是说我们总共假如说我们的超参数的组合,它的一个大小的空间是大于100的情况下,我们就使用我们就是说只跑100次啊,只跑100次,n estimate是什么意思,我们看文档啊,看文档。

我们在这个gradient boosting classify,这个n n estimates呢,相当于是我们的多,就是说这个boosting的一个次数,BOSTING的次数。

那么这个地方我们的一个呃gradient boosting,它的一个我们也知道它是一种不死的方法,那么它是一种集成学习方法,你可以理解他就是集成集成多少次对,二维呢二维是什么意思。

我没有理解的意思是什么,二维,然后这个CV其实表明我们的交叉验证啊,就是说我们到底跑几折,交叉验证,然后用我们的交叉验证的验证集的得分,来衡量我们最终的一个进度,然后这个ANITTERS就是我们的一个。

总共跑多少次对,然后呢如果我们用grade search呢,呃如果我们用render search呢,它其实是随机筛选的,必须上去,如果我们用这个grade search呢,其实基本的操作也是一样的。

基本的操作也是一样的,然后他跑出来的结果也是差不多的,也是差不多的对,然后我就是说我们也给定了一些例子啊,就是说我们在1SKN的一些建模的案例,如果大家感兴趣的呢,也可以看一看。

第一个案例呢是泰坦尼克号的一个建模的案例,就是说我们根据泰坦尼克号的一个乘客的一个,嗯信息来预测它是不是幸存,第二个呢是这个呃,就是说一个电商的一个呃商品的价格预测,我们是需要根据这个商品的一个价格。

以及商品的一个文本信息来预测它的价格,第三个呢是这个我们的一个呃,呃应该是一个文本分类的一个问题啊,就是说我们如何用SK来完成一个,文本分类的一个例子,然后呢,如果大家觉得就是说想要深入学习SKNL。

就可以通过我们上面所呃,就是说介绍的这三个案案例来进行继续学习啊,当然就是说我们给到大家的呢,其实已经呃发到群里的呢,就是有一个泰坦尼克号的案例啊,你也可以直接用这泰坦尼克号这个案例,来进行学习。

我们在给到的一个代码里面呢,还有一个叫这个呃SK的50个tips,或者说50个小练习啊,你也可以,就是说我也非常建议大家可以,把这50个小练习可以给他嗯,就是至少是呃运行一下啊,至少运行一下。

比如我们用SK的数据集这个地方,这个地方呢我们在讲SKN的时候呢,我们没有讲很高阶的操作啊,其实是说SKN的一个操作呢,它是可以做一个pipeline的,做一个管道的,管道是什么意思。

管道就是说s kn的一个数据,它的一些操作呢,我们可以把它当做一个流来进行使用,因为我们的一些这个数据预处理模型构建,我们这个地方的make pipeline,它是怎么做的呢。

我把这个数据这个翻译一下啊,这个地方我们首先构建了一个Mac calculent,Transformer,就是说我们对我们的列如果哪些列啊,这个地方我们对我们的new era列。

做我们的一个我们的standard scanner,我们对我们的类别列做一个完好进行扣和encode,我们其实是可以构建一个make cent transform,就是说直接把一些操作对类别列。

对数值列,同时把它集成到一个操作里面,然后呢这是预处理,然后我们做完预处理之后呢,我们还可以做一个模型训练,我们直接把玉数量模型训练打包成一个PAPINE,那么有同学说打包这张牌未来有什么操作呢。

有什有什么用途呢,用途非常大,打包成pipeline之后,这个pipeline直接可以做一个FEIT,也就是说,我们不需要再去一步一步,做我们的一个特征处理,特征模型训练的。

直接做一个一行代码就可以做一个预处理,做一个模型训练,而且它帮我们保存好了,这个中间的这个预处理的变量,中间的模型我们如果做一个预测,直接是PAPI的prograd papagit property。

这个地方它是直接让我们模型输入的数据,通过这个预处理,然后再通过的模型,所以说也是非常方便的啊,非常方便的,然后呢,其实这个嗯SPN里面包含的东西是蛮多的啊,蛮包含包含的东西蛮多的。

我也是非常建议大家下去之后呢,可以做一个具体的实践啊,可以做一个具体的时间,就是说你你还是要自己去使用它,你才能说你能够掌握它,不然是嗯就是说真的是,这个里面的数据集都有吗,有的啊。

这个notebook给定的数据集,就是我们已经发给大家,在这个地方呢有一个test test点CSV以及train csv,你直接改一下名字就可以跑的,你直接改一下名字就可以跑的。

然后就是你可以看一看啊,就是说如果你想要把我们的一个SK能学习好,其实还是蛮多要学的啊,蛮多要学的好,额,那么我们这个是实践的部分啊,大家如果感兴趣的呢,我是非常推荐大家下去。

把这些我们给到了大家的一些例子啊,你可以学习一下,基本上是有很多的时间可以供你自己学习的好,我们就回到PPT啊,嗯是不是要全部撸一遍,我建议你可以先看一遍,你可以先了解他的API的使用。

特别是初学的同学,你可以先看一遍,就是说知道他是怎么用的,那么我是非常建议大家,以一个具体的案例来进行学习的,因为很多真实场景下的数据集呢,并不是那么干净,是需要你进行一个处理的,那么你可以考虑一下。

用SKN完成一个数据集的,具体的读取数据集的一个呃,确实值填充数据集的处理,你可以以泰坦尼克号入数据集啊,也就是说我们这个地方给定的这个数据集,以及它的一个这个test csv以及TRCSV啊。

以及中给定的数据集,你来进行实践一下啊,当然我们这个地方也给了一个例子啊,这个地方也给了一个例子,是可是可以直接可以跑的,对这个地方给出那个例子啊,也是基于泰坦尼克号,这个是预计直接可以跑的。

因为当你遇到一个具体问题的时候,你肯定是可能就跟完成一个小步,小步的一个操作又不一样了,好第二个呢就是说我有一些建议啊,因为机器学习的原理跟实践呢,我个人认为是相同重要的,因为原理更加关注于每个算法。

实践呢更加关注于具体使用,比如我举个例子啊,在这个我们的随机森林的这个模型里面,嗯我找一下啊,稍等,对比如说我们在随机森林里面,其实随机森林,它是利用我们的一个行列进行采样,然后得到不同的数据集。

然后完成我们的一个训练,多得多棵树,那么我们如何通过控制我们的这些参数,完成随机森林这个数据集的构建呢,或者说我们如何控制这些参数来完成,假如说我让你想让你这个随时能在训练的时候。

尽可能的每棵树用到的特征尽可能多对吧,那你怎么进行设置的,或者说你这个随机森林我想让它在训练过程中,它的随机性尽可能大,那么紧怎么进行参数的设置呢,所以说很多时候这个模型的一个原理,我们刚才所讲的。

或者说他的一个网这个模型的设置,你具体的参数上面又跟我们具体的原理,其实不一样的,因为这个模型它在具体实践的时候,可能他有一些具体设置,就是说在我们的一个教材上面,它没有体现出来的一些参数。

可能就在具体实践里面呢就会出现,所以说你如果想要具体实践,可能还真的是要做一个我们的一个是呃,就是说这个代码的阅读,或者说这个文档的阅读,比如说在学习森林里面。

这个max features就是设置一下我们的每棵树,它使用得到的最大的一个特征的数量,我们就可以通过这个设置,这个max features,就可以用来设置,我们每棵树用到的最大的一个特征的数量对。

所以说这是第一点,就是说原理和算法其实都是非常重要的,第二个呢就是说实践是需要动手的,但是并不是指定特定的库啊,我是比较推荐用vs,可能当然你假如说用其他的一些库来进行实现,也是可以的。

假如说你用R语言里面的其他的库来进行实现,实践,我并不反对,我并不反对,但是呢我是比较推荐用SK好,有同学说怎么根据经验选择用哪个模型,我们在前面这个思维导图,可以一可以稍微回答你的一些问题。

其次呢可以也有一些模型经验的一些呃,模型的一些选择方法吧,我们刚才不是讲了结构化数据吗,结构化数据就是表格类型数据表的嘛对吧,我们我们先前提啊,前提我们先指就是说聚焦到有间的问题啊。

只只聚焦到有间的问题,那么对于结构化数据呢,我们一般而言,一般而言大部分情况下都用数目系,为什么呢,因为这个表格化数据,里面包含了较多的类别,类别字段,那么对于类别字段,大家也知道。

其实数模型它是很天然的,可以支持类别字段的分裂,如果我们用线性模型,其实类比字段我们就是需要对它进行处理,不管是label encoder或者是玩后期encoder对吧。

那么label encoder或者说玩后期啊,label encoder或者one hoencode,其实它都是有缺点的,nel encode他是会改变这个标签的,或者改变这个类比值大小关系。

one活性code其实是会导导致稀疏性,都是有它的缺点的,所以说如果我们遇到的是结构化数据,我们尽可能用数模型,如果是非结构化数据,比如说我们的图像,文本视频语音,那么一般情况下都是直接用深度学习模型。

为什么呢,因为结构化的非结构化的数据,它的一些数据集呢是更加难以理解的,深度学习的一个模型呢,可能更加建模能力,可能更加更强一点,一般情况下,你可以先就是说以这两个角度来进行选择,模型即可。

然后为什么没用线性模型,其实呃现在的一些高阶的,现在的一些比如说这种x g boost,其实它的一个精度,就是说应该是大部分情况下比线性模型更好,因为它里面加入的这种集成学习的速度的。

肯定肯定比线性模型,在大部分情况下会比线性模型更好对,那么以上呢就是我们这节这节课的一个内容,大家对于我们嗯这讲解的一个内容有问题吗,大家或者说,在什么情况下会用到朴素BA4或者HHMM。

嗯这个呢怎么说,在很多场景下都用不到,我个人感觉朴素贝叶斯怎么说,它其实嗯他其实用到这种表格化数据也蛮好的,因为表格化数据,其实他谱子BS是能够计算这种先验概率的,H m h m m。

其实这种也是可以计算得到这种概率,但是其实他在很多时候也是需要计,怎么说呢,计计算的东西蛮多的,嗯我个人啊,我个人的习惯是,直接就是如果表格数据直接用数模型原理,老师说用那些GBM替代差距补齐。

嗯这个地方是这样的,这个地方是这样的,差几boost之后来HGBM嗯,就是说很相似,呃x g boost的时候他是提出的比较早的,然后他是嗯提出比较早的,然后那HGBM呢是微软提出来的。

是基于差几boss只做改进的,然后呢这两个其实很多程度上精度差不多,然后这两个库它在发展越来越发展啊,现在很相似,基本上功能上一模一样,所以说用谁都可以,用手的,用谁都可以,我个人而言啊。

就是说这两者都可以,因为这两者都很快啊,这两者都很快,速度也都很好,都可以的,都可以的,对大家还有问题吗,如果大家没有问题,我们今天的一个直播的内容就到此结束啊,大家如果有问题的同学可以继续提问。

如果没有问题的同学呢,我们就可以嗯,就是说呃就是离开了,我昨天装x g boost只有90多兆RHGBM,只有几兆嗯,这个不能从安装包来说啊,这个不能从安装包来说对,其实嗯据统计啊,据统计。

其实现在还有很多的一些嗯地方,还是用拆机boost的比较多,并不是说那些BM不好啊,只能说是有一些历史遗留原因吧,历史遗留原因,对其他同学还有问题吗,比起CB,比起matt plot lib而言。

CB会更好吗,首先你弄清楚一点啊,啊,SIMON是基于MAD projetb,两者可以混用,为什么要用con,我可以给你打开con的一个官网,SIMON它天然是支持它天然的用途。

是基于这种data frame的这种格式的,我们在画图simple的时候,其实我们首先用这个散点图scatter plot,然后传入我们的行名,就是说X轴的列名,X轴的这一列的名称。

以及我们分互录就是我们分组的名称,然后传入我们的data,这个data就是我们的data frame,然后直接就有绘图,X轴就是我们的cart这个地方传入的这一列。

Y呢就是我们的price这个地方传入的一列互动,就是我们分组的不同颜色的,那么你可以看一下我们这个地方,SIMON它是基于pandas或者基于data frame这种画图。

它是直接基于data frame的,但是你再看看啊,这个地方其实它也是用到了matt plot lib,所以说matt plot lib它是更加底层的,SIMON是基于medical。

这两者可以更加混用啊,两者可以混用,SIMON画起来更好看,是更好看,但是你假如说想要更画的更加精细,假如说你想要调里面的模型,假如说调这个图的一些细节,那么就只能match pleap。

对好其他同学还有问题吗,如果其他同学没有问题就可以离开啊,如果有同学有问题,明天在线实训是什么内容,明天在线实训很简单,你我们已经把这个实训东西发给老师嗯,发给孙老师了,你就按照这个实训内容以及呃。

来来来来进行一个操作就行了啊,来进行一个操作就行,基本上是很简单的一些SKN的使用,对很简单的SK的使用,有你直直接按照这个notebook来完成就行了,哦还有同学有问题吗,那么如果没有问题。

我们今天的一个直播就到此结束了,嗯谢谢大家,如果大家有问题呢,也可以直接在群里面进行提问。

【七月在线】机器学习就业训练营16期 - P11:在线直播:2-数据分析与特征工程串讲_ev - IT自学网100 - BV1Z9T5ewEKL

好那么我们开始我们今天的一个课程内容,我们今天的课程内容呢其实嗯并不是特别难,我们主要是给大家讲,给大家讲解一下我们的一个数据分析,和我们特征工程两部分啊,一个是数据分析,一个是特征工程。

那么我们的一个具体的一个嗯时间安排呢,就是我们有四部分的一个具体的内容,首先呢给大家介绍一下数据的一个处理和分析,然后第二部分呢讲解一下特征工程的一个嗯,具体的原理和实践。

第三部分呢讲解一下具体的模型的训练和验证,第四部分是总结与回顾,好我们就开始我们的第一部分啊,数就是说我们的一个具体的数据分析的过程,在开始我们的数据分析之前呢,我们先会给大家讲解,就是说问题与建模。

这个呢其实是在我们的一个具体的一个嗯,数据挖掘,data mining的一个任务里面是非常重要的,数据的建模,它其实是嗯,决定了我们最终的一个解题的一个方法,以及我们具体的一个解决的六。

解决的一个问题的过程,我们都知道这个机器学习,它是划分为具体的一个场景的,这个场景呢就是我们是相当于是一些具体的一,些problem,或者说具体的一些task,这个task呢我们是根据在机器学习里面啊。

我们是根据分分任务对吧,我们到底是分类的回归的排序的,或者是无监督学习的对吧,我们的分类相当于是classification回归regression,排序是这种rank,无监督学习。

就是unsupervised learning对吧,那么这个地方呢,为什么我们是呃机器学习的一些具体的一些,应用场景,要做这些具体的划分呢,就是说其实本质我们的这些具体的一些场景呢。

它是都是可以对应到一个,机器学习的一个问题上面,那么我们的具体的一些,不管是在学术上面的一些问题,或者说在我们的一个互联网公司里面,遇到的一些问题呢,我们是可以根据我们的问题的一个类型按。

来完成一个划分的对吧,我们就是说遇到一个问题,我们的问题到底是有没有标签对吧,我有有没有这个label,如果有的话对吧,我们这些人是一个有监督的,有监督的,如果我们的一个label是无的话。

那么我们就是无监督的,然后在我们的一个有label的情况下,我们的label到底是什么类型的,这个label到底是它如果是离散的类型的,那么它就是一个分类的一个类别对吧,分类问题。

如果我们的label是这种数值的,那么他就是一个回归问题对吧,如果我们的一个label是这种次序的,那么就是一个排序问题,以此类推,那么这个无监督机器学习里面,也可以进行具体的划分。

我们嗯如果有基础的同学,应该知道我们在这个无监督机器学习里面,我们可以划分成什么,划,分成我们的一个就是说比较典型的PC,这种降维维度就降低,或者说这种k means,做我们的一个具体的一个聚类对吧。

这种pc a l k means都是我们的具体的一些啊,无限度地器学习方法对吧,当然还有些其他的,比如说加入了这种深度学习的,这种自编码器的一些方法对吧,那么我们在做一个具体的一个建模的时候呢。

首先是需要对我们的一个具体的一个问题,做一个大致的划分,它到底是分类的,违规的排序还排序的,还是无监督的,这是第一点,第二点呢就是说我们的一个具体的问题呢,其实我们是可以把它嗯。

就是说有一些典型的一些案例,就是下面比如说预测某个用户是不是违约的,这个呢就是一个很典型的一个金融风控的一个,二分类问题,二分类的问题很典型的一个金融风控的问题,预测房屋的或者是房价的一个热度。

或者房屋的一个价格,那么这个很典型的对吧,是一个回归的问题,因为我们的一个房屋的价格是数值的,预测我们的一个温度的走势,或者说交通拥堵的一种情况,这个呢其实它也是一个我们的一个回归的问题。

但是呢这个问题他其实更加就是说具体一点,它其实是我们的一个时间序列的问题对吧,time series时间序列,那么这一类问题呢,其实在我们的现在嗯,互联网公司的一个应用场景里面,或者说在很多的公司里面。

都是有这个相关的一个应用场景的时间序列,或者说预测我们的道路上面是不是有行人,或者说识别我们道路上面的一些具体的行车辆,对吧,这个都是个非常典型的一个应用案例,那么这个地方。

为什么我们可以从场景来进行划分,也可以从案例来进行划分呢,我们现在的一些具体的一些机器学习的,一些算法,都是在一个具体的一个案例上面,或者说一个很典型的问题上面进行使用,我们现在各位同学去找工作呢。

就是肯定就是说不是啊,什么工作都找对吧,我们肯定是非常建议大家你去呃,知道你自己适合什么样的工作,或者喜欢什么样的工作,比如说这个用户预测用户是不是违约,比较典型的。

就在这种金融风控是金融风控的一些公司里面,比如说蚂蚁啊,蚂蚂蚁花呗,蚂蚁对吧,或者说这种融融360,这种就是说金融风控的一些公司,然后呢,如果你的一个岗位是做这种,用户违约的一个预算。

那么你就去需要好好学习一下这种违约算法的,一个具体的一些原理对吧,所以说这个呢,我们是非常建议你把这个具体的案例和,能够和你自身的一个知识点,以及具体的一个就业的一个方向,能够结合起来是最好的。

其次呢我们对于一个数据集呢,我们是可以根据我们的数据集的一个类型,来做一个划分的,我们现实生活中呢我们的这个数据科学对吧,数据科学,数据挖掘,或者说我们的这个机器学习,深度学习。

它的本质就是我们的一个数据,那么在这个地方,我们的数据它其实也是可以做划分的对吧,我们的数据有这种表格类型的结构化的数据,和我们这种半结构化的数据,JASON的或者说XML的这种半结构化的数据。

或者说我们这种非结构化的数据,就是我们的一个图片类型的,视频类型的文本类型的这种非结构化的数据,这些呢都是非常三类典型的我们的数据集对吧,那么我们的不同的数据呢,我们在做建模的时候。

其实我们也是各自存在不同的一个区别的,我们在现实生活中呢,其实嗯对于初学者而言,对于初学者而言,我们比较建议嗯,就是说是学习这种嗯表格类型的数据,表格类型的数据,表格类型的数据呢就是说它是呃。

就是说我们的一个具体的数据集呢,就是这种二维的,二维的这种形式进行展开,我们的行就是我们的一个具体的样本,我们列呢就是我们的具体一个字段,比如说我们给定一个表格,这个表格里面拥有的是某个学生。

他的一个具体的一个姓名,他的一个具体的一个嗯,就是额他的一个成绩啊等等的对吧,相当于是每行是一个学生的一个记录,每一列是他具体的一个字段,那么我们这这是表格类型的数据,为什么我们这个地方会把这个数据集。

讲的这么清楚呢,因为我们不同类型的数据集,其实我们在它适用的得到的一个算法,它也是不一样的,表格类型的数据呢它可能比较适合用的数模型,就是说比使用那种charge boost,或者嗯我们NHGBM。

这个我们在上上周呢,我们的有有我们的老师给大家讲对吧,然后呢如果是非结构化的数据,我们比较适合用,那什么我们非结构化的数据,比较适合用这种deep learning的深度学习的模型对吧。

所以说我们的一个具体的数据的类型,也决定了我们最终适合用什么样的一个,具体的算法,所以说呢,我们是需要对我们的一个具体的问题啊,他的领域嗯类型啊,以及它的具体的一个数据集啊,要好好的一个了解清楚。

其实呢我们在识别到这个问题之后呢,我们并不是说是有一个完从头到尾的这种解,解决的过程,我们的一个具体的一个从头到尾的一个,解决过程呢,是我们的一个嗯就是识别问题,理解数据嗯,数据预处理建模与评估。

这个相当于是我们的一个嗯完整的一个,从数据的一个理解,然后对数据的清洗建模,然后再到再到最终的部署和评估,这是完整的,但是呢在这个解决我们的问题的过程中呢,我们的一个具体的一个。

它并不是说是一个瀑布式的这种串行的,一个开发过程,它是中间呢会需要进行反复迭代,那么如我们PPT所示的,我们在进行迭代的过程中呢,我们可能在中途呢可能是需要返返回返攻的,对吧。

反攻的这个呢其实是嗯很常见的,我们写一个程序,并不是说是一下子就能写成功的,那么类似的我们训练一个模型呢,也不是说我们一下子就能训练完成的,不是的,我们在进行一个建模的过程中呢,我们可能很有可能。

在一拿到我们的数据集的之后,拿到数据集之后呢,你可能是从我们的数据集能够找到,对我们的问题更深次更深的一个理解,那么我们就回过头来,结合我们的原始的一个问题的背景,然后再去理解我们的数据。

或者说我们在建模的时候呢,我们发现我们的建模,它的一个模型的精度不太好,那么以此类推,我们也可以反推,是不是我们的一个具体在处理数据的时候,存在某种误差,或者说出了差错对吧,所以说在我们建模的过程中呢。

它不是一个瀑布式的这种端到端的过程,它其实是有这种循环的过程的,循环的过程的一直一直循环,或者说是中途任意一个节点都会都会反攻,那么一直一直循环,循环到什么时候,能一直到我们的一个最终的一个模型的。

一个精度和模型的一个预测速度,它达到我们的要求的时候,我们才停止迭代,好在我们的建模过程中呢,其实本质啊,就是说有很多同学可能之前没有做过这种,机器学习的一个实际的一个项目部署啊,或者项目开发。

其实这个在进行建模的过程中呢,你可能是可能会对这每个步骤,它所花花费的一个时间比较感兴趣对吧,这个地方我们在进行花费时间的时候呢,可能这一部分的一个时间只占10%,机器学习建模的部分占10%。

然后做数据处理的这部分时间呢,可能是占据70%的,因为我们的数据它可能是比较脏的,我们是需要做把它做一个聚合的,也需要从我们的数据集进行一个理解,然后做一个特征工程的。

所以说实际做一个模型训练和验证的过程,其实时间很短,大部分时间都在做一个数据处理和数据清洗,数据分析的过程中,在我们建模的过程中,我们关键的要做的是什么呢,关键要做的就是。

你首先要识别出我们的问题到底是什么,它是什么类型的,以及通过我们的这个具体的一个哦数据呢,你能不能够找到数据的一个分布的规律,这个分布的规律呢,就是说其实就是我们的原始的某个字段。

它内部的一个分布的规律,这个分布的规律,其实就是需要我们对这个字段进行一个分析啊,这个分析呢可能是要画一些图,画图呢我们是呃如果是类别字段和数值字段,我们各自适合画的图不一样,画完图之后呢。

我们可以找出它内在内在的一个分布规律,其次呢我们的一个具体的一个数据集呢,它每个字段和我们的一个标签,也是存在某种规律的,也就是假如我们是一个表格类型的一个数据,我们每行是我们的一个样本,我们有两列啊。

一列是我们的一个字段,字段A还有一列呢是我们的一个label,在这个地方呢,我们是可以进行一个分析分析进分析什么呢,我们是可以分析一下,我们的一个字段和我们的一个标签,它的一个具体的一个分布的规律。

或者说我们的一个具体的一个,它们之间是不是存在什么关系啊,这个都是可以通过我们的一个分析的过程,来得到的好,那么我们在进行建模的时候呢,并会是不是存在有完完整的,或者说完美的一个解决流程呢。

或者说完美的这种解题套解决过程呢,或者解决模就是说会不会存在完美的模型呢,其实是不存在的,因为我们不同的任务呢,它的一个具体的解决方法,和建模方法都是不一样的,我们并不能一概而论,特别的呢。

特别的呢就是说我们的具体的数据,不同的情况下,我们的建模方法是不同的,我们的一个具体的一个任务,不同的情况下,我们的建模它具体的任务也不同,那么这个地方,我们的数据和我们的具体的一个任务呢。

就决定了我们最终他到底是做什么以及如何做,在我们的机器学习的一些这个领域里面呢,我们常见的应用呢就是说你可以嗯,首先可以按照我们的数据集来做一个划分,我们数据集做一个划分呢,就是我们是嗯比如果是初学者。

比较推荐你去学结构化的一个数据,因为结构化的数据呢,它的一个数据集往往都比较小,也比较适合你去做人工的特征工程,那么结构化的数据集里面,就是说我们的这个数据呢,它是使用这种表格形式来进行一个。

存储和展示的,在这个结构化的数据集里面,我们常见的这种任务,由广告搜索的推荐催电系统,金融风控最优化问题以及匿名数据挖掘的问题,然后呢我们以此类推,还有一些其他的图像的,AARP的文本的语音的这个地方。

我们就给大家稍微讲一下图像,图像的呢就是我们的一个具体的数据集呢,它是以这个image的形式进行存在的,image我们也知道它其实就是一个文件对吧,我们的一个图片呢,它的一个不同的一个文件。

可能图片尺寸有大有小,它不是一个规整的形式,它是一种非结构化的数据,那么对于我们的一个图像的领域呢,我们常见的任务有这种图像分类,物理检索我们的语义分割,超分辨率重建以及人脸识别,自带估计。

关键点检测等等的一些任务,这每类任务呢都是可以找到我们的,相应的工作岗位的啊,你去搜啊,直接在这种招聘网站上搜,都是可以找到的对应的一个岗位的,那么类似的在文本和语音里面。

我们也也是有着对应的一些特定的一个岗位,和特定的任务嗯,那么我们在进行学习的时候呢,就是说非常建议你嗯熟练掌握这其中一种,或者说两种是比较好的嗯,因为我们这个你不可能,就是说你把这个基础学完了。

然后再呃不去学这个具体的任务啊,这不太可能,因为我非常建议你去学完基础之后,然后去挑选其中的一两个具体的任务,然后进行一个深入学习啊,这样是比较适合你的,一个具体的一个职业发展的。

那么有同学可能就会问到老师,我怎么知道我选哪一个嗯,就是说是哪一种这个领域啊,或者哪一个具体的问题比较适合我,这个呢就是非常推荐你去把每一个这个地方,你可以把这个截个图啊。

或者说在我们的QQ群里面可以拿到我们的课件,然后呢你再去嗯嗯了解一下每个任务,它具体是在做什么,然后你就是可以找到你比较感兴趣的,一个愿望好,那么我们今天呢给大家在进行举例的时候呢。

都是以这个to西格玛connect,这个租房热度预测的这个数据集给大家展开,给大家展开这个数据集呢,其实是一个K哥的一个比赛啊,说我是从K哥的一个具体的一个课程里面筛选,把它抽取得到的。

那么这个具体的一个数据集呢,他在他在做什么任务呢,它是需要我们使用这个租房的一个信息,对这个房屋的一个热度做一个预测,这个房屋的一个热度呢不是它的温度啊,这个房屋的热度呢相当于是他的一个受欢迎。

受欢迎的一个程度,就是说这个房屋它受欢迎的一个程度,我们是需要使用这个房屋,它的基础信息来预测它的一个热度,那么这个地方其实本质就是对我们的一个,房屋的热度进行一个分类对吧,那么我们的一个具体的数据呢。

它拥有了我们的房屋的信息,这个房屋的经纪人信息,房屋的地理位置信息,我们在做的时候呢,其实本质需要将这些具体的字段,做一个聚合的统计,所以说他的一个具体的操作过程呢,其实是需要做大量的一个统计啊。

这个to西格玛这个具体的数据集呢,它原始来源于开口的一个具体的比赛,他总共包含了14,是四个字段,分别涵盖了啊数值类型的类别,类型的文本类型的,日期类型的和图片类型的这些字段啊,然后呢通过这个数据集。

或者通过这场比赛呢,你可以完整的掌握到我们具体的数据挖掘的,各种技能嗯,它包含的一些具体的一些数据呢,我们在这些字段呢,我们待会也会展开给大家讲解啊,你不用担心,好,这个呢我们先给大家花了一点时间。

给大家讲完了我们的这个初始部分,我们如何对我们的数据集,以及我们的问题做一个抽象对吧,我们到底如何对它进行具体划分好,我们接下来呢就开开始,正式开始我们的第一部分额数据处理和分析,这个地方啊。

就是很多同学呢觉得算法工程师做一个他的算,很多同学可能觉得算法工程师的一个工作,主要是训练模型,其实不是的,算法工程师百分,我刚才也讲了,70%或者70%以上的时间呢,都是跟数据的一个处理相关的。

比如说数据的一个清洗,数据的一个查询,70%以上的时间都是在做直线,然后还有10%的时间可能才是建模,其实建模的时间其实是非常少的,因为我们现在的一个具体的机器学习的,这些库呢都非常完备的。

你只需要把我们的数据集把它处理好,那么接下来送到我们的具体的一个模型里面,就行了对吧,所以说我们在这个地方呢,很多时间都在做一个数据的清洗,数据的查询和数据的分析,那么在去西格玛。

这个租房热度预测的比赛里面呢,其实我们遇到的一个问题是什么,在render hop,render hop呢是纽约啊,纽约new york大的一个租房的一个网站,就相当。

相当于是我们国内的这种链家的网站一样,那么在这个网站上面呢,就是说很多的一些房客,他可以在上面找到他想要的房子,那么我们在这个网站上面呢,也有一些具体的一些嗯,房屋的一个信息呢会被张贴出来。

那么我们是需要预测一下这个房屋的一个热度,这个热度呢就是这个房子它受欢迎的一个程度,或者说他的点击率在这个地方呢,就是说我我们的一个具体的任务呢,是跟预测这个房屋的热度,预测完成之后,我们能够做什么呢。

我们这个得到的一个模型呢,可以更好的去分析一下我们哪些房子,它可能是更加受欢迎的对吧,也可以对我们的这个租房的信息来进行控制,比如说嗯,我既然能够识别出我们的一个房屋的热度,那么我们可以将这个嗯。

比较受欢迎的一个房屋呢,它它均均匀的一个采样的采样进行发布对吧,不要一下子发布很多的一些比较受欢迎的房子,对吧,让它均均匀的就相当于是有一个等待一段时间,然后再发布。

或者说呢我们通过这个房屋的一个热度的预测,模型呢,也可以帮助我们的一个业主和中介,请理解我们的租客的一个偏需求偏好啊,这个呢其实是也是非常有帮助的,他的句这个地方呢我们的去西格玛呢,这个具体的一个问题。

他的评分方法呢它是用log loss来做一个评价的,他的一个具体的问题呢其实是一个分类问题啊,我们的一个热度呢就是分为我们的三个,我们的一个就是三类啊,high media和low3类。

我们接下来做一个具体的一个预测的时候呢,我们是需要预测得到,我们的一个具体的一个房屋,它是属到底属属于某一个类别,然后这个地方呢,我们其实本质是需要识别出我们的一个,它每个类别对应的概率值啊。

这个地方相当于是这一行,它的概率值相加得到等于一啊,那么这个地方呢我们嗯在进行评价的时候呢,是用我们的一个logo loss来做一个评价,好我们在这个原始数据集里面呢,其实它包含的信息还是蛮多的。

我们的一个有一个train jason和test jason,这是我们的一个原始的一个数据集,然后呢这样他还给了一个嗯image sample,点zip这个文件,这个文件里面呢就是我们的一个嗯。

就是说所包含的一些呃房屋的一个照片,这个呢就是我们的一个具体的一个嗯,房屋的一个照片的文件夹,相当于是我们在这个数据集里面,我们还给定了这个房屋的一些具体的照片信息,当然这个照片信息呢。

它就是一个非常典型的这种非结构化的数据啊,我们就可以把它利用起来,在我们讲解完这个具体的一个问题背景之后呢,那么我们接下来就可以思考一下,我们的具体的一个sin题,它到底是一个什么样的问题对吧。

首先他这肯定是一个有监督的一个问题,因为我们是有训练集,以及我们有测试集的对吧,这个地方有监督的这个问题其实很好识别,我们是有训练集的,也有测试集的,然后在训练集里面呢,我们是有这个具体的标签的好。

那么在有监督问题里面呢,它其实是一个分类问题,分类问题对吧,我们的具体的标签呢是分三类的,它是一个分类问题,然后呢是分三类的,就也就是说它是一个多分类问题好,那么这是一个问题的建模以及问题的一个抽象。

然后接下来呢,就是说我们是需要提前做一个思考的,就是说我们在做一个建模的时候呢,你首先要对我们的一个问题背景进行一个理解,然后接下来就是可以对我们的一个,具体的一个标签做一个假设。

也就是说你可以自己思考一下,我们的一个房屋的一个信息,是如何影响到它的一个热度的呢,或者说一个房屋的一个信息,如何影响到他的一个具体的受欢迎的程度的呢,有没有同学想回答一下对吧。

我们的一个具体建模的时候呢,你是就是说是需要这样思考的,类似于这样思考什么去影响到我们的标签,以及我们的标签和什么相关,有没有同学想回答一下的,就是说我们在做一个租房的时候,什么样的房子。

它的一个具体的受欢迎的程度是比较高的呢,对,因为同学讲回答的,那么这个地方呢,就是说如果大家有这个租房的一个呃,就是说曾经租过房子啊,或者说有这种租房的一个经验的话。

可能就知道什么样的房子他比较受欢迎的,首先呢它的价格比别人低的对吧,相同条件下面这个价格比别人低的,肯定比较受欢迎对吧,其次呢这个房子他的一个位置对吧,房子肯定他的一个位置信息位置比较好的。

那么他肯定也是可能比较受欢迎的对吧,然后呢这个房子它内部有什么家具对吧,这个呢也是呃就是说这种配套的一个信息啊,也是会影响到他是不是受欢迎的,所以说呢在我们建模的时候呢,你首先可以从这个角度来进行思考。

就是说我们的一个标签,它是它是如何进行一个就是说什么样的数据寻,它可以影响到我们的标签,其次呢我们还可以思考,就是说什么是我们的标签,我们的标签是如何进行定义的,这个其实也是非常关键的。

你的一个标签它到底是这个热度,到底是怎么定义的呢,你可以把它定义为这个房子,它的一个嗯在我们的网站上面被查询的次数,或者说这房子在我们的网站上面,它被点击的一个次数都是可以的对吧。

这个相当于是他被就是说这种受欢迎的,一个程度对吧,就可以视为一个热,那么我们在做一个建模的时候呢,首先可以对我们的具体的一个标签做一个理解,其次去思考一下我们的一个具体的标签。

它是如何受到我们的数据集所影响的,在我们的这个问题里面呢,我们拥有的这个具体的数据呢是这些啊,我们分别是bathroom,bedroom啊,B2dd created啊,description啊。

这些字段我们一个一个来看,bathroom呢,就是我们的具体的一个相当于是梳妆台,或者说这种洗手间的个数啊,厕所的个数,然后呢我们bedroom呢它是这个卧室的卧室,这个呢我们在这个地方其实都标示好了。

具体的一个字段的类型的啊,这个地方其实需要注意的啊,我们在进行一个建模的时候呢,其实是非常建议你把每个字段的一个,具体的一个类型给它清楚地标识出来,然后如果能够理解嗯,或者说翻译这个字段的一个哈。

它的一个含义的话呢,也可以把它那个字段的含义给他记录下来,这样呢其实是非常非常有助于你对数据集进行,一个理解的啊,然后呢我们还有个这个B0DB20id呢,它其实是一个类别类型的。

就是这个建筑物的一个id,因为我们的一个具体的一个建筑物呢,相当于是我们的到底是哪一哪一号楼对吧,这个地方你可以理解就是一个楼的一个编号,或者说我们的门牌号,然后呢还有一个created。

就是我们的这个房屋,它的一个信息被张贴的一个时间,然后description呢就是一个文本类型的,就是说这个房屋的一个描述信息,它的一个我们在做张贴一个房子的时候呢。

就是房东或者中介会用一段话去描述一下,这个具体的一个房子,他到底是什么样的一个类型,以及它的一些具体的一些描述对吧,比如说我们的房子它坐北朝南,有电梯,怎么怎么样对吧,用一个文字来做描述。

然后呢diss display address呢,就是说这个访问它的具体的地理位置,所展示的地理位置,然后还有一个features,这个features呢它是一个列表类型的。

就是说它其实是将一些具体的一些特点,这个地方呢有点像这种中文里面叫叫这个打tag,打个标签,比如说呃这个房子有电梯呃,什么什么,就是说有电梯嗯,有门铃对吧,然后哦不要不要物业费对吧。

相当于是用一个个的一些具体一些tag,去描述这个房屋,然后还有一个我们后面的是个listing id,这个呢就是一个主线id,就是说我们的这个具体的房,这每这个张贴的房子的一个唯一的标识,就是主建。

然后我们的NETITUDE和longitude呢,就是我们的具体的一个房子,它的一个具体的经纬度,然后manager id呢就是说是这个房屋的中介,他的一个信息也是类别类型的中介id。

然后photos呢是这个图片类型的,就是这个房屋的照片,price呢就是这个数值类型的,是这个房屋的一个具体价格,房屋的一个具体价格,然后这个photos呢就是我们的一个具体的一个。

房屋的一个具体的照片,price呢就是它的一个具体的一个我们的一个价格,然后street straight address呢这个街道信息,然后interest level呢就是我们的具体的一个标签。

我们具体的一个标签,那么这个就是我们的一个具体的数据集啊,他就是长这样的啊,长成这样的,那么我们这个地方,其实是把每一个具体的一个字段呢,给大家解释了一下,那么我们来看一看我们的原始的一个数据集啊。

它就长这样的,我们的每个具体的一个嗯,这个数据集每个字段,我们的bathroom有1。5个,哎,为什么有1。5,为什么有1。5个,这个地方呢其实是这样的啊,我们厕所是1。5个的话。

就是有可能是这个厕所呢是有公用的,或者说有的厕所呢只能是用来嗯,相当于是呃这种洗手的啊,就相当于是这种呃共用的厕所,或者说是嗯对半,这种厕所都是都是有的啊,因为我们租房的话,这是很常见的。

然后我们的卧室个数呢一般是整数的,然后我们B0id对吧,这种id类型的这个这个其实是一个字符串,这个其实是个字符串,但是呢其实它也是一个类别类型的好嗯,created是我们的时间对吧。

然后这个地方的features是我们的一个list,好,然后呢,如果各位同学就是说想对我们的一个,就是说我们的一个就是具具体数据集,想要进行深入的理解呢,我们的一个具体的一个额数据集也给了大家啊。

然后你可以自己一下去看好,我们在做一个数据集的一个理解的话呢,就是说我们首先嗯,也可以从我们的具体的统计值做一个判断,我们这个地方呢,就是说我们在做一个数据的一个处,理和分析的时候呢。

我们是非常建议你从一个整体的一个分布的角,度做一个啊统计以及做一个分析啊,因为我们在一个具体的一个,对于我们的具体的数据集,它基本上就是一个行列的一个形式,这个地方我们的一个列呢。

就是我们的一个具体的一个字段信息,比如说这个房屋所有房子的一个bedroom,或者说它的bathroom的一个信息,我们对于这个字段我们是可以做一个统计的,就是说可以得到它整体的一个分布。

或者说得到它整体的一个规律,得到这个规律之后呢,我们可就可以用这个统计的一个信息,去对我们这个字段进行描述,这个地方呢就是说我们在做一嗯,在数数理统计或者概率论里面。

我们是可以学习到一些具体的一个数值分布,随机分布的一些嗯,就是说常见分布的一个呃一些情况对吧,我们有这种均匀分布,被阻力分布,我们波动分布等等,那么这个地方我们的不同分布。

其实它都是可以做一个相互转换的,对吧好,那么这个呢我们就不做展开讲,因为这个其实不是我们的重点啊,我们其实就想给大家就是说说清楚,我们具体的数据集呢,我们其实是仍然建议将这一个字段,把它单独拿出来。

然后做一个具体的统计,我们在做一个具体统计的时候呢,我们经常会做这样一个统计,就是说99%的一个数据,他是怎么样的,或者说99%的同学,他的一个成绩是怎么样的,或者说我们就是说你的一个成绩。

已经进入了前1%,这个地方的一个99%和1%,他在说什么呢,其实它本质就是在说一个具体的一个嗯,分位点的一个信息,或者说是一个统计的一个分位量,在这个地方就是说你的一个具体的一个统计值。

99%的数据都处于某个范围,或者说你的一个具体的一个数,它的一个字段,它的一个你是不是位于在某个范围内,这个地方呢,我们常见的这个百分比啊,就是这种分位点的一个含义啊。

当然我们也可以做这样一个具体的一个处理,就是说我们可以统计我们的,25%的分位点,50%的分位点,这个50%的分位点,又叫我们的中位数对吧,然后我们的75%的分位点,然后就是说把某一列单独拿出来。

计算这个我们的三个分位点,然后计算完成计算这个分位点之后,然后做什么呢,我们可以得到一个IQR,I q2,其实它是等于我们的Q3减去我们的Q1,就是我们75%的分位点的一个,数值取值。

然后减去25%的分位点的一个取值,得到我们的IQ2,然后通过我们的一个IQR,可以得到一个具体的一个上界和下界,这个地方其实是这样的啊,我们的一个具体就是这样的,我们的一个上界呢就是我们的一个Q3。

加上1。5乘以IQ2,Q1呃,我们的下界呢就是Q1-1。5,1。5乘以IQ2,这就是我们的上下界,这个上下键可以用来做什么呢,我们的这个上下键可以用来做一个缺额,我们的一个离群点的一个判断。

也就是我们通过这样的一个计算,得到我们的上下界之后呢,我们的这个范围内的一个数据,就是我们认为它是合理的分布的,然后在这个范围内之外,比如说小于我们的下界,或者大于我们的上界的数据。

我们就认为是我们的一个离群点,离群点,那么我们就可以通过这个统计的方法来识别,得到我们离群点,那么这个镶嵌图它还可以用来做什么呢,它还可以用来做,就是说得到我们的具体的一个数据,它是嗯怎么分布的。

因为这个地方我们有三个分位点啊,这个相线图在这个英文名字里面叫这个box pts,对吧,箱线图它为什么叫相信图,其实就有点像那种拉杆箱的样子,我们这个地方的25%的一个位置。

和50%的位置以及75%的位置,那么我们如果这三者分布的一个位置,不一样的话,我们得到的就是它原始的一个曲线,原始的分布就是不一样的,对吧,假如说我们的具体的一个,中间的一个最核心的一个箱子。

他的100我们的中位数不一样,中位数的位置不一样对吧,那么其实我们得到的一个取原始的分布的,形态也是不一样的,这个相当于是我们的具体的一取值,我们从25%到50%的,25%的一个。

相当于是整体数据及25%的一个分布,都是位于在这个取值的范围内,就是说在这个范围内,如果这样呢,相当于是均等的,相当于是整体的一个分布是比较均衡的,就是类似于这种正态分布的,没有没有左偏。

那么如果是这种形态呢,就是有点像我们的右偏,也就是说我们的这一部分的一个数据集,它是分布的一个比较密集的对吧,相当于是一种右屏的状态,所以说呢我们通过镶嵌图呢,是可以一方面可以识别出我们的数据集。

它的是不是有离群点,另一方面呢也可以得到我们的具体的一个,数据的原始的一个分布的形态啊,那么对于我们的数据集,我们如果是想要做一个分析,我们怎么做呢,就是非常简单啊,做一个数据分析其实都是非常简单。

我们可以分析一下我们的具体的每个字段,它的一个出现的一个次数,就是我们选择得到某一列,然后算一算某一列,它具体的一个整体的分布的一个规律,比如说我们画一个bedroom的一个count pose。

就是我们画一个出现次数的一个统计的一个嗯,柱状图,我们bedrooms为零的一个房,房子有多少个,bedrooms是唯一的一个房子多少个,以此类推,这个地方呢,我们你可以画这个具体的一个直方图啊。

或者柱状图,当然也可以通过我们的一个pandas里面的,describe函数来做一个描述性的一个分析,pandas的一个describe函数呢,就是嗯可以可以很方便的计算得到某个字段。

它的一个具体的分位点的一个情况,它的一个最大值最小值25%分位点,50%分位点以及75%分位点,各自的一个取值啊,各自的一个取值,那么类似的我们也可以看一看我们的bathroom。

他的一个具体的一个嗯就是的分布的情况,在我们的bathroom,取值为一和取值为二的房子是最多的对吧,其他的就是1。52。5,3。5,4。5的房子都是比较少的,那么我们对于我们的具体的一个可视化呢。

我们也可以对我们的一个数值类型的,比如说我们的一个经纬度NTITUDE,和我们的NTITUDE做一个具体的一个可视化,那么我们这个地方是对NTU做一个可视化,这个地方其实它绘制得到的是一个密度直方图。

在英文缩写里面叫KDE,相当于是我们的一个color density的呃,我们的一个呃就是图对吧,相当于是一个密度直方图,在这个图里面呢,其实它本质绘制得到的一个形态呢。

跟我们的这种柱状图其实是差不多的,只不过这个地方我们的一个柱状图呢,它其它的一个具体的一个,这个类别的一个取值空间,它的一个相当于是取值空间比较小,类别取值空间比较小,如果是这种数值的话呢。

我们是数值的,它的一个类别取值空间就比较大,因为我们的数值,它的一个就是相当于是它可以分的比较离散,对吧,那么这个地方我们可以发现,在这个我们的这个经纬度的绘制,得到的密度直方图里面有一些位置。

它的一个房屋它可能是比较集中的对吧,在这些位置,那么在这些位置里面,就表明我们的这个有可能我们的一个房子呢,它可能是处于集中在某些位置,集中在某些位置对吧,好我们的NTITUDE和longitude。

我们可以对于数值类型的,我们可以画一个密度的密度直方图,那么类似的啊,我们对于我们的这种嗯price price呢是我们的价格,我们也可以绘制这种图图形,就是我们的这种密密度直方图,价格呢。

它就是我们的一个,相当于是跟我们的一个金钱相关的对吧,跟金钱相关的这个呢其实是这样的啊,我们的现实生活中呢,就是他有点像这种20%的人呢,掌握80%的财富,这是2080的一个原则。

或者说20%的一个房子,他都是就是说哦,80%的房子,都是在20%的一个价格区间内,它都是我们的一个这种分布啊,都是严重的左偏的,我们的价格啊,它是这种只要跟金钱相关的,它往往都是左偏的。

而且都是跟我们的2080,这种原则是匹配的啊,也就是说20%的,80%的房子,都位于20%的一个价格区间内好,那么这个地方呢就是说我们的一个价格,其实跟所有跟金钱相关的字段,它的往往都是左偏的。

那么这个左偏的呢,就是说我们如果遇到一个字段,它是跟金额相关的,而且是左偏的呢,我们是可以把它做一个处理的,我们怎么做一个处理呢,比如说我们把它做一个取log,这个就是一个很好的处理。

相当于是去除他的一个偏态的这种效果,把它尽可能转为正态分布,因为我们也知道啊,在做一个具体建模的时候,如果这个字段它是正态分布的,那么我们很容易得到这个它的一个模型的一个,无偏估计对吧。

如果我们的数据集,它的一个具体的字段是这种非正态的,那么我们得到的一个模型,就很难去得到它的一个参数的无偏估计,那么我们接下来看一下我们的BI0id,BI0D呢,就是说这个具体的一个建筑物的编号。

建筑物的编号呢其实它是一个字符串类型的,相当于是一个嗯,我们把这个具体的一个房屋的一个信息,把它进行编码的字符串,这个地方呢我们把它做一个统计的时候呢,他其实这个取值空间是蛮大的,因为这个地方。

其实他虽然说是一个类别类型的字段,但是呢这个地方的类别类型字段呢,它是加有id这种成分,在这里面id是什么,Id,就是用来标示某一个具体的一个他的一个身份,对吧,等于身份证号。

你之后看到的跟我们的这个id相关的字段,它往往的取值空间都非常大,虽然说他是一个类别字段,它的但它的取值空间是非常大的,那么我们在做一个具体的一个统计的时候呢,我们就可以统计一下。

这个地方就不建议画这个密,我们的一个柱状图啊,因为他的一个取值空间非常大啊,所以说画出来也并不是特别好看,你在做这个地方呢,我们可以统计一下它的一个具体的一个value counts。

就是他的一个次数啊,做一个统计就行了,我们可以看一下,我们b i d i id取值为零的情况下,有八千二百六十八十六套房子,这个呢其实我们很清楚的,可以看到这个地方的零,其他的一些BNNI。

一键都是这种等长的字符串,这个说明什么呢,这个地方的零它就是一个去我们的一个缺失值,缺失值我们的一个Missing value,或者说是一个默认值,天天是我们这个地方是没有填这个变量id的。

某个房子是没有填这个变量id的,这个地方呢,就是说我们通过一个数据分析,是能够找到某个字段,它到底是就是说有没有缺失值,有没有这种具体的一个啊分布的情况呢,然后呢我们对这created。

这个created就是我们的一个日期类型的,时间跟时间相关的,如果是跟时间相关的呢,我们就可以绘制类似于这种图像,我们的X轴是我们的日时期,Y轴,就是说在这一天他所发布的一个房屋的一个。

具体的一个个数对吧,也是类似于这种柱状图的这种形态,那么我们可以看出我们的具体的这种房屋,它所发布的一个时间有点儿其实有规律的啊,对吧,是有规律的,那么这个呢其实是一周一周的波动,那么类似的呢。

我们如果是遇到了这种文本类型的数据呢,我们是可以这个与文本类型的数据呢,我们是可以做一个云图,word cloud云图,云图的含义呢,就是说我们的一个具体的一个在绘制的时候呢。

如果这个文章里面这个单词出现的次数越多,那么它的它的一个字体就越大,就是这个意思,没有其他意思,云图其实很多同学都知道,我们这个地方呢,通过云图我们就知道。

大部分的房子呢可能是位于这些wall street啊,或者BDVA这些对应的一个位置对吧,那么我们也可以对我们的一个display address啊,做一个统计。

这个地方呢display address呢,其实他也是这种字符串类型的,那么对于这种字符串类型的呢,我们也可以做一个统计得到的统计,得到一个统计值啊,然后做一个可视化,比如说我们的一个具体的一个。

做这样一个可视化,就是说我们的一个具体的一个嗯房子,如果它出现了一次,他就是说对应的一个地址,类似于就是说只出现了一次的这样的地址的,一个房子,他拥有多少个对吧,其实这也是一个非常非常典型的一个。

左偏的一个分布,也就是说我们大部分的房子呢,它的一个出现地址啊都是比较独立的,都是比较独立的好,那么我们来看一看这个features,features呢就是一个list类型的,对于这种历史类型的呢。

我们可以统计一下这个房子,相当于是它是这个它的含义,就是这个房子的一个特点对吧,卖点,那么这个卖点呢你就是我们的一个tag,那么我们可以这个地方呢可以统计一下,这个features是它具体的个数。

大部分的房子的一个特点的个数,就是他的tag个数是在00~0到六之间的对吧,然后呢大于六的也有,那么对于我们的这个features呢,我们也可以画一个云图来看一看,大部分的一个tag呢。

就是说可以dog dogs aloud可以养狗对吧,elevator我们有电梯的,Dman,有门铃的对吧,然后我们还有这种什么可以养猫的,有健身房的等等等等对吧,这个就是我们的features。

然后这个地方我们有个manager id,manager id啊,这个地方就是一个中介的id啊,也是一个非常规整的一个字符串的类型的,那么我们接下来就是我们,其实刚才是将我们的这些字段。

大致给大家讲了一下,然后我现在问大家一个问题,就是说,如果大家通过我们的具体的数据集的一个理解,你会认为哪些字段对我们的具体的一个房屋的,一个热度是非常非常相关的呢,也就是我们给大家讲的。

这些具体的一些字段之后,你会认为哪些字段,会影响到我们的一个具体的房屋的热度呢。

也就会影响到我们的标签呢,对有没有同学想回答的,对呃soft的同学以及莫西莫辛同学,以及两位手机用户同学,有没有想回答的,如果你看了之后,看了我刚才给大家讲的这些字段之后,你有没有觉得。

哪些字段可能会跟我们的一些标签有相关呢,有没有同学想回答的,那么这个地方呢就是说我们刚才也讲了,在讲这个数据集之前,肯定我们的这个价格位置对吧,都跟我们的一个具体的一个呃,房屋的一个标签是相关的。

其次呢还有可能跟我们的标签强强相关的,是我们的这个B20id,以及我们的manager id,这个BDD,这个B点D呢和manager id都是这种id类型的,id类型的呢。

其实他都是很有可能跟我们的标签强相关的,比如说某个中介,他发布的房子都是比较优质的房子对吧,那么这个地方可能他的一个房子的一个,热度都比较高是吧,好那么我们就继续,那么我们在做完具体的一个可视化之后呢。

有可能有同学就觉得,可视化是不是就是我们刚才所说的这么简单啊,其实可视化并不是说是这么简单的,我们先给大家讲一讲这个可视化啊,可视化呢这个地方其实在Python环境下呢,也有非常多的一些具体的库啊。

我们可以很方便的可以进行使用,比如我个人比较喜欢的就是这个con这个库,con这个库呢它是基于matt plot lib的,然后可以很方便的用来绘制这种,就是说我们的这种数据的一个分布的。

这种可视化的图形,他在做一个画图的时候呢,我们在做一个画图的时候,其实你可能第一次看这个图觉得很难看懂,其实我们一步一步可以把它剖析一下,我们这个图呢其实它包含了三个字段。

X轴Y轴以及我们的这个clue,这相当于是smoker它的具体取值,那么这个地方我们在看图的时候,首先看一下我们的X轴,X轴是我们什么,我们X轴是对我们的一个day,做一个分类的情况下。

然后Y轴是我们的total b啊,具体的一个取值,然后这个地方呢,其实他还做了一个具体的一个分类,也就是说我们的day取值为我们的TUESDAY的情况下,我们我们的smoker取值为yes。

或者说取值为low对应的样本,然后呢我们在这个取值不同的情况下,我们在对我们的total b啊,绘制一个得到一个象限图对吧,那么我们在做一个具体的画图的时候,或者说看这个图形的时候。

你要弄清楚这个具体的画图,或者说图形里面它到底包含了多少个元素,这个其实是非常关键的啊,非常关键的好,这个呢我们的这个box blox呢,它其实在做绘制的时候,其实是不单纯的对一个字段进行绘画图啊。

相当于是这个地方哦,我们是使用两个字段进行分组之后,然后分别绘制得到了我们的一个象限图对吧,然后类似的啊,然后类似的我们再给大家找一个啊,嗯这个地方对,小提琴图也非常典型。

对我们的day和我们的一个smoker进行分组之后,然后绘制得到这种分布,这个分布呢它非常像一个小提琴,它是这种竖竖着的一个分布,然后这个分布这一部分。

这一部分是我们的day取值为TUESDAY的情况下,smoker取值为yes的情况下,我们的toto be要整体的一个分布,然后这部分呢就是我们的一个day取值为TUESDAY。

smoker取值为NO的情况下,我们TOTOBI的一个整体的一个分布,它其实是嗯,相当于是也是一种对两个字段进行分组的,情况下,然后再去看一个具体的取数值的一个,分布的情况,它比这个镶嵌图呢。

可能嗯就是说更加直观一些啊,但是呢这种小梯形图呢,它不能看出我们具体的一个数据,它有没有离心点啊,他其实是看只能看到这整体的分布的情况好,那么类似的还在simple那库里面呢。

其实有非常非常多的一些画图的函数,都可以就是很方便的用来做一个画画图啊,那么这个地方呢其实是有很多的一些库用,都可以用来做画图的,比较典型的就是说如果是学Python的话,最最嗯就是基础的画图的库呢。

是这个MATPLOTLIB,他是最为底层的我们的画图的库啊,最为底层的画图的库好,然后呢如果是基于Macbook lip呢,就是由这个我们刚才所讲的这个CBSBL呢。

这个库是基于match prolip进行二次开发的一个库,然后可以快速的绘制,得到我们的这些很漂亮的一个图标,也就是说我们他其实是调用这个match pouch live,做一个画图啊。

所以说它是一个高层的一个啊组件,然后呢还有一些其他的库啊,比如说这个我们的PLOTLINE,或者说我们的BOKEH嗯,这些库呢都是比较高阶的库,它可以嗯跟我们的浏览器啊进行集成啊。

然后做这种可就是说这种叫带有交互式的图啊,都是非常非常方便的,还有一些呢,就是我们对我们的具体的一些地理位置,做可视化的图嗯,比如我们的这个地方,FOAIUM都是这些图啊,都是可以嗯。

相当于是不同的数据类型,我们做不同的可视化好,然后还有一些对我们的缺失值,做一个可视化的啊,我们在之后的课程也会给大家讲的好,那么这个地方呢,就是说有很多同学在学了这些画图之后呢,就可能是会觉得迷糊。

或者觉得我第一次接触,你给我讲这么多图干什么,其实这个地方是这样的啊,我们的本质的可视化呢,就是在于我们如何是用一种一种图,或者合适的图,对我们的一个字段做出一个具体的一个可视化,做出个统计。

比如说我们想要对一个具体的一个数值,做一个可视化的话,其实我们是可以画出它的一个柱状图的对吧,一个数值在不同分组的情况下,它去写一个可能分布的情况,或者说你不画这个柱状图,你就画这种密度图。

其实本质是一样的,就是它展示的一个形形态啊,以及具体的一个形状是不一样的,类似的你可以画这种我们的累积分布图,现在那有点像我们的一个CDF对吧,从我们的一个相当于是,小于我们的180的一个数数据。

它大部分就是它的比例是在0。05对吧,接近0。05,然后呢,小于190的数据呢,是在0。2 20%的比例,然后一步一步增加到一,这种相当于是画会值得到我们的一个CDF对吧,我们在概率里面的CDF。

就是说我们的数数据它整体是如何进行分布的,然后呢我们也可以绘制得到这种散点图,绘制到散点图图之后呢,我们可以散点图,它是二维的对吧,我们可以绘制的它它绘制到它单维的。

相当于是它的边缘分布的密度直方图对吧,这个都是非常常见的一些画图方法,通过这些画图方法呢,我们就可以将我们的具体的一个数值,以及相关的资料呢,把它进行用合理的方法给他展示出来。

好额那么我们休息56分钟好不好,我们休息56分钟,然后继续我们休息到这个9。02,然后我们回来好不好,然后我们休息一下好,然后大家如果有什么问题的话呢,你可以在我们的一个聊天框里面打字,让我知道啊。

好我们休稍微休息几分钟好不好,好嗯然后我们准备回来额,然后各位同学对我们刚才所讲的内容,有什么问题吗,我看大家都比较沉默啊,如果大家有什么问题的话,也欢迎提问啊,因为嗯你有问题的话。

可能学的会更靠更快一些,不然如果你没有问题的话,相当于是嗯我相信呢可能你没有问题,但是呢如果你真的有问题的话,那可能就是第一时间提出来的效果会更好一些,对好,那么我们就继续好不好好,我们继续啊。

嗯然后呢,我们接下来看一看我们的一个特征,工程与实践啊,我们在做一个具体的一个嗯,具体的建模的时候呢,我们在进行具体建模的时候,其实我们是给到我们的一个数据,我们是需要构建一个具体的一个模型对吧。

那么这个具体的一个数据呢,其实我们的一个数据,它可能的一个类型呢是多种多样的,我们在这里面呢,其实我们是首先来看一看第一种数据类型,是类别类型的,类别类型的呢,就是说我们其实它是一个嗯非常常见的。

我们的数据的一个类型啊,就是说我们的数据字段它是这种类比特征嗯,比如我们常见的这种个人信息,性别,城市省份,民族户口类型,这个里面都是我们的具体的一些呃,类别类别的人,然后我们的颜色对吧。

颜色里面的取值有红色,白色等等等等,国家里面有具体的取值,中国美国对吧,然后我们的动物这个地方呢,其实我们需要注意,就是说我们的类别,它有一个具体的取值空间,这个取值空间呢就是它具体的一个。

就是说这个类别它能够取值的这个字符串,相当于是这个类别是一个set这个集合,这个取值空间呢就是它的一个具体的一个元素,类别特征呢是我们在做数据处理的时候,在我们在做建模的时候。

任何特征任何时候都要做处理的一个数据,因为类别特征它往往都是这种字符串类型的,我们对一个具体机器学习模型啊,它是只能接受这种数值类型的一个计算,我们可以回想一下我们的线性模型,我们神经网络对吧。

其实它本质只能接受我们的一个数字类型的,一个数据,所以说类别类型呢,数据呢我们在做处理的时候呢,我们肯定是要把它做一个编码的好,另一类型的数据呢,它的一个具体的一个取值空间,它有大有小,对吧有大有小。

如果是小,我们都是就是说这个没什么问题,如果是比较大的话,就有可能有问题,这个地方的大呢,就是说如果一个类别它的取值是100取值,关键是一百一千一万对吧,也就是说取值具体的取值可能性越来越大。

我们这个地方呢取值的可能性越大,并不并不一定是它的缺点啊,就是它原始的数据集就是这样的,我们再做一个具体的这个取值,就是说我们在做一个具体类别,类型的编码的时候,如果这个取值空间非常大的话。

因为他这个特征呢我们叫做高基数特征,对于这类特征呢,我们如果做处理的话呢,我们就非常容易出现离散的一个数据,离散的数据就是说他是一个稀疏的啊,会把它处理成这种稀疏的高纬的一种情况。

而且对于我们的一个类别类型的这个字段呢,我们是很难对它进行一个缺失值填充的,如果他是有这个缺失值的话,我们是很难对它做一个填充的,因为这个比如我们某个学生,它的一个具体的一个性别作,有的也就是是缺失的。

那么如果是性别是缺失的话呢,我们是很难对它做一个填充的对吧,因为我们填充的话,其实很容易就把它填充错误了,在我们的类别类型的里面呢,我们是有这两类,一类是我们的一个无序类别,一类是有序类别。

无序的呢就是我们的具体的一个取值,它的一个次序他是没有这种大小之分的,也没有这种就是说这种关系啊,就相当于是相互平等的,如果是有序的类别,就相当于它的具体的取值是有这种大小关系的,你觉得他的取决于这种。

相当于是比如说这种情感强弱,或者说这种我们的一个得分的情况对吧,嗯是我们的硕士本科硕士博士对吧,对,具体的一个学历的一个从低到高对吧,还是有序的,那么我们在做一个具体的一个编码的时候呢。

我们这个地方是给大家讲一些比较基础的啊,先给大家讲一些比较基础的编码,我们首先呢给大家创建了一个data frame,这个data frame呢就是一个我包含了这个学生的id。

学生的一个国家education教育信息,以及我们的一个目标编码,这个target就是我们的啊,这个target就是我们的目标啊,应该是我们的一个标签,其他的列就是我们的一个具体的一个。

学生的一个基础信息,然后我们就用这个表格来完成,我们的具体的一个类别特征的一个编码,对于我们类别特征的编码其实是有非常多的啊,这些具体的编码方法的,那么我们只挑选你们非常典型的给大家讲啊。

其他的呢我们其实用到的场景会很少,首先呢我们来看到看到的是这个one one hot,完后程呢它又称作叫做独热编码,独热编码就是我们对这个具体的一个嗯,一个取值。

把它转成这种one or k is hot的这种形式,这个K呢就是我们的具体的一个类别,它的一个取值的个数,取出空间的大小,比如说我们这个地方的education,对于education这一列。

我们就对它进行编码的话,如果它原始的话是有三个取值的话,我们对它进行编码之后,我们的这一这一列就把把它转成了一个三列的,这种情况,三列,那么玩hot呢。

这个地方它原始的这个学生他是一个master education,是等于master的,那么这个地方我们在做one hot之后,他就转变成了一个1×3的这一个,行向量的吧,我们相当于是增加了三列。

然后在这一列把它复制为一其他位置复制为零,那么类似的其他学生的一个信息呢,也是在某一个位置是一其他的位置是零,one hoch这种形式呢,它是相当于是把我们的一个原始的一个字段,把它展开了展开了。

相当于是每一列,每个取值做的这种二进制的编码,玩火者呢比较适合用在这种线性模型里面,它比较适合用在这种无序的类别,做一个编码的时候,因为我们在做完one horse之后,我们的一个类别的取值的一个大小。

仍然是相互平等的,比如说我们这个地方,00010001和100,这是我们的本科硕士博士,他具体在做编码之后转得到的向量,那么他之间的距离仍然是相互平等的,相同的对吧,仍然是保持着这个无序的,完后程呢。

它的一个优点,就是说他在做编码的时候是非常简单的,是能够直接将我们的类一个类别特征,进行有效编码的,但是呢它的缺点就是说,它很容易导致我们的一个维度会爆炸,假如说我们这个字段。

它的一个取值空间是100的话,我们做完完后之后,这个维度就增直接增加了100,然后呢再增加一维度,增加的同时呢,我们的具体的一个数据集呢,也会变得非常稀疏对吧,这个地方相当于是三列里面。

只有相当于是1/3的数据是非非空的,如果这个具体的取值是取值空间,非常更大的情况下,我们的这个系数性会更加稀疏,我们在这个具体实现的时候呢,我们可以从pandas的get dain函数。

或者说从SKN的one hot encoder,来做我们的一个具体的一个编码,就是one或者是编码,第二类呢是我们的label encoding,Label encoding,就我们标签编码。

标签编码呢它是将我们的一个具体的一个类别,把它用一个独立的一个数值id做一个转换,这个地方呢,就是说我们把这个具体的country china编码为零,USA编码为一,UK编码为二,JPM编码为三。

以此类推,他呢他那个方法呢,就是说我们的一个具体的一个操作呢,Nel encoding level,encoding原始的具体的一个应用场景,就是对label做的,就是对我们的一个标签做的。

这个地方呢我们的label label coding呢,它也可以对我们的一个字段做一个编码,我们字段我们可以把它编码为具体一个数值,也就是说我们用一个具体的数值,来代替它原始的字符串的一个取值的情况。

这个地方我们的一个label encoding呢,它比较适合在数模型里面进行使用啊,比较适合在数模型里面进行使用,它的一个优点,就是说它不会增加这个类别的一个维度嗯,就是说我们原始的这个具体的一个呃。

字段是一列的,我们在做一个编码之后,它仍然是一列对吧,它不会增加我们的数据的维度,LIBENCODING比较适合用在有序的类别,就是说如果是原始是这种,有有这种大小次序的话。

我们在通过label encoding编码之后,他仍然也会保留这种次序啊,Lil encoding,如果在做一个编码的时候,你没有指定它的大小次序的时候,他可能是进行随机编码的这个地方。

我们第一个出现的一个取值是china,china是零,相当于是我们把它第一个出现的这个取值,把它编码为零,第二个编码为一,使用这个出现次数,他的一个先后来求编码对吧,其实这个地方。

如果我们没有指定它的大小关系呢,这种编码方法,它就会改变我们的一个取值的一个大小关系,相当于是破坏它们之间的一个次序啊,在我们使用label encoding的时候呢。

我们可以用pandas的factorize,或者说用s client的一个label encoder来做一个操作,我们还有的呢,就是我们这种BENCODING2进制编码,二进制编码呢。

就是说我们在做一个编码的时候呢,我们可以对某个字段类似的,也非常类似我们one hot的这种操作,我们可以把它转为这种二进制,把它转,先把它转为一个编码,比如说先把它使用这种label encoder。

作为转成一个具体的数值,然后转为数值之后呢,然后把它进行一个二进制二进制的编码好,by terencoding呢,其实它的一个操作,其嗯就是说跟我们的一个one hot是非常类似的啊,他但是呢他也会。

他会也会带来这种次序的改变啊,因为one hot他其实是没有改变这种大小的关系的,但是呢这种binary coding呢,它其实是加入了这种大小关系的一个啊,就是说改编的barry encoding呢。

它的可以视为这种完后台一个替代品啊,就是整体的一个维度会变变得更加低一些,还有一类呢是我们的一个frequency encoding,或者说叫做我们的一个count encoding。

它的一个具体的操作呢,就是说我们是可以把这个具体的某一列的,一个具体的取值的一个次数,用来做它原始的一个编码,在这个地方,我们如果是对我们的这个country这一列,做一个编码的时候。

china出现了两次,我们把它变某12UC出现了两次,我们又把它编码为二,UK呢出现了一次,我们把它编码为一,就相当于是用这一列这个具体取值,它出现的一个次数,然后做一个具体的一个嗯,相当于一个替代啊。

这个就是我们的一个具体的一个操作,content encoding或者fency encoding呢,你还可以做把它换算成频率啊,就不不仅仅是次数啊,把它换算成频率也行。

content encoding呢,它的一个操作其实是嗯,有点像基于这种上帝视角,也就是说它不是基于某个样单个样本,它是基于整体的某个字段做一个统计的,所以说呢这种统计的方法呢,它比较适合我们的一个嗯。

就是说分布一致的情况下,比较适合这样进行操作嗯,这也是他的一个缺点,就是说如果分布不一致的情况下,我们的一个counting coding,他得到的结果就不一致了,比如说我们的训练集。

和我们的一个具体的测试集,如果他两个字段的一个取值的分布是不一样的,话对吧,那么你在这个地方做content encoding,其实它的一个具体的一个结果,就会存在一个冲突,就会存在一个冲突。

好抗体口令,那这个优点呢就是说它是非常简单的,不管是有序编码还是无序编码,都可以用来进行使用啊,都可以进行使用,好我们继续,那么coding coding呢在做具体的实现的时候呢。

我们就是用这个嗯就是统计它出现的次数啊,不管是用value counts啊,还是用什么方法统一到分的次数就行了,好还有一类呢就是我们的一个target encoding。

target encoding呢就是我们的一个具体的一个操作呢,就是我们是统计一下我们的具体的这个字段,它对应得到的一个标签,它的一个具体的一个取值的一个情况,这个呢。

就是说我们在做一个具体的一个操作的时候呢,比如说我们对我们的一个CTRL字段,做一个target encoding,如果是对我们的CTRL字段做一个targeting coding呢。

我们其实本质就是对我们的一个数据集呢,我们是统计一下这个country字段,它对应的一个label的一个取值的情况,比如我们的一个contest的china。

它对应的一个label就是我们的target分别是多少,一和零,我们对它取出一个均值就很好,然后就得到0。5对吧,USC0和一,然后求一个均值也是0。5,这个地方呢,其实本质就是对我们的一个类类别取值。

它对应的一个标签的一个关系,相当于是求它的一个均值啊,求一个均值,具体的一个实现呢,就是说我们对客户端我们的某一列,然后求它对应的一个标签的一个均值,然后就得到他的一个具体的一个标签编码。

标签编码其实它非常非常适合用在什么场景呢,就是说我们这个地方的标签编码,其实得到的一个结果,有点类似于一个具体的一个均值,或者说一个相应的一个概率,我们的一个具体的一个,它到底是什么含义呢。

就是说我们在做一个具体建模的时候,其实我们的模型是很难去理解他,这个china到底是什么含义的,但是如果这样说,CTRL等于china的同学,他的一个具体的一个标签,整体是等于有可能是零点,就是说0。

5的,那么这样呢是更加有意义的,这个就是我们的标签编码,它其实是让我们的一个模型来,学习起来更加容易,但是呢他给人1coding,他还有一个缺点,就是说它可能会让我们的一个标签信息。

标签信息呢给他泄露出来啊,因为这个地方我们的一个具体的一个看一看,我们这个UKUK呢,这个地方我们只有一个一位同学,这个地方我们如果是把它这种标签编码之后,其实本质我们是会将我们的一个具体的一个嗯。

标签信息给他泄露出来对吧,我们相当于是直接把他的标签给它编码进来,它其实是非常容易过滤活的,因为它其实是将我们的一个标签性,标签信息呢给它泄露出来,它的具体的实践方法,其实本质也是这种次数统计啊。

分组聚合做次数统计就行了,好那么在我们的一个具体的一个嗯,就是说类别特征的编码的时候呢,就非常建议做这种one或车啊,never encoding啊,count encoding啊。

和MENCODING,这四类编码,就基本上是可,就说可以涵盖大大部分的场景的啊,好,然后呢,如果我们是有这个具体的一个,数值类型的特征呢,其实我们也是需要做一个处理的,数值类型的特征呢。

它也是在我们的日常生活中,非常非常常见的数值类型的特征,我们有这个年龄乘积,经纬度对吧,它都是我们的一个数值类型的特征,数值类型的特征呢,它其实包含的一个信息量会更多。

因为它的取值的一个克数其实就是会更多,但是呢它会存在一个具体的一个缺点,就在于数值类型的一个字段呢,它很容易出现这个异常值和离群点,好我们对于数值类型的特征呢,我们怎么做一个编码呢。

首先是可以做一个缩放和取整,缩放和取整这个其实是非常常见的,我们如果是对于这个地方,我们新加了一列A级,这一列,A级这一列就是我们的一个嗯年龄这一列,如果对于年龄这一列,我们其实是可以把它做一个统。

具体的一个提取它的一个信息的,edge这一列它原始的取值是34。5,28。9,19。5,23。6对吧,那么这个地方我们是可以对我们的A级字段,做一个相当于是把它做一个取整,34。0,29。0对吧。

把它转变成一个整数,或者说把它除以一个十,然后把它转成整数做一个缩放对吧,那么这个地方为什么要做这样一个缩放呢,为什么要做这样一个复缩放呢,其实这样一个缩放的目的,相当于是我们是将这个具体的数值。

它的一个绝大部分的一个信息给它保留下来,零零是我们相当于是把他的一个数值的,一个主要的一个信息给他保留下来,因为这个地方我们34。五二十八。9,其实这个数值它的一个信心其实是非常多的。

在这个地方呢我们的信息越多,其实并不一定表明它的一个效,最终的效果是越好的,因为我们的一个信具体的一个信息,它是越多的情况下,我们的模型反而更难去寻找得到这些这个字段,它的一个共性。

如果我们是把它做了一个缩放之后呢,比如说这个地方34。5把它转为三,28。9,把它转为二对吧,相当于是这个地方相当于是小于20岁的,一的一个取值是小于20岁的二的一个取值呢,就是小于30岁的对吧。

那么如果是通过通过这样一个一种缩放,你就会发现我们的一个具体的一个取值,它就会更加有意义,它会,它其实本质是将我们的一个大部分的信息给它,保留下来,为何日本是零,英国是一,你嗯这位同学啊,在这吗。

UK啊,是是说的这个图是吧,japan它的一个具体的标签,它就是一个对应得到的是零啊,就一个零啊,然后他的一个均值不就是零吗,UK的话,它的一个具体的一个就是说取值就是一啊,一个一啊。

然后他的标签就是一啊,我们这个地方就是china,它有两个一和零,然后求一个均值,就是0。5嘛,就是这样的一个操作,对其实就是这样的啊,应该是group by我们的country。

对我们的country具体的取值做一个分组,然后求求它的一个对应分组,下面的target是一个均值,是这样一个含义,好,嗯然后然后我们就继续啊,对于我们的数值呢,其实我们还可以做一个非常常见的操作。

就是做一个分享,就是对于一个数值呢,我们是可以把它啊划分到大于某个取值,小于某个取值,比如说我们对我们年龄,我们可以把它划分是不是小于20岁,是不是位于20岁到25岁,是不是位于25岁到30岁。

是不是大于30岁,这样按照这些具体的逻辑把它做一个分享,这样呢其实是非常常见,也非常有效的一种操作,它其实是可以将我们的一个数值的一个特征,把它做一个离散化,但是呢他其实这样的操作呢是需要人工参与的。

需要人工进行参与的,所以说呢它其实是这个代码,其实我们需要手写的啊,就是我们的这这个具体的划分的方法,其实是需要人工智能参与的好,我们在做一个具体的数值的一个操作的时候呢。

其实我们也是需要将我们的一个也要考虑到,我们的具体的数值,是不是嗯需要做一个具体的一个缩放,这个缩放呢,其实本质呃,是可以把它视为我们的具体的一个额,数据预处理的步骤,数据预处理的步骤。

因为我们的具体的数据集呢,其实这个数值啊,它往往就是嗯不一定是我们的一个具体的一个,呃就是嗯一个比较规整的范围,我们其实呢是需要把它进行,转换到一个规整的范围内,我们在进行一个如果是把我们的具体数值。

把它转换到一个规定规整的范围内之后呢,我们可能对我们的一个模型建模也是更加方便,它就是说我们的一个模型它更容易收敛啊,以及我们的模型它更容易进行一个训练,这个地方呢我们的数据的一个归一化方法呢。

其实有很多啊,常见的就是说我们用这个最大值,最小值做一个归一化,就是说我们给定一列这个字段,给定这一列这个字段,我们给定这一列这个字段的情况下,我们是可以用这一列它的一个。

这里面的一个最大值和最小值做一个规优化,也就是也就是我们有一个这个具体取值,减去的最小值,然后除以最大值减去最小值,这是我们的一个极差对吧,整体做一个转化,我们利用这个最大值最小值做一个转换。

它的一个处理呢是比较适合,用于这种非高斯的分布,可以保留绝大部分的数值的一个信息,但是呢它非常容易容易受到这种异常值的影响,因为我们的一个最大值和最小值,往往都是我们的一个异常值对吧。

很有可能是我们的异常值好,那么如果是这种嗯,比较出比较类似于我们高斯分布用的,我们就比就比较建议是我们的这种standard scale,这种相当于是一种标准化,标准化。

就是减去我们的一个具体的一个均值,除以我们的方差,减去我们的均值除以方差,这样的处理,它比较适合用在我们的高斯分布处理之后呢,我们的数据集会更加正态化,它就就比较适合用在我们的一个高斯分布的。

这种正态分布或高斯分布的这种情况好,还有一类就是我们的max abs,这个地方是也是非高斯分布啊,这个打错了高斯,我们的max abs,就是我们的一个具体的一个数据集呢,他在做一个处理的时候呢。

是用一个绝对最大值做我们的分母,绝对最大值做我们的分母,这个具体的数据值的一个预处理的这个操作呢,在我们的sk learn里面,有非常多的一些具体的实现啊,嗯如果同学们感兴趣的话,可以在SKN里面。

SKHN里面找到更多的啊,在我们second name的一个proposition里面,模块里面,其实这里面包含了很多的一些,我们的一个数据类类别类型的一个编码,以及它的具体的一个数值类型的归一化方法。

如果你还感兴趣,或者说想学得更加深入的同学呢,可以建议把这些SK的这些具体的一些方法,他的文档好好看一下,这些文档里面都写得非常精,非常非常精简啊对吧。

Scare each feature by its maximum,Absolute value,就相当于是绝对最大值对吧,做一个除法,这个其实都是非常简单的一些就是文档啊,如果你感兴趣的话呢。

也非常建议学一下好,我们在做一个具体的一个处理的时候呢,我们其实本整本质还可以做这样一个操作,我们遇到的一个数据集呢,它很有可能是这种日期类型的,日期类型的呢,就是说我们这个具体的数据集这个字段啊。

它是带有这种时间信息的,如果是带有时间信息的话呢,我们其实是非常建议,你可以把这个具体的一个时间信息,把它抽取出来,比如我们可以统计一下这个时间信息,它当前具体的时间信息,它是哪一年的哪一个季度的。

或者说哪一个星期的哪个节假日的哪个小时了,是不是早高峰,晚高峰,以及它可以跟我们的一个历史的一个均值,做一个对比,这个历史的一个均值,就是说我们历史的一个统计值,比如说统计一下。

他跟历史的一个平均值做一个对比,历史的一个最大值做一个对比,历史等于我们的一个嗯,嗯某个分位数做个对比对吧,这个都是可以做,这些操作呢都是对于我们的一个日期类型的,一个字段可以做这样一个操作。

当然我们还有一类呢,就是说我们可以做一个交叉特征,交叉特征呢,就是我们是可以将两个字段做一个交叉构建,得到一个新的特征,这个其实也是嗯非常常见的交叉特征,其实非常常见的交叉。

就是这种加减乘除或者笛卡尔集对吧,那么这个其实可能会有一点点难度啊,因为我们在做这个交叉的时候呢,其实不同类型的特征,就是它做交叉的方法可能不一样,我们一般情况下对于相同类型的特征,相同类型的特征。

就是说他如果是具体的一个取值,假如说我们有两列,我们之前讲的数据集,一个是我们的bathroom,一个是我们的bedroom,还有一列是我们的price,这两列是我们房屋的个数。

不管是厕所的个数还是房屋的个数,这一个取值是跟金额相关,跟钱相关的对吧,这两个是类同类型的,这个跟这两个不是同类型的,那么同类型之间是可以做加减除,或者笛卡尔级的家是什么意思,就是说这个房。

这个房屋它到底包含了多少个房子,多少个房间,就是说把厕所和卧室都算上对吧,除了就相当于是平均每个卧室,可以平摊多少个厕所对吧,如果是不同类型的话呢,可以做乘或者做一个除,比如说做除法的话。

就是price除以bathroom,平均每个厕所他多少钱,平均每个卧室多少钱对吧,这都是有具体含义的对吧,当然你也可以做一个聚合的人,就是说先分组聚合再做同款,比我们在做做这个地方其实是做这样一个操作。

grp by我们的一个bedroom,然后求一个price的一个平均值,这个操作叫做什么,对我们的bedroom进行分组,然后统计一下相同bedroom下面,哪个房子的一个价格的一个平均值。

这个就是一个分组聚合,其实本质就是一个聚合特征,一个聚合特征对吧,那么我们在做一个具体统计的时候,我们可以统计一下相同房子,相同,我们的卧室个数情况下的一个价格的平均值,跟你这个当前房子的价格相比。

它到底就是说嗯价格是高的还是低的对吧,都可以做这样一些操作,这个呢就是聚合特征,那么还有一类特征呢,就是我们的link特征,就是信息泄露的特征,就是我们是个具体的数据呢,它可能嗯有一个特征呢。

是跟我们的标性强相关的,但是呢这个特征它又没有什么具体的含义,就是它是一个立特立个特征,比如我们在进行一个建模的时候呢,如果我们的数据集啊,它是按照这个嗯有这种先后次序的,这种嗯整理。

它可能是将我们的一个相当于是先去整理,我们的一个标签热度为高的样本,然后再去整理我们标签热度为中的样本,然后再去整理我们标签热度为低的样本,那么在这个地方,我们就可以从我们的一个具体的一个房屋的。

一个图片的一个创建时间,从这个维度确定,于是去反推得到我们的原始的标签的对吧,其实这样这个就是非常非常很典型的,就说我们这个这个信息,是跟我们的标签墙相关的,但是呢,其实它是由于我们构建数据集。

所带来的一个误差,它并不是我们的原始数据,它内部分布的规律对吧,这个呢就是说是一个leg特征,它是跟我们的数据集构建的过程中,强强强相关的,但是呢并不是我们的原始数据集,它嗯真实的一个分布的规律。

那么在我们讲完这个特征工程之后呢,希望各位同学能够问问一问自己这三个问题啊,就是说你真的掌握了上述的特征工程的,方法了吗对吧,到底美内特征工程具体用在什么样的场景呢,它具体具体的一个优缺点是什么呢对吧。

这是第一个思考的点,第二个就是说我们的具体的一个,我们的一个有非常多的一些具体的一些,机器学习模型,我们的具体继续学继续学习模型,它能够学习到什么特征,以及它到底能够不能学习到什么特征,对吧。

这些都是我们的一个需要思考的,因为我们在做一个具体思考的时候呢,其实我们现在有非常非常多,非常多的一些机器学习模型,我们也有非常非常多的一些特征工程的方,建模方法,那么我们是需要去思考的。

是不是所有的特征工程,在所有的模型下面都是需要做的呢,或者说什么样的模型,适合做什么样的特征工程呢,对吧,这个都是需要说清楚的,或者说我们是需要人工,是不是需要人工做的特征工程呢对吧。

这个都是我们在做具体实践的时候,要做的一些问题,第三个呢就是说如果是利民的特征,我们如何做特征工程,匿名特征就是说我们这个特征的一个具体,具体的这个含义,我们都不清楚,含义我们都不清楚。

那么这个地方我们就是如何,对于一个你都不清楚具体含义的一个字段,我们怎么做特征工程,这个也是需要你关注的,我们接下来看第三部分啊,我们的一个模型的训练与验证,然后讲完这部分呢,我们就有具体的一个代码。

然后给大家,然后来实践一下,对于我们的具体建模的时候呢,我们的具体数据集啊,其实它是需要做一个划分的,我们在之前的一个呃基础的课程里面,或者说在我们的一个机器学习的教材里面呢,我们都经常有啊。

我们是可以将我们的数据集把它划分为训练集,验证集和我们的一个测试集,训练集呢是我们是将它用于我们的一个,模型的训练和参数的更新,验证集呢是把它用在我们的一个模型的,具体的进度验证和参数的选择。

测试集呢是用来最终验证我们的模型的精度,我们的一个具体的验证集呢,其实是可以从我们的一个训练集拆分得到的,这个验证集,它是非常非常关键的,而且这个验证集呢它的一个具体的一个作用呢。

就是可以用来对于我们的验证,就是说这个模型的训练过程,实时的进行一个反馈,我们的一个模型呢其实它在进行建模的时候呢,分为两种状态啊,欠拟合过拟合过离合,就是说我们的模型在训练集上的一个精度较好。

在我们的一个泛化的时候,在我们测试集上的精度较差,欠拟合就是说在模型的训练集的一个进度较差,在我们的测试集上面的进度也较差,一般情况下,我们的欠拟合是,就是说是可以通过增加模型的复杂度来避免的。

过滤后是无法避免的,我们的具体给定一个数据集的情况下,我们的一个数据集的一个复杂度,和我们的一个模型的复杂度是要匹配上的,数据集是比较简单的,那么你的模型也尽可能比较简单,也不能过于复杂对吧。

这个地方就是过于复杂的情况好,那么我们的数据集对给定数据集的情况下,你的模型也不能过于简单,你不能不能就是说是一个线性模型,这个线这条直线就过于简单了对吧,我们这个地方这条曲线。

往往就是它能够最为满足我们要求的,那么我们在做建模的时候,我们非常建议大家做这种art stop这种操作,这个操作就是说我们在进行训练的时候,我们是可以绘制得到两条曲线。

这个地方我们相当于是不断增加数模型的深度,我们可以绘的绘制得到两条曲线,一条曲线是我们的训练集的误差,另一条曲线是我们的验证机的误差,那么在这个地方呢,我们可以得到两条曲线之后呢。

然后去可以看一看我们的一个模型,它在我们的一个,最低验证机精度的时候,这个是我们想要的一个位置,因为在这个地方我们的一个模型,它很有可能是能够取得得到最好的,泛化精度的时候对吧。

在我们的验证机上取得最好精度的时候,所以说我们在训练的时候呢,是不断不断的去观测我们的模型,在我们的一个训练集上的精度,和我们的验证集的进度,然后选择在最优精度的位置的时候停止训练。

这个呢就是我们的2stop2stop,它其实是非常非常有效的一种,缓解过滤活的方法好,当然也有其他环节固定化的方法,数据库建正则化以及增加随机性都是啊,就是也是缓解过缓解过滤好的方法。

当然alt stop是比较有效的好,我们接下来呢,然后就是嗯,看一看我们的一个具体的代码实现啊,在我们的一个机器学习的实践部分呢,是非常推荐大家用这个Python。

再加上pandas来做一个具体的实践啊,好我们来看一看,首先呢是我们的这个特征编码的这一部分啊,这一部分呢其实我们在这个嗯,我们PPT里面呢也给大家讲讲了啊,然后我们就就是大致给大家看一下啊。

对我们的这个具体的字段,我们就是传入把它传入进去啊,这个地方我们具体的就是原始数据集,就是一个data frame,把它传入进去就可以做一个具体的编码,好这个编码之后呢。

这个其实是一个data frame,这其实是一个long派的area啊,它不是一个data frame啊,然后呢我们在做一个学习的时候,其实是要关注到这个具体的数据类型的啊,这具体的编码呢。

然后大家可以自己下去看啊,我们在做一个具体的一个特征工程的时候呢,其实我们有些时候还是需要知道,我们的一个特征的重要性的特征的重要性,特征重要性是用来做什么呢,就是说我们是可以用用一个具体的一个取值。

去衡量我们的一个特征,它的一个具体是不是重要,在我们的一些数模,在我们的一些模型里面呢,其实我们可以用模型的一些具体,具体的一些统计值,用来反映我们的一个模型是不是重要的。

比如我们在这随机森林的一个回归性里面,我们如果用它训练完成之后,我们可以在我们回去森林回归器里面的,一个feature importance字段可以找到,就是说他具体它输出的就是每个字段的一个。

重要性的一个排序,这个地方如果我们绘制得到一个直方图,这个直方图就是说RM和LSTAT这两个字段,是在我们的这个模型里面认为是最为重要的,好那么这个地方特征重要性呢,其实它的一个输出结果啊。

这个地方的输出结果是一个小数,对于数模型而言,它往往都是用我们的激励指数,或者说我们的一个信息增益这个字,这个字段所带来的一个信息增进,来作为它的一个重要性的好,那么类似的一些其他的一些数模型呢。

也都是有这个feature importance的一个实现,比如我们的一个LEGBM,或者说我们的一个具体的一个嗯,这个嗯随机四零,或者说我们的x g boost。

都是有这个我们的一个特征重要性的实现的好,那么我们接下来呢来看一看我们的具体的一个,就是说to seem to西格玛这个具体的一个比赛,我们怎么做一些特征的啊,然后这一部分呢可能就是说嗯。

嗯希望各位同学跟着我的一个节奏啊,然后来看一看,我们如何把这个具体的这个这个数据集,我们一步一步做一些特征,然后才让他参与我们的一个训练,首先呢我们读取我们的数据集,这个地方读取数据集呢。

我们直接是用我们的一个pandas,然后read csv,然后完成一个读取,读取完成之后呢,我们接下来就可以完,完成一个具体的一个操作啊,这个操作我们先讲比较,就是说关键的啊,就讲这一部分啊。

对于我们的一些字段呢,其实我们是可以考虑,就是说很多角度对他进行统计啊,我们的这个呃FOTOS,其实它是原始是的这个list类型的,这个list类型呢就是说是这个图片的一个URIL。

对于这个photos我们可以统计它原始是一个list,我们可以统计到什么特征呢,就是它的一个具体的历史的一个长度,list的一个长度,那么这个list的长度呢,我们就可以相当于是视为它的具体的一个。

具体的取值这个数啊,取值个数好,然后呢,这个features其实它也是一个类似的类型的对吧,然后呢,我们这个地方,其实我们也是可以统计它具体的一个个数,然后这个description。

description它是一种文本类型的,文本类型的呢,我们这个地方就取值,统计一下它到底是拥有多少个单词,这个地方怎么做统计呢,我们就是对它进行一个使用,我们的一个空白符进行分隔。

然后统计一下到底有多少个单词就行了对吧,然后如果是这种created的,它是一个日时间类型的,那么对于时间类型的,我们怎么做,把它转为data data,data time之后。

然后提取它的一个年月日年月日对吧,这个呢就是我们的具体的一个现于是,日期类型的一个统计,当然我们也可以做这样一个统计,就是我们刚才所讲的这个交叉的一个特征,统计一下。

每个bedroom平摊的一个具体的一个价格,每个bathroom平摊下的价格,每总共有多少个房间对吧,相当于这两者相加,就是总共有多少个房间,我们bedroom和bathroom进行相加。

以及我们平摊每个房间的一个价格,每个房间的价格对吧,这些都是我们可以做的,那么这些操作都是非常有用的一些字段啊,就是它是嗯将我们的一些原始的一个数据,进行一个交叉计算,得到我们的一个新的一个字段。

那么我们在做一个交叉的时候呢,你其实是要考虑啊,并不是说所有的字段都可以做一个交叉,这个地方的交叉呢其实也是遵循咨询,就是说我们PPT的一个规律啊,就是同类之间可以做加减,同类之间可以做除法。

但是同类之间一般不做乘法啊,不同类型之间可以做一个除法好,然后呢对于我们的一个具体的数据集呢,我们其实是可以做一个target encoding,这个地方呢有target encoding呢。

可能就稍微有一点点复杂,我们在原始的数据集里面,我们有一个叫做manager id这个字段,MANAGID相当于是一个中介的,一个中介的一个编号的吧,中介的编号,这个地方。

如果我们是想要对这个manager id做一个target执行coding,我们怎么做呢,非常建议用这种五折交叉验证的方法来做,五折交叉验证,是这样一种方法啊,我们把我们的数据集划分成五份,五分。

这是我们的第一折,这是一折,这是我们的第二折,这是第三折,第四周,第五周,在第一折的时候,我们用这个做我们的验证集,然后其他当做我们的训练集,这也就是说这个地方这是我们的VAL,第二折的时候。

我们用这一折当做我们的验证器,第三折的时候,这是我们的验证期,第四折的时候,这是我们的验证器,然后第五折的时候,这是我们的验证期,在每一折我们用到的验证集不一样,然后训练集也不一样。

这是我们的交叉验证啊,相当于是我们把我们的数据集拆分成多份,然后把它进行划分成这个地方,划分成五份之后,我们就需需要迭代五次对吧,那么这个地方跟我们的这个target encoding。

有什么样的一个区别呢,或者说有什么联系呢,这个地方,我们的targeting encoding,其实是很容易出现标签泄漏的一种情况,其实是很容易出现标签泄漏的,你可以设想一下。

我们刚才在PPT里面所讲的那个例子,如果一个manager它对应的一个样本就一个的情况下,那么在这个地方我们如果是做一个target encoding,我们其实很容易的就可以将就。

很容易将我们的一个具体的一个对应的一个target,对应样本的一个标签给泄露出去对吧,那么所以说在这个地方呢,我们在做一个targeting encoding的时候呢,我们其实是可以把数据集。

把它划分成训练集和验证集,训练集的一个manager指对训练集的,就相当于是我们对训练集的数据,对它进行manager的一个统计,然后对训练集的一个数据部分对它进行编码,然后验证集的呢我们就不做编码。

或者说我们的一个测试节目不做编码,我们在是一折的时候,我们的一个验证集是这样的,然后下一折的时候对吧,如果是他是划分到中间的时候,这个就是我们的验证机,然后我们的训练集又不一样,确定器就不一样。

也就是说我们在做一个进行分组的时候呢,我们是对我们的一个数据集进行一个划分,不同折之后,然后再去统计不同折下面的一个manager的一个,具体的一个取值,这样呢其实是增加了我们的一个平均性啊。

它也不会将我们的一个原始信息给他泄露出去,这个就是我们的一个相当于是加入了这种,交叉验证的target点口令,在写的时候稍微有一点复杂,也就是说我们在做一个具体统计的时候呢。

我们是对我们的训练集划分成两部分,一部分呢就是我们的一个训练的一部分,是我们的一个验证的,然后在训练的部分呢,我们去统计一下我们的一个具体的一个manager。

它对应的一个相当于是他的interest level,然后呢对于我们的一个测试集呢,相当于是我们用我们的训练集统计得到的,manager的一个统计情况,对我们的一个测试集的结果进行一个编码对吧。

然后呢如果是下一折的话呢,我们就是用下一部分的M训练的部分,进行一个统计,然后对下一部分验证集的一部分,进行整体的编码对吧,验证就是每折的时候,我们的一个具体的一个计算,和我们的统计是不一样的啊。

再来画一下123啊,就画四折啊,不行不行不行不行不行不行不行,在第一折的时候,用这一部分计算我们的一个target encoding,对这部分进行编码,下一节的时候用这一部分计算。

我们targan coding对这部分进行编码,也就是说在进行编码的时候,没有自己对自己进行编码,原始的一个targeting in coding存在,自己对自己进行编码。

但是这样呢我们相当于是用交叉验证的方法,对,相当于是我用这部分做统计,对其他的数据集作为编码,那就不会存在这种标签泄露的情况,而且这样的操作呢,其实是非常非常建议去做的啊,也非常有效的好。

我们这个地方呢是可以对我们的有manager id,做一个target encoding,当然也可以做我们其他的一个building,building id的一个tacting coding。

这个都是可以做的,我们做完之后呢,也可以就是说统计其他的特征,比如说我们到底就是嗯我们的一个房房间,他的一个提就是说他的一个嗯发布的时间,具体的一个天数,具体的月数,以及我们将我们的一个价格。

除以我们的一个经纬度鉴定,是同相同经纬度下面我们的相同位置,下面我们的具体的一个房子的一个价格,这个都是可以做一个具体编码的,然后呢我们对于这个具体的一个特征,把它处理好之后呢。

然后如果是类别类型的特征,我们就直接把它做一个label encoder对吧,把它做一个label encoder,做一个编码,如果是其他类型的特征呢,我们尽可能是把它转为我们的一个数值类型。

转为数值类型之后呢,我们接下来就可以直接把它,用我们的一个模型进行训练了,这一部分呢其实呃是用到了TFIDF啊,我们在之后的课程会给大家讲,其实它原始的数据集呢可能是这种嗯,这种文本类型的啊。

我们是提取它的一个TFIDF特征,然后对它进行一个嗯拼接到一起好,拼接到一起之后呢,我们接下来就是有一个交叉,五折交叉的训练,这个加叉训练其实跟我们刚才讲的是一样的啊,这个地方我们是用k fold。

把我们的数据集划分成五份,用其中的四份做我们的训练,然后用其中的一份做我们的验证对吧,五折交叉验证,五折交叉验证的一个优点,就是说我们这个地方其实是最终训练,得到五个模型,我们对这五个模型呢。

我们是可以对这五个模型,分别对我们的一个测试集做一个预测,然后可以对我们的一个测试集的结果,就行进行一个求平均对吧,矩形求平均,然后就可以得到我们的一个测试及预测结果,的一个均值对吧。

这个其实整体而言都是非常简单的好,当然如果是想要对我们的这个具体的数据集,你就是说做的比较好的话呢,你也可以嗯参考我们的第二份代码啊,就是说你可以对我们的数据集,进行相关的处理啊。

这个处理操作整体都一样啊,这个地方只不过我们在这个地方呢加入嗯,一个叫做stacking的一个操作啊,stacking的操作,我们在进行模型训练的时候呢,其实我们是可以通过我们的一个五折,交叉验证嗯。

可以得到我们得到一个新的一个特征,假如说我们划分成四份啊,四份就是四折,每折的时候我们得到的用到的验证机不一样,我们训练得到四个模型,这个四个模型,它分别对我们的验证集做一个预测。

把我们的验证集我们把它拼接到一起,这个拼接到一起之后,就是我们的模型对原始训练集的一个预测结果,这个就是我们模型,对原始训练集的一个预测结果,那么类似的,我们也可以对我们的一个测试集,有一个预测结果。

我们也可以有对我们的测试机有一个预测结果,那么这样呢这个新加的一维特征,我们是可以再把它进行啊,进行一个二次训练的对吧,这个操作其实叫做一个stacking,它基于我们的五折交叉验证。

我们五折交叉验证可以得到我们的五份,这个地方其实是四份啊,四份验证集的一个结果,我们把这四份验证集的一个结果进行一个拼接,类似的,我们的四个模型,可以对我们的测试集进行一个预测。

结果也可以得到一个新的一列新的一列,那么这个地方我们的具体的数据集,我们是可以得到训练集的一个新增的一列,我们的测试集的新增的一列的一个标签,我们可以将这个标签把它进行一个二次建模。

也就是我们这个地方代码所写的,我们对我们的一个教训练的过程,代表交叉验证的过程,这个地方对我们的通过五折交叉验证,可以对我们的数据集进行一个得到,我们的一个模型,它的一个具体的一个训练集的预测结果。

以及我们测试集的预测结果,然后我们定义多个模型,那么以此类推,就可以得到多列的一个训练集的标签啊,多列的训练集的一个特征,以及多列的一个测试集的一个特征对吧,我们接下来可以把这多个模型这个地方有。

我们有这个随机森林啊,阿达boss啊,叉g boost,这具体的一些我们的一个嗯模型它的一个特征,新增的一个特征呢把它拼接到一起,然后再做一个二次训练,这个S训练,其实就相当于是有点像这种堆叠的过程。

我们这个新增的一列特征,就是我们之前的模型,对我们的一个训练集标签的一个预测结果,以及对我们的测试集标签的一个预测结果,我们接下来学习呢其实学习的是一个残差,也就是我们之前这个模型跟我们的一个。

这是我们的测试结果,和我们的一个真实标签的结果的一个差异性,它其实是一个残差,学习的一个二次的残差,这个stacking呢,有点像这种神经网络的这种思路啊,有点就像这种堆叠的思路。

但是呢stacking它其实是这种手工来实现,这种堆叠思路的这种方法,它是通过这种交叉验证,然后通过这种堆叠的方法,然后完成我们的一个具体的一个模嗯,就是说新增的特征,这个地方我们其实新增了多少列特征。

一列两列,三列,四列,五列六列,这是我们新增的第二层的,我们的输入的数据集,它是一个六列的特征,我们的标签呢仍然是原始的标签,这个标签仍然是原始的标签,我们的一个具体的一个测试集的一个特征呢。

也是我们新增了六例,然后我们的一个具体的一个测试集呢,是基于我们的一个相当于是这个新增六列,做一个预测,因为我们的一个这个地方做的一个,第二层建模呢,是我们的新增六列的特征,和我们的一个标签的一个建模。

我们这个地方的预测呢,就是对我们的新增六列的特征,然后作为我们的输入,然后预测我们的标签,这个呢就是我们的代码实践啊,然后如果各位同学想要下去仔细阅读呢,也是非常建议大家可以下课仔细阅读一下的好。

然后我们继续,首先呢,我们在做一个具体的一个特征工程的时候呢,需要进行一个思考,就是我们的一个具体的特征工程呢,它是跟我们的数据集相关的,不能一概而论啊,不能一概而论,也就是说不同类型的数据。

我们是需要做不同不同的一个特征工程的,这是第一点,第二点呢就是我们的一个具体的模型呢,我们是需要做一个具体的一个处理的,我们的一个具体的处理呢,就是如果是对于数模型,对于我们的线性模型。

其实我们各自的处理方法是不一样的,对这些代码在哪找,可以找到,在我们的一个QQ群啊,我们待会会发到QQ群里面,对待会我会发到QQ群里面,好不好,不同的模型,我们处理的一个特征方法其实也是不一样的。

也是不一样的好,然后呢我们其实在我们学习的时候,重点要学习的就是我们的一个机器学习模型,它适合用什么样的一个特征,这个是你在做学习的时候关键的一个点什么样,有有哪些继续,具体有哪些具体的机器学习模型。

我们有哪些具体的特征,工工程方法,两者之间怎么做一个匹配,这个才是我们在做动手的时候,非常非常核心的一个能力好,那么以上呢就是我们这节课的一个内容,各位同学有问题吗,对如果有问题的话。

可以提出来让我知道啊,对,好,同学们有问题吗,如果没有问题,扣个一好不好,扣个一我们就结束我们今天的课程对,好那么如果大家有问题呢,也可以在我们的QQ群里面艾特我好吧,那么我们今天的直播就到此结束了。

然后我们待会呢会把代码上传到我们的QQ群,好的谢谢各位同学,谢谢各位同学好,谢谢大家,那么我们下节课再见好吧。

标签:这个,在线,一个,笔记,公开课,就是说,具体,然后,我们
From: https://www.cnblogs.com/apachecn/p/18498038

相关文章

  • 七月在线公开课笔记-四-
    七月在线公开课笔记(四)【七月在线】NLP高端就业训练营10期-P7:3.基于LuongAttention的机器翻译_ev-IT自学网100-BV1uxT5eEEr6那我们这节课主要的聊天,主要的讲课内容就是关于用sequencetosequence,做做这个机器翻译,以及训练一个聊天机器人,那我们快速的回顾一下sequenceto......
  • 七月在线公开课笔记-十一-
    七月在线公开课笔记(十一)1447-七月在线-机器学习集训营15期-P14:7-决策树、Boosting模型融合的精髓速讲-程序员技术手札-BV1ASste6EuZ那这样的话我们就准备开始啊,这个呃按照我们的计划啊,今天呢我们需要讨论的模型呢是决策树模型,通过我们这张图啊,可以看到决策树模型的位置啊,......
  • 七月在线公开课笔记-十五-
    七月在线公开课笔记(十五)Lookalike相似人群拓展项目实战-P1-七月在线-julyedu-BV1bA411p79ROK我们现在课程开始啊,可以听到我说话吗?你今天讲的话是looklike相似人群扩展啊,这个也是在推荐广告里面是非常经典的一个业务啊。它呢是源于2018年的腾讯广告算法大赛啊,大家可其实可......
  • 七月在线公开课笔记-十四-
    七月在线公开课笔记(十四)1447-七月在线-机器学习集训营15期-P6:03-图像与文本基础-程序员技术手札-BV1ASste6EuZ我好呃。各位同学大家晚上好,然后我们今天呢就给大家讲解,我们的文本和图像基础啊,嗯这个呢就是很多同学比较关心,因为我们现在很多的一个呃岗位呢,上网工程师的岗......
  • 七月在线公开课笔记-十三-
    七月在线公开课笔记(十三)1447-七月在线-机器学习集训营15期-P3:02-CV-2-行人重识别项目(ReID)跑通训练+评测流程-程序员技术手札-BV1ASste6EuZ好啊,各位同学大家晚上好,嗯那今天是我们的啊,COMMDIVISION里面的第二次的这个项目课程,然后在上一节课程里面中,我们其实是跟大家已经讲......
  • Markdown语法笔记
    1.关于标题#标题1##标题2###标题3####标题4######标题5#######标题62.简单文本一个*,斜体两个*,加粗两个~,删除<u>表示下划线3键盘文本ctl+B<br>内容---><---换行4.>引用门前有两棵树--周树人--鲁迅5.有序列表6.无序列表列表1列......
  • ARM Memory(L1/L2/MMU)笔记
    《ARMArchitectureReferenceManualARMv8-A》里面有Memory层级框架图,从中可以看出L1、L2、DRAM、Disk、MMU之间的关系,以及他们在整个存储系统中扮演的角色。涉及到的相关文档有:《ARMArchitectureReferenceManualARMv8-A》:E2TheAArch32ApplicationLevelMemoryModel......
  • [Ansible实践笔记]自动化运维工具Ansible(一):初探ansible&ansible的点对点模式
    文章目录Ansible介绍核心组件任务执行方式实验前的准备更新拓展安装包仓库在ansible主机上配置ip与主机名的对应关系生成密钥对将公钥发送到被管理端,实现免密登录测试一下是否实现免密登录常用工具ansibleansible—docansible—playbook主要配置文件Ansible模块配置......
  • 程序员修炼之道——从小工到专家读书笔记2
    第四章至第六章为程序员提供了一系列实用的编码原则和实践技巧。第四章:注重实效的偏执这一章深入探讨了程序员在面对复杂性和不确定性时,如何保持一种“偏执”的态度来确保软件的质量和可靠性。程序员应该对自己的代码持怀疑态度,始终假设它可能存在错误,直到经过严格的测试和验证......
  • 2024 Fall NJU ISE 课程笔记
    友情链接:https://eaglebear2002.github.iohttps://spricoder.github.iohttps://wbl-z.github.io/1-1自动化测试目录1-2物联网目录2-1数据库目录3-1机器学习目录3-2移动互联网4-1编译原理目录4-2需求需求笔记目录5-1概率论概率论笔记......