• Week 1 An Introduction to Machine Learning


    一、什么是机器学习

    1、过程:学习一组属性(或可通过数据整理获得的输入变量)与相关响应或目标变量之间的函数关系。

    话句话说就是:从训练集中学习输入属性和目标值之间的功能或统计依赖性模型,然后,使用此模型对测试集上未见过的示例进行预测。

    2、目的:

    (1)预测:预测属性变量的任何(可能是新的)值的目标/响应值

    (2)推理:理解目标变量随着输入变量的变化而受到影响的方式

    3. 机器学习的模型:

    (1)线性模型:

    (2)非线性模型(多项式模型)

    3、重要参数

    (1)训练集

    (2)测试集

    (3)泛化性:测与训练集中使用的数据不同的新数据(或测试集)的目标的能力,机器学习的最终目标是建立能够很好地泛化到看不见的例子的模型

    4、有监督学习和无监督学习

    (1) 有监督学习:在训练集中,给定对应输入变量的目标变量(lable值给定)

    (2) 无监督学习:在训练集中,只给出输入变量。常见的有聚类或可视化(Clustering or visualization

    5、回归和分类(Regression and Classification

    (1)回归:目标变量是实值且连续的

    (2)分类:目标变量是有限数量的离散类别

    6、为未来使用生成模型所需的关键活动

     二、如何学习形成一个模型

    1、遇到的困难:

    (1)需要从有限的数据集中进行泛化;

    (2)观察到的(或训练的)数据被噪声破坏:因为有不确定性的存在。

    2、模型的类型:

    (1)无参模型:无论大小如何,参数都是固定的训练集(例如线性回归)

    (2)有参模型:参数的数量可以增长为训练集的大小增加(例如 KNN 分类器)

    3、一个多项式模型的例子:

    W为多项式的系数向量, M决定了模型的复杂度:

    如何确定W:(W能最小化目标值二号预测值之间的误差 )

    对E(W)的多项表达式关于w求偏导数,再令它为0即可求得w: 

    误差函数:

     4、欠拟合和过拟合的情况以及解决方法:

    (1)欠拟合:模型在训练集与测试集中的MSE都非常大。当数据对应的最好的模型是X的2次方而你选定的模型是X的1次方就容易产生这种情况。也就是说模型的复杂度相对越低越容易发生欠拟合。话句话说就是模型在训练集与测试集中的准确率都非常低。

    下面这个一般是M太小导致函数太简单而欠拟合

    (2)过拟合:模型在训练集中的MSE非常小而在测试集中的MSE非常大。当数据对应的最好的模型是X的2次方而你选定的模型是X的3次方以及以上就容易产生这种情况。也就是说模型的复杂度相对越高越容易发生过拟合。换句话说就是模型在训练集中的准确率高而在测试集中的准确率低。

    下面这个一般是M太大导致函数太复杂而过拟合。

     

    如何解决过拟合问题:增加训练集的size

     (3)偏差与方差(bais and variance)

    偏差:我们选择的模型与最好的模型之间的差距,衡量我们是否找到最好的模型或者与最好模型的接近程度,偏差越大越容易发生欠拟合

    方差:模型的预测结果随着数据的增大与真实数据的差别越大,此时模型预测结果与最好模型的差距就叫方差方差越大越容易发生过拟合

    (4)偏差与方差的解决办法

    偏差比较大,则欠拟合。

    解决办法:

    a.增加特征数据提高拟合程度,避免欠拟合。

    b.增加模型的复杂度(增加M的值)提高拟合程度,避免欠拟合。
    方差比较大,则过拟合。

    解决办法:

    a.增加数据特别是大数据,有利于降低模型的复杂度,提高模型在大数据的预测能力,避免过拟合。(跟(2)中的解决方法类似)

    b.添加正则(Regularisation,同时求出关于w的损失函数与w的最小值,w越小,曲线就越平滑,模型的拟合程度就越好。

    入 是一个正则化参数,需要我们去调参来确定它的最优值。当入很大时,惩罚函数penalty(w)将变得很大,那么E(W)的前半部分将变得不重要,模型将变得简单,训练误差和测试误差均增加(出现欠拟合);当入很小时,模型将变得复杂,训练误差接近于0,性能变现的极好,而测试误差接近于1,性能极差(此时出现过拟合的情况)。当入值增加时,模型变得简单,训练误差增加,测试误差增加,出现欠拟合的情况。一般来说,当入取在欠拟合和过拟合之间的的数值时,测试误差和训练误差取得最优。

    5、泛化性能测量(RMSE为均方根误差 )

    三、如何选择一个好的模型

    过程:

    (1)K-Fold 交叉验证的一种特殊情况,其中 K(即折叠/子集的数量)等于训练的大小数据集。
    (2)在每次迭代中,一个训练数据点作为验证集,所有其他人都用于训练模型。
    (3)这个过程重复K次。 这是为了确保所有与验证阶段一样,数据点只选择一次。 

    补充:什么是K重交叉折叠验证(K-Fold cross-validation )

    (1)数据集划分为K个相同大小的互斥子集;

    (2)通过分层抽样K个子集保持分布一致性;

    (3)K次评估结果的均值,每次用K-1个集合训练,剩下的一个做模型评估。

    例子代码实现:

    上述例子中共有样本10个,我们做了5折交叉验证,看下测试集索引,所有样本集的并集就是整个样本集了,训练集与当前测试集的并集也是整个样本集,其实就是每次用其中把本样本作为训练集,剩余的两个作为测试集,最终是用这5组样本集训练的模型进行性能评估的平均。 

     四、K-Nearest Neighbors (KNN) classifier(Tutorial内容

    1、KNN中计算距离的方式

    (1)欧式距离:(Euclidean仅对连续变量有效

    (2)麦哈顿距离:(Manhattan仅对连续变量有效)

    (3)Minkowski距离:仅对连续变量有效

     (4)汉密尔顿距离(Hamming):在分类变量的实例中,必须使用汉明距离。当数据集中存在数值变量和分类变量时,它还提出了数值变量在 0 和 1 之间的标准化问题。

    2、KNN算法的执行过程:
    Step1:计算新点与现有点之间的欧式距离距离;
    Step2:选择K的值,选择离新点最近的K个邻居;
    Step3: 统计所有 K 个邻居的投票/预测值;
    Step4:将新数据点分配给邻居数最大的类别 。

    3、KNN算法的时间复杂度

    (1)普通的搜索整个训练集并计算每个点的距离需要 O(dN) 运行时间,其中 d 是输入 x 的维数,N为数据的个数;

    (2)在某些情况下,通过预先组织数据并仅搜索数据集的必要部分,更智能的数据存储方式(例如 k-d 树)平均会导致 O(d logN) 运行时间。

    4、KNN算法的模型复杂度

    如果构建的模型具有低偏差(bais)和高方差(variance),则称机器学习模型具有高模型复杂性。

    (1)高偏差和低方差 = 欠拟合模型

    (2)低偏差和高方差 = 过拟合模型(高度复杂的模型)

    (3)低偏差和低方差 = 最佳拟合模型(最佳模型)

    (4)高训练精度和低测试精度(超出样本精度)= 高方差= 过拟合模型 = 更多模型复杂度

    (5)低训练准确率和低测试准确率(超出样本精度)=高偏差=欠拟合模型

    5、KNN算法的优缺点

    优点:

    (1)算法简单直观,易于应用于回归及多分类任务

    (2)对数据没有假设,准确度高,对异常点较不敏感

    (3)由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此适用于类域的交叉或非线性可分的样本集

    缺点:

    (1)计算量大,尤其是样本量、特征数非常多的时候。另外KD树、球树之类的模型建立也需要大量的内存

    (2)只与少量的k相邻样本有关,样本不平衡的时候,对稀有类别的预测准确率低

    (3)使用懒散学习方法,导致预测时速度比起逻辑回归之类的算法慢。当要预测时,就临时进行 计算处理。需要计算待分样本与训练样本库中每一个样本的相似度,才能求得与 其最近的K个样本进行决策

    (4)与决策树等方法相比,KNN无考虑到不同的特征重要性,各个归一化的特征的影响都是相同的

    (5)相比决策树、逻辑回归模型,KNN模型可解释性弱一些

    (6)差异性小,不太适合KNN集成进一步提高性能。

    6、KNN算法实现的主要代码(R语言)

    投票函数(Majority Vote):

    1. # define an auxiliary function that calculates the majority votes (or mode!)
    2. majority <- function(x) {
    3. uniqx <- unique(x)
    4. uniqx[which.max(tabulate(match(x, uniqx)))]#统计出现次数最多的lable为最终的预测值
    5. }

    KNN Classifier:

    1. # KNN function (distance should be one of euclidean, maximum, manhattan, canberra, binary or minkowski)
    2. knn <- function(train.data, train.label, test.data, K=3, distance = 'euclidean'){#采用欧式距离
    3. ## count number of train samples
    4. train.len <- nrow(train.data)
    5. ## count number of test samples
    6. test.len <- nrow(test.data)
    7. ## calculate distances between samples
    8. dist <- as.matrix(dist(rbind(test.data, train.data), method= distance))[1:test.len, (test.len+1):(test.len+train.len)]
    9. ## for each test sample...
    10. for (i in 1:test.len){
    11. ### ...find its K nearest neighbours from training sampels...
    12. nn <- as.data.frame(sort(dist[i,], index.return = TRUE))[1:K,2]
    13. ###... and calculate the predicted labels according to the majority vote
    14. test.label[i]<- (majority(train.label[nn]))
    15. }
    16. ## return the class labels as output
    17. return (test.label)
    18. }

    针对下图有如下的问题:

    (1)随着𝐾的增加,KNN分类器的复杂度是增加还是减少?

    K取值较小时,模型复杂度(容量)高,训练误差会减小,泛化能力减弱;K取值较大时,模型复杂度低,训练误差会增大,泛化能力有一定的提高。原因是K取值小的时候(如k==1),仅用较小的领域中的训练样本进行预测,模型拟合能力比较强,决策就是只要紧跟着最近的训练样本(邻居)的结果。但是,当训练集包含”噪声样本“时,模型也很容易受这些噪声样本的影响(如图 过拟合情况,噪声样本在哪个位置,决策边界就会画到哪),这样会增大"学习"的方差,也就是容易过拟合。这时,多”听听其他邻居“训练样本的观点就能尽量减少这些噪声的影响。 K值取值太大时,情况相反,容易欠拟合。对于K值的选择,通常可以网格搜索,采用交叉验证的方法选取合适的K值。
    (2)1/𝐾和训练误差有什么关系?

    随着log(1/k)的增大即k变小,training error就会变小。
    (3)1/𝐾和测试误差有什么关系?

    随着log(1/k)的增大即k变小,testing error就会变小。
    (4)随着 KNN 分类器复杂性的增加,您如何解释训练和测试错误趋势之间的差异?

    随着K值越来越小,模型复杂度会变大,log(1/k)会变大,training error trends就会变小,testing error trends就会变大,最终出现过拟合的情况
    (5)你能说出模型过拟合和欠拟合的区域吗? 𝐾 的最佳价值是多少?

    当在log(1/k)图的最左边即log(1/k)足够小、k足够大时,模型复杂度低,容易出现欠拟合;

    当在log(1/k)图的最右边即log(1/k)足够大、k足够小时,模型复杂度高,容易出现过拟合。

    当training and testing两个图相交时即log(1/k) = -1.4的时候,拟合刚好。

     五、总结

    1、机器学习过程是怎样的?
    从训练集中学习输入属性和目标值之间的函数依赖模型,并用它来预测未知数据的目标值
    2、机器学习的关键概念是什么?

    (1)需要确定模型的参数,如果模型是参数。
    (2)需要使模型很好地适应训练:通过最小化错误预测和正确目标值之间的函数
    (3)还需要防止过拟合:需要考虑的许多参数:顺序(M值)、正则化参数(入值)

    3、如何选择好的统计模型?

    (1)使用K重折叠交叉验证
    (2)测量训练误差和测试误差

  • 相关阅读:
    ip地址跟wifi有关系吗
    【算法leetcode】2341. 数组能形成多少数对(多种语言双百)
    你绝对不知道的接口加密解决方案:Python的各种加密实现
    [HCTF 2018]WarmUp1
    maven的安装与配置
    Java面试官最爱问的volatile关键字
    淘宝关键词API接口
    【Release】Photoshop ICO file format plug-in 3.0
    bp神经网络反向传播原理,BP神经网络反向传播
    Hive基础进阶10大技巧
  • 原文地址:https://blog.csdn.net/wangjian530/article/details/125433135