admin 管理员组

文章数量: 1184232

目录

1 监督式机器学习的基础知识

1.1 训练阶段(training phase)

1.2 推理阶段

2 线性回归

3 逻辑回归

3.1 Sigmoid 函数

3.2 最大似然模型

4 K-Means 聚类算法

 5 K-近邻算法

 6 神经网络分析

6.1 人工神经网路

6.2 在 Python 中使用神经网络

7 决策树

8 最小方差计算

9 基本统计

10 支持向量机(SVM)分类

11 随机森林分类


1 监督式机器学习的基础知识

        机器学习的主要目的就是,通过已有的数据进行准确的预测。例如,假设·写个算法来预测一只特定的股票在未来两天的价值,为了完成该目标,就需要训练一个机器学习模型。

        那么什么是模型呢?从机器学习用户的角度来说,机器学习模型(Model)就像一个黑盒子:把数据放进去,然后取出预测结果

         在这个模型中,输入特征被叫作特征(feature),并用变量 x 表示,它可以是一个数值,也可以是数值构成的多维向量。然后黑盒子就会发挥它的魔力,处理输入的数据。经过一段时间后,就会得到预测值 y,这就是模型针对给定输入特征的预测输出。对于回归问题,预测值也是由一个或多个数值组成,跟输入特征一样。

        监督式机器学习分成两个独立的阶段:训练阶段和推理阶段

1.1 训练阶段(training phase)

        在训练阶段,你将告诉模型,对于给定的输入 x,你期望输出的是 y',当模型输出预测值 y 时,将与 y' 进行比较,如果它们不一样,则更新模型,以输出一个更接近 y' 的结果。

        举个例子,假设训练一个模型来预测给定图像(输入)的水果名称(输出),具体输入是香蕉的图像 (x),但模型错位地预测其为苹果 (y) 。由于想要的预测 (y') 与模型的预测不一致,就需要修改模型,以便下一次模型更正确地预测其为香蕉。

        当不断告诉模型你对大量不同输入的期望输出,并持续调整模型时,你就在使用训练数据对模型进行训练。随着时间的推移,模型将会学习到你希望特定的输入将产生怎样的输出。这就是数据如此重要的原因:只有好的训练数据能产生好的模型。没有优质的训练数据,模型一定会失败。换句话说,训练数据监督着机器学习的过程,这就是把它叫作监督式学习的原因。

1.2 推理阶段

        在推理阶段,使用训练好的模型针对新输入的特征 x,预测其输出值 y。合适的机器学习模型拥有泛化能力:它们能利用从训练数据中获得的经验来预测新输入的输出结果。能对从未见过的输入数据进行泛化预测是机器学习的优势之一,也是其在广泛的实际场景中大受欢迎的主要原因。

2 线性回归

        线性回归常被用在回归问题中,在这种问题中,模型会通过现有的数据来预测缺失的数据。

        线性回归的一个巨大优势是其简单性,在市场研究、天文学和生物学等领域都有着广泛的运用。

        每个机器学习模型都由模型参数组成,模型参数是根据对现有数据的考量,在模型内部配置的变量。模型参数决定了基于给定的特征,模型具体会怎样计算出预测值。对于线性回归,模型参数被称为系数,比如二维直线的公式:,变量 a 和 c 就是这个线性方程的系数。这个方程描述了任何一个输入 x 是如何转化为输出值 f(x) 的,所有这些输出值在二维空间离描述了一条直线,通过改变系数,就可以描述二维空间中的任何一条直线。

        更泛化一些,给定一组输入特征 x1, x2, ..., xk, 线性回归模型会把这些输入特征跟一组系数 a0, a1, ..., ak 组合在一起,用下面的公式计算出预测值 y:

         现在如何使用线性回归来预测某一天的股票价格呢?为了简化,这里假设只有一个输入特征 x,即日期(真实世界肯定没有这么简单)。对于输入日期 x,希望得到预测的股票价格 y。这样就可以把线性回归模型简化为一个二维直线模型了:

         为了找到能准确描述数据的直线,已建立一个线性回归模型,需要确定其系数。这就是机器学习发挥作用的时候了。确定线性回归模型的参数主要有两种方法:1)可以分析计算出这些点之间的最佳拟合直线(线性回归的标准方法);2)可以尝试不同的模型。根据标注后的样本数据对其进行测试,并最终确定最佳模型。在每种情况下,都要通过一个叫作误差最小化的过程来确定”最佳“模型。这个过程会将预测值和理想输出值的方差最小化,以选择具有最小误差的模型(或为模型模型选择倒置最小方差的系数)。

        现在给定数据,日期为 [0, 1, 2];对应股票价格为 [155, 156, 157]],对于这组数据,你最后会得出系数为 a0=155.0、a1=1.0,把它们放到线性回归模型公式中,得出模型如下:

         该模型预测出的直线跟训练模型数据的距离方差为 0(太完美了),因此你已经找到了误差最小化的模型。现在看可以使用该模型来预测任何 x 值对应的股票价格了,如,你想预测 x=3 时的股票价格,只需要将 x 值代入该模型计算,就能预测其股价为 159.0 了。

        下面展示了如何使用一行代码来构建一个简单的股票价格的线性回归模型,不过在此之前需要先安装两个库——numpy、scikit-learn:

