Bài viết này jenincity.com sẽ bàn luận về hầu như kiến ​​thức cơ phiên bản của Logistic Regression cùng cách thực thi nó vào Python. Hồi quy logistic về cơ bản là một thuật toán phân loại có giám sát. Trong một việc phân loại, biến kim chỉ nam (hoặc đầu ra), y, chỉ rất có thể nhận những giá trị rời rạc mang đến tập hợp các đặc điểm (hoặc đầu vào) X sẽ cho.

Bạn đang xem: Hồi quy logistic là gì

Trái với suy xét thông thường, hồi quy logistic LÀ một mô hình hồi quy. Mô hình xây dựng một quy mô hồi quy để tham gia đoán phần trăm mà một mục nhập dữ liệu đã đến thuộc danh mục được đặt số là “1”. Cũng tương tự hồi quy đường tính giả định rằng tài liệu tuân theo một hàm tuyến tính, hồi quy Logistic mô hình hóa dữ liệu bằng phương pháp sử dụng hàm sigmoid.

*

Hồi quy logistic chỉ biến một chuyên môn phân loại khi 1 ngưỡng ra quyết định được chuyển vào bức tranh. Việc tùy chỉnh cấu hình giá trị ngưỡng là một trong khía cạnh rất đặc biệt quan trọng của hồi quy Logistic và dựa vào vào chính sự việc phân loại.

Quyết định mang đến giá trị của quý hiếm ngưỡng bị tác động chủ yếu ớt bởi những giá trị của độ đúng mực và thu hồi. Lý tưởng duy nhất là bọn họ muốn cả độ đúng chuẩn và thu hồi bằng 1, cơ mà trường đúng theo này hiếm khi xảy ra. Trong trường hợp cân bằng Độ chính xác-Thu hồi, họ sử dụng những đối số sau để đưa ra quyết định khi lại ngưỡng:

1. Độ chính xác thấp / ghi nhớ lại cao: trong các ứng dụng mà họ muốn giảm con số âm tính giả cơ mà không duy nhất thiết buộc phải giảm con số âm tính giả, chúng ta chọn giá bán trị đưa ra quyết định có cực hiếm Độ chính xác thấp hoặc quý hiếm cao của call lại. Ví dụ: vào một áp dụng chẩn đoán ung thư, bọn họ không muốn bất kỳ bệnh nhân bị tác động nào được phân loại là ko bị tác động mà không cần để ý nhiều mang đến nếu người bị bệnh bị chẩn đoán không đúng là mắc bệnh ung thư. Điều này là do, sự vắng mặt của bệnh ung thư có thể được phát hiện tại bởi những bệnh y khoa nội khác cơ mà sự hiện diện của bệnh không thể được vạc hiện ở một ứng viên đã bị loại.


2. Độ đúng chuẩn cao / độ tịch thu thấp: trong số ứng dụng mà bọn họ muốn giảm số lượng âm tính giả nhưng không tuyệt nhất thiết cần giảm số lượng âm tính giả, chúng tôi chọn giá trị ra quyết định có quý hiếm Độ chính xác cao hoặc giá trị thấp của quý giá Nhớ lại. Ví dụ: nếu chúng tôi đang phân loại quý khách hàng xem họ vẫn phản ứng tích cực hay tiêu cực với một quảng cáo được cá nhân hóa, chúng ta muốn hoàn toàn chắc chắn rằng rằng người sử dụng sẽ bội nghịch ứng lành mạnh và tích cực với truyền bá đó cũng chính vì nếu không, phản ứng tiêu cực hoàn toàn có thể gây ra mất khả năng bán sản phẩm từ người sử dụng .

Dựa trên số lượng danh mục, hồi quy Logistic rất có thể được phân một số loại thành:

nhị thức: biến phương châm chỉ có thể có 2 loại hoàn toàn có thể có: “0” hoặc “1” rất có thể đại diện đến “thắng” đối với “thua”, “đạt” so với “thất bại”, “chết” đối với “còn sống”, v.v.đa thức: phát triển thành mục tiêu rất có thể có 3 hoặc nhiều một số loại khả dĩ ko được thu xếp theo máy tự (tức là những loại ko có ý nghĩa định lượng) như “bệnh A” đối với “bệnh B” và “bệnh C”.thứ tự: nó xử lý những biến mục tiêu với những danh mục tất cả thứ tự. Ví dụ, một điểm kiểm tra rất có thể được phân nhiều loại là: “rất kém”, “kém”, “tốt”, “rất tốt”. Ở đây, từng loại rất có thể được cho điểm như 0, 1, 2, 3.

