机器学习入门基础(万字总结)(建议收藏!!!)

目录

前言

1机器学习概述

1.1机器学习简介

1.1.1机器学习背景

1.1.2机器学习简介

1.1.3机器学习简史

1.1.4机器学习主要流派

1.2机器学习、人工智能和数据挖掘

1.2.1什么是人工智能

1.2.2什么是数据挖掘

1.2.3机器学习、人工智能与数据挖掘的关系

1.3典型机器学习应用领域

1.3.1典型机器学习应用领域---艺术创作

1.3.2典型机器学习应用领域---金融领域

1.3.3典型机器学习应用领域---医疗领域

1.3.4典型机器学习应用领域---自然语言处理

1.3.5网络安全

1.3.6工业领域

1.3.7机器学习在娱乐行业的应用

1.4机器学习算法分类

1.4.1机器学习算法分类---监督学习 

1.4.2机器学习算法分类---非监督学习

1.4.3机器学习算法分类---半监督学习

1.4.4机器学习算法选择

1.4.5机器学习算法分类---分类算法

1.4.6分类算法---决策树

1.4.7分类算法---支持向量机

1.4.8分类算法---最近邻算法

1.4.9分类算法---贝叶斯网络

1.4.10分类算法---神经网络

1.4.11机器学习算法分类---聚类算法

1.4.12聚类算法---BIRCH算法

1.4.13聚类算法---CURE算法

1.4.14聚类算法---k-均值算法

1.4.15聚类算法---DBSCAN算法

1.4.16聚类算法---OPTICS算法

1.4.17机器学习算法分类---关联分析

1.4.18关联分析---Apriori算法

1.4.19关联分析---FP-growth算法

1.4.20关联分析---Eclat算法

1.4.21机器学习算法分类---回归分析

1.4.22回归分析---线性回归

1.4.23回归分析---逻辑回归

1.4.24回归分析---多项式回归

1.4.25回归分析---岭回归

1.4.26机器学习算法分类---深度学习

1.5机器学习的一般流程

1.5.1定义分析目标

1.5.2收集数据

1.5.3整理预处理

1.5.4数据建模

1.5.5模型训练

1.5.6模型评估

1.5.7模型应用


前言

机器学习是人工智能的重要技术基础,涉及的内容十分广泛。本文章涵盖了机器学习的基础知识,主要包括机器学习的概述、 回归、分类、聚类、神经网络、文本分析、图像分析、深度学习等经典的机器学习基础知识,还包括深度学习入门等拔高内容。 

1机器学习概述

介绍机器学习的基础概念和知识,包括机器学习简史、主要流派、与人工智能、数据挖掘的关系、应用领域、算法、一般流程等。

1.1机器学习简介

1.1.1机器学习背景

伴随着计算机计算能力的不断提升以及大数据时代的迅发展人工智能也取得了前所未有的进步。

很多企业均开始使用机器学习的相关技术于大部分行业中,以此获得更为强大的洞察力,也为企业的日常生活和企业运营带来了很大的帮助,从而提高了整个产品的服务质量。

机器学习的典型应用领域有:搜索引擎、自动驾驶、量化投资、计算机视觉、信用卡欺诈检测、游戏、数据挖掘、电子商务、图像识别、自然语言处理、医学诊断、证券金融市场分析以及机器人等相关领域,故在一定程度上,机器学习相关技术的进步也提升了人工智能领域发展的速度。

1.1.2机器学习简介

机器学习(MachineLearning),作为计算机科学的子领域,是人工智能领域的重要分支和实现方式。

机器学习的思想:计算机程序随着经验的积累,能够实现性能的提高。对于某一类任务T及其性能度量P,若一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么就称这个计算机程序在从经验E学习。

主要的基础理论:数理统计,数学分析,概率论,线性代数,优化理论,数值逼近、计算复杂性理论。

机器学习的核心元素:算法、数据以及模型。

1.1.3机器学习简史

作为一门不断发展的学科,机器学习尽管在最近几年才发展成为一门独立的学科。起源于20世纪50年代以来人工智能的逻辑推理、启发式搜索、专家系统、符号演算、自动机模型、模糊数学以及神经网络的反向传播BP算法等。如今作为机器学习重要的基础理论。

在1950年代,已经有了机器学习的相关研究。代表工作主要是F.Rosenblatt基于神经感觉科学提出的计算机神经网络,即感知器。随后十年,用于浅层学习的神经网络风靡一时,尤其是MarvinMinsky提出了著名的XOR问题和感知器线性度不可分割的问题。

局限:由于计算机的计算能力有限,因此很难训练多层网络。通常使用仅具有一个隐藏层的浅层模型。尽管已经陆续提出了各种浅层机器学习模型,但理论分析和应用方面都已产生。但是,理论分析和训练方法的难度要求大量的经验和技能。而随着最近邻算法和其他算法的相继提出,在模型理解,准确性和模型训练方面已经超越了浅层模型。机器学习的发展几乎停滞不前。

在2006年,希尔顿(Hinton)发表了一篇关于深度信念网络的论文,Bengio等人发表了关于“深度网络的贪婪分层明智训练”的论文,而LeCun团队发表了基于能量模型的“稀疏表示的有效学习”。

这些事件标志着人工智能正式进入深度网络的实践阶段。同时,云计算和GPU并行计算为深度学习的发展提供了基本保证,尤其是近年来,机器学习它在各个领域都实现了快速发展。新的机器学习算法面临的主要问题更加复杂。机器学习的应用领域已从广度发展到深度,这对模型的训练和应用提出了更高的要求。

随着人工智能的发展,冯·诺依曼有限状态机的理论基础变得越来越难以满足当前神经网络中层数的要求。这些都给机器学习带来了挑战。

1.1.4机器学习主要流派

在人工智能的发展中,随着人们对智能的理解和对实际问题的解决方案的发展,机器学习大致出现了符号主义、贝叶斯、联结主义、进化主义、行为类推主义五大流派。

符号主义起源于逻辑和哲学,其实现方法是利用符号来表达知识并使用规则进行逻辑推理。专家系统和知识工程是该理论的代表。符号主义学派认为,知识是信息符号的表示,是人工智能的基础。这些符号被输入到计算机中进行仿真和推理,以实现人工智能。

贝叶斯定理是概率论中的一个定理,其中P(A|B)是事件B发生时事件A发生的概率(条件概率)。贝叶斯学习已被应用于许多领域。例如,自然语言中的情感分类,自动驾驶和垃圾邮件过滤。

联结主义起源于神经科学,主要算法是神经网络,它由一定结构中的大量神经元组成。神经元是一种看起来像树的细胞,它由细胞主体和细胞突起组成,长轴突被鞘覆盖以形成神经纤维,在其末端的小分支称为神经末梢。每个神经元可以具有一个或多个树突,这些树突可以接受刺激并将兴奋转移到细胞体内。每个神经元只有一个轴突,它可以将兴奋从细胞体传递到另一个神经元或其他组织,神经元相互连接,从而形成一个大型的神经网络,人类所学到的几乎所有知识都存在其中,如下图所示:

在神经网络中,将n个连接的神经元的输出用作当前神经元的输入,进行加权计算,并添加一个偏置值(Bias)以通过激活函数实现变换,激活功能的功能是在一定范围内输出控制。以Sigmoid函数为例,输入是从负无穷大到正无穷大,并在激活后映射到(0,1)间隔。

人工神经网络是分层(Layer)组织的,每层包含多个神经元,这些层通过某种结构连接,神经网络训练的目的是找到网络中的每个突触连接的权重和偏差值。作为一种监督学习算法,神经网络的训练过程是通过不断反馈当前网络计算结果与训练数据之间的误差来校正网络权重,使得误差足够小,这就是反向传播算法。

1850年,达尔文提出进化论。进化过程是适者生存的过程,个体生物在其中适应环境。智能需要适应不断变化的环境,并通过对进化过程进行建模来生成智能行为。

进化算法(EA)是基于“自然选择,适者生存”和迭代优化的原理,在计算机上模拟进化过程,直到找到最佳结果。进化算法包括基本操作,例如基因编码,群体初始化和交叉变异算子。它是一种相对成熟的全局优化方法,具有广泛的适用性。它具有自组织,自适应和自学习的特征,可以有效地处理传统优化。用算法难以解决的复杂问题(例如NP硬优化问题)。

遗传算法的优化应根据具体情况选择算法,也可以与其他算法结合进行补充。对于动态数据,可能难以使用遗传算法来找到最佳解,并且种群可能会过早收敛。

根据约束条件优化功能,行为类比主义者倾向于通过类比推理获得知识和理论,并在未知情况和已知情况之间建立相应的关系。在实际应用中,是计算它们之间的相似度,然后定义关联关系。

1.2机器学习、人工智能和数据挖掘

机器学习与其他领域之间的关系如下图所示:

数据挖掘:通过处理各种数据来促进人们的决策

机器学习:使机器模仿人类的学习来获取知识

人工智能:使用机器学习和推理来最终形成特定的智能行为

1.2.1什么是人工智能

人工智能是为了使机器的行为看起来像人类所表现出的智能行为。麻省理工学院的约翰·麦卡锡(JohnMcCarthy)于1956年在达特茅斯会议上提出。

人工智能的先驱者希望机器具有与人类相似的功能:感知,语言,思维,学习,动作等。

近年来,人们发现机器在感知(图像识别)和学习方面具有某些功能,所以人工智能在世界范围内开始普及。

人工智能的现阶段仍处于“弱人工智能”(NarrowAI)阶段

人类不需要大量的数据来进行反复的迭代学习以获取知识和进行推理。他们只需要看一下自行车的照片就可以粗略地区分各种自行车。即目前对人脑中信息的存储和处理尚未得到清晰的研究,与当前主流的深度学习理论有很大的基本差异。

因此,人工智能距离“强人工智能”(GeneralAI)阶段还有很长的路要走。

典型的人工智能系统包括以下方面:

(1)博弈游戏(如深蓝、AlphaGo、AlphaZero等)。

(2)机器人相关控制理论(运动规划、控制机器人行走等)。

(3)机器翻译。

(4)语音识别。

(5)计算机视觉系统。

(6)自然语言处理(自动程序)。

1.2.2什么是数据挖掘

数据挖掘使用诸如机器学习,统计和数据库之类的方法来发现相对大量的数据集中的模式和知识,涉及数据预处理,模型和推理,可视化等。

数据挖掘包括以下类型的常见任务。

异常检测(anomalydetection):识别不符合预期模式的样本和事件。异常也称为离群值,偏差和异常。异常检测通常用于入侵检测,银行欺诈,疾病检测,故障检测等。

关联规则学习(Associationrulelearning):发现数据库中变量之间的关系(强规则)。例如,在购物篮分析中,发现规则{面包,牛奶}→{酸奶}表示如果客户同时购买面包和牛奶,他们很有可能也会购买酸奶,这些规则可以用于市场营销。

