机器学习的线性代数基础概念

打开本页,如果没有显示公式,请刷新页面。

此处简要罗列在机器学习中所用到的线性代数基础概念,供快速学习参考。相关内容的详细讲授,均以发表在《机器学习数学基础》一书中,请参阅。

矩阵

线性代数的基础概念,常用于线性方程组求解和线性映射中。

向量

的矩阵,即只有一列。

矩阵乘法

两个矩阵相乘,可以认为是第一个矩阵的行与第二个矩阵的列分别点积。

矩阵转置

,其中 ,则称两个矩阵互为转置矩阵,即

逆矩阵

对于方阵 ,有方阵 ,使得 成立,则 称为可逆矩阵,记作

正交矩阵

对于方阵 ,若满足 (其中 ),且列是单位向量,则称之为单位正交矩阵。

对角矩阵

对于方阵 ,当元素满足:

则此矩阵是对角矩阵。

正规方程

利用最小二乘法,可以得到如下解:

用 Python 实现:

import numpy as np Features
x = np.array([[2, 1834, 1],[3, 1534, 2],[2, 962, 3]])
y = [8500, 9600, 258800]

# x 转置
transpose_x = x.transpose()

# x 转置之后与 x 相乘
multi_transpose_x_to_x = np.dot(transpose_x, x)

# 求解
inverse_of_multi_transpose_x_to_x = np.linalg.inv(multi_transpose_x_to_x)

multiplication_transposed_x_y = np.dot(transpose_x, y)

theta = np.dot(inverse_of_multi_transpose_x_to_x, multiplication_transposed_x_y)

theta

输出:

线性方程和线性回归

例如(以下示例中的数据源:https://github.com/towardsai/tutorials/blob/master/linear-algebra-for-ml-and-deep-learning/house_price.csv)

import pandas as pd
import numpy as np

df = pd.read_csv('house_price.csv')

print(df.head())

def get_mean(value):
    total = sum(value)
    length = len(value)
    mean = total/length
    return mean

def get_variance(value):
    mean = get_mean(value)
    mean_difference_square = [pow((item - mean), 2) for item in value]
    variance = sum(mean_difference_square)/float(len(value)-1)
    return variance

def get_covariance(value1, value2):
    value1_mean = get_mean(value1)
    value2_mean = get_mean(value2)
    values_size = len(value1)
    covariance = 0.0
    for i in range(0, values_size):
        covariance += (value1[i] - value1_mean) * (value2[i] - value2_mean)

    return covariance / float(values_size - 1)

def linear_regression(df):

    X = df['square_feet']
    Y = df['price']
    m = len(X)

    square_feet_mean = get_mean(X)
    price_mean = get_mean(Y)

    #variance of X
    square_feet_variance = get_variance(X)
    price_variance = get_variance(Y)

    covariance_of_price_and_square_feet = get_covariance(X, Y)
    w1 = covariance_of_price_and_square_feet / float(square_feet_variance)
    w0 = price_mean - w1 * square_feet_mean

    # prediction --> Linear Equation
    prediction = w0 + w1 * X

    df['price (prediction)'] = prediction
    return df['price (prediction)']


    predicted = linear_regression(df)

    print(predicted)

范数

向量的范数,就是向量的长度或大小。通项为:

其中: 即为范数的阶,例如,

  • 即为 范数,也称为曼哈顿范数。用于机器学习正则化之中,称为 Lasso 正则化,或者 L1 正则化。
  • 即为 范数,也称为欧几里得范数。用于机器学习正则化之中,称为 Ridge ,或者 L2 正则化,一般表达式为

特征抽取和特征选择

所谓特征抽取,即根据原特征,映射一组新的特征,且能代表原特征的主要属性。

所谓特征选择,即建立一个代表原特征的子集。

特征抽取的主要方法:

  • 主成分分析(Principal Componet Analysis, PCA)
  • 线性判别分析(Linear Discriminant Analysis, LDA)

协方差矩阵

方差定义:

协方差定义:

协方差矩阵:

其中,

特征值和特征向量

详见《机器学习数学基础》

正交

向量 正交,则 。反之亦然。

作者: 老齐
链接: http://math.itdiffer.com/linearAlgebra4ML.html
来源: 老齐教室-机器学习数学基础
本文原创发布于「老齐教室-机器学习数学基础」,转载请注明出处,谢谢合作!

https://gitee.com/qiwsir/images/raw/master/2021-2-15/1613357594979-1.png

results matching ""

    No results matching ""