欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

机器学习基础知识

程序员文章站 2022-07-07 22:27:01
m 代表训练集(training set)中实例的数量 x 代表特征(feature)/输入(input) 变量 y 代表目标(target)/输出(output) 变量 (x,y) 代...

m 代表训练集(training set)中实例的数量
x 代表特征(feature)/输入(input) 变量
y 代表目标(target)/输出(output) 变量
(x,y) 代表训练集中的实例
(x(i),y(i))" role="presentation">(x(i),y(i))代表第i个观察实例
h代表学习算法的模型,也称假设(hypothesis),hθ(x)=θ0θ1x" role="presentation">hθ(x)=θ0θ1x
θ" role="presentation">θ被称为参数(parameters)
模型预测值和训练集中实际值之间的差距就是建模误差(modeling error)
代价函数机器学习基础知识
学习的过程就是使代价函数(cost function)最小
机器学习基础知识

梯度下降
梯度下降是用来求函数最小值的算法,同样也适用于代价函数.
代价函数的梯度下降思想是:随机选择一个参数的组合(θ0,θ1,...,θn)" role="presentation">(θ0,θ1,...,θn),计算代价函数,接着找一个能让代价函数值下降最多的参数组合,不断迭代.直到直到局部最小值(local minimum),因为没有尝试所有组合所以不能确定最小值是否是全局最小(global minimum).
机器学习基础知识
这个就是批量梯度下降的计算公式(batch gradient descent),其中α" role="presentation">α是学习速率(learn rate),学习速率随着越接近最小值,而变小(如果学习速率太大,则有可能越过最小值,使得代价函数发散)

向量化
常规的写法:
hθ(x)=j=0nθjxj" role="presentation">hθ(x)=j=0nθjxj
向量的写法:
hθ(x)=θTX" role="presentation">hθ(x)=θTX
其中θ=[θ0,θ1,...,θn],X=[x1,x2,...,x3]" role="presentation">θ=[θ0,θ1,...,θn],X=[x1,x2,...,x3]

In[2]: import numpy as np
  ...: from numpy.random import rand
  ...: from timeit import timeit
  ...: a = np.mat(rand(1,10000))
  ...: b = np.mat(rand(10000,1))
  ...: 
  ...: def matrix():
  ...:     a * b
  ...: timeit(matrix,number=100) # 矩阵写法
  ...: 
Out[2]: 0.009521265081375357
In[3]: a = [i for i in a.flat]
  ...: b = [i for i in b.flat]
  ...: 
  ...: def loop():
  ...:     sum = 0
  ...:     for i in range(len(a)):
  ...:         sum = sum + a[i]*b[i]
  ...: timeit(loop,number=100)  # 普通写法
  ...: 
Out[3]: 0.30903943240035536

矩阵的算法使得速度提高了进30倍

用矩阵描述梯度下降
常规写法:
机器学习基础知识
向量写法:
机器学习基础知识
机器学习基础知识