聚类:一种探索性分析,在数据结构未知的情况下,根据相似度将样本划分为不同的群集或子集,不同聚类的样本有很大的差异,以便发现数据的类别和结构。

分类:根据已知样本的某些特征确定新样本所属的类别。通过特征选择和学习,建立判别函数以对样本进行分类。

回归:一种统计分析方法,用于了解两个或多个变量之间的相关性,回归的目标是找到误差最小的拟合函数作为模型,并使用特定的自变量来预测因变量的值。

随着数据存储(非关系NoSQL数据库),分布式数据计算(Hadoop/Spark等),数据可视化和其他技术的发展,数据挖掘具有越来越多的了解事务的能力,但相对也增加了算法的要求。因此,一方面,数据挖掘必须获取尽可能多,更有价值和更全面的数据,另一方面要从这些数据中提取价值。

数据挖掘在商业智能中有许多应用,特别是在决策辅助、流程优化和精确营销中。例如:

广告公司可以使用用户的浏览历史记录、访问记录、点击记录和购买信息来准确地宣传广告。采用舆论分析,尤其是情感分析,可以提取舆论来驱动市场决策。例如,在电影宣传期间监视社会评论,寻找与目标观众产生共鸣的元素,然后调整媒体宣传策略以迎合观众的口味并吸引更多人。

1.2.3机器学习、人工智能与数据挖掘的关系

数据挖掘是从大量业务数据中挖掘隐藏的、有用的以及正确的知识,以促进决策的执行。

数据挖掘的许多算法都来自机器学习和统计。机器学习中的某些算法利用统计理论,并在实际应用中对其进行优化以实现数据挖掘的目标。

近年来,机器学习的演化计算深度学习等方法也逐渐跳出实验室,从实际数据中学习模式并解决实际问题。数据挖掘与机器学习的交集越来越大,机器学习已成为数据挖掘的重要支撑技术。

机器学习是人工智能的一个分支,作为人工智能的核心技术和实现方法,机器学习方法被用来解决人工智能面临的问题。机器学习是使用一些算法,这些算法允许计算机自动“学习”,分析数据并从中获取规则,然后使用这些规则来预测新样本。

机器学习是人工智能的重要支持技术,而深度学习就是其中一个重要分支。深度学习的典型应用是选择数据来训练模型,然后使用该模型进行预测。例如,博弈游戏系统(DeepBlue)专注于探索和优化未来的解决方案空间(SolutionSpace),而深度学习则为开发游戏算法(例如AlphaGo)付出了艰辛的努力,并已享誉全球成就。

1.3典型机器学习应用领域

机器学习可以显著提高企业的智能水平并增强其竞争力,对各个行业的影响越来越大。

机器学习应用程序的典型领域包括:

网络安全,搜索引擎,产品推荐,自动驾驶,图像识别,语音识别,量化投资,自然语言处理等。

随着海量数据的积累和硬件计算能力的提高,机器学习的应用领域仍在迅速扩展中。

1.3.1典型机器学习应用领域---艺术创作

在图像处理中有许多应用,如卷积神经网络(CNN)等在图像处理中具有天然的优势。

机器学习被广泛应用于图像处理领域,除了图像识别,照片分类,图像隐藏等以外,还涉及图像生成,美化,恢复和图像场景描述等。

2015年,脸书(Facebook)公司开发了可描述图片内容的应用程序,通过描述图片中的背景,字符,对象和场景来帮助视障人士理解图片的内容。主要的应用技术是图像识别实现对图片中对象的识别,但是内容的描述以故事的形式返回,还需要自然语言的生成技术,这是人工智能领域当前的难点之一。

艺术画合成

借助深层的神经网络,人们可以通过合成画出充满艺术气息的图画。其原理是使用卷积神经网络提取模板图片中的绘画特征,然后应用马尔可夫随机场(MRF)来处理输入的涂鸦图片,最后合成一张新图片。

下图显示了NeuralDoodle项目的应用效果。(左图是油画模板,中图是用户的涂鸦作品,右图是合成后的新作品)

将对抗性神经网络(GAN)和卷积神经网络相结合,并将MRF理论应用于现有图片修复的缺失部分。

使用经过培训的VGGNet作为纹理生成网络可以删除现有图片中的干扰对象,这种技术具有广泛的应用范围。

谷歌(Google)公司的PlaNet神经网络模型可以识别照片中的地理位置(不使用照片的Extif位置数据)。

该模型的训练使用了约1.26亿张网络图片,将图片的Extif位置信息用作标记,以对除北,南极和海洋以外的地球区域进行网格划分,从而使图片相对应到特定的网格

该部门使用约9100万张图片进行培训,使用约3400万张图片进行验证,以及使用Flickr中约2300万张图片进行测试,大约3.6%的图片可以准确地识别到街道上,28%的照片可以准确地识别出其所在的国家,48%的照片可以准确地识别出其所在的大陆板块。

识别的误差距离约为1131公里,在相同情况下,图片位置的人为定位误差距离为2320公里。

尽管训练样本的数量很大,但最终的神经网络模型的大小仅为377MB。

1.3.2典型机器学习应用领域---金融领域

金融与人们的日常生活息息相关,例如食物,衣服,住房和交通。

与人类相比,机器学习在处理金融行业业务方面更为有效,它可以同时准确地分析成千上万的股票并在短时间内得出结论,它没有人为的缺点,在处理财务问题上更可靠和稳定,通过建立欺诈或异常检测模型,有效地检测出细微的模式差异并提高结果的准确性,来提高财务安全性。

在信用评分方面,评分模型用于评估信用过程中的各种风险并进行监督,根据客户的职业,薪水,行业,历史信用记录等信息确定客户的信用评分,这不仅可以降低风险,而且可以加快贷款流程,减少尽职调查的工作量并提高效率。

在欺诈检测中,基于收集的历史数据训练机器学习模型,以预测欺诈的可能性。与传统检测相比,此方法花费的时间更少,并且可以检测到更复杂的欺诈。在训练过程中,应注意样本类别的不平衡,以防止过度拟合。

在股市趋势预测方面,机器学习算法用于分析上市公司的资产负债表,现金流量表以及其他财务数据和公司运营数据,并提取与股价或指数有关的特征以进行预测。

1.使用与公司相关的第三方信息(例如政策法规,新闻或社交网络中的信息),通过自然语言处理技术来分析舆情观点或情感指向,为股价预测提供支持,从而使预测结果更准确。

2.应用监督学习方法建立两个数据集之间的关系,以便使用一个数据集来预测另一数据集的结果,例如使用回归分析通胀对股票市场的影响等、在股票市场中使用无监督学习方法对影响因素的分析揭示背后的主要规则;深度学习适用于处理非结构化大数据集并提取不容易明确表达的特征;强化学习的目标是找到通过算法探索最大化收益的策略。

3.应用诸如LSTM之类的深度学习方法可以基于股票价格波动的特征和可量化的市场数据进行股票价格的实时预测,可用于股票市场和高频交易等其他领域中。

在客户关系管理(CRM)中:

➢从银行和其他金融机构的现有海量数据中提取信息,并通过机器学习模型对客户进行细分,以支持业务部门的销售,宣传和营销活动。

➢诸如聊天机器人之类的集成人工智能技术的应用可以为客户提供全天候服务,并提供个人财务助手服务,例如个人财务指南和跟踪费用。

➢在长期保存用户历史记录后,我们在处理各种客户要求(例如客户通知,转账,存款,查询,常见问题和客户支持)时,可以为客户提供合适的财务管理解决方案。

1.3.3典型机器学习应用领域---医疗领域

机器学习可用于预测患者的诊断结果,制定最佳治疗方案,甚至评估风险水平,还能减少人为错误。

◆在2016年《美国医学会杂志》(JAMAMagazine)上发表的一项研究中,人工智能学习了许多历史病理学图片,并验证了其准确性达到96%。这一事实证明,在对糖尿病视网膜病变进行诊断方面,人工智能已经与医生水平相当。在进行了13万张皮肤癌的临床图片的深度学习之后,机器学习系统在皮肤癌的检测方面超过了皮肤科医生。

◆对于脑外科医师而言,术中病理分析通常是诊断脑肿瘤的最佳方法之一,并且该过程需要很长时间,并且很容易延误正在进行的脑外科手术。

◆科学家开发了一种机器学习系统,可以“染色”未经处理的大脑样本并提供非常准确的信息,效果与病理分析相同,诊断脑肿瘤的准确性和使用常规组织切片的准确性几乎是一样的,这对于接受脑瘤手术的患者来说非常重要,因为它大大减少了诊断时间。

◆在临床试验方面,每个临床试验都需要大量数据,例如患者病史和病历,健康日志,App数据和医学检查数据。

◆机器学习收集并挖掘这些数据以获得有价值的信息。例如,某生物制药公司根据单个患者的生物学特征进行建模,并根据患者的药物反应对测试人群进行分类,并在整个过程中监视患者的生物学体征和反应。

◆英国某公司使用机器学习技术来分析大量图像数据,通过分析建立模型,识别和预测早期癌症,还为患者提供个性化的治疗程序。研究人员从大量心脏病患者的电子病历数据库中检索出患者的医疗信息,比如疾病史,手术史以及个人生活习惯等医学信息,并在机器学习算法下对该信息进行分析和建模以预测患者的心脏病风险因素,在预测是否会患心脏病以及预测心脏病患者人数方面上均优于现在的预测模型。

1.3.4典型机器学习应用领域---自然语言处理

自然语言处理属于文本挖掘的范畴,它结合了计算机科学,语言学和统计等基本学科。

自然语言处理涉及自然语言理解和自然语言生成。前者包括文本分类,自动摘要,机器翻译,自动问答,阅读理解等,在这些领域已经取得了很大的成就,然而自然语言生成方面成果却不是很多,具备一定智能且能够商用的产品少之又少。在自然语言处理中涉及的内容详细如下。

自然语言处理---分词

分词(WordSegmentation)主要基于字典中单词的识别,最基本的方法是最大匹配方法(MM),其效果取决于字典的覆盖范围。另外常见的基于统计的分词方法是利用语料库中的词频和共现概率等统计信息对文本进行分词。

◆解决切分歧义的方法包括句法统计和基于记忆的模型。前者结合了自动分词和基于马尔可夫链词性,并使用从手动标记语料库中提取的词性的二进制统计定律来解决歧义。而基于记忆的模型,将机器认为歧义的常见交集型歧义进行划分,例如“辛勤劳动”切分为“辛勤”“勤劳”“劳动”,并预先记录它们唯一正确的分割形式在表中,通过直接查找表可实现歧义的消除。

自然语言处理---词性标注

词性标记(Part-of-speechTagging)

◆任务:用于标记句子中的单词,例如动词,名词等。

◆本质:在序列上对每个单词的词性进行分类和判断

