机器学习之笔记-实战前基本概念理解

1.脑图
这里写图片描述
2.基本模型

基本模型 类别
线性模型 线性回归、logistic 回归、SVM
集成学习模型 (随机森林、GBDT)
数据预处理 数据清洗、特征工程、降维、聚类

3.机器学习分类

分类 类别
监督学习(Supervised Learning) 分类(Classification) ,回归(Regression),排序(Ranking)
非监督学习(Unsupervised Learning) 聚类(Clustering),降维(Dimensionality Reduction) , 概率密度估计(density estimation)
增强学习(Reinforcement Learning)
半监督学习(Semi-supervised Learning)
迁移学习(Transfer Learning)

这里写图片描述
4.机器学习算法的组成部分
目标函数:
目标函数
损失函数:
这里写图片描述

5.常见模型的损失函数和正则项组合
这里写图片描述
6.机器学习任务的一般步骤

    •   确定特征 
    –  可能是最重要的步骤! (收集训练数据) 
    •   确定模型 
    –  目标函数/决策边界形状 
    •   模型训练:根据训练数据估计模型参数 
    –  优化计算 
    •   模型评估:在校验集上评估模型预测性能 
    •   模型应用/预测 

为什么L1正则解是稀疏的? 参考博客
7.线性回归模型

1)模型 
–目标函数(损失函数、正则)
•概率解释 
• 优化求解 
• 模型选择
2)线性回归的目标函数
• 无正则的最小二乘线性回归(Ordinary Least Square,OLS)

这里写图片描述
通常通过奇异值分解(singular value decomposition,SVD)求解
• L2正则的岭回归(RidgeRegression)模型:
这里写图片描述
OLS优化求解——梯度下降

   梯度下降的基本步骤 
• 1.确定学习率η,并初始化参 数值为 
• 2. 计算目标函数J(?)在当前参 数值的梯度: 
• 3. 梯度下降更新参数:
• 重复以上步骤, 直到收敛 – 目标函数的下降量小于某个阈值
• L1正则的Lasso模型:

这里写图片描述
Lasso 优化求解——坐标轴下降法

3) 线性回归模型求解 
– 当数据规模较小时,可直接解析求解 
• scikitlearn中的实现采用SVD分解实现 
– 当数据规模较大时,可采用随机梯度下降 
• Scikitlearn提供一个SGDRegression类 
• 岭回归求解类似OLS,采用SVD分解实现 
• Lasso优化求解采用坐标轴下降法

8.模型选择

模型评估与模型选择
• 模型训练好后,需要在校验集上采用一些度量准则检查模 型预测的效果 
– 校验集划分(train_test_split、交叉验证)  
– 评价指标(sklearn.metrics) 
   • 线性回归模型中的正则参数λ 
   • OLS中的特征的数目 – 参数搜索范围:网格搜索(GridSearch)
   • Scikitlearn将交叉验证与网格搜索合并为一个函数: sklearn.model_selection.GridSearchCV

评价准则
• 模型训练好后,可用一些度量准则检查模型拟合的效果 • 开方均方误差(rooted mean squared error,RMSE):
• 平均绝对误差(mean absolute error,MAE):
• R2score:既考虑了预测值与真值之间的差异,也考虑了问题本身真值之 间的差异(scikitlearn 线性回归模型的缺省评价准则)
• 也可以检查残差的分布  
• 还可以打印预测值与真值的散点图
Scikitlearn中的回归评价指标 函数
Regression ‘explained_variance’ metrics.explained_variance_score
‘neg_mean_absolute_error’ metrics.mean_absolute_error
‘neg_mean_squared_error’ metrics.mean_squared_error
‘neg_mean_squared_log_error’ metrics.mean_squared_log_error
‘neg_median_absolute_error’ metrics.median_absolute_error
‘r2’ metrics.r2_score

9.线性回归中的模型选择
• Scikitlearn中的modelselection模块提供模型选择功能
–对于线性模型,留一交叉验证(N折交叉验证,亦称为leave-oneout cross-validation,LOOCV)有更简便的计算方式,因此Scikit learn提供了RidgeCV类和LassoCV类实现了这种方式
– 交叉验证和参数调优GridSearchCV

1)RidgeCV

• RidgeCV中超参数λ用alpha表示 • RidgeCV(alphas=(0.1,1.0,10.0),fit_intercept=True,normali ze=False,scoring=None,cv=None,gcv_mode=None,store_c v_values=False)
from sklearn.linear_model import  RidgeCV
alphas = [0.01, 0.1, 1, 10,20, 30, 50, 60, 80,100]
reg = RidgeCV(alphas=alphas, store_cv_values=True)   reg.fit(X_train, y_train)

2)LassoCV

• LassoCV的使用与RidgeCV类似
• Scikitlearn还提供一个与Lasso类似的LARS(least angle regression,最小角回归),二者仅仅是优化方法不同,目 标函数相同。  
• 当数据集中特征维数很多且存在共线性时,LassoCV更合适。

3)小结:线性回归之模型选择

• 采用交叉验证评估模型预测性能,从而选择最佳 模型  
– 回归性能的评价指标  
– 线性模型的交叉验证通常直接采用广义线性模型的留  
一交叉验证进行快速模型评估  
• Scikitlearn中对RidgeCV和LassoCV实现该功能

10.一些概念
1)直方图:

每个取值在数据集中出现的样本数目,可视为概 率函数(PDF)的估计(seaborn可视化工具比较简单) 
 import seabornas sns
 %matplotlibinline(seaborn是基于matplotlib)

• 连续型特征 – sns.distplot(data.MEDV.values, bins=30, kde=False)
• 离散型特征 – sns.countplot(X_train.RAD)
2)离群点

• 离群点:或称奇异点(outlier),指远离大多数样本的样 本点。通常认为这些点是噪声,对模型有坏影响 
• 可以通过直方图或散点图发现奇异点 – 直方图的尾巴 – 散点图上孤立的点 
• 可以通过只保留某些分位数内的点去掉奇异点 – 如0.5%-99.5%,或>99% 
 ulimit= np.percentile(train.某特征.values, 99) 
 train['某特征'].ix[train['某特征']>ulimit] = ulimit

3)散点图

• 可以通过两个变量之间的散点图直观感受二者的相关性

sns.pairplot(data, size=6, x_vars=LSTAT,y_vars=MEDV]

4)相关性

• 相关性可以通过计算相关系数或打印散点图来发现
• 相关系数:两个向量(所有样本在该特征的取值构成一个 向量)x,y之间的线性相关程度 

这里写图片描述

猜你喜欢

转载自blog.csdn.net/mycsdn6666/article/details/80837604