Sử dụng sklearn logisticregression python

Bài trước học về hồi quy tuyến tính với giá trị đầu ra là giá trị thực, thì ở bài này sẽ giới thiệu thuật toán hồi quy logistic với giá trị đầu ra là nhị phân, ví dụ. email gửi đến thư của bạn có phải là thư rác hay không;

Nội dung

bài toán

Ngân hàng bạn đang thực hiện chương trình cho vay ưu đãi dành cho các đối tượng mua chung cư. Tuy nhiên gần đây có một vài chung cư rất hấp dẫn [giá tốt, vị trí đẹp,…] nên lượng hồ sơ người tàn cho chương trình ưu đãi tăng đáng kể. Bình thường bạn có thể duyệt 10-20 hồ sơ một ngày để quyết định hồ sơ có được cho vay hay không, tuy nhiên gần đây bạn nhận được 1000-2000 hồ sơ mỗi ngày. Bạn không thể xử lý hết hồ sơ và bạn cần có một giải pháp để có thể dự đoán hồ sơ mới là có nên cho vay hay không

Sau khi phân tích, bạn nhận thấy là hai yếu tố chính quyết định đến công việc được vay tiền đó là tiền lương và thời gian công việc. This is you data has from before to this

LươngThời gian làm việcCho vay1011521……180. 1070. 150……0

Đồ thị giữa tiền lương, số năm kinh nghiệm và kết quả cho vay

Về mặt logic, giờ mình cần tìm đường thẳng phân chia giữa các điểm cho vay và từ chối. Resolver new point from the đấy

Đường phân chia và dự đoán dữ liệu mới

Ví dụ đường xanh là đường phân chia. Dự đoán hồ sơ của người có mức lương 6 triệu và 1 năm kinh nghiệm là không cho vay

Tuy nhiên, do ngân hàng đang trong thời kỳ khó khăn nên việc cho vay bị thắt lưng, chỉ những hồ sơ nào chắc chắn trên 80% mới được vay

Vì vậy nên bây giờ bạn không những tìm là hồ sơ nó cho vay hay không cho vay mà cần tìm xác xuất nên cho hồ sơ nó vay là bao nhiêu

XÁC XUẤT

Specify output is what??? . Ví dụ bạn tung đồng xu có 2 mặt thì xác định bạn tung đồng xu có 2 mặt là 50% [ = 50/100 = 0. 5]

Nhận xét

  • Xoá xuất của 1 sự kiện trong khoảng [0,1]
  • Sự kiện bạn càng chắc chắn thì xác nhận càng cao. Ví dụ bạn lương cao và còn đi làm lâu mũ thì chứng tỏ bạn được vay mua chung cư là cao
  • Tổng kết xuất của sự kiện A và sự kiện phủ định của A là 100% [hoặc 1]. Ví dụ sự kiện A. tung đồng xu mặt nằm, xác xuất 50%; . tung đồng xu mặt mũi, xác xuất 50% => tổng 100%