◆方法:早期使用了隐马尔可夫模型进行词性标注,后来又出现了最大熵模型,条件随机场模型,支持向量机模型等。随着深度学习技术的发展,出现了许多基于深度神经网络的词性标注方法。

自然语言处理---句法分析

◆在句法分析中,人工定义规则非常耗时,费力且维护成本高。

◆近年来,自动学习规则的方法已成为句法分析的主流方法。目前,数据驱动的方法是主流的分析方法。通过将诸如概率值(例如单词共现概率)之类的统计信息添加到文法规则中,扩展原始的上下文无关文法分析方法,最终实现概率上下文无关文法(ProbabilisticContextFreeGrammar,PCFG)分析方法,在实践中取得了较好的成果。

◆句法分析主要分为依存句法分析,短语结构句法分析,深层文法句法分析和基于深度学习的句法分析等。

自然语言处理---自然语言生成

自然语言生成(NaturalLanguageGeneration,NLG)的难点是需要大量知识库或逻辑形式的基础工作:

◆一方面,人类语言系统中有较多的背景知识,机器表述系统在整合大量的背景知识(信息量太大)有一定的困难

◆另一方面,语言很难在机器中进行合适的表达,因此自然语言生成的相关结果很少。

自然语言生成的方法

◆当前大多数自然语言生成方法都使用模板,模板源自人工(手动)定义,知识库或从语料库中提取,以这种方式生成的文本容易出现较为僵硬的问题。

◆神经网络也可以用于生成序列,例如Seq2Seq,GAN等深度学习模型,但是由于训练语料库的质量不同,容易出现诸如结果随机和结果不可控制等相关问题。

◆自然语言生成的步骤:

内容规划,结构规划,聚集句子,选择字词,指涉语生成和文本生成等。

◆自然语言生成的的应用:主要是通过摘录从一些数据库或一些资料集中生成文章的系统。如某些天气预报的生成,金融新闻或体育新闻的写作,百科全书的写作,诗歌的写作等,这些文章具有一定的范式,类似于八股文一样,具有固定的文章结构,并且语言样式也有较少的变化。这类文章着重于内容,读者对文章的样式和措词的要求较低。

在当前的人工智能领域,自然语言生成的问题尚未真正解决,可以说“得语言者得天下”,毕竟语言也代表着更高水平的人类智能。

自然语言处理---文本分类

◆文本分类(Textcategorization)是将文本内容划分为某一个特定类别的过程。目前深度学习模型在文本分类任务中取得了长足的进步。

◆文本分类算法:

基于规则的分类模型,基于机器学习的分类模型,基于神经网络的方法,卷积神经网络(CNN)和循环神经网络(RNN)。

◆文本分类技术的应用:

1.社交网站每天都会生成大量信息,如果对文本进行手动排序,将很费时费力,并且分类结果的稳定性很差;

2.应用自动化分类技术可以避免以上问题,从而实现文本内容的自动标记,为后续的用户兴趣建模和特征提取提供了基本支持。

3.作为基础组件,文本分类还用于信息检索,情感分析,机器翻译,自动摘要和垃圾邮件检测等领域。自然语言处理---文本分类

自然语言处理---信息检索

◆信息检索(InformationRetrieval)

◆定义:从信息资源集合中提取需求信息的行为,可以基于全文索引或内容索引。

◆技术:向量空间模型,权重计算,TF-IDF(词频-逆向文档频率)词项权重计算,文本相似度计算,文本聚类等,具体应用于搜索引擎,推荐系统,信息过滤等方面。

自然语言处理---信息抽取

◆信息抽取(InformationExtraction)

定义:从非结构化文本中提取指定的信息,并通过信息合并,冗余消除和冲突解决等方法将非结构化文本转换为结构化信息。

◆应用方向:

◆从相关新闻报道中提取事件信息:时间,位置,施事人、受事人、结果等;

◆从体育新闻中提取体育赛事信息:主队,客队,赛场,比分等;

◆从医学文献中提取疾病信息(病因,病原体,症状,药物等)。

◆此外,还广泛应用于舆论监测,网络搜索,智能问答等相关领域,信息提取技术也是中文信息处理和人工智能的基本核心技术。

自然语言处理---文本校对

◆文本校对(Text-proofing):主要应用于修复自然语言生成的内容或检测并修复OCR识别的结果。

主要技术:

◆词典是将常用词以词典的形式对词频进行记录。如果词典中不存在某些词,则需要对其进行修改并选择最相似的单词来替换,这种方法对词典的要求较高,并且在实际操作中,由于语言的变化多端且存在很多的组词方式,导致误判的情况很多,在实际应用中准确性不是很理想。

◆语言模型根据词汇之间搭配的可能性(概率)来判断词汇的正确性。一般情况下,以句子为单位检测整个句子,当前,常见的语言模型有SRILM和RNNLM等几种。

自然语言处理---问答系统

◆自动问答(QuestionAnswering)系统回答用户

步骤:

◆第1步:需要能够正确理解用户所提出自然语言问题,这涉及到分词,命名实体识别,句法分析,语义分析等自然语言理解相关技术。

◆第2步:针对提问类、事实类、交互类等不同形式的提问分别相对应地进行回答,例如用户所提的问题属于提问类的范畴,可以从知识库或问答数据库中进行检索和匹配用户问题,以获得答案。

它还涉及对话上下文处理,逻辑推理以及知识工程和语言生成等多种关键技术。问答系统代表了自然语言处理的智能处理水平。自然语言处理---问答系统

自然语言处理---机器翻译

机器翻译(MachineTranslation)是机器在不同自然语言之间进行的翻译,涉及语言学,机器学习,认知语言学等多个语言交叉学科。

方法:

◆基于规则的机器翻译方法:人工设计和编纂翻译规则,

◆基于统计的机器翻译方法:自动获取翻译规则,近年来流行的端到端的神经网络机器翻译方法可以直接自动地通过编码网络和解码网络学习语言之间的转换算法。自然语言处理---机器翻译

自然语言处理---自动摘要

自动摘要(AutomaticSummarization)主要是解决信息过载的问题,用户可以通过阅读摘要来了解文章的主要思想。

通常使用两种抽象方法:

◆抽取式:抽取式方法是评估句子或段落的权重,根据其重要性选择它们并撰写摘要。

◆生成式:1.使用自然语言理解技术分析文本内容外;2.使用自然语言生成技术(例如句子计划和模板)来生成新句子。

➢传统的自然语言生成技术在不同领域的泛化能力较差,随着深度学习的发展,生成式摘要的应用逐渐增多。

➢目前,主流仍然采用基于抽取式的方法,因为该方法易于实现,可以确保摘要中的每个句子具有良好的可读性,不需要大量的训练语料,并且可以跨领域应用。

1.3.5网络安全

网络安全包括反垃圾邮件,反网络钓鱼,Internet内容过滤,反欺诈,攻击防御和活动监视等,随着机器学习算法逐渐应用于企业安全中,各种新型的安全解决方案应运而生,这些模型在网络分析、网络的监控、异常情况的发现等方面扮演着非常重要的角色,可以保护企业免受威胁。

◆密码学-密码破解

通过分析通用符号密码的特性和当前通用密码的各种缺点,使用神经网络算法来破解密码。

近年来,谷歌大脑已将生成对抗网络(GAN)引入了密码的加密和解密中。随着迭代训练的数量不断地增加,加密模型和解密模型的性能已同时得到了改善,并且最终在不提供密码知识的情况下获得了性能很强的加密模型。

◆加强网络安全性

使用机器学习来检测网络安全性的优势和劣势,并提出了一些改进建议。

由于恶意请求通常都是经过了一定的伪装,因此,网络入侵的检测更加困难,并且攻击行为的例子也较少,样本的不平衡问题也需要处理,召回率(Recall)作为模型评估中的性能度量指标。网络安全。

◆垃圾邮件过滤系统

•提高过滤精度一直是一个难题。传统的机器学习算法包括贝叶斯分类器,支持向量机,决策树等分类算法,使用自然语言处理技术从普通和垃圾邮件的文本内容中提取特征,然后训练分类器来判断垃圾邮件。

•实际应用中的挑战:数据收集环节中的困难,样本标注和分类的工作量繁重,数据不平衡以及数据存在噪声等问题。

•机器学习的学习类型:有监督学习和无监督学习。通过在训练数据集中找到模式(规律),当前仍然需要数据分析人员的参与

1.3.6工业领域

◆机器学习在工业领域中的应用主要是在质量管理,灾难预测,缺陷预测,工业分类,故障感知等几个方面。

◆通过人工智能技术的使用,实现了智能化和无人化的制造和检测,并且使用深度学习算法进行判断的精确率与手动判断的精确率几乎相同。

◆工业机器人将深度学习算法应用于工业机器人上可以大大提高其操作性能,并实现了自动化和无人化的制造过程。

◆商品或零件的分类采用合适的分类算法对商品进行识别,同时可以使用强化学习(ReinforcementLearning)算法来实现商品的定位和拣起动作。

◆故障检测和预警机器学习用于分析物联网中各种传感器所提取的数据,并结合历史故障记录,硬件状态指示器等相关的信息建立预测模型,以预测机器中的异常情况。

◆故障定位建立决策树等分类模型来判断故障原因,快速定位并提供修复建议,减少故障的平均修复时间(MTTR),以此降低由于停机造成的损失。

机器学习在工业领域的应用中的瓶颈

(1)数据质量

有监督方法训练可以得到很好的效果,但是前提是需要大量的标记数据,并且数据的质量,归一化方法,分布因素等对模型的效果影响很大。例如,如果数据量太多,则需要更高的计算能力和计算成本;反之,如果数据量太少,则模型的预测能力通常较差。

(2)工程师经验

机器学习的相关算法和方法具有一定的阈值,如果对算法的原理理解不透彻的情况下进行实验,将很难获得理想的结果,因此,不仅要求工程师具有实现工程的能力,而且还要求他们具有线性代数,统计分析等相关理论基础,并对数据科学和机器学习中常用算法的数学计算过程有一定的理解。

(3)计算能力

由于需要在深度学习训练的过程中不断地进行参数的调整,甚至重新设计网络结构,因此训练建模的周期通常需要数周甚至数月,随着模型复杂度的增加,对计算资源(GPU)的要求也越来越高,一般情况下,模型越大应用时效率就越低。

(4)机器学习的不可解释性

在机器学习中,深度学习模型在解释模型中的参数方面较差,在工业应用中,如果除了结果之外还需要对学习的过程进行相关的解释的话,则实施起来会更加困难。另外,深度学习对数据质量有很高的要求,如果存在缺失值之类的问题,那么将会有较大的误差出现。

1.3.7机器学习在娱乐行业的应用

•美国波士顿的PilotMovies公司使用了算法来进行票房的预测,将需要预测的电影与1990年以来的每部电影进行比较,预测的准确率可以超过80%。

•人工智能和大数据还用于分析娱乐行业的其他方面,比如,分析观众愿意为哪些内容付费等问题。

