我将吴博士关于机器学习的问答汇总如下:
刚才有一个同学提问的是:机器学习是不是相当于一个黑盒子,我们输入结果得出一些结论性的东西。
是这样的机器学习的一些方法必如说神经网络它的一个拟合它相当于是一个黑盒子,它的精度非常高,但是我们很难从它的一个模型拟合中得到一个非常有意义的结论。不象线性模型以后我们会看到,当一些线比较常用的线性模型方法,我们非但可以得到一个好的预测,并且我们能理解每一个变量是如何影响最终我们预测值的这样一个过程。首先这取决于你最后的目的是什么,如果你一味的要追求最高精度的话,我们可以用一些比如神经网络的方法来得到最好的精度,但如果你的问题是和客户沟通,客户想通过你的模型,了解哪一些变量会最终影响它的一个销量。比如说它可以通过你的模型中的一些拟合的拟合值,来得出一些商业结论这样他们能改进某一方面,这样他们可以 更好的改善自己的商业实践。
好,我们看到一个很好的问题,就是在机器学习过程中是有一个商业预测。如何能判定一个好的模型建立适合的模型 ?
这个问题我们是这样的,我们会有很多方法我们会逐一去试。刚才我提到了我们有两大目的,一个是 帮助我们理解商业过程,另外一个是追求一个很好的精度,这取决于你的客户有什么要求,我们往往是想找到两者之间的一个平衡点。然后呢,我们还有一个很重要的测试方法,就是我刚才说的EB test, 在我的工作实践当中,我比如说对我的客户提供一个建议,然后我说通过我这个方法你的预测你的销量会提高,然后我的内部客户会使用我的这个方法,然后他会做一个对比他会把20%的人运用我这个新方法,然后一个月以后,他会拿出销量来做对比和传统方法进行对比 。如果我的这个新方法不会对整个销量产生提高的话,那他不就意味着我的方法是失败的。所以说我不得不说,作为一个数据科学家压力是非常大的,因为你不光是要提供咨询,而且他们会验证你提供的咨询是否是有道理,是否是显著帮助提高他们的销量的。所以说如果你最后的销量并没有上去的话,你要承担整个项目失败的责任。
好,我们刚才看到另外一个问题错误率是33%,这个错误率是不是偏高,对,这是一个很好的问题。
在这儿那我并没有完全运用所有的特征。然后呢我们可以这样理解这个问题33%并不高,为什么,因为我们实际当中贷款的违约的人总数也就在18%左右,所以说如果我预测所有的人都不违约那我的错误率也就在18%左右,当然这是一个毫无意义的结果。这个问题是称为unbalanced数据问题,也就是我们的违约人数总数是非常少的,大部分的人是不违约的所以说你如果一味追求准确率的话,最后就变成你预测了所有人都不违约,这样你的精确程度会非常高,举一个极端例子,我以前看到过一个数据它可能最终违约的概率只有0.5%,那如果你把所有人都预测为不违约的话那你的预测精度就是99.5%这是毫无意义的,因为我们最终想找到那些违约的人因为违约的人会给你带来巨大的经济损失,一个人违约可能会造成20万美元的房贷损失。所以说我们要综合考虑这个问题不光是考虑精确率,以后我们会看一个roc曲线并且我们可以构造一个损失函数,比如说这你预测一个会违约的人不违约你会损失多少钱,然后呢把一个不违约的人预测为违约,那么我们损失一个客户你会损失多少钱,这样我们可以把这个问题进行一个量化,最后有量化就有公式,有公式我们就可以进行求导啊也好,拟合啊也好。我们可以减少这个最后的损失,所以说这是一个损失函数的优化问题。
好我们看到另外一个问题是,决策树中只连接两个因素,所以在链接节点上实际上或许不止只有两个因素。
这个问题是由决策树的特征来决定的,因为决策树是二分的,相当于把一个数据分为两块大于或者小于,如果是一个分类变量的话是发生或者不发生,所以你每一步其实都是对你现在的一个数据集进行二分法左边右边大于小于,所以说这是由一个决策树的算法来决定的。当然了这个决策树的算法最后的精度未必是最好的,但是决策树的优势在于它可以可视化,能帮非数据科学家进行一个很好的沟通,并且决策树和一些其它方法结合以后,它的精度会有显著的提升,我们以后会介绍的一个是boosted tree这一个方法可以把一个简单的决策树的精度显著提升,我们保留决策树一族一个特征,然后那又提高它的精度,这个方法是机器学习中非常非常有用的一个方法。
我们来回答小虎的一个学员提出的问题第一个问题是让我们来看一下问题,是在机器学习在零售、银行、金融风险的管理特别是网上银行反欺诈的应用。
好的,这个问题是一个典型的个分类问题,我们可以把过去有欺诈现象的人选出来,然后把没有欺诈的人选出来。这样我们可以用logistic我们刚才提到的一个方法,来对每一个人的最终欺诈的概率可以进行一个估算。我们套用刚才违约的案例把这一套方法完全应用上去。
第二个问题想问一下,整个机器学习在银行风险控制中的应用。
然后呢,这个问题在美国是非常常见的一个问题,因为我们都有一个你的贷款或者信用卡会违约的一个概率,每一个银行都会有准备一个储备金,来降低违约造成的冲击,当然啦通过机器学习我们可以在源头上卡死违约,尽量减少违约。我们可以预测一个人最终违约的概率,这样我们能把大部分不合格的人在第一时间就排除掉。
这其实也是一个分类问题,机器学习监督学习中的分类问题,也就是一个事件会不会发生,我们将拟合一些方法。我们来提一下吧,对一个分类问题,我们有逻辑回归、我们有树、boosed tree 、support backturn machine、知识照相机包括神经网络之类的各种方法来帮助你选择一个方法来预测一个事件会不会发生的概率。
好的,刚才有一个同学提到的是,在前期就用了Python 瞬间感到自己low了不少。
其实 不是这样的,我觉得最好学习Python的一个途径就是在实战中学习Python。 你有问题的时候你可以百度或者你可以寻找一些资料。如果你不从实战中学习你没有一个动力,你永远不要认为可以通过一本书来学习python这是一个非常低效的方法,只有当你有一个项目 逼着你自己去学习的时候,你这样的学习效率是最高的。我个人也是,我个人一开始是统计系的所以我用的是R,但是呢python 又是一个非常有用的一个机器学习的工具,所以说我个人就通过Google啊、通过一些实际的案例来学习python,我觉得这方面是非常高效的。
好的,我们看到的一个问题是在机器学习过程中是不是必须要有质量高、维度多和数据量大的数据才能展开机器学习。
是这样的机器学习并不要求一定要特别大的数据,然后这取决于如何定义大数据因为我们刚才看到我们的lendingclub 有12万条数据,其实从你的直观来讲这数据量并不小,但实际上它只有17.8G从数据的量来上其实是并不大的,这是一点。然后呢,我想提的是机器学习过程中,数据质量是一个非常重要的因素。因为没有一个好的数据你很难得出一个有意义的结论。所以说我们在实际工作中,我们花大量的时间来清理数据。来把一些不好的数据来调整、来跟商业方面的人士沟通尽量得到一个高质量的数据。
好的,下一个问题是在数据分析前是不是要有自己的预测?
这个问题比较有意思因为你还没有进行机器学习你如何有自己的预测呢?当然我这个意思就是有两种分析,一种是叫数据导向型data driven,然后另一种是你有经验domain knowledge 你有自己的一个领域的专业知识 这两者是相互结合的。你不光需要纯数据分析,我们也需要一些自己的预测这样的某些专业知识,如果有专业知识的话,很快能帮助你锁定一些重要的变量以及一些变量的变形所以说这两者是相结合的。
我想说一下关于数据量这个问题。
其实我们可以看到刚才波士顿房价这个数据只有506个点,因为每一个点其实代表的是一个城镇,所以说我们要预测每一个城镇的房价波士顿周边房价这样的一个数据量是不可能会非常巨大的,我们不可能有上亿个或者上千万个小城镇对吧,所以说我们不一定要建立在巨大的数据量前提下才可以进行机器学习,我们可以通过一些小数据也能得到一些非常非常有用的、有帮助的结论。