# 此处只展示 Win10 系统的安装方法,其他系统自行百度
# 在终端安装 numpy 库
python -m pip install numpy

# 在终端安装 scikit-learn 库——同时需要安装其依赖库
# numpy 库,上面以安装
# matplotlib 库
python -m pip install matplotlib
# scipy 库
python -m pip install scipy 
# scikit-learn 库,注意不是安装 sklearn 库,但在 import 中使用 sklearn
python -m pip install scikit-learn
from sklearn.linear_model import LinearRegression
import numpy as np

# 数据(每天的股价)
prices = np.array([155, 156, 157])
n = len(prices)
'''
将 3 个数值放进 NumPy 数组中,并用一个单独的变量 n 来存储其长度,以使代码更简洁
'''

# 一行流
model = LinearRegression().fit(np.arange(n).reshape(n, 1), prices)
'''
通过调用 LinearRegression() 函数来建立模型。为了找到合适的参数,需要调用 fit() 函数
来训练模型。
fit() 函数接受两个参数:训练数据的输入特征值、这些输入对应的理想输出。
我们的理想输出就是真实的股价,但对于输入特征,fit() 需要一个如下格式的数组:
[<training_data_1>,
<training_data_2>,
...
<training_data_n>]
每个训练数据都是一组特征值的序列:
<training_data> = [feature_1, feature_2, ... , feature_k>
在该例子中,每组输入只包含了一个单独的特征 x(日期)。此外,预测值也只由 y(股价)构成。
为了把输入数组包装成正确的形状,需要把它们重塑乘下面矩阵的形式:
[[0],
[1],
[2]]
可以使用 np.arrange() 函数来创建一个递增的整数序列,然后使用 reshape((n, 1)) 将这个一
维 NumPy 数组重塑成具有 1 列 n 行的二维数组。注意,scikit-learn 允许输入的理想输出是一
维数组,否则需要将 prices 数据数组也进行重塑。
一旦有了训练数组和理想输出,fit() 就会开始进行误差最小化计算:寻找使预测值和理想输出差异最
小的模型参数。
当 fit() 对它得到的模型感到满意时,就会把该模型返回,你就可以使用它的 predict() 函数来预
测之后日期的股价了。predict() 和 fit() 对输入特征的格式要求时相同的,即都需要传入一个单列
矩阵。
'''

# 结果:使用 predict() 函数预测第 3 和第 4 天的股价
print(model.predict([[3], [4]]))
# [158. 159.]

3 逻辑回归

        逻辑回归常用于分类问题,即预测一个样本是否属于特定的类别(或类型),比如根据不容的输入特征,将用户分为男性和女性。这与回归问题形成鲜明的对比,在回归问题中,你拿到一个样本,并返回一个属于某连续域的预测值。

        一般来说,线性回归适合从一个连续域中找出预测值,这个值可以有无线多的可能选项。但如果预测值不是连续的,而是可分类的,属于数量有限的组或类别之一(如,给定一个盯人吸烟的数量来预测其患肺癌的可能性),此时就更适合使用逻辑回归了。

3.1 Sigmoid 函数

        线性回归对训练数据拟合出一条直线,而逻辑回归则拟合出一条 S 型曲线,叫作 sigmoid 函数。这条曲线将帮助你进行二元决策(如,是/否)。对于大多数输入值,sigmoid 函数将返回一个非常接近 0 的数(属于其中一类)或者非常接近 1 的数(属于另一类)。对于给定的输入值,它不太可能返回一个摸棱两可的结果,虽然确实可能会产生 0.5 这样的概率值,但在实际场景中会把这种可能性降至最小。下面的图展示了对于肺癌案例的逻辑回归曲线:

本文标签: 学习笔记 机器 python