•芬兰的一家公司Valossa开发出一个AI平台,该平台可以实现检测和识别视频中的人物,视频的上下文,视频的主题,视频的命名实体,视频的话题和视频的敏感内容,该系统使用计算机视觉,机器学习和自然语言处理等相关技术为每秒的视频均创建元数据。

•IRIS.TV公司使用一个叫作广告计划管理器(CampaignManager)的工具来使观看者在视频内容上的停留时间更长,并且还可以插入品牌视频广告,并且视频浏览的保留率平均提高了70%。其主要原理是在客户观看视频时收集各种相关数据,并将其输入到机器学习模块中以推荐更多相关的视频。大数据创建的智能视频分发模型可以帮助视频平台实现其视频内容的准确分发,并增加内容演示的次数。

1.4机器学习算法分类

算法定义:自动分析数据并从中获取模式(规律),之后使用模式预测未知数据的方法。

算法分类:监督学习,非监督学习和半监督学习。

1.4.1机器学习算法分类---监督学习 

◆监督学习是从标记的训练数据中学习并建立模型,然后基于该模型预测未知的样本。其中,模型的输入是某个样本数据的特征,而函数的输出是与该样本相对应的标签。

◆常见的监督学习算法:回归分析、统计分析和分类。

◆监督学习分类:分类:包括逻辑回归,决策树,KNN,随机森林,支持向量机,朴素贝叶斯等机器学习算法;预测:包括线性回归,KNN,GradientBoosting和AdaBoost等机器学习算法。机器学习算法分类---监督学习

1.4.2机器学习算法分类---非监督学习

非监督学习也称为无监督学习,该类算法的输入样本不需要标记,而是自动地从样本中学习这种特征以实现预测。

常见的无(非)监督学习算法:聚类和关联分析

在人工神经网络中,自组织映射(SOM)和适应性共振理论(ART)是最常见的无监督学习算法。

1.4.3机器学习算法分类---半监督学习

◆半监督学习只有少量的标记数据,完全靠这些不完全标记的数据不可能训练好一个模型,依靠大量的无监督数据来提高算法性能。因此,只有选择半监督学习来使数据的价值达到最大化,使机器学习模型能够从庞大的数据集中挖掘出其隐藏规律。

◆经过研究人员的不懈努力和长期坚持,半监督学习的发展取得了一定的成效,提出了不少半监督学习方法,也应用到了不少实际领域当中。

◆半监督学习的研究仍然存在许多待解决的问题,未来的研究大门正等着大家去开启。

机器学习可以分为三种常见的机器学习任务:回归,分类和聚类。

某些机器学习算法可能同时属于不同的类别,例如,某些深度学习算法可能存在于监督学习中,也可能存在于半监督学习中。在具体的实践过程中,可以根据实际需要进行具体地选择。

1.4.4机器学习算法选择

◆熟悉各种分析方法的特性是选择分析方法的基础,不仅需要了解如何使用各种分析算法,还需要了解其实现的过程以及原理,以便可以在参数优化和模型改进过程中减少无效的调整

◆在选择模型之前,有必要对数据进行探索性分析,了解数据类型和数据的相关特征,并发现各个变量之间的关系以及自变量和因变量之间的关系

◆当存在多个维度时,特别注意变量的多重共线性问题,可以使用箱形图,直方图和散点图来查找规律性信息

◆在模型选择过程中,首先选择多个可能的模型,然后进行详细分析,然后选择可用于分析的模型。在选择自变量时,在大多数情况下,有必要结合业务手动选择自变量。

◆选择模型完毕后,需要比较不同模型的拟合度,统计显著性参数,R^2,调整R^2,最小信息标准,BIC和误差标准,Mallow'sCp标准等

◆在单个模型中,数据可以划分为训练集以及测试集,作为交叉验证和结果稳定性分析的数据集。反复调整参数可使模型更加稳定以及更加有效

1.4.5机器学习算法分类---分类算法

分类算法

◆定义:将分类规则应用于记录的目标映射,将它们划分为不同的分类,并建立具有泛化能力的算法模型,即构建映射规则以预测未知样本的类别

分类算法任务

◆分类:经过训练而建立的预测模型在遇到未知样本时会使用建立好的模型对未知样本进行类别的划分

◆描述:描述性分类主要解释和区分现有数据集中的特征,例如,描述动植物的各项特征,并进行标注分类,通过这些特征来确定它们属于哪个类别

机器学习的分类算法包括:决策树,支持向量机(SupportVectorMachine,SVM),最近邻(K-NearestNeighbor,KNN)算法,贝叶斯网络(BayesNetwork)和神经网络等算法。

1.4.6分类算法---决策树

◆决策树是用于决策的树,目标类别作为叶子节点,特征属性的验证被视为非叶子节点,每个分支都是特征属性的输出结果。

◆决策树擅长评估人员,位置和事物的不同品质和特征,并且可以应用于基于规则的信用评估和竞争结果的预测等

◆决策树的决策过程:从根节点开始,测试不同的特征属性,根据不同的结果选择分支,最后落入某个叶子节点以获得分类结果

◆主要的决策树算法:ID3,C4.5,C5.0,CART,CHAID,SLIQ,SPRINT等算法。

◆决策树的构建过程:根据属性的优先级或重要性逐渐确定树的层次结构,以使叶子节点尽可能属于同一类别,通常情况下,采用局部最优的贪心(贪婪)策略来进行决策树的构建。

1.4.7分类算法---支持向量机

◆支持向量机(SupportVectorMachine,SVM)是由瓦普尼克(Vapnik)等人设计的一款分类器,其主要思想是将低维特征空间中的线性不可分问题进行非线性映射,将其映射到高维空间去,从而转化为线性可分的问题

◆应用结构风险最小理论在特征空间优化分割超平面,找到的分类边界尽可能地宽,以便于该算法更加适用于二分类问题,例如,二维平面图中的某些点无序排列,仅仅使用一条直线无法将其准确地划分为两个类别,但是如果将其映射到三维空间中,可能存在一个平面可以实现将这些杂乱无序的点划分为两个类别分类算法---支持向量机

◆为了避免从低维空间到高维空间的转换过程中存在的计算复杂性的增加和“维数灾难”等问题的出现,支持向量机使用了核函数,故不用担心非线性映射的显式表达式问题,直接构建它们在高维空间中的线性分类器,降低了整个过程中的计算复杂度。

◆常见的支持向量核函数包括线性核函数,多项式核函数,径向基函数和二层神经网络核函数等

◆支持向量机是典型的二分类算法,可以用于多个类别的划分问题,但是实现的效果不佳

◆支持向量机在小样本数据集中有很好的分类效果

1.4.8分类算法---最近邻算法

◆最近邻算法将向量空间模型应用于样本,将高度相似的样本划分为一个类别,之后计算与新样本最接近(最相似)的样本的类别,则新样本就属于这些样本中类别最多的那一类。

◆影响分类结果的因素:距离计算方法,近邻样本的数量等等

◆最近邻算法支持多种相似度距离计算方法:欧氏距离(EuclideanDistance)、切比雪夫距离(ChebyshewDistance)、标准化欧氏距离(StandardizedEuclideandistance)、巴氏距离(BhattacharyyaDistance)、夹角余弦(Cosine)、皮尔逊系数(PearsonCorrelationCoefficient)、曼哈顿距离(ManhattanDistance)、闵可夫斯基距离(MinkowskiDistance)、马氏距离(MahalanobisDistance)、汉明距离(Hammingdistance)、杰卡德相似系数(Jaccardsimilaritycoefficient)

最近邻算法的主要缺点是:

①当每一个分类样本的数量不平衡时,误差较大

②由于每一次比较都需要遍历整个训练样本集来计算其相似度,因此分类的效率较低,时间复杂度和空间复杂度较高

③选择近邻的数量如果不当,可能会导致结果误差较大④原始的最近邻算法中没有权重的概念,所有的特征均使用相同的权重系数,因此计算出的相似度容易出现误差。

1.4.9分类算法---贝叶斯网络

◆贝叶斯网络,也称为置信网络(BeliefNetwork),是基于贝叶斯定理绘制的具有概率分布的有向弧段图形化网络,它的理论基础是贝叶斯定理,网络中的每个点都代表变量,有向弧段表示两者之间的概率关系

◆优点:与神经网络相比,贝叶斯网络中的节点更加具有实际的意义,节点之间的关系相对较为清晰,可以直观地从贝叶斯网络中看到变量之间的条件独立性和依存关系,并且可以进行结果和原因的双向推理

◆在贝叶斯网络中,随着网络中节点数量的增加,概率求解的过程非常复杂且难以计算,因此,当节点数量较大时,为了减少推理过程并降低复杂度,通常选择朴素贝叶斯算法或推理的方法实现以降低模型的复杂度

1.4.10分类算法---神经网络

◆神经网络包括输入层,隐藏层和输出层,每个节点代表一个神经元,节点与节点之间的连接对应于权重值,当输入变量通过神经元时,它将运行激活函数以赋予输入值权重并增加偏置,输出结果将被传递到下一层的神经元中,并且在神经网络训练过程中会不断修改权重值和偏置

◆神经网络的训练过程:前向传输和逆向反馈。即将输入变量逐层向前传递,最后获得输出的结果,之后与实际结果相比较,并逐层逆向反馈错误,同时,校正神经元中的权重值以及偏置,然后再次执行前向传输,并依次重复进行迭代,直到最终预测结果与实际结果一致或在允许的误差范围内为止

神经网络的基本概念包括:感知器,反向传播算法,Hopfield神经网络,自组织映射(SOM),学习矢量量化(LVQ)等

➢BP神经网络结果的准确性与训练集的样本数量以及样本的质量有关,如果样本数量太少,则可能会出现过度拟合的情况,因此无法泛化新样本

➢BP神经网络对训练集中的异常点相对敏感,因此数据分析人员有必要对数据进行一定的数据预处理,比如数据标准化,删除重复数据和删除异常数据等操作,以提高BP神经网络的性能

➢由于神经网络是基于历史数据训练并构建的数学模型,因此随着新数据的不断生成,需要对其进行动态地优化,比如,随着时间的变化,使用新数据重新进行模型的训练,并调整网络的结构以及参数值

1.4.11机器学习算法分类---聚类算法

聚类

定义属于无监督学习,不需要标记原始数据,根据数据的固有的结构特征进行聚集。从而形成簇群,并实现数据的分离。

◆聚类和分类的主要区别

聚类不关心数据属于哪种类别,而是把具有相类似特征的数据聚集起来形成某一类别的簇。

◆聚类过程

首先选择有效的特征来构成特征向量,然后根据欧氏距离或其他距离函数来计算其相似度,从而实现对类别的划分,通过对聚类结果进行评估,逐步迭代并生成新的聚类。机器学习算法分类---聚类算法

聚类的应用领域

