top of page
Search

Machine Learning Course1 Week3

Writer: zoe zhao
zoe zhao
Mar 6, 2025
2 min read

Classification

Binary classification 0/1

0 negative class 1 positive class

这时候套用liner model 会发现不适合

因为是凹函数 有很多个局部低点

所以引入了logistic regression



sigmoid function= logistic function

其实就是一种函数



题外话 上这个课程的时候喜欢让chatgpt再给我讲一遍,能得到许多额外的补充知识,以及高屋建瓴的看到目前学习的知识点发展中的位置,比如问到sigmoid函数时它便给出了下表,清晰的解释了在整个知识网中的位置





实际上只是选取了一个数学模型,对于z而言我们不知道该怎么取,所以依然用wx+b来调整z,才有了z=wx+b。在python中有可以直接设置。


对于分类问题,我们希望我们的结果无线趋近于1或者0,所以选用对数函数来作为损失函数





同理,根据数学公式一步步推导,可以得到这样的python代码



这就是定义compute_cost_logistic函数的理论依据

最重要的就是搞懂上面这两张图


接下来定义gradient_logistic

同理


以及gradient_descent


实际操作中运用scikit

from sklearn.linear_model import LogisticRegression


lr_model = LogisticRegression()

lr_model.fit(X, y)

就可以轻松实现了



当我们选择的函数曲线的复杂程度不及实际,我们说是underfit, high bias,就是偏离还比较大,当选择的函数曲线比较贴合的时候我们说generalization,可以用来预测新的数据了,当我们选择的函数曲线过于复杂但完美的贴合了训练数据集,我们说这是overfit,high variance


解决overfitting 有三种办法

  1. 收集更多的数据

  2. 认真选择features

  3. 降低feature的权重 =regularization


重点讲述了regularization的方法


将算法中加入regularization的term 这会让目标变成使这个总合最小,这时候lamda的值就比较重要,lamda小了,就可能overfit,lamda大了,就可能underfit,所以之后会讨论怎么给lamda取值比较合理



那么有了第二部分term的加入,梯度下降的公式就变成了这个样子



同样的 正则化也可以运用在逻辑回归



同样的 在python中,把正则化投入到应用中也是要先定义cost 再定义gradient

cost 可以分为两个部分,total cost=cost+reg cost

cost同样是用for来表示

regcost 用for 然后+=算出总和


逻辑回归和线性回归的区别就在于多了一步引入sigmoid

z_i=np.dot(X[i],w)+b

f-wb-i=sigmoid(z_i)

cost += -y[i]*np.log(f_wb_i) - (1-y[i])*np.log(1-f_wb_i)


这里面主要是 np.dot 和 np.log的运用



 
 
 

Comments


  • Facebook
  • Twitter
  • LinkedIn

© 2022 par Ziyi Zhao.

bottom of page