Trước hết, chúng ta tìm hiểu dạng dễ dàng và đơn giản nhất của hồi quy logistic, có nghĩa là hồi quy logistic nhị thức.


Nội dung chính


HOURS(X)Vượt qua(Y)
0.500.751.001.251.501.752.002.252.502.753.003.253.503.754.004.254.504.755.005.50
00000010101010111111

Vậy, chúng ta có:

nghĩa là y là 1 trong những biến kim chỉ nam phân một số loại chỉ rất có thể nhận hai loại có thể có: “0” hoặc “1”.

Để tổng thể hóa quy mô của bọn chúng tôi, chúng ta giả định rằng:

Tập dữ liệu có các biến đặc thù ‘p’ và ‘n’ quan liêu sát.Ma trận đặc điểm được màn biểu diễn dưới dạng:

Ở đây, Xịj thể hiện các quý hiếm j^th của đối tượng người sử dụng để quan gần kề i^th.

Ở đây, bọn họ đang duy trì quy ước chất nhận được Xi0 = 1. (Hãy thường xuyên đọc, bạn sẽ hiểu ngắn gọn xúc tích sau một vài giây).

Quan tiếp giáp i^th, Xi hoàn toàn có thể được màn trình diễn như sau:

h(xi) thay mặt đại diện cho bội phản ứng dự kiến cho quan gần kề i^th, tức là. Công thức Xi họ sử dụng để đo lường và tính toán h(xi) được gọi là giả thuyết.

Nếu các bạn đã sử dụng Hồi quy đường tính, bạn nên nhớ rằng trong Hồi quy đường tính, mang thuyết chúng ta sử dụng để dự đoán là:

các thông số hồi quy b0,b1,b2,…bp ngơi nghỉ đâu.

Cho ma trận hệ số hồi quy / vectơ, B là:


Sau đó, ở dạng bé dại gọn hơn,

Lý do của bài toán lấy X0 = 1 hiện đã tương đối rõ ràng.

Chúng tôi nên làm một sản phẩm ma trận, tuy thế không có

thực tế X0 nhân với cách làm B0 giả thuyết ban đầu. Do vậy, chúng ta đã xác minh X0 = 1.

Bây giờ, nếu bọn họ cố gắng vận dụng Hồi quy tuyến đường tính cho việc trên, chúng ta có tài năng nhận được các giá trị liên tục bằng cách sử dụng trả thuyết mà họ đã trao đổi ở trên. Bên cạnh ra, nó không có ý nghĩa cho h(xi) lấy những giá trị lớn hơn 1 hoặc nhỏ tuổi hơn 0 cũng không hợp lý.

Vì vậy, một trong những sửa đổi được thực hiện so với giả thuyết để phân loại:

Ở đâu,

được gọi là hàm logistic hoặc hàm sigmoid.

Đây là biểu đồ thể hiện g (z):

*

Từ biểu thứ trên, bạn cũng có thể suy ra rằng:


g (z) tất cả xu hướng hướng đến 1 như Z -> vô cùngg (z) có xu hướng về 0 lúc Z -> vô cùngg (z) luôn luôn bị số lượng giới hạn từ 0 mang lại 1

Vì vậy, bây giờ, chúng ta có thể xác định các tỷ lệ có đk cho 2 nhãn (0 cùng 1) để quan ngay cạnh như:

Chúng ta có thể viết gọn gàng hơn là:

Bây giờ, bọn họ xác định một thuật ngữ khác, tài năng của những tham số là:

Khả năng xảy ra không là gì ngoài xác suất của dữ liệu (ví dụ đào tạo), được cung ứng cho một mô hình và các giá trị tham số ví dụ (tại đây B,). Nó thống kê giám sát sự cung ứng được cung cấp bởi dữ liệu cho mỗi giá trị rất có thể có của B. Họ có được nó bằng cách nhân tất cả P(yi|xi) mang lại đã mang lại B.

Và để tính toán dễ dàng hơn, bọn họ có kỹ năng ghi nhật ký:

Hàm giá thành cho hồi quy logistic tỷ lệ nghịch với tài năng xảy ra của những tham số. Bởi vì đó, chúng ta có thể nhận được một biểu thức đến hàm chi phí, J bằng cách sử dụng phương trình kĩ năng log như sau:

và mục tiêu của họ là cầu tính B sao cho hàm giá thành được sút thiểu !!

2. Sử dụng thuật toán Gradient descent

Đầu tiên, bọn họ lấy những đạo hàm riêng của từng J(b) w.r.t với bj trực thuộc b để suy ra quy tắc giảm độ dốc bỗng dưng (chúng ta chỉ trình bày giá trị dẫn xuất cuối cùng ở đây):

Ở đây, y với h (x) đại diện thay mặt cho vectơ ý kiến và vectơ làm phản ứng dự kiến (tương ứng). Quanh đó ra, Xj là vectơ đại diện cho những giá trị quan cạnh bên của điểm sáng j^th.

Bây giờ, để có được về tối thiểu J(b),


nơi được điện thoại tư vấn là vận tốc học tập và rất cần được đặt rõ ràng.

Hãy để chúng tôi xem cách thực thi python của chuyên môn trên trên tập tài liệu mẫu (tải xuống từ đây):

2,25 2,50 2,75 3,00 3,25 3,50 3,75 4,00 4,25 4,50 4,75 5,00 5,50

import csv import numpy as np import matplotlib.pyplot as plt def loadCSV(filename): """ function khổng lồ load dataset """ with open(filename,"r") as csvfile: lines = csv.reader(csvfile) dataset = list(lines) for i in range(len(dataset)): dataset = > return np.array(dataset) def normalize(X): """ function to lớn normalize feature matrix, X """ mins = np.min(X, axis = 0) maxs = np.max(X, axis = 0) rng = maxs - mins norm_X = 1 - ((maxs - X)/rng) return norm_X def logistic_func(beta, X): """ logistic(sigmoid) function """ return 1.0/(1 + np.exp(-np.dot(X, beta.T))) def log_gradient(beta, X, y): """ logistic gradient function """ first_calc = logistic_func(beta, X) - y.reshape(X.shape<0>, -1) final_calc = np.dot(first_calc.T, X) return final_calc def cost_func(beta, X, y): """ cost function, J """ log_func_v = logistic_func(beta, X) y = np.squeeze(y) step1 = y * np.log(log_func_v) step2 = (1 - y) * np.log(1 - log_func_v) final = -step1 - step2 return np.mean(final) def grad_desc(X, y, beta, lr=.01, converge_change=.001): """ gradient descent function """ cost = cost_func(beta, X, y) change_cost = 1 num_iter = 1 while(change_cost > converge_change): old_cost = cost beta = beta - (lr * log_gradient(beta, X, y)) cost = cost_func(beta, X, y) change_cost = old_cost - cost num_iter += 1 return beta, num_iter def pred_values(beta, X): """ function to lớn predict labels """ pred_prob = logistic_func(beta, X) pred_value = np.where(pred_prob >= .5, 1, 0) return np.squeeze(pred_value) def plot_reg(X, y, beta): """ function to lớn plot decision boundary """ # labelled observations x_0 = X x_1 = X # plotting points with diff màu sắc for diff label plt.scatter(>, >, c="b", label="y = 0") plt.scatter(>, >, c="r", label="y = 1") # plotting decision boundary x1 = np.arange(0, 1, 0.1) x2 = -(beta<0,0> + beta<0,1>*x1)/beta<0,2> plt.plot(x1, x2, c="k", label="reg line") plt.xlabel("x1") plt.ylabel("x2") plt.legend() plt.show() if __name__ == "__main__": # load the dataset dataset = loadCSV("dataset1.csv") # normalizing feature matrix X = normalize(dataset<:, :-1>) # stacking columns wth all ones in feature matrix X = np.hstack((np.matrix(np.ones(X.shape<0>)).T, X)) # response vector y = dataset<:, -1> # initial beta values beta = np.matrix(np.zeros(X.shape<1>)) # beta values after running gradient descent beta, num_iter = grad_desc(X, y, beta) # estimated beta values và number of iterations print("Estimated regression coefficients:", beta) print("No. Of iterations:", num_iter) # predicted labels y_pred = pred_values(beta, X) # number of correctly predicted labels print("Correctly predicted labels:", np.sum(y == y_pred)) # plotting regression line plot_reg(X, y, beta) Estimated regression coefficients: << 1.70474504 15.04062212 -20.47216021>>No. Of iterations: 2612Correctly predicted labels: 100