◆可用于发现不同公司客户群体的特征,消费者行为分析,市场细分,交易数据分析,动植物种群分类,医疗领域的疾病诊断,环境质量检测等领域,也可以用于Internet领域和电子商务领域中客户分析以及行为特征分类分析等

◆在数据分析的过程中,可以首先使用聚类来探索数据并发现其中包含的类别特征,然后使用分类等算法对每个类别的特征进行分析

聚类方法分类

基于层次的聚类(HierarchicalMethod),基于划分的聚类(PartitioningMethod,PAM),基于密度的聚类,基于约束的聚类,基于网络的聚类等。

◆基于层次的聚类:将数据集划分为不同的层次,并使用合并或者分解的操作进行聚类,主要包括BIRCH(BalancedIterativeReducingandClusteringusingHierarchies)、CURE(ClusteringUsingRepresentatives)等。

◆基于划分的聚类:将数据集划分为k个簇,然后计算其中的样本距离以获得假设簇的中心点,之后使用簇的中心点重新迭代计算新的中心点,直到k个簇的中心点收敛为止。基于划分的聚类有k-均值(k-means)等

◆基于密度的聚类

根据样本的密度不断增长聚类,最终形成一组“密集连接”的点集。

➢核心思想:只要数据的密度大于阈值,就可以将数据合并到一个簇当中,可以对噪声进行过滤,聚类的结果可以是任何形状的,不一定是凸形。

➢主要方法:DBSCAN(Density-BasedSpatialClusteringofApplicationwithNoise)、OPTICS(OrderingPointsToIdentifytheClusteringStructure)等。

1.4.12聚类算法---BIRCH算法

BIRCH算法

使用层次方法来平衡迭代规则和聚类,它只需要扫描一次数据集即可实现聚类,它使用了类似于B+树的结构来划分样本数据集,叶节节点之间使用双向链表连接起来,逐步优化树的结构以获得聚类。

◆主要优点:空间复杂度低,内存占用量少,效率高以及具有滤除噪声点的能力。其缺点是树中节点的聚类特征树的数量是有限的,这可能会出现与实际类别数量不一致的情况。

◆BIRCH算法对样本有一定的限制,要求数据集的样本为超球体,否则聚类的效果不是很好。

1.4.13聚类算法---CURE算法

◆传统的基于划分聚类的方法会得到凸形的聚类,该凸形的聚类对异常数据较为敏感;

◆CURE算法使用多个代表点来代替聚类中的单个点,算法相对更为健壮。在处理大数据时使用随机采样和分区,这使得在处理大数据样本集时更加具有时效性,而且对聚类质量没有影响

1.4.14聚类算法---k-均值算法

◆传统的k-均值算法的聚类过程

在样本集中随机选取k个聚类中心点,计算每个样本的候选中心的距离并且根据距离的大小将其分组,获得分组后,将重新计算聚类的中心,循环迭代,反复地进行计算,直到聚类的中心不再改变或者收敛

◆改进的k-means算法

初始化优化k-means算法,距离优化Elkank-Means算法,k-Prototype算法等。聚类算法---k-均值算法

k-means算法

◆优点:可以简单地、快速地处理大型数据集,并且具有可伸缩性,当在类别之间明确区分数据集(凸形分布)时,聚类效果最佳。

◆缺点:

➢用户需要自己确定并给出k的值,即簇的数量(聚类的数目),而对于簇的数量,事先难以确定出一个较为合理的值;

➢k均值算法对k的值较为敏感,如果k的值取得不合理,则最终的结果可能只是局部最优的。

1.4.15聚类算法---DBSCAN算法

DBSCAN算法基于样本之间的密度实现空间聚类,基于边界点,核心点以及噪声点等因素对空间中任何形状的样本数据进行聚类。

特点

◆与传统的k-均值相比,DBSCAN通过邻域半径和密度阈值自动生成聚类,无需指定聚类的数量,并支持噪声点的过滤

◆当数据量增加时,算法的空间复杂度将升高,因此,DBSCAN不适合样本之间的密度不均匀的情况,否则聚类的质量将不会很好

◆对于高维度的数据,一方面,密度的定义较为困难,另一方面,也将出现大量的计算,从而很大程度地降低了聚类的效率

1.4.16聚类算法---OPTICS算法

背景

◆在DBSCAN算法中,用户需要指定两个初始参数,分别是ε(邻域半径)和minPts(ε邻域中的最小点数)

◆用户通过手动设置这两个参数将对聚类的结果产生较为关键的影响

OPTICS算法很好地解决了上述问题,并生成了用于聚类分析的增广的簇排序,该簇排序表示了每个样本点基于密度的聚类结构

1.4.17机器学习算法分类---关联分析

◆关联分析(AssociativeAnalysis)是通过对数据集当中同时发生的事件的概率进行分析,从而挖掘它们之间是否存在一定的关联关系

◆关联分析的典型应用——购物篮分析,通过分析购物篮中不同商品之间的关联来分析消费者的消费行为,根据消费者的消费习惯制定个性化的营销策略,以支持产品促销,产品定价,产品地理位置的摆放等因素,除此之外,还可以用来划分不同的消费者群体。

◆关联分析主要包括的算法有:Apriori算法、FP-growth算法以及Eclat算法。

1.4.18关联分析---Apriori算法

➢主要实现过程:首先生成所有的频繁项集,之后采用频繁项集构造出满足最小置信度的规则。

➢特点:由于Apriori算法需要对样本集进行多次扫描,因此需要从候选的频繁项集中生成频繁项集,故在处理大量数据时,其效率较低。

Apriori算法是一种经典的关联分析算法,用于挖掘数据集中的频繁项集和关联规则。其基本思想是通过扫描数据集多次来发现频繁项集的出现频率,并利用频繁项集生成关联规则。

下面是Apriori算法的详细步骤:

初始化:设置最小支持度阈值和最小置信度阈值。最小支持度阈值用于筛选频繁项集,最小置信度阈值用于筛选关联规则。
扫描数据集:遍历数据集,统计每个项的出现次数,得到频繁1-项集(单个项)。
构建候选项集:基于频繁1-项集,生成候选2-项集。对于候选k-项集,其生成方法是将两个频繁k-1-项集连接,然后进行剪枝操作。
计算支持度:对于每个候选项集,扫描数据集,计算其支持度(出现次数除以数据集大小)。
筛选频繁项集:根据支持度阈值,筛选出频繁项集。
生成关联规则:对于每个频繁项集,根据置信度阈值,生成关联规则。生成规则的方法是将频繁项集划分为两个非空子集,计算置信度(频繁项集支持度除以子集支持度),并检查是否满足置信度阈值。
输出结果:输出频繁项集和满足置信度阈值的关联规则。
通过以上步骤,Apriori算法可以找到数据集中的频繁项集和关联规则,从而发现事物之间的关联性和依赖关系。

需要注意的是,Apriori算法的效率随着数据集大小和项集数量的增加而下降。为了提高算法效率,可以采用优化技巧,如使用哈希表来快速计算支持度、使用剪枝策略等。

1.4.19关联分析---FP-growth算法

基于FP树生成频繁项集的FP-growth算法

➢该算法仅扫描数据集两次,不使用候选项目集,而是根据支持程度直接构建频繁模式树,并使用该树生成关联规则,当处理相对较大的数据集时,其效率比Apriori算法大约快一个数量级

➢对于海量数据,可以通过数据分区和样本采样之类的方法再次对其进行改进和优化。

FP-growth是一种高效的关联规则挖掘算法,用于发现数据集中的频繁项集和关联规则。相比于Apriori算法,FP-growth算法通过构建FP树(Frequent Pattern Tree)来减少候选项集的生成和扫描次数,从而提高了算法的效率。

下面是FP-growth算法的详细步骤:

构建FP树:遍历数据集,统计每个项的出现次数,并构建一个空的FP树。对数据集进行第二次遍历,对每条事务的项按照频繁项集的频率降序排序,然后插入到FP树中。如果已经存在相同的路径,则增加该节点的计数;否则,创建一个新的路径。
构建条件模式基(Conditional Pattern Base):对于每个频繁项,记录其前缀路径,并存储为条件模式基。条件模式基是指以当前频繁项为结尾的路径集合。
递归构建频繁项集:对于所有频繁项,利用条件模式基递归构建频繁项集。每个频繁项和其对应的条件模式基一起构成一个子问题,继续构建FP树和条件模式基,直到无法继续生成频繁项集为止。
生成关联规则:根据生成的频繁项集,通过递归方式生成关联规则。对于每个频繁项,将其划分为两个非空子集,并检查是否满足置信度阈值。如果满足,则可以生成一条关联规则。
通过以上步骤,FP-growth算法可以高效地挖掘数据集中的频繁项集和关联规则。相比于Apriori算法,FP-growth算法在构建FP树时避免了候选项集的生成和扫描,大大提高了算法的效率。

需要注意的是,FP-growth算法的实现依赖于数据结构FP树和条件模式基的构建,在处理大规模数据时可能需要消耗较多的内存。针对大规模数据集,可以采用压缩技术和分布式计算等方法进行改进。

1.4.20关联分析---Eclat算法

◆Eclat算法:一种深度优先算法,该算法使用垂直数据表示,并基于前缀的等价关系将搜索空间划分为较小的子空间,从而可以快速进行频繁项集的挖掘。

◆Eclat算法的核心思想:倒排,转换事务数据中的事务主键与项目(item),采用项目作为主键的方式。

◆好处:能够很明显地看到每个项目有哪些对应的事务ID,以方便项目频次的计算,从而迅速地获取频繁项集

特点:

➢在Eclat算法中,可以通过计算项集的交集并切割结果来快速地获得候选集的支持率。

➢由于计算交集需要很长的时间,因此在该过程中,时间复杂度高并且效率很低。

➢该算法的空间复杂度同样较高,消耗了大量的存储空间。

FP-growth(Frequent Pattern growth)算法是一种高效的关联规则挖掘算法,用于发现数据集中的频繁项集和关联规则。相比于传统的Apriori算法,FP-growth算法通过构建FP树(Frequent Pattern tree)来避免产生候选项集,从而提高了算法的效率。

下面是FP-growth算法的详细步骤:

构建频繁项集的头指针表和计数表:遍历数据集,统计每个项的出现次数,并构建频繁项集的头指针表和计数表。头指针表用于快速访问相同项的节点,计数表记录每个项的支持度计数。
构建FP树:第二次遍历数据集,对每个事务的项按照频繁项集的支持度降序排序,然后插入到FP树中。如果已经存在相同的路径,则增加该节点的计数;否则,创建一个新的路径。构建FP树的过程可以通过递归实现。
生成条件模式基:对于每个频繁项,利用FP树的条件模式基进行构建。条件模式基是指以当前频繁项为结尾的路径集合,可以通过遍历FP树的方式获取。对于每个频繁项,通过连接当前项的前缀路径,得到条件模式基。
递归构建频繁项集:对于每个频繁项和其对应的条件模式基,进行递归构建。将条件模式基作为新的数据集,重复上述步骤,直到无法继续生成频繁项集为止。
生成关联规则:根据生成的频繁项集,通过递归方式生成关联规则。对于每个频繁项,将其划分为两个非空子集,并检查是否满足置信度阈值。如果满足,则可以生成一条关联规则。
通过以上步骤,FP-growth算法可以高效地挖掘数据集中的频繁项集和关联规则。相比于Apriori算法,FP-growth算法避免了产生候选项集的过程,减少了计算量和存储空间的消耗,因此在大规模数据集上具有更好的性能。

