课前准备

kaggle平台作业
b站视频

第一节 机器学习基本概念

1.1 机器学习的分类

regression 回归:预测值为scalar标量

image.png

classification 分类:预测值为分类结果

image.png

strucutured learning:结构性学习,创造性工作。如绘画,唱歌。

image.png

1.2 机器学习一般过程

步骤一:选择模型

通过数据特点选择合适的模型,通过知识和经验判断,或者猜测。如在视频例子预测视频阅读量采用线性模型,参数为前几天的阅读量等统计数据。
image.png

步骤二:定义损失函数

给出与参数相关的损失函数,从而对模型结果进行评估,模型的目标获得是使得损失函数的值最小的参数。
image.png

步骤三:最优化

使用机器学习算法确定参数,使得损失函数的值达到最小。常用的最优化算法有:梯度下降法(gradient descent)

问题1:如何使得模型能够拟合出更复杂的预测曲线?

引入激活函数,如sigmoid函数。在视频中,采用sigmoid函数引入非线性,改进最简单的线性模型,从而可以拟合出许多复杂的预测曲线。
image.png
image.png

image.png

问题2:改进模型后的最优化方法有什么不同?

改进模型之后仍然可以使用梯度下降法,只不过参数变多了,表达形式可以用线性代数的方法进行简化。
image.png
image.png

问题3:什么是hyperparameter(超参数)?

  1. 机器学习模型中一般有两类参数:一类需要从数据中学习和估计得到,称为模型参数(Parameter)---即模型本身的参数。比如,线性回归直线的加权系数(斜率)及其偏差项(截距)都是模型参数。还有一类则是机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数λ,决策树模型中树的深度。<br />模型参数是模型内部的配置变量,需要用数据估计模型参数的值;模型超参数是模型外部的配置,需要手动设置超参数的值。机器学习中一直说的“调参”,实际上不是调“参数”,而是调“超参数”。

问题4:epoch和update的区别?

image.png

问题5:除了sigmoid激活函数,还有什么激活函数?

ReLU激活函数。
image.png

问题6:什么是过拟合(overfitting)?

在训练集合上的效果更好,测试集合的效果更差的现象。
image.png

作业1:新冠病毒阳性预测

参考:https://www.kaggle.com/kidnarcissus/hw1-20210624-merge-model

读取数据

  1. import pandas as pd
  2. import numpy as np
  3. import tensorflow as tf
  4. np.random.seed(123)
  5. tf.random.set_seed(123)
  6. path = "../input/ml2021spring-hw1/"
  7. train_file = path + "covid.train.csv"
  8. test_file = path + "covid.test.csv"
  9. def read_file(filename,mode,dayType):
  10. """
  11. """
  12. df = pd.read_csv(filename)
  13. cols = df.columns
  14. state_cols = list(cols[1:41])
  15. day1_cols = list(cols[41:59])
  16. day2_cols = list(cols[59:77])
  17. day3_cols = list(cols[77:])
  18. res = []
  19. if dayType == 1:
  20. train_cols = state_cols + day1_cols
  21. day1_df = df[state_cols+day1_cols]
  22. day2_df = df[state_cols+day2_cols]
  23. day3_df = df[state_cols+day3_cols]
  24. day1_df.columns = train_cols
  25. day2_df.columns = train_cols
  26. if("test" == mode):
  27. day3_df.columns = train_cols[:-1]
  28. train_df = pd.concat([day1_df,day2_df])
  29. res.append(train_df)
  30. res.append(day3_df)
  31. elif("train" == mode):
  32. day3_df.columns = train_cols
  33. train_df = pd.concat([day1_df,day2_df,day3_df])
  34. res.append(train_df)
  35. elif dayType == 2:
  36. train_cols = state_cols + day1_cols + day2_cols
  37. day1_df = df[state_cols+day1_cols+day2_cols]
  38. day2_df = df[state_cols+day2_cols+day3_cols]
  39. day1_df.columns = train_cols
  40. if("test" == mode):
  41. day2_df.columns = train_cols[:-1]
  42. res.append(day1_df)
  43. res.append(day2_df)
  44. elif("train" == mode):
  45. day2_df.columns = train_cols
  46. train_df = pd.concat([day1_df,day2_df])
  47. res.append(train_df)
  48. elif dayType == 3:
  49. train_cols = state_cols + day1_cols + day2_cols + day3_cols
  50. day1_df = df[train_cols]
  51. if("test" == mode):
  52. # select_cols = ['cli', 'ili', 'hh_cmnty_cli', 'nohh_cmnty_cli', 'tested_positive', 'cli.1', 'hh_cmnty_cli.1', 'nohh_cmnty_cli.1', 'tested_positive.1', 'cli.2', 'hh_cmnty_cli.2', 'nohh_cmnty_cli.2']
  53. # day1_df = df[state_cols+select_cols]
  54. res.append(pd.DataFrame())
  55. res.append(day1_df)
  56. elif("train" == mode):
  57. # select_cols = ['cli', 'ili', 'hh_cmnty_cli', 'nohh_cmnty_cli', 'tested_positive', 'cli.1', 'hh_cmnty_cli.1', 'nohh_cmnty_cli.1', 'tested_positive.1', 'cli.2', 'hh_cmnty_cli.2', 'nohh_cmnty_cli.2','tested_positive.2']
  58. # day1_df = df[state_cols+select_cols]
  59. res.append(day1_df)
  60. return res
  61. def read_train_test(train_file,test_file,dayType):
  62. train_res = read_file(train_file,"train",dayType)
  63. test_res = read_file(test_file,"test",dayType)
  64. train_df = pd.concat([train_res[0],test_res[0]])
  65. return train_df,test_res[1]
  66. train_1d_df,test_1d_df = read_train_test(train_file,test_file,1)
  67. train_2d_df,test_2d_df = read_train_test(train_file,test_file,2)
  68. train_3d_df,test_3d_df = read_train_test(train_file,test_file,3)

第二节 机器学习任务攻略

2.1 问题查找地图

image.png

问题1:modle bias(模型偏差)

大海捞针,海里没有针。

问题2:optimization(优化问题)

大海捞针,没捞着针。

问题3: overfitting(过拟合问题)

在训练集上loss较小,在测试集上loss较大。

2.2 局部最小值(local minima)与鞍点(saddle point)

反向传播 Backpropagation

image.png
image.png

image.png