上面的白板展示了一系列的机器学习项目,以开始机器学习涵盖的范围很广。本文将从整体上描述适用于机器学习的典型问题,并提供一个实现机器学习项目原型的框架。首先澄清一些定义。机器学习、人工智能和数据科学之间有什么区别?这三个主题没有明确定义,因此有些难以理解。为了避免误解,我们简化了问题。读者可以将本文提到的机器学习理解为发现数据中的模式以理解某些问题或预测未来事件。希望读者在阅读以下步骤的同时,边做边学,测试结果。通过实践学习。机器学习管道可以分为三个主要步骤:数据收集、数据建模和模型应用。这三个步骤相互影响,环环相扣。当你开始一个项目时,你可能会进入以下循环:收集数据,建模,发现收集的数据质量不好,重新收集数据,建模,使用模型,发现不行,重新-model,Apply,发现新的model还是没用,重新收集数据……等等,model是什么?应用是什么?如何收集数据?好问题。收集数据的方式取决于问题。下面将展示一些示例,读者也可以在电子表格中查看客户购买记录。建模是使用机器学习算法从收集的数据中寻找知识。普通算法和机器学习算法有什么区别?一个普通的算法就像一个食谱,一系列将配料变成美味佳肴的指令。机器学习的特别之处在于,原始条件是材料和菜肴,而不是指令。机器学习算法研究食材和菜肴,给出转换指令。机器学习算法有很多种,不同的算法在解决不同的问题时有不同的表现,但它们的目标是一致的,即在数据中寻找模式或指令集。该应用程序是找到的指令集的实际应用程序。它可以以多种形式使用,从在网上商店向客户推荐产品,到为医疗机构寻找更好的疾病检测解决方案。每个步骤的具体细节因项目而异,但原理基本相同。本文重点介绍数据建模。假设读者已经收集了数据,准备用它来构建机器学习模型。这个过程可以分解为以下几个步骤:完善机器学习项目"src="http://p9.pstatp.com/large/pgc-image/278cd0d2bfac4070a450306dc3ae8b4c"width="640"height="251">机器学习Project可以分为三个步骤,数据收集、建模和模型应用。本文侧重于建模阶段,并假设读者已经拥有数据。1.问题定义——要解决的业务问题是什么?如何将其转化为机器学习问题?2、数据——既然机器学习是要洞察数据中的规律,那么它是什么类型的数据呢?它与问题有什么关系?数据是结构化的还是非结构化的?静态还是动态?3.模型评估——什么算成功?具有95%准确率的机器学习模型是否足够好?4.变量——使用哪些?5.建模——选择哪种模型?如何改进?如何比较不同模型的性能?6.实验——还有什么可以尝试的?模型是否按预期执行?知识如何影响其他步骤?下面就以上问题进行深入讨论。1.问题定义——将业务问题重写为机器学习问题。要确定是否可以使用机器学习,第一步是将要解决的业务问题转化为机器学习问题。监督学习、无监督学习、迁移学习和强化学习是四种主要的机器学习技术(为了简单起见,这里省略了半监督学习)。其中,监督学习、非监督学习和迁移学习在商业项目中应用最为广泛。监督学习具有已知数据和类标签的机器学习称为监督学习。机器学习算法旨在研究影响类别标签的因素。监督发生在训练阶段。如果算法对类别标签的猜测有误,它会尝试自行纠正。例如,如果你试图检测某人是否患有心脏病,你可以使用100条匿名医疗记录作为数据,并将你是否患有心脏病作为类别标签。机器学习算法可以研究医疗记录(输入)和患者是否有心脏病发作(输出),然后确定医疗记录中的哪些指标导致心脏病。算法训练完成后,可以将新的病历(输入)传递给算法,算法会预测患者是否心脏病发作(输出)。算法返回的结果只是疾病概率的大小,并不是绝对的。算法会告诉你:“根据观察,此人的病历与心脏病患者的病历有70%的相似度。”无监督学习使用数据但没有类别标签的机器学习称为无监督学习。以在线视频游戏商店的客户付款记录为例。可能需要使用此数据对客户进行分组并提供个性化服务。机器学习算法可用于完成此任务。类标签是在观察分组后人为给出的。有些群体可能对电脑游戏感兴趣,有些则更喜欢独立游戏,还有一些只购买打折游戏。这个过程称为聚类。重要的是要记住,该算法不提供类别标签,它仅在相似客户中寻找模式。班级标签需要由具有专业知识的专业人员给予。Transferlearning迁移学习改进了现有机器学习模型发现的规律性,并利用它们来学习新问题。从头开始训练机器学习模型会浪费大量金钱和时间。幸运的是,并不总是需要自己构建模型。有时,机器学习算法在一种数据类型中发现的模式可以应用于另一种数据。例如,一家汽车保险公司想要建立一个文本分类模型来判断投保人是否需要承担事故责任。您可以使用已通读维基百科并记住单词之间规律(例如哪些单词可能一起出现)的现有模型。使用保险应用程序(数据)及其结果(类标签)微调模型可以将其应用于您的问题。商业项目中使用的机器学习技术很可能属于以上三类。接下来,我们将它们细分为分类、回归和推荐。分类-预测某物所属的类别。比如顾客是否会购买某种产品,或者某人是否心脏病发作。请注意,可以有两个以上的类别。将事物分为两类称为二元分类,将事物分为三类或更多类称为多元分类。多标签是指同一事物可以同时属于多个类别。回归-预测特定值。比如房子的售价是多少,或者下个月有多少人会访问您的网站。推荐——向某人推荐某物。比如根据购买记录向客户推荐商品,或者根据阅读记录向读者推荐书目。知道了这一点,下一步就是用机器学习术语来描述业务问题。使用刚才的汽车保险示例。保险公司的员工每天需要阅读数千份申请书,判断申请人是否应该为事故承担责任。但现在申请的数量逐渐超过了工作人员的处理能力。而该公司有数万条申请记录,每一条都标明申请人是否应对事故负责。机器学习能派上用场吗?读者想必已经知道答案了。但是让我们检查一下。这个问题是否可以归为上述三类问题——分类、回归或聚类?重述问题。一家汽车保险公司希望将收到的保险申请分为投保人负责的和投保人不负责的两类。看关键词分类了吗?分析的结果是,这可能是一个潜在的机器学习分类问题。“潜在”是因为机器学习也未必能够解决这个问题。将业务问题转化为机器学习问题时,尽量由浅入深。在初始阶段,超过一句话的问题描述是多余的。必要时使事情复杂化。2.数据——它是什么类型的数据?它与问题有什么关系?您拥有或需要收集的数据取决于您要解决的问题。现有数据可能是结构化数据或非结构化数据。这两类数据可以分别归类为静态数据或动态数据。结构化数据——例如包含许多行和列的表格、记录客户交易的电子表格或存储医疗记录的数据库。数据可以是数值,例如平均心率;类别,例如性别;或评级,例如胸痛程度。非结构化数据-不易制成表格的数据,例如图像、音频文件和自然语言文本。静态数据-无法更改的现有历史数据。比如客户的购买记录。动态数据——经常更新的数据,其中旧记录可能会更改或新记录可能会不断添加。这四类数据可能相互重叠。结构化信息的静态表格也可能包含不断更新的文本和照片。用于预测心脏病的数据表可能包括性别、平均心率、平均血压和胸痛程度。在保险申请示例中,可能有一项数据是发送的文本,另一项是照片,最后是申请结果。随着新申请的输入和旧申请的更改,表格将不断更新。非常适合机器学习项目"src="http://p3.pstatp.com/large/pgc-image/7570d203ba3b4389b8b41c5a4687576e"width="640"height="295">两种不同类型的结构化数据。表1.0包含数值和分类数据。表2.0以结构化形式包含图片和自然语言文本等非结构化数据。两种不同类型的结构化数据。表1.0包含数值和分类数据。表2.0以结构化形式包含图片和自然语言文本等非结构化数据,虽然数据类型不同,但是原理是一样的,就是用数据获取知识或者预测事件,监督学习用特征变量来预测目标变量,预测心脏病可能需要用性别作为一个特征变量,一个目标变量可能是患者是否患有心脏病。非常适合机器学习项目"src="http://p1.pstatp.com/large/pgc-image/41fbf39eb8e24400819ac79544aaf435"width="640"height="410">Form1.0分为ID列(黄色部分,不是用于构建机器学习模型),特征变量(橙色部分)和目标变量(绿色)。机器学习模型识别特征变量中的规律性,并用它来预测目标变量。无监督学习没有类标签,但仍然需要发现规律。这意味着将相似的样本归为一类并找出异常值。迁移学习和监督学习需要解决同样的问题,除非你改变在别处获得的机器学习算法。记住,使用客户数据来改进业务模型时或服务质量,一定要让他们知道。这就是为什么你到处都能看到“本网站使用cookies”的原因。这些网站研究用户的浏览习惯,并利用机器学习来改善服务。3.评估——如何评估定义一个成功的机器学习模型?95%的准确率是否足够好?我已经将业务问题转化为机器学习问题并且已经有了数据。接下来考虑如何判断模型是否成功。分类、回归和推荐问题的评价标准否。选择哪个标准取决于问题的类型。为了让这个项目取得成功,模型需要至少95%的准确率。一个准确率为95%的模型可能足以分析谁负责保险申请。但心脏病检测可能需要更准确的结果。以下是分类问题中需要考虑的其他事项。假阴性-该模型在实际为阳性时预测阴性结果。对于像预测垃圾邮件这样的问题,假阴性可能无关紧要。但是,如果自动驾驶汽车的计算机视觉系统无法检测到行人,就会导致灾难。误报——该模型在实际为负时预测为正结果。有人在没有生病的情况下被诊断出心脏病发作。只要对患者的生活方式没有不利影响或不必要的治疗,此类错误可能无关紧要。TrueNegative——模型预测的结果是负的,而真实的结果也是负的。这是一个理想的结果。TruePositive——模型预测为阳性结果,真实结果也是阳性。这也是想要的结果。准确度——与真实结果匹配的正预测的比例。不产生误报结果的模型的准确度为1.0。召回率——检测到的阳性结果与所有阳性结果的比率。不产生假阴性的模型的召回率为1.0。F1值——accuracy和recall的综合结果,值越接近1越好。接受者操作特征(ROC)曲线和曲线下面积(AUC)–ROC曲线图用于比较真阳性率和假阳性率。AUC是ROC曲线下的面积。完全错误的模型的AUC为0.0,完全正确的模型的AUC为1.0。回归问题(关于数值预测)需要减少预测结果与真实值之间的误差。在预测房屋售价时,模型的预测越接近实际价格越好。使用MAE或RMSE来衡量这个误差。平均绝对误差(MAE)–模型预测值与实际值之间的平均误差。均方根误差(RMSE)-模型预测值与实际值之间的平均方差。如果想让值大的误差更显着,就用RMSE来衡量。例如,预测为200,000美元的房屋实际价格为300,000美元,100,000的差异比50,000的差异差两倍以上。如果100,000的差异是50,000的差异的两倍,请使用MAE来衡量。推荐问题的解决方案更难测试。一种方法是在建模时隐藏一些数据。建模完成后,预测这部分数据的推荐结果,并观察其与实际结果的相关性。例如,在向客户推荐网店产品时,2010年至2019年的购买记录是已知的。你可以用2010年到2018年的数据建立一个模型,然后用模型预测2019年会发生什么。这就把问题变成了分类问题,因为目标变成了判断某人是否有可能购买某件物品。然而,传统的分类方法并不是推荐问题的最优解。准确性和召回率之间没有区别。如果机器学习模型推荐了十个产品,你肯定希望页面最先展示最符合客户需求的产品吧?准确率@k——和一般准确率一样的原理,只是只选择符合要求k的item。例如,k取5意味着只选择最好的五个推荐。产品可能有10000种,但不可能全部推荐给客户。特征——数据的特征是什么?哪些特征可用于构建模型?数据不同。特征是指数据集中不同种类的数据。特征主要可以分为分类的、连续的(数字的)和派生的。分类特征——特征值可以分为不同的类别。例如心脏病预测问题中患者的性别。或者是否有人在网上商店问题中购买了商品。连续(或数字)特征——可以用数字衡量的特征,例如平均心率或登录次数。派生特征——从数据派生的特征,通常称为特征工程。特征工程是某个领域的专家使用知识来生成数据。例如,结合登录次数和时间戳,计算出从上次登录时间算起的新特征。或者将日期转换成是否是工作日的新特征。文字、图像,任何东西都可以成为一个特征。任何特征都需要先转换成数值,然后才能被机器学习算法用来构建模型。这里有一些关于特征的注释。确保特征在训练和测试期间是一致的——你应该尝试使用尽可能接近真实系统的特征来训练模型。与该领域的专家合作——什么是已知的,它如何影响选择使用的功能?与机器学习工程师和数据科学家分享这些信息。该功能有价值吗?-如果只有10%的样本包含此特征,是否适合建模?优先选择覆盖范围最广的特征,即大多数样本都包含这些特征的对应数据。完美意味着错误——100%准确的模型通常是错误地将训练数据用于测试的结果。没有模型是完美的。可以简单地使用特征来建立基本标准。客户流失专家可能知道,三周未登录的客户有80%的机会取消其会员资格。或者,房地产经纪人可能知道拥有超过5间卧室和5间浴室的房屋售价超过500,000美元。这些标准已简化,无需精确。但是你可以尝试使用它们来改进机器学习模型。5.建模——我应该选择哪种模型?如何改进模型?如何比较不同的模型?在定义问题、确定数据、评价标准和特征后,就可以开始建模了。建模分为模型选择、模型改进和模型比较三个部分。选择模型在选择模型时,请考虑可读性、可维护性、数据量以及训练和预测方面的限制。可读性和可维护性——模型如何做出决策?你如何修复错误?数据量——数据有多大?数据大小会改变吗?训练和预测的局限性——这与前两者密切相关,有多少时间和资源可用于训练和预测?首先,简化这些问题。像艺术品一样完美的模型可能很诱人。但如果2%的性能提升需要10倍的计算资源和5倍的时间,或许还是不提升更好。逻辑回归等线性模型通常易于理解,并且比神经网络等深度模型训练和预测更快。但是在现实世界中获取的数据并不总是线性的。所以呢?决策树集成和梯度提升算法最适合处理Excel工作表和数据框等结构化数据。了解随机森林、XGBoost和CatBoost算法。神经网络等深度学习模型适用于图像、音频文件和自然语言文本。权衡是它们需要更长的时间来训练和预测,并且更难调试。但这并不意味着它们不应该被使用。迁移学习结合了深度学习模型和线性模型的优点。它使用预训练的深度学习模型并将其识别的模式输入线性模型。这将大大节省训练时间。在哪里可以找到预训练模型?预训练模型可以在PyTorchhub、TensorFlowhub、modelzoo和fast.aiframework等网站上找到。其他类型的模型呢?构建模型原型时无需自己构建机器学习模型。前人留下了模型代码。重要的是处理输入和输出,使其适应现有模型。这意味着严格定义模型和类标签,并了解需要解决的问题。完美的机器学习项目"src="http://p1.pstatp.com/large/pgc-image/b6745e88d4ed4fc089c605f982299942"width="692"height="208">首先主要工作是保证输入(数据)和有一个模型可以匹配。下一步是确保输出满足问题定义和评估标准。微调和改进模型模型的初始结果不是一切。你可以调整和改进一个机器学习模型就像调整汽车。微调模型需要改变超参数,例如调整学习率或优化器。或特定模型中的其他结构因素,例如随机森林中的树数或神经网络中的层。这个调整过程,曾经是手动的,现在正在变得自动化,并将无处不在。通过迁移学习调用预训练模型可以结合前面步骤的优点。调试模型时应优先考虑可重复性和效率。其他人应该能够重现您的步骤来改进他们的模型。由于主要目标是减少培训时间而不是提出新想法,因此调试过程应该以效率为导向。比较模型将苹果与苹果进行比较。使用数据X训练模型1,使用数据Y评估使用数据X训练模型2,使用数据Y评估不同的模型必须使用相同的数据来训练和评估。模型1和2是可变的,而数据X、Y不是。6.实验——还有什么可以尝试的?我们的发现如何影响其他步骤?模型的行为是否符合预期?此步骤包含所有其他步骤。由于机器学习是一个高度迭代的过程,因此必须确保可以进行实验。主要目标是尽量减少离线和在线实验之间的时间差。当项目尚未对用户可用时,就会进行离线实验。在线实验发生在机器学习模型开始量产之后。每个实验必须使用数据的不同部分。训练数据集——用来训练模型,一般占整个数据集的70%-80%。验证/开发数据集-使用它来微调模型,通常是整个数据集的10%-15%。测试数据集-使用它来测试和比较模型,通常是整个数据集的10%-15%。这些数据集的数据量可能会根据问题和数据类型略有不同。如果模型在训练集上表现不佳,则意味着它没有学好。解决方案是尝试不同的模型,改进现有模型,或者收集更多高质量的数据。如果模型在测试集上表现不佳,则意味着难以泛化。该模型可能过度拟合。使用更简单的模型或收集更多数据。如果模型在真实数据上表现不佳,则意味着真实数据和训练集与数据集有很大差异。重复前两个步骤。确保数据与正在解决的问题相匹配。尝试进行重大更改时,请记录内容和原因。请记住,就像模型微调一样,每个人,包括您未来的自己,都应该能够重复您所做的事情。这意味着定期保存最新的模型和数据集。结合以上步骤,做出项目原型。很多公司对机器学习略知一二,却不知道如何开始使用。最好通过以上六个步骤做一个概念模型。此类尝试的目的并不是要从根本上改变商业运营模式,而是探索利用机器学习为公司增加商业价值的可能性。毕竟,我们的目标不是追逐华而不实的趋势,而是获得真实、有价值的解决方案。设定项目原型搭建的时限,两周、六周、十二周比较合适。有了高质量的数据,一个好的机器学习和数据科学从业者可以在短时间内达到80%-90%的最终建模结果。行业专家、机器学习工程师和数据科学家应该一起工作。否则你可能会为错误的对象建立一个好的模型,这是一个非常糟糕的结果。如果可能,请通知网页设计师改进在线商店的布局,以帮助进行机器学习实验。由于项目原型的性质,您的企业可能无法从机器学习中获利。项目经理必须意识到这一点。机器学习工程师或数据科学家也必须为徒劳的努力做好准备。但不盈利并不意味着一切都失去了。无用的模型是有价值的,因为您可以学习无用的东西并将精力花在其他地方。这就是为什么你要为你的实验设定最后期限。时间总是很短,但ddl就是生产力。如果机器学习模型表现良好,则进行下一步,否则返回上一步。通过做比什么都不做学习要快得多。请注意,数据是核心。没有高质量的数据,任何机器学习模型都将毫无用处。使用机器学习应该从收集高质量数据开始。应用程序改变了一切。离线表现良好的模型在线上可能表现不佳。本文重点介绍数据建模。模型一旦投入使用,将面临架构管理、数据验证、模型再训练和分析等诸多问题。云服务提供商会提供这些服务,但将它们结合起来仍然是黑科技。如果你是老板,请给你的数据工程师高薪。如果您是一名数据工程师,请与您的老板分享您学到的知识。数据收集和模型应用是机器学习管道中最长的部分。本文只讨论建模,但仍然忽略了数据预处理的细节。业务工具多种多样。机器学习是由许多小工具组成的大工具。从代码库和框架到不同的应用程序架构。每个问题都有许多不同的解决方案。最好的方法是不断更新。但本文讨论的主题保持不变。