Bạn sẽ thấy kết quả đầu ra quan trọng hơn chỉ là 0 hay 1, ví dụ trước mỗi ca mổ khó, bác sĩ không thể chắc chắn là sẽ thất bại hay thành công mà chỉ có thể nói kết quả thành công là bao nhiêu [ví dụ:

Hàm sigma

Giờ mình cần tìm xuất của hồ sơ mới nên cho vay. Hay giá trị của hàm cần thiết trong khoảng [0,1]. Rõ ràng là giá trị của phương trình đường thẳng như bài trước có thể ra ngoài khoảng [0,1] nên cần một hàm mới luôn có giá trị trong khoảng [0,1]. That is sigmoid function

Đồ thị hàm sigmoid

Nhận xét

  • Hàm số liên tục, nhận giá trị thực trong khoảng [0,1]
  • Hàm có đạo hàm tại mọi điểm [để áp dụng độ dốc gốc]

Thiết lập bài toán

Mọi người có để ý các bước trong bài 1 không nhỉ, các bước bao gồm

  • Mô hình thiết lập
  • Thiết lập chức năng mất
  • Tìm tham số bằng chức năng mất tối ưu
  • Dự đoán dữ liệu mới bằng mô hình vừa được tìm thấy

Đây là hô hình chung cho bài toán trong series này

Kiểu mẫu

Với dòng thứ i trong bảng dữ liệu, gọi x_1^{[i]} là lương và x_2^{[i]} là thời gian làm việc của hồ sơ thứ i .

p[ x^{[i]}=1] = \hat{y_i} là kết quả đầu ra mà mô hình dự kiến ​​hồ sơ .

p[ x^{[i]}=0] = 1 - \hat{y_i} là xác định đầu ra mà mô hình dự đoán .

=> p[ x^{[i]}=1] + p[ x = 1

Hàm sigmoid. \displaystyle\sigma[x] = \frac{1}{1+e^{-x}} .

Như bài trước công thức của hồi quy tuyến tính là. \hat{y_i} = w_0 + w_1 * x_i thì giờ công thức của hồi quy logistic là.

\displaystyle\hat{y_i} = \sigma[{w_0 + w_1 * x_1^{[i]} + w_2*x_2^{[i]}}] = \frac{1}{1+e^{-[w_0

Ở phần cuối, mọi người sẽ thấy được quan hệ giữa xác thực xuất và đường thẳng

Mất chức năng

Giờ cũng cần một hàm để đánh giá mức độ tốt của mô hình. Như bài trước là \hat{y} càng gần y càng tốt, giờ cũng vậy.

  • Nếu hồ sơ thứ tôi là cho vay, tức y_i = 1 thì ta cũng mong muốn . càng gần 1 càng tốt hay model dự đoán xác xuất người thứ i được vay vốn càng cao càng tốt.
  • Nếu hồ sơ thứ tôi không vay được, tức y_i = 0 thì ta cũng mong muốn \hat{y_i} càng gần 0 càng tốt hay model dự đoán xác xuất người thứ i được vay vốn càng thấp càng tốt

Với mỗi điểm [x^{[i]}, y_i] , gọi hàm mất hàm

L = -[y_i * log[\hat{y_i}] + [1 - y_i] * log[1 - \hat{y_i}]]

Attempt đánh giá làm L nhé

If y_i = 1 => L = -log[\hat{y_i}] L = -log[1 - \hat


Đồ thị hàm mất hàm trong trường hợp y_i = 0

  • Hàm L tăng dần từ 0 đến 1
  • Khi mô hình dự đoán \hat{y_i} gần 0, tức là giá trị dự đoán gần với giá trị thật y_i thì L nhỏ, xấp xỉ 0
  • Khi mô hình dự đoán \hat{y_i} gần 1, tức giá trị dự đoán ngược lại giá trị thực y_i thì L rất lớn

=> Hàm L nhỏ khi giá trị mô hình dự đoán gần với giá trị thật và rất lớn khi mô hình dự đoán sai, hay nói cách khác L càng nhỏ thì mô hình dự đoán càng gần với giá trị thật. => Bài toán tìm model trở thành giá trị nhỏ nhất của L

Hàm mất hàm trên toàn bộ dữ liệu

\displaystyle J = - \sum_{i=1}^{N}[y_i * log[\hat{y_i}] + [1 - y_i] * log[1 - \hat{y_i}]]

quy tắc dây chuyền

Chain rule là gì? \displaystyle z = f[y]\displaystyle y = g[x] hay \displaystyle z = f[g[x]] thì \displaystyle \frac{dz}{dx} = \frac{dz}{dy} * \frac{dy}{dx}

Ví dụ cần tính đạo hàm \displaystyle z[x] = [2x+1]^2 , can see \displaystyle z = f[g[x]] trong đó \displaystyle f[x] = x^2, g[x] = 2x+1 . Do đó áp dụng chain rule ta có:

\displaystyle \frac{dz}{dx} = \frac{dz}{dy} * \frac{dy}{dx} = \frac{d[2x+1]^2}{d[2x+1]} *

Mọi người đều biết \displaystyle \frac{dt^2}{dt} = 2t =>\frac {d[2x+1]^2}{d[2x+ . bằng cách đặt t = 2x+1.

Có một cách dễ dàng hơn để tính quy tắc chuỗi là sử dụng biểu đồ

Number and variable [2, x, 1] viết ở bên trái và không có hình bao quanh, các hình tròn là các phép tính [*, +, ^2]

Giá trị của biểu thức sau khi thực hiện phép tính được viết màu đen ở phía sau đường sau phép tính. ví dụ, phép cộng của 2x và 1 có giá trị là 2x+1, phép bình phương 2x+1 có giá trị là [2x+1]^2

Giá trị của đạo hàm qua thực tế cho phép tính được viết ở bên dưới với mực đỏ, ví dụ qua phép bình phương, \displaystyle \frac {d[2x+1 . , hay qua phép cộng \displaystyle \frac {d[2x+1]}{d[2x]} = 1 và qua phép nhân \displaystyle \frac {d[2x]}{d[x]} = 2.

Ở bước cuối cùng đạo hàm được viết là 1 [có hay cũng không được vì nhân với 1 vẫn thế nhưng để 1 bạn biết đấy là điểm kết thúc]. giờ cần tính \displaystyle \frac {d[2x+1]^2}{dx} thì bạn nhân tất cả các giá trị màu đỏ trên đường

Làm vậy \displaystyle \frac {d[2x+1]^2}{dx} =2 * [2x+1] * 2 * 1 = 4*[2x

Thực hiện nếu bạn muốn biểu thị đồ chính là quy tắc dây chuyền

\displaystyle \frac{d[2x+1]^2}{dx}= \frac{d[2x+1]^2}{d[2x+1]} * \frac{d[2x+1]}{

Chỉ là biểu đồ dễ nhìn hơn

Sử dụng tính năng đạo hàm của hàm sigmoid \displaystyle\sigma[x] = \frac{1}{1+e^{-x}}.

Nhắc lại kiến ​​thức đạo hàm cơ bản \displaystyle \frac{d[\frac{1}{x}]}{dx} = \frac{-1}{

Hãy làm điều đó \displaystyle \frac{d[\sigma[x]]}{dx} = \frac{d[\frac{1}{1+e^{

Thực hiện mọi người không cần vẽ đồ thị quá chi tiết như trên chỉ chia tách tính toán khi nó phức tạp

Áp dụng gradient giảm dần

Với mỗi điểm [x^{[i]}, y_i] , gọi hàm mất hàm

L = -[y_i * log[\hat{y_i}] + [1 - y_i] * log[1 - \hat{y_i}]] trong đó \hat{y_i} = \sigma[{w_0 + w_1 * x_1^{[i]} + w_2*x_2^{[i]}}] là giá trị mà model dự đoán, còn y_i là giá trị thật của dữ liệu.

Nhắc lại đạo hàm cơ bản, \displaystyle \frac{d[log[x]]}{dx} = \frac{1}{x}

Áp dụng chain rule ta có. \displaystyle \frac{dL}{dw_0} = \frac{dL}{d\hat{y_i}} * \frac{d\hat{y_i}}{dw_0}

\displaystyle \frac{dL}{d\hat{y_i}} = - \frac{d[y_i * log[\hat{y_i}] + [1 - y_i] * log[1 - \hat{y_i}]]

Từ đồ thị ta thấy

\displaystyle \frac{d\hat{y_i}}{dw_0} = \frac{\sigma[{w_0 + w_1 * x_1^{[i]} + w_2*x_2^{[i]}} \displaystyle \frac{d\hat{y_i}}{dw_1} = \frac{\sigma[{w_0 + w_1 * x_1^{[i]} + w_2*x_2^{[i]}} \displaystyle \frac{d\hat{y_i}}{dw_2} = \frac{\sigma[{w_0 + w_1 * x_1^{[i]} + w_2*x_2^{[i]}}]}{dw_2}

làm điều đó

\displaystyle \frac{dL}{dw_0} = \frac{dL}{d\hat{y_i}} * \frac {d\hat{y_i}}{dw_0} = - [\frac{y_i}{\hat{

Tương tự

\displaystyle \frac{dL}{dw_1} = x_1^{[i]} * [\hat{y_i}-y_i] \newline \frac {dL}{dw_2} = x_2^{[i]} * [\hat

Yes is on a data point, on the full data

\displaystyle \frac{dL}{dw_0} = \sum_{i=1}^{N}[\hat{y_i}-y_i] \newline \frac{dL}{dw_1} = \sum_{i=1}^

Biểu diễn bài toán dưới ma trận

Nếu mọi người thấy các công thức biểu diễn bên dưới ma trận vẫn lạ thì nên xem lại bài 1 và lấy giấy bút tự tính và biểu diễn lại

Sau khi thực hiện thuật toán giảm độ dốc ta sẽ tìm được w_0, w_1, w_2 . Với mỗi hồ sơ mới x^{[t]} ta sẽ tính được phần trăm nên cho vay \hat . 5, thời hạn chặt chẽ thì là t = 0. 8] if rồi so sánh với ngưỡng cho vay của công ty t [bình thường là t = 0.5, thời kì thiết chặt thì là t = 0.8] nếu \hat{y_t}>= t thì cho vay, không thì không cho vay.

Quan hệ giữa phần trăm và đường thẳng

Tiến trình đường thẳng y = ax+b, gọi f = y – [ax+b] thì đường thẳng chia mặt phẳng thành 2 miền, 1 miền hàm f có giá trị dương, 1 miền hàm f có giá trị âm và giá trị f

Đường thẳng y = 3-x

Ví dụ, xét đường thẳng y = 3-x, hàm f = y – 3 + x

  • Tại điểm A[1,3] => f = 3 – 3 + 1 = 1 > 0
  • Tại điểm B[2,1] nằm trên đường thẳng => f = 2 – 3 + 1 = 0
  • Tại điểm C[1,1] => f = 1 – 3 + 1 = -1 < 0

Giả sử bạn lấy lửa ở giữa là 50% tức là nếu hồ sơ mới dự đoán \hat{y_i} >= 0. 5 thì cho vay, còn nhỏ hơn 0. 5 thì không cho vay.

\displaystyle \hat{y_i} >= 0.5 \frac{1}{1+e^{-[w_0+w_1*x_1^{[i]} + w_2*x_2^{[i]}}]} >= 0.5\newline 2 >= 1+e^{-[w_0+w_1*x_1^{[i]} + w_2*x_2^{[i]}]}\newline e^{-[w_0+w_1*x_1^{[i]} + w_2*x_2^{[i]}]} đường thẳng w_0 + w_1*x + w_2*y = 0 chính là đường phân cách giữa các điểm cho vay và từ .

Partition way

Trong trường tổng hợp bạn lấy xác xuất lớn hơn t [0 t w_0 + w_1*x_1^{[i]} + w_2*x_2^{[i]}> -ln[\frac{1}{t} - 1]

Đường phân chia của t = 0. 8

Ví dụ t = 0. 8, bạn thấy đường phân chia gần với điểm màu đỏ hơn so với t = 0. 5 thậm chí một số hồ sơ cũ đã được cho vay nhưng nếu giờ trùm lại cũng từ chối. Đồng nghĩa với công việc thắt lưng công việc cho vay lại. Nghe hoàn toàn hợp lý đúng ko?

Chủ Đề