*
Lưu ý: Gradient descent là 1 trong trong nhiều cách để ước tính B.

Về cơ bản, đấy là những thuật toán cải thiện hơn có thể dễ dàng chạy bằng Python khi chúng ta đã xác minh hàm ngân sách chi tiêu và độ dốc của mình. Các thuật toán này là:

BFGS (thuật toán Broyden – Fletcher – Goldfarb – Shanno)L-BFGS (Giống như BFGS nhưng lại sử dụng bộ lưu trữ hạn chế)Liên phù hợp Gradient

3. Ưu điểm / điểm yếu kém của câu hỏi sử dụng ngẫu nhiên một trong những thuật toán này trên Gradient descent:

Ưu điểm

Không phải chọn vận tốc họcThường chạy cấp tốc hơn (không nên lúc nào thì cũng vậy)Có thể cầu tính độ dốc về mặt số học cho chính mình (không yêu cầu lúc làm sao cũng vận động tốt)

Nhược điểm

Phức tạp hơnThêm một hộp black trừ khi bạn mày mò các chi tiết cụ thểHồi quy logistic đa thức

4. Hồi quy logistic đa thức

Trong hồi quy logistic nhiều thức, biến áp ra output có thể có khá nhiều hơn hai cổng đầu ra rời rạc. Hãy lưu ý Tập dữ liệu số. Ở đây, biến đầu ra output là quý giá chữ số rất có thể nhận các giá trị trong số (0, 12, 3, 4, 5, 6, 7, 8, 9).

Dưới đây là việc tiến hành hồi quy Logisitc đa thức bằng cách sử dụng scikit-learning để lấy ra dự đoán trên tập dữ liệu chữ số.

from sklearn import datasets, linear_model, metrics # load the digit dataset digits = datasets.load_digits() # defining feature matrix(X) and response vector(y) X = digits.data y = digits.target # splitting X & y into training and testing sets from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1) # create logistic regression object reg = linear_model.LogisticRegression() # train the model using the training sets reg.fit(X_train, y_train) # making predictions on the testing set y_pred = reg.predict(X_test) # comparing actual response values (y_test) with predicted response values (y_pred) print("Logistic Regression model accuracy(in %):", metrics.accuracy_score(y_test, y_pred)*100) Logistic Regression mã sản phẩm accuracy(in %): 95.6884561892Cuối cùng, đó là một số điểm về hồi quy Logistic nên suy ngẫm:


KHÔNG mang định mối quan hệ tuyến tính giữa biến phụ thuộc và những biến độc lập, nhưng lại nó mang định mối quan hệ tuyến tính thân logit của những biến lý giải và bội nghịch hồi.Các biến tự do thậm chí hoàn toàn có thể là số hạng lũy ​​thừa hoặc một trong những phép biến hóa phi con đường khác của các biến tự do ban đầu.Biến dựa vào KHÔNG cần phải được phân phối chuẩn, tuy nhiên nó thường trả định một bày bán từ bọn họ hàm nón (ví dụ: nhị thức, Poisson, nhiều thức, bình thường,…); hồi quy logistic nhị phân mang định bày bán nhị thức của bội nghịch hồi.Tính nhất quán của phương không đúng KHÔNG rất cần được thỏa mãn.Các lỗi nên phải hòa bình nhưng KHÔNG được cung cấp bình thường.Nó sử dụng ước tính khả năng xảy ra tối đa (MLE) chứ không phải bình phương nhỏ nhất thường thì (OLS) để ước tính những tham số và do đó dựa trên những phép gần đúng mẫu mã lớn.

Xem thêm: Từ Điển Anh Việt " Certification Là Gì ? Đây Là Một Thuật Ngữ Kinh Tế Tài Chính

Cài vận dụng jenincity.com để dễ dàng cập nhật tin với học lập trình sẵn mọi lúc gần như nơi tại đây.

Nguồn với Tài liệu giờ đồng hồ anh tham khảo:

Tài liệu trường đoản cú jenincity.com:

Nếu bạn thấy hay cùng hữu ích, bạn cũng có thể tham gia các kênh sau của jenincity.com nhằm nhận được rất nhiều hơn nữa: