机器学习基础
数据集分类
训练集:用来训练模型的数据
验证集:用来调整模型的超参数
测试集:用来评估模型的泛化能力(在新的样本集上,模型的表现能力)
误差分析:
误差是指样本预测标签值 和 样本真实标签值 之间的差距
我们要做的就是使误差尽可能的小,这样预测值就很接近真实标签值了
误差分类:
训练误差
泛化误差
测试误差
过拟合和欠拟合
过拟合:是指模型在训练集上的表现要好于在测试集(表现好是过了的意思,把噪声等错误信息也拟合了)(模型过于复杂,可加入正则项、数据降维减少噪声缓解这种现象)
欠拟合:是指模型不能很好的拟合数据样本(模型过于简单,可使用复杂模型,或增加样本数据缓解这种现象)
泛化误差=偏差+方差+系统误差
偏差:反映模型拟合数据样本的能力
方差:在极少部分数据扰动的情况下,模型的稳定情况()
系统误差:人为标记,或者计算精度产生不可避免的噪声。
交叉验证:
将数据样本分为K份,其中k-1份作为训练集,剩下的一份作为验证集。
重复K次验证,确保每一份数据都能作为验证集。最终结果取K次的平均
优点:避免了取样的 随机性
缺点:耗时间
线性回归
模型:y_hat=w*x+b (w,x为矩阵,b为向量)
目标函数 min f=np.mean((y_true-y_hat)**2)
优化方法:梯度下降法(常用,推荐)、最小二乘法
求得最优参数 w* ,b*
使用SciKitlearn实现线性回归
from sklearn.linear_model import LinearRegression
ling_reg=LinearRegression()
#参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
ling_reg.fit(X_train,y_train)
#参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结果
y_predict=lin_reg.predict(X_test)
逻辑回归:
使用sigmoid函数的特性来实现二分类
sigmoid函数特性: 值域在 [0,1]之间 ,天然和概率 相匹配
当 sigmoid(x)>= 0.5时可以将该类 分为正样本 否则为 负样本
模型: y_hat=sigmoid(w*x+b)
目标函数: min f=-y_true*log(y_hat)-(1-y_true)*log(1-y_true) (交叉熵)
优化方法:梯度下降法
求得:最优参数 w*,b*
使用SciKitlearn实现逻辑回归
from sklearn.linear_model import LogisticRegression
log_reg=LogisticRegression()
#参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
log_reg.fit(X_train,y_train)
#参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结果
y_predict=log_reg.predict(X_test)
支持向量机:(二分类)
对于线性可分的数据(可以找到一条直线将正负样本分开)
这种种直线有很多条,(思想)而支持向量机找到的直线尽可能的离正负样本点尽可能的远,这个距离称为margin
目标函数:max margin 可参考机器学习周志华老师支持向量机章节的推导过程
max margin 可推导成 min (1/2)*np.sum(w**2) 目标函数
使用梯度下降法解得最优参数 w*
使用SciKitlearn实现支持向量机
from sklearn.svm import LinearSVC
# C 为超参数,sklearn中实现的SVM加入了正则项,C为正则项前的系数,
# C越大,容错能力越弱(容易过拟合)
# C 越小 ,容错能力变大(容易欠拟合)
# C的值根据具体应用来定
svc=LinearSVC(C=1e9)
#参数 X_train 为 训练集样本特征 y_train 为训练集样本标签
svc.fit(X_train,y_train)
#参数X_test 为测试集样本属性 ,方法 返回 线性回归预测的结
y_predict=svc.predict(X_test)
决策树
选择信息熵最小的特征、和阈值进行分类,
集成学习:
使用多个弱分类器分别对样本进行分类,会根据弱分类器的投票结果得到最终的结果
聚类:
K-means 聚类:
算法思想
1.随机初始化K个中心点,
2.分别计算样本点到中心点的距离(将样本点划分到 距离最近的中心点 的类)
3.更新中心点 新的中心点= 所属类的样本点的均值
重复更新2,3步骤,直到中心点不再变化
meanShift 聚类
from sklearn.cluster=
PCA数据降维:
作用:去除噪声,减少次要特征的数量,也就减少了参数的数量,将高维数据降成二维数据方便进行可视化
from sklearn.decomposition import PCA
#0.95表示保留95%原有数据的特征
#n_components 表示 降维后的维数
pca=PCA(n_components=2)
X_pca=pca.fit_transform(X)
参考链接:Datawhale深度学习Descriptionhttps://datawhalechina.github.io/unusual-deep-learning/ 书籍:
周志华机器学习