监督学习:对于训练数据集都有明确的标签,意思是我们训练之前是知道结果的比如说波士顿房价的预测问题,训练之前我们是能获得所有的房价的准确值,我们是根据准确值与预测值之间的差异来调整我们的模型。
监督学习主要分为两种:分类和回归
无监督学习:数据没有明确的标签,需要计算机自己学习对数据进建模。
主要的无监督学习是:强化学习,聚合
泛化能力:指的是计算机在训练数据集学习到的模型在新鲜数据上预测能力。
过拟合:我们得到的模型对于原有数据拟合得太好了达到了100%,然而这样的模型会过于复杂,从而导致这个模型对新鲜数据的拟合能力大大下降。
欠拟合:和过拟合相反是对样本数据的拟合能力很低,也对新鲜数据的拟合能力也低。
交叉验证:对样本进行建模是只拿出一些数据进行建模,留下一部分作为验证数据并且保留验证数据的误差,如此循环直到所有的样本数据有且只有一次进行过预测,并且把每个样本数据的验证误差的平方求和。目的是为了得到更好的模型。
解决过拟合得方法:
(1)当你发现你的模型在迭代到训练误差越来越小预测误差越来越大时,你需要马上停止你的迭代。
(2)过拟合发生时,往往会出现拟合函数在训练数据点上的“曲率”很大。而这些“曲率”是由模型的参数近似表达出来的,因此通过对大值参数的惩罚来抑制这种曲率的发生。也就是对loss中加些正则化项。
线性回归的原理:假设样本数据的特征和预测结果之间满足线性关系,我们就假定初始化一个函数,然后把所有的样本带入假设的函数中,把得到的结果和真实结果做对比,此时在拟定一个损失函数,当预测值和真实值之间满足损失函数我们就认定这个样本是合格数据,如果不满足就再定义一个更新函数,并去更新我们初始函数,每次更新完成后重新带入所有的样本数据,如此循环直到所有的样本数据满足我们更新的函数,此时这个函数就是我们所需要的函数。
目标函数: h(x) = aX0+bX1+...+nXn
代价函数:
损失函数:预测值-真实值的平方<某个数
优化方法:梯度下降
代码:
import numpy as np
#import matplotlib.pyplot as plt
a = np.random.standard_normal((1,500))
X = np.arange(0,50,0.1)
Y = np.arange(20,120,0.2)
y = Y -a*10
y = y[0]
def Optimization(x,y,theta,learning_rate):
for i in range(Iter):
theta = Updata(x,y,theta,learning_rate)
return theta
def Updata(x,y,theate,learning_rate):
m = len(x)
Sum = 0.0
Sum1 = 0.0
aplha = learning_rate
h = 0
for i in range(m):
h = theate[0]+theate[1]*x[i]
Sum+=(h-y[i])
Sum1 += (h-y[i])*x[i]
theate[0]-=aplha * Sum / m
theate[1] -= aplha * Sum1 / m
return theate
learning_rate = 0.001
theta = [0,0]
Iter = 1000
theta = Optimization(X,y,theta,learning_rate)
print(theta)