需要注意的是,FP-growth算法的实现依赖于FP树的构建和条件模式基的生成,在处理大规模数据时可能需要消耗较多的内存。针对大规模数据集,可以采用压缩技术、分布式计算等方法进行改进。

1.4.21机器学习算法分类---回归分析

◆回归分析是一种预测模型,用于研究自变量和因变量之间的关系

◆核心思想:当自变量发生变化时,分析因变量的变化值,并且对自变量的要求是彼此独立。

回归分析是一种基于统计学的机器学习算法,用于建立自变量(或预测因子)和因变量之间的关系模型。回归分析可以用于预测连续型变量的值,例如房价、股票价格等。

回归分析分为单变量回归和多变量回归两种类型。

单变量线性回归:针对只有一个自变量的情况,通过最小二乘法求解最佳拟合直线,使得预测值与真实值的误差平方和最小。

多变量线性回归:针对多个自变量的情况,通过最小二乘法求解最佳拟合平面或超平面,使得预测值与真实值的误差平方和最小。

在实际应用中,除了线性回归之外还有非线性回归和泊松回归等方法。

非线性回归:当自变量和因变量之间的关系不是线性的时,采用非线性回归模型,例如指数回归、幂函数回归等。

泊松回归:适用于因变量是计数数据,且服从泊松分布的情况。泊松回归以自变量为因素,建立因变量的期望与自变量的关系,并用极大似然估计法来估计参数。

回归分析主要用于探究因变量与自变量之间的关系,并通过预测模型进行预测。同时,可以通过对模型的评估和优化来提高预测的准确性和稳定性。

常用的回归评价指标有均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)等。同时,可以采用交叉验证和正则化等方法来对模型进行优化和泛化。

1.4.22回归分析---线性回归

在使用线性回归进行数据分析时,要求自变量是连续的,换句话说,线性回归是使用直线(也称之为回归线)来建立因变量与一个或者多个自变量之间的联系。

•主要特征:

①自变量和因变量之间的关系是线性的。

②多重共线性,自相关和异方差对多元线性回归的影响均较大。

③线性回归对异常值非常地敏感,异常值的存在会影响预测的结果。

④当同时处理的自变量较多时,需要使用逐步回归的方式来逐步确定显著性变量,而无需人工干预

核心思想:

逐个引入自变量至模型中,并执行F检验,t检验等来对变量进行筛选,当新的变量被引入且模型的结果不能得到优化时,对该变量的操作即是消除,直至模型的结果相对稳定为止。

逐步回归的目的:

选择重要的自变量,使用最少的变量来实现具有最大化预测能力的模型。

在选择变量的同时,逐步回归也是降维技术的一种,其主要方法包括前进法和后退法

◆前进法:首先选择最显著的变量,之后逐渐增加次显著变量;

◆后退法:首先选择所有的变量,并且逐渐剔除不显著的变量,即无关紧要的变量。

1.4.23回归分析---逻辑回归

逻辑(Logistic)回归是数据分析当中较为常用的机器学习算法

◆算法输出是概率估算值,使用Sigmoid函数将该概率估算值映射到[0,1]区间内,便可以完成样本的类别划分。

◆逻辑回归算法对样本的数据量有一定的要求。当样本数据量较小时,概率估计存在的误差较大。

逻辑回归(Logistic Regression)是一种用于解决分类问题的线性回归算法。尽管它名为"回归",但实质上是一种分类算法,用于预测二元或多元离散的类别标签。

逻辑回归的主要思想是通过一个逻辑函数(也称为sigmoid函数)将线性回归模型的输出映射到一个概率值,该概率值表示样本属于某个类别的概率。逻辑函数的数学形式为:

P(y=1|x) = 1 / (1 + exp(-z))

其中,P(y=1|x) 表示给定输入特征 x 条件下样本属于类别 y=1 的概率,z 是线性回归模型的输出。

逻辑回归模型通过最大似然估计方法来估计模型参数。在训练过程中,通过最小化损失函数来优化模型,常用的损失函数是对数损失函数(logarithmic loss)。针对二元分类问题,对数损失函数的形式为:

L(w) = -[y*log(P(y=1|x)) + (1-y)*log(1-P(y=1|x))]

其中,w 是模型参数,y 是真实的类别标签。

逻辑回归可以通过梯度下降等优化方法进行模型参数的求解。在预测阶段,通过将输入特征带入到训练好的模型中,利用逻辑函数得到样本属于不同类别的概率值,并根据设定的阈值进行分类。

逻辑回归具有以下特点:

1. 简单而高效:逻辑回归计算成本低,并且易于实现。
2. 可解释性强:逻辑回归能够提供模型参数的解释和各个特征对结果的影响程度。
3. 鲁棒性好:逻辑回归对于异常值和噪声的影响较小。
4. 可扩展性强:逻辑回归可以通过引入正则化项等方法来处理过拟合问题。

需要注意的是,逻辑回归假设数据服从伯努利分布或二项分布,因此适用于二元分类问题。对于多元分类问题,可以借助一对多(One-vs-All)或一对一(One-vs-One)的策略进行拓展。

逻辑回归在实际应用中广泛使用,如广告点击率预测、欺诈检测等。然而,逻辑回归对于特征工程的依赖较大,需要对数据进行适当的预处理和特征选择,以提升模型性能。

1.4.24回归分析---多项式回归

在回归分析中,有时会遇到线性回归的较差的直线拟合效果,如果发现散点图中的数据点是多项式曲线,则可以考虑使用多项式回归进行分析。

◆多项式回归的使用可以减少模型的误差,但是如果处理不当,很容易导致模型过拟合,回归分析完成后,需要对结果进行分析,并对结果进行可视化以查看拟合程度。

多项式回归(Polynomial Regression)是一种通过拟合多项式函数来解决回归问题的机器学习算法。与线性回归不同,多项式回归可以拟合出更复杂的曲线关系,从而更好地适应非线性的数据分布。

在多项式回归中,我们通过将输入特征的多项式项添加到线性模型中,来扩展线性模型的表达能力。其数学形式为:

y = w0 + w1*x + w2*x^2 + ... + wn*x^n

其中,y 是待预测的因变量,x 是自变量,w0、w1、...、wn 是模型的参数,n 是多项式的阶数。

多项式回归的关键在于选择适当的多项式阶数。当阶数为1时,多项式回归等价于线性回归;当阶数大于1时,多项式回归能够拟合出曲线关系,并更好地描述数据间的非线性关系。

多项式回归的步骤如下:

1. 准备数据:收集并准备包含自变量和因变量的数据集。
2. 特征转换:将自变量进行特征转换,添加多项式项,并进行标准化处理。
3. 模型训练:使用训练数据拟合多项式回归模型,估计模型参数。
4. 模型评估:使用测试数据评估模型的性能,可以借助均方误差(Mean Squared Error)等指标进行评估。
5. 模型预测:利用训练好的多项式回归模型进行预测。

需要注意的是,多项式回归容易在阶数较高时导致过拟合问题,即模型过度拟合训练数据,而在新的未见数据上表现不佳。因此,在选择多项式的阶数时需要权衡模型的复杂度和泛化能力,可以通过交叉验证等方法选择合适的阶数。

多项式回归在实际应用中常用于描述非线性关系,如物理学中的运动规律、经济学中的消费行为等。然而,多项式回归也存在一些问题,如对噪声敏感、计算复杂度高等,因此在实践中需要结合具体问题进行选择和优化。

1.4.25回归分析---岭回归

◆岭回归广泛用于共线性数据分析,岭回归也称为岭回归,它是有偏估计的回归方法,在最小二乘估计方法的基础上进行了改进,通过舍弃最小二乘法的无偏性,使回归系数更加稳定和稳健。

岭回归(Ridge Regression)是一种用于解决线性回归中的过拟合问题的技术,其主要思想为通过引入正则化项来限制模型参数的大小,从而降低模型的复杂度。

在线性回归中,我们可以使用最小二乘法估计模型参数。然而,当自变量之间存在多重共线性(Multicollinearity)时,即自变量之间存在高度相关性时,最小二乘法的估计会变得不稳定,容易受到噪声的干扰,导致过拟合问题。

岭回归通过在损失函数中引入L2正则化项,对模型参数进行惩罚,使得模型参数更加平滑、稳定,从而降低过拟合风险。其数学形式为:

min ||y - Xw||^2 + alpha * ||w||^2

其中,y 是因变量,X 是自变量的设计矩阵,w 是待求解的模型参数,alpha 是正则化系数,||w||^2 表示 w 的平方和。

需要注意的是,正则化系数 alpha 控制了正则化项对模型参数的影响程度,因此需要根据实际情况进行选择和调整。当 alpha=0 时,岭回归退化成普通的最小二乘法;当 alpha 值较大时,对模型参数的惩罚力度增大,会导致模型更加趋向于简单、稳定。

岭回归的主要优点包括:

1. 能够有效处理自变量之间存在多重共线性的情况,减少过拟合问题。
2. 可以通过交叉验证等方法来确定正则化系数的最佳取值。
3. 能够保留所有自变量,不需要进行特征选择。

岭回归在实际应用中广泛使用,如金融行业中的股票价格预测、生物学中的基因表达分析等。然而,岭回归也存在一些缺点,如不易处理非线性关系、对异常值敏感等,因此需要针对具体问题进行选择和优化。

1.4.25回归分析---LASSO回归
LASSO回归的特征与岭回归的特征相似,在拟合模型的同时进行变量筛选和复杂性调整。

◆变量筛选:将变量逐步放入模型中,以获得自变量的更好组合。

◆复杂度调整:通过参数调整来控制模型的复杂度,例如减少自变量的数量,以避免过拟合。

LASSO回归还擅长处理多重共线性以及具有一定噪声和冗余的数据,并且可以支持对连续因变量,二元、多元离散变量的数据分析。

LASSO回归(Least Absolute Shrinkage and Selection Operator Regression)是一种用于线性回归的正则化方法,与岭回归类似。LASSO回归通过在损失函数中引入L1正则化项,对模型参数进行惩罚,从而实现特征选择和模型稀疏性。

与岭回归相比,LASSO回归的优势之一在于它能够将某些模型参数压缩到零,从而实现自动的特征选择。这是因为L1正则化项具有稀疏化的特性,它倾向于使得一部分模型参数为零,从而将相关特征排除在模型之外。

