机器学习的一些概念
-
有监督
数据集有标签,包括:分类、回归
-
无监督
数据集无标签,包括:聚类
-
泛化能力
数据迁移的能力
-
过拟合、欠拟合(方差和偏差以及各自解决办法)
含义 偏差/方差 解决办法 欠拟合 模型不能很好地拟合数据 高偏差(high bias) 使用更强的模型 过拟合 模型过度拟合数据,泛化能力不足 高方差(high variance) 正则化、dropout -
交叉验证
在训练集中分出一部分,作为测试来测试性能,以调节超参数
线性回归的原理
使用线性模型拟合数据,形如:
h θ ( x ) = θ T X = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta}\left( x \right)=\theta^{T}X={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} hθ(x)=θTX=θ0+θ1x1+θ2x2+...+θnxn
线性回归损失函数、代价函数、目标函数
-
损失函数,一般针对单个样本i
∣ y i − f ( x i ) ∣ |y_i-f(x_i)| ∣yi−f(xi)∣ -
代价函数,一般针对总体
1 N ∑ i = 1 N ∣ y i − f ( x i ) ∣ \frac{1}{N}\sum^N_{i=1}{|y_i-f(x_i)|} N1i=1∑N∣yi−f(xi)∣ -
模板函数
1 N ∑ i = 1 N ∣ y i − f ( x i ) ∣ + 正 则 化 项 \frac{1}{N}\sum^N_{i=1}{|y_i-f(x_i)|}+正则化项 N1i=1∑N∣yi−f(xi)∣+正则化项
优化方法
优化方法 | 说明 |
---|---|
梯度下降法 | 常用的一阶优化方法,是求解无约束优化问题的经典方法,广泛应用于深度学习 |
牛顿法 | 常用的二阶优化方法,计算复杂 |
拟牛顿法 | 常用的二阶优化方法,牛顿法的简化 |
线性回归的评估指标
-
L1范数:平均绝对误差(MAE)
M A E = 1 n ∑ i = 1 N ∣ y i − f ( x i ) ∣ MAE=\frac{1}{n}\sum^N_{i=1}{|y_i-f(x_i)|} MAE=n1∑i=1N∣yi−f(xi)∣
-
L2范数:均方误差(MSE)
M S E = 1 n ∑ i = 1 N ∣ y i − f ( x i ) ∣ 2 MSE=\frac{1}{n}\sum^N_{i=1}{|y_i-f(x_i)|^2} MSE=n1∑i=1N∣yi−f(xi)∣2
sklearn参数详解
函数:sklearn.linear_model.LinearRegression()
示例代码:
import numpy as np # 快速操作结构数组的工具
import matplotlib.pyplot as plt # 可视化绘制
from sklearn.linear_model import LinearRegression # 线性回归
# 样本数据集,第一列为x,第二列为y,在x和y之间建立回归模型
data=[
[0.067732,3.176513],[0.427810,3.816464],[0.995731,4.550095],[0.738336,4.256571],[0.981083,4.560815],
[0.526171,3.929515],[0.378887,3.526170],[0.033859,3.156393],[0.132791,3.110301],[0.138306,3.149813],
[0.247809,3.476346],[0.648270,4.119688],[0.731209,4.282233],[0.236833,3.486582],[0.969788,4.655492],
[0.607492,3.965162],[0.358622,3.514900],[0.147846,3.125947],[0.637820,4.094115],[0.230372,3.476039],
[0.070237,3.210610],[0.067154,3.190612],[0.925577,4.631504],[0.717733,4.295890],[0.015371,3.085028],
[0.335070,3.448080],[0.040486,3.167440],[0.212575,3.364266],[0.617218,3.993482],[0.541196,3.891471]
]
#生成X和y矩阵
dataMat = np.array(data)
X = dataMat[:,0:1] # 变量x
y = dataMat[:,1] #变量y
# ========线性回归========
model = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
model.fit(X, y) # 线性回归建模
print('系数矩阵:\n',model.coef_)
print('线性回归模型:\n',model)
# 使用模型预测
predicted = model.predict(X)
# 绘制散点图 参数:x横轴 y纵轴
plt.scatter(X, y, marker='x')
plt.plot(X, predicted,c='r')
# 绘制x轴和y轴坐标
plt.xlabel("x")
plt.ylabel("y")
# 显示图形
plt.show()
参考
西瓜书
cs229吴恩达机器学习课程
李航统计学习
谷歌搜索
公式推导参考:http://t.cn/EJ4F9Q0