目录
一、什么是机器学习呢?
机器学习,顾名思义就是用机器来学习并输出甚至预测一些结果。这就需要一定的数据作为输入,采用一些模型算法来处理这些数据,并发现一些特征关系,来达到学习预测的效果。就和我们人的经验一样,来得到一些规律。举个例子:夏天买西瓜(举例来源:机器学习绪论-优快云博客)
- 夏天买西瓜的时候,有经验的同学都知道:如果西瓜色泽青绿、根蒂蜷缩、敲声浊响,就可以判断这是一个正熟的好瓜。那么,为什么通过色泽、根蒂、敲声,这几个特征就能帮我们做出相当好的判断呢?因为我们吃过和看过很多好瓜,累积了这方面很多的经验,而通过对经验的利用,就能对新的情况做出有效的决策。
- 机器学习正是这样的一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。对于计算机而言,“经验”通常以“数据”的形式存在。因此,机器学习所研究的主要内容,是关于在计算机上从经验数据中产生的“模型”的算法,即“学习算法”。有了学习算法,在面对新的情况时,模型会给我们提供相应的判断和决策。
二、机器学习分类
机器学习可分为有监督、无监督和强化三种不同类型的机器学习。
1.无监督学习
无监督学习是指从无标记的训练数据中学习然后预测模型推断出结论的机器学习问题。无标注数据是自然得到的数据,预测模型表示数据的类别、转换或概率。无监督学习的本质是学习数据中的统计规律或潜在结构。即:给定数据,寻找隐藏的结构。
- 无监督学习是从从无标记中。它可以在探索性数据分析阶段用于发现隐藏的模式或者对数据进行分组。最典型的无监督学习就是聚类分析,它可以在探索性数据分析阶段用于发现隐藏的模式或者对数据进行分组。比如一个人没有见过恐龙和鲨鱼,如果给他看了大量的恐龙和鲨鱼,虽然他没有恐龙和鲨鱼的概念,但是他能够观察出每个物种的共性和两个物种间的区别,并对这两种动物予以区分。
- 无监督学习的另一个子类是降维。高维数据的每个观察通常都伴随着大量测量数据,这对有限的存储空间和机器学习算法的计算性能提出了挑战。无监督降维是特征预处理中数据去噪的一种常用方法,它也降低了某些算法对预测性能的要求,并在保留大部分相关信息的同时将数据压缩到较小维数 的子空间上。 降维有时有利于数据的可视化。
2.有监督学习
有监督学习的主要目标是从有标记的训练数据中学习模型,以便对未知或未来的数据做出预测。主要包括分类和回归两类问题。即:给定数据,预测标签。
- 分类问题:以垃圾邮件过滤为例,可以采用有监督的机器学习算法,基于打过“垃圾邮件”标签的电子邮件语料库来训练模型,然后用模型来预测新邮件是否属于垃圾邮件。带有离散分类标签的有监督学习也被称为分类任务,例如上述的垃圾邮件过滤。
- 回归问题:有监督学习的另一个子类被称为回归,其结果信号是连续的数值。回归分析包括一些预测(解释) 变量和一个连续的响应变量(结果或目标),试图寻找那些能够预测结果的 变量之间的关系。
3.强化学习
强化学习它关注的是软件代理如何在一个环境中采取行动以便最大化某种累积的回报。即:给定数据,学习如何选择一系列行动,以最大化长期收益。强化学习的常见例子是国际象棋。代理根据棋盘的状态或环境来决定一 系列的行动,奖励为比赛结果的输赢。
三、机器学习的典型工作流程
1.预处理——整理数据
原始数据集或多或少存在数据缺失NULL、异常数据、混有无关紧要的数据等诸多数据不规范的问题。这就需要对收集到的数据集进行进一步的处理、包括数据的清洗、转换、标准化、缺失值处理、数据集划分、特征提取、数据降维等。
对于数据预处理这块建议看看下面这篇文章,写的非常不错,链接:数据挖掘算法原理与实践:数据预处理-优快云博客
- 将数据集随机分成单独的训练集和测试集。用训练集来训练和优化机器学习模型,同时把测试集保留到最后用以评估最终的模型。
# 一般会定义以下函数,或者从库包导入train_test_split # 以下是示例, X是样本集, y是目标集, test_ratio代表测试集所占的比例 def train_test_split(X, y, test_ratio=0.2): xxx
-
首先需要从原始数据中提取有意义的特征,特征提取是非常有讲究的,选择的特征太多可能造成维数灾难,会降低算法的运行速度,特征太少又可能导致无法完全刻画数据,影响算法的性能。某些选定的特征可能是高度相关的,某些特征可能是多余的,我们需要区分。
-
因此,数据降维技术可以将特征压缩到低维的子空间。降低特征空间的维度可以减少存储空间,提高算法的运行速度,在某些情况下,如果数据集包含大量不相关的特征或噪声,即数据集具有较低的信噪比,那么降维可以提高模型预测的性能。
2.训练和选择预测模型
从戴维·沃尔珀特著名的“天下没有免费的午餐定理”,可以得出的重要结论是学习不是“免费”的。每个分类算法都有其固有的偏差,如果不对任务做任何假设,没有哪个分类模型更优越。在 实践中,至少要根据一定的评价指标来比较几种不同的算法,以便训练和选择性能最好的模型。
3.评估模型和预测新样本数据
在选择了适合训练集的模型之后,可以用测试集来评估它在新数据上的性能,以评估泛化误差。如果对模型的性能感到满意,那么就可以用它来预测未来的新数据。
四、采用Python语言进行机器学习
1.Python编译器和环境的配置
对于Python安装可以从官网下载即可:Welcome to Python.org;或者可以下载Anaconda,采用自带的Python 3.8版本也可以。
对于Python编译器可以采用Pycharm集成编译器,配置相应的Python解释器就可以了。
本人是下载的Anaconda,然后采用自带的Python 3.8版本作为解释器,再配置在Pycharm中。Anaconda是一个很好的库包管理软件,有可视化平台和终端,同时可以配置虚拟环境,对于不同版本构建的代码来说,非常实用和方便。
下面是下载Anaconda、配置环境变量和虚拟环境的实用链接:2023年最新版Anaconda3的安装配置及使用教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)_anaconda3安装-优快云博客
2.常用的库包
- 机器学习编程主要用scikit-learn(简写为sklearn),这是目前最为常用和可访问的开源机器学习库。
- numpy库,使用多维阵列来存储和操作数据。
- pandas库,该工具建立在numpy库之上,可以提供额外的更高级的数据操作,可以使表格数据操作更加方便。
- 对于数据的可视化,使用定制化程度非常高的matplotlib库。