Machine Learning Course1 Week3
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 有三种办法
收集更多的数据
认真选择features
降低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