LASSO回归的数学形式为:

min (1/2n) * ||y - Xw||^2 + alpha * ||w||

其中,y 是因变量,X 是自变量的设计矩阵,w 是待求解的模型参数,alpha 是正则化系数,||w|| 表示 w 的L1范数。

与岭回归类似,LASSO回归也可以通过调整正则化系数 alpha 的取值来控制特征选择的程度。当 alpha=0 时,LASSO回归退化成普通的最小二乘法;当 alpha 值较大时,对模型参数的惩罚力度增加,会导致更多的模型参数被压缩到零,从而实现了特征选择。

LASSO回归的主要优点包括:

1. 能够自动进行特征选择,剔除对目标变量影响较小的特征,提高模型的解释能力和泛化能力。
2. 可以通过交叉验证等方法来确定正则化系数的最佳取值。
3. 产生稀疏模型,减少模型复杂度,避免过拟合问题。

LASSO回归在实际应用中广泛使用,如基因表达分析、图像处理、金融数据分析等。然而,LASSO回归也存在一些缺点,如对相关特征的选择有时不稳定、不易处理相关特征等,因此需要根据具体问题进行选择和优化。
 

1.4.26机器学习算法分类---深度学习

◆深度学习方法:使用多个隐藏层和大量数据来学习特征,以提高分类或预测的准确性,与传统的神经网络相比,它不仅具有更多的层次,而且还采用了逐层的训练机制来对整个网络进行训练,以防止梯度扩散

◆深度学习:受限玻尔兹曼机(RBM),卷积神经网络(CNN),深度神经网络(DNN),对抗性神经网络(GAN),深度信念网络(DBN),层叠自动编码器(SAE),循环神经网络(RNN),以及各种变体的网络结构

◆这些深度神经网络可以对训练集数据进行特征提取以及模式识别,然后应用

◆受限玻尔兹曼机(RBM)主要解决概率分布问题,该算法是玻尔兹曼机的一种变体,是基于物理学中的能量函数进行建模,“受限”指的是层与层之间存在着连接,层内的单元之间并没有连接

◆RBM使用随机神经网络来对概率图模型(ProbabilisticGraphicalModel)进行解释,所谓“随机”是指网络中的神经元是随机神经元

◆输出的状态仅有两种:即未激活状态与激活状态,具体处于哪一个状态是由概率统计而定的。

◆卷积神经网络(ConvolutionalNeuralNetwork)中,卷积指的是源数据和滤波矩阵之间的内积运算,以实现特征权重的融合,并且可以通过设置不同的滤波矩阵来对不同的特征进行提取。

◆优点:将大量复杂的特征进行抽象和提取,并且极大程度地减少模型的计算量

◆应用:图像识别,文本分类等领域

◆深度信念网络(DBN)由杰弗里·欣顿(GeoffreyHinton)提出,作为早期深度生成式模型的代表,初衷是在样本的数据与标签之间建立联合分布。

◆DBN是由多个RBM层组成的,RBM层中的神经元分为两个类别:分别是可见神经元以及隐性神经元。可见神经元是接收输入的神经元,而提取特征的神经元称之为隐藏神经元

◆通过对神经元之间的权重进行训练,训练生成的模型既可以用于特征的识别,也可以使整个神经网络根据最大概率生成训练数据

◆长短期记忆(LongShort-termMemory,LSTM)神经网络,是一种循环神经网络,它具有长期和短期记忆,具有更好的控制记忆的能力,避免了梯度衰减,以及经过层层传递的值,最终出现退化的现象。

◆在LSTM的结构中,采用一个称为“门(gate)”的结构或者记忆单元来进行内存的控制,该门实现在正确的时间传输或重置其值

◆优点:LSTM除了具有其他循环神经网络的优点之外,还具备更好的记忆能力

◆应用:自然语言处理,语言翻译以及智能问答等

◆深度学习方法在图像,视频识别,模式检测,音频以及分类等多个领域均已经非常成熟。

◆在将深度学习的相关方法应用于实际的数据分析时,请注意训练集:验证集:测试集之间的样本分配通常为6:2:2比例分布。

◆使用深度学习的相关方法进行数据分析时,对数据量也有一定要求,如果数据量很少,只有几千条数据甚至几百条数据,那么过拟合的问题就很容易发生,其训练的效果可能还不如采用支持向量机等分类算法进行数据分析。

1.5机器学习的一般流程

1.5.1定义分析目标

明确目标任务是第一个需求,也是选择合适的机器学习算法的关键所在。通过阐明业务需求以及要解决的实际问题,才能根据现有的数据进行模型的设计以及算法的选择。

在监督学习中,分类算法用于定性问题,而回归方法用于定量分析。

在无监督学习中,如果存在样本分割,则可以应用聚类算法。如果需要找出各种数据项之间的内部联系,则可以应用关联分析。

1.5.2收集数据

1.数据应具有代表性,并尽可能地覆盖区域,不然的话,可能出现过拟合和欠拟合的情况。

2.样本数据应平衡。在分类问题的范畴中,如果存在不同类别之间的样本比例较大的情况或者样本数据不平衡的现象,均会影响最终模型的性能。

3.评估数据的量级,包括特征的数量以及样本的数量。根据这些指标估计数据和分析对内存的消耗,并判断在训练过程中内存是否过大,如果内存过大则需要对算法进行优化、改进,或者通过对某些降维技术的使用实现内存消耗合理化,必要的话甚至还会采用一些分布式机器学习的技术。

1.5.3整理预处理

1.数据探索

首先通过对数据进行一定的探索,了解数据的基本结构,数据的统计信息,数据噪声和数据分布等相关信息。

为了更好地对数据的状况进行查看以及数据模式的获取,可以采用数据质量评估以及数据可视化等相关方法来评估数据的质量。

2.数据处理

经过步骤1,可能会发现很多数据质量的问题,例如缺失值,不规则的数据,数据的分布不平衡,数据异常和数据冗余等问题。这些问题的存在将严重降低数据的质量。

数据预处理的操作也是非常重要,在生产环境中的机器学习中,数据通常是原始的,未经过加工以及处理的,而数据预处理的工作通常占据着整个机器学习过程中的绝大部分时间。

常见的数据预处理的方法:缺失值处理,离散化,归一化,去除共线性等方法是机器学习算法。整理预处理

1.5.4数据建模

采用特征选择的方法,可以实现从大量的数据中提取适当的特征,并将选择好的特征应用于模型的训练中,以获得更高精度的模型。

筛选出显著特征需要对业务有非常充分的了解并分析数据。特征选择是否合适通常会对模型的精度有非常直接的影响。选择好的特征,即使采用较为简单的算法,也可以获得较为稳定且良好的模型。

特征有效性分析的技术:相关系数、平均互信息、后验概率、卡方检验、条件熵、逻辑回归权重等方法。

在训练模型之前,通常将数据集分为训练集与测试集,有的时候,会将训练集继续细分为训练集和验证集,以评估模型的泛化能力。

模型本身不存在好坏之分。在进行模型的选择时,通常,没有哪一种算法在任何情况下都能够表现良好,在实际进行算法的选择时,通常,采用几种不同的算法同时进行模型的训练,之后再比较它们之间的性能,并选择其中表现最佳的算法。

不同的模型采用不同的性能指标。

1.5.5模型训练

在模型训练的过程中,需要调整模型的超参数。

在训练的过程中,对机器学习算法的原理以及其推导的过程的要求越高,对机器学习算法的了解越深,就越容易找到问题出现的原因,从而进行合理的模型调整。

1.5.6模型评估

利用测试集数据对模型的精度进行评估与测验,以便评估训练模型对新数据的泛化能力。

假如评估的效果不是很理想,那么就需要分析模型效果不理想的原因并对训练模型进行一定的优化与改进,例如手动调整参数等改进方法。

评估不理想,需要首先诊断模型以确定模型调整的正确思路与方向。过度拟合和欠拟合问题的判断是模型诊断中的重要步骤。

典型方法:绘制学习曲线和交叉验证。

如何解决:

出现过度拟合问题时,其模型的基本调整策略是在增加数据量的同时能够降低模型的复杂度,也可以采用正则化的方法来提高训练模型的泛化能力。

对于模型欠拟合的问题,其模型的基本调整策略是在增加特征数量和质量的同时也增加模型的复杂度。

误差分析是通过对产生误差的样本进行观察并且分析误差的原因。

误差分析的过程:由数据质量的验证,算法选择的验证,特征选择的验证,参数设置的验证等几部分。对数据质量的验证非常重要,通常对参数进行反复地调整,在调整了很长时间之后,才发现数据预处理效果不佳,数据的质量存在一定的问题。

调整模型后,需要对其进行重新训练以及模型评估。

建立机器学习模型的过程也是不断尝试的过程,直至最后模型达到最佳且最稳定的状态。

在工程实施方面,主要通过预处理、特征清理以及模型集成等方式来提高算法的精确度以及泛化能力。

通常,直接对参数进行调整的工作不是太多。因为当数据的量级达到一定的程度时,其训练的速度非常地缓慢,并且不能保证效果。

1.5.7模型应用

模型的应用主要和工程的实施有很大的关系。

工程以结果为导向的,模型在线执行的效果与模型的质量有着非常直接的关系,不仅简单地包括其准确性,误差等方面的信息,还包括其资源消耗的程度(空间复杂度)、运行速度(时间复杂度)以及稳定性是否可以接受等方面的问题。

2机器学习的Python常用库

在机器学习和人工智能领域,Python是最受欢迎的编程语言之一。Python的设计哲学是‘优雅’、‘明确’、’简单‘,属于通用型的编程语言。本章介绍机器学习常用的几个python库及其基础使用。

2.1Numpy简介及基本使用

2.1.1统计学

统计学是关于认识客观现象总体数量特征和数量关系的科学

Numpy是一个Python库,提供了多维数组对象(ndarray)以及用于处理这些数组的函数。它是数据科学和机器学习领域最常用的库之一。Numpy提供了高效的数组操作和数学函数,使得在Python中进行数值计算更加简单和高效。

Numpy提供了丰富的函数和方法,可以进行数组的操作、数学运算、统计分析等。以上仅是Numpy的基本使用和一些统计学中常用的功能示例,你可以进一步了解Numpy文档和官方教程以深入学习和应用。

2.1.2大数据与统计学

Numpy是一个Python库,用于处理多维数组和执行数值计算。在大数据分析和统计学中,Numpy提供了许多功能和工具,可用于处理大规模的数据集、执行矩阵操作和实现统计分析。以下是Numpy在大数据和统计学中的一些常见用法:

处理大规模数据集: Numpy的核心数据结构是ndarray(n-dimensional array),它可以存储大规模的数据集。使用Numpy,你可以高效地加载、存储和处理大型数据集,执行各种数据操作,如筛选、排序和变换。

矩阵操作: Numpy提供了丰富的函数和方法来执行矩阵操作,例如矩阵乘法、转置、逆矩阵等。这些功能对于处理大规模数据集和执行线性代数运算非常有用。

统计分析: Numpy提供了许多统计学中常用的函数和方法,可以对数据进行统计分析。一些常见的统计函数包括计算平均值(mean)、方差(variance)、标准差(standard deviation)、协方差(covariance)等。通过这些函数,你可以分析数据的分布、测量变量之间的相关性,并从数据中获取有关整体趋势和特征的信息。

随机数生成: 在大数据和统计学中,随机数生成是一个常见的需求。Numpy提供了多种生成随机数的函数,如正态分布(numpy.random.normal)、均匀分布(numpy.random.uniform)等。可以利用这些函数生成大量的随机样本,用于模拟、实验和统计推断。

数值计算优化: 当处理大型数据集时,效率是一个重要的考虑因素。Numpy通过底层的C语言实现和优化的算法,提供了高效的数值计算能力。它可以直接操作多维数组,避免了Python中循环的开销,因此非常适合处理大数据集和高维数据。

总结来说,Numpy在大数据和统计学中是一个强大的工具,它提供了高效的数据结构和函数,用于处理大规模数据集、执行矩阵运算和进行统计分析。掌握Numpy的使用对于在机器学习和统计学领域进行数据处理和分析是非常有帮助的。

2.1.3统计学在机器学习中的应用

统计学在机器学习中起着重要的作用,它提供了数据分析和模型评估的基础。Numpy作为一个强大的数值计算库,为统计学在机器学习中的应用提供了许多有用的函数和工具。以下是统计学在机器学习中的一些常见应用以及Numpy的基本使用:

1. 数据探索和预处理:

        在机器学习中,我们通常需要对数据进行探索和预处理,以了解数据的分布、特征和异常值。Numpy提供了各种统计函数,如平均值、方差、百分位数等,可以帮助我们计算这些统计量并获取有关数据集的信息。

2. 特征工程:

        特征工程是机器学习中至关重要的一步,它涉及到从原始数据中提取有用的特征来训练模型。Numpy提供了丰富的函数和方法,可以对特征进行变换、缩放和归一化等操作。例如,通过使用Numpy的函数,我们可以对特征进行标准化,将其转化为具有零均值和单位方差的分布。

3. 概率分布和随机变量:

        在机器学习中,概率分布和随机变量是一些重要的概念。Numpy提供了许多常见的概率分布函数,如正态分布、均匀分布、泊松分布等。我们可以使用这些函数生成服从特定分布的随机数样本,并用于模拟、生成人工数据或执行统计推断。

4. 模型评估和验证:

        统计学在机器学习中也被广泛用于模型的评估和验证。Numpy提供了诸如误差计算、交叉验证、混淆矩阵等用于模型评估的函数和方法。我们可以使用这些函数来计算模型的性能指标,如准确率、精确率、召回率等,并对模型进行有效的验证和比较。

5. 统计推断:

        统计推断是机器学习中的重要环节,它涉及通过已知数据来做出关于总体的推断。Numpy提供了一些统计学的函数和方法,例如假设检验、置信区间估计等。我们可以使用这些函数来进行统计推断,并基于推断结果做出决策。

总结来说,统计学在机器学习中有广泛的应用,而Numpy作为一个强大的数值计算库,为这些应用提供了丰富的功能和工具。通过使用Numpy,我们可以对数据集进行探索和预处理,进行特征工程,处理概率分布和随机变量,进行模型评估和验证,以及进行统计推断。深入理解和熟练运用Numpy中的统计学函数,对于在机器学习中进行数据分析和建模是非常重要的。

2.1.4Numpy

Numpy的全称是Numerical Python,作 为 高 性 能 的 数 据 分 析 以 及 科 学 计 算 的 基 础 包,Numpy提供了矩阵科学计算的相关功能。Numpy提供的功能主要分为以下几个:

1.提供了数组数据快速进行标准科学计算的相关功能。

2.提供了有用的线性代数,傅里叶变换和随机数的相关功能。

3.ndarray—一个具有向量算术运算和复杂广播能力的多维数组对象。

4.用于读写磁盘数据的工具以及用于操作内存映射文件的工具。

5.提供了集成Fortran以及C/C++代码的工具。

【注】上述所提及“广播”的意思可以理解为:当存在两个不同维度数组(array)进行科学运算时,由于Numpy运算时需要相同的结构,可以用低维的数组复制成高维数组参与运算。

2.1.5Numpy安装

Python官网上的发行版是不包含NumPy模块的,即如果使用Numpy需要自行安装,安装的方式有以下几种:

(1)使用pip安装

使用pip工具进行NumPy的安装是最简单且快速的方法,使用如下命令即可完成安装:

pip install --user numpy

--user选项的功能是可以设置numpy只安装在当前用户下,而不是写入到系统目录中。该命令在默认情况下使用的是国外线路,速度很慢,故推荐使用清华镜像进行下载并安装:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

(2)使用已有的发行版本

对于大多数用户,尤其是在Windows操作系统上,其实最简单的方法是下载Anaconda Python发行版,因为anaconda集成了许多数据科学计算的关键包(包括NumPy,SciPy,matplotlib,IPython,SymPy以及Python核心自带的其它包)。

Anaconda:是开源且免费Python发行版,适用于大规模数据处理、预测分析,和科学计算,实现包的简化管理和部署,并且支持Linux,Windows和Mac等系统。

2.1.6Numpy介绍

通过该实验的实践,要求大家可以掌握不同维度数组的表示形式,熟悉ndarray的属性和基本操作,能够使用Numpy进行数组的运算、统计和数据存取等操作。

ndarray的属性和基本操作

创建一个numpy.ndarray对象:

>>>import numpyas np

>>>a= np.array([[1,2,3],[4,5,6]])

>>>a

运行结果如下:

array([[1, 2, 3],[4, 5, 6]])

ndarray对象的别名是array:

>>>type(a)

运行结果如下:

numpy.ndarray

确定各个维度的元素个数:

>>>a.shape

运行结果如下:

(2, 3)

元素个数:

>>>a.size

运行结果如下:

6

数据的维度:

>>>a.ndim

运行结果如下:

2

数据类型:

>>>a.dtype

运行结果如下:

dtype('int32')

每个元素的大小,以字节为单位:

>>>a.itemsize

运行结果如下:

2

访问数组的元素:

>>>a[0][0]

运行结果如下:

1

从列表创建:

>>>import numpyas np

>>>np.array([[1,2,3],[4,5,6]],dtype=np.float32)

运行结果如下:

array([[1., 2., 3.],[4., 5., 6.]], dtype=float32)

从元组创建

>>>np.array([(1,2),(2,3)])

运行结果如下:

array([[1, 2],[2, 3]])

从列表和元组创建

>>>np.array([[1,2,3,4],(4,5,6,7)])

运行结果如下:

array([[1, 2, 3, 4],[4, 5, 6, 7]])

类似range()函数,返回ndarray类型,元素从0到n‐1

>>>np.arange(5)

运行结果如下:

array([0, 1, 2, 3, 4])

2.1.7Numpy基本使用

(1)切片

Numpy支持切片操作,以下为相关例子说明:

import numpyas np
matrix=np.array([[10,20,30],[40,50,60],[70,80,90]])
print(matrix[:,1])print(matrix[:,0:2])
print(matrix[1:3,:])
print(matrix[1:3,0:2])

运行结果:

[20 50 80][[10 20][40 50][70 80]][[40 50 60][70 80 90]][[40 50][70 80]]

(2)数组比较

Numpy也提供了较为强大的矩阵和数组比较功能,对于数据的比较,最终输出的结果为boolean值。为了方便理解,举以下例子来说明:

import numpyas np
matrix=np.array([[10,20,30],[40,50,60],[70,80,90]])
m=(matrix==50)
print(m)

运行结果:

[[False False False][False  True False][False False False]] 
我们再来看一个比较复杂的例子:

import numpyas np
matrix=np.array([[10,20,30],[40,50,60],[70,80,90]])
second_column_50=(matrix[:,1]==50)
print(second_column_50)
print(matrix[second_column_50,:])

运行结果:

[False  True False][[40 50 60]]

(3)替代值

NumPy可以运用布尔值来替换值。

在数组中:

import numpy
vector =numpy.array([10,20,30,40])
equal_to_ten_or_five=(vector==20)|(vector==20)
vector[equal_to_ten_or_five]=200
print(vector)

运行结果:

[10 200 30 40]

在矩阵中:

import numpy
 
matrix=numpy.array([[10,20,30],[40,50,60],[70,80,90]])
 
second_column_50=matrix[:,1]==50
 
matrix[second_column_50,1]=20
 
print(matrix)

运行结果:

[[10 20 30][40 20 60][70 80 90]]

这里,我们演示把空值替换为“0”的操作。

import numpyas np
 
matrix=np.array([['10','20','30'],['40','50','60'],['70','80','']])
 
second_column_50=(matrix[:,2]=='')
 
matrix[second_column_50,2]='0'
 
print(matrix)

运行结果:

[['10' '20' '30']['40' '50' '60']['70' '80' '0']]

(4)数据类型转换

在Numpy当中,ndaray数组的数据类型可以使用dtype参 数 进 行 设 置,还可以通过astype方法进行数据类型的转换,该方法在进行文件的相关处理时很方便、实用,值得注意的是,使用astype()方法对数据类型进行转换时,其结果是一个新的数组,可以理解为对原始数据的一份复制,但不同的是数据的数据类型。

比如,把String转换成float。如下:

import numpy
vector=numpy.array(["22","33","44"])
vector=vector.astype(float)
print(vector)

运行结果:

[22. 33. 44.]

(5)Numpy的统计计算方法

Numpy基本使用除了以上介绍的相关功能,Numpy还内置了更多地科学计算的方法,尤其是最为重要的统计方法,如下:

1.max():用于统计计算出数组元素当中的最大值;对于矩阵计算结果为一个一维数组,需要指定行或者列。

2.mean():用于统计计算数组元素当中的平均值;对于矩阵计算结果为一个一维数组,需要指定行或者列。

3.sum():用于统计计算数组元素当中的和;对于矩阵计算结果为一个一维数组,需要指定行或者列。

值得注意的是,用于这些统计方法计算的数值类型必须是int或者float。

数组例子:

import numpy
 
vector=numpy.array([10,20,30,40])
 
print(vector.sum())

运行结果:

100

矩阵例子:

import numpyas np
 
matrix=np.array([[10,20,30],[40,50,60],[70,80,90]])
 
print(matrix.sum(axis=1))
 
print(np.array([5,10,20]))
 
print(matrix.sum(axis=0))
 
print(np.array([10,10,15]))

运行结果:

[ 60 150 240][ 5 10 20][120 150 180][10 10 15]

后续待更新!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/m0_65121454/article/details/128178708

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值