Regression logistic là gì? Nó khác với Regression Linear như thế nào? Tại sao từ Regression được sử dụng ở đây nếu đây là một vấn đề phân loại? Việc sử dụng MLE trong Regression Logistic là gì? Hàm Loss đến từ đâu? Gradient Descent hoạt động như thế nào trong Logistic Regression? Tỷ lệ lẻ là gì?
Chà, đây là một vài nghi ngờ của tôi khi tôi học Logistic Regression. Để tìm ra bài toán đằng sau vấn đề này, tôi đã đi sâu hơn vào chủ đề này chỉ để hiểu rõ hơn về mô hình Regression logistic. Và trong bài viết này, tôi sẽ cố gắng giải đáp tất cả những nghi ngờ mà bạn đang gặp phải lúc này về chủ đề này. Tôi sẽ cho bạn biết toán học đằng sau mô hình Regression này.
Regression logistic(hồi quy logistic) là gì?
Hồi quy logistic là một kỹ thuật data analysis thường là toán học để xác định sự liên quan giữa hai yếu tố của data. Sau đó, dựa vào sự liên quan này để tiến hành đưa ra các dự đoán của 1 yếu tố khi cho biết yếu tố còn lại.
Giống như tất cả các phân tích Regression, Regression logistic là một phân tích dự đoán. Regression logistic được sử dụng để mô tả dữ liệu và giải thích mối quan hệ giữa một biến nhị phân phụ thuộc và một hoặc nhiều biến độc lập cấp danh nghĩa, thứ tự, khoảng hoặc tỷ lệ.
Tôi đã tìm thấy định nghĩa này trên google và bây giờ chúng tôi sẽ cố gắng hiểu nó. Regression logistic là một phương pháp phân tích thống kê khác được Machine learning mượn. Nó được sử dụng khi biến phụ thuộc của chúng ta là lưỡng phân hoặc nhị phân. Nó chỉ có nghĩa là một biến chỉ có 2 đầu ra, ví dụ: Một người có sống sót sau tai nạn này hay không, Học sinh có vượt qua kỳ thi này hay không. Kết quả có thể là có hoặc không (2 đầu ra). Kỹ thuật Regression này tương tự như Regression Linear và có thể được sử dụng để dự đoán Xác suất cho các bài toán phân loại.
Tại sao chúng ta sử dụng Regression logistic thay vì Regression Linear?
Nếu bạn có nghi ngờ này, thì bạn đã đến đúng chỗ, bạn của tôi. Sau khi đọc định nghĩa của Regression logistic, bây giờ chúng ta biết rằng nó chỉ được sử dụng khi biến phụ thuộc của chúng ta là nhị phân và trong Regression Linear, biến phụ thuộc này là liên tục.
Vấn đề thứ hai là nếu chúng ta thêm một giá trị ngoại lệ trong tập dữ liệu của mình, thì dòng phù hợp nhất trong Regression Linear sẽ thay đổi để phù hợp với điểm đó.
Bây giờ, nếu chúng ta sử dụng Regression Linear để tìm đường phù hợp nhất nhằm mục đích giảm thiểu khoảng cách giữa giá trị dự đoán và giá trị thực, đường sẽ như thế này:
Ở đây giá trị ngưỡng là 0,5, có nghĩa là nếu giá trị của h (x) lớn hơn 0,5 thì chúng ta dự đoán khối u ác tính (1) và nếu nhỏ hơn 0,5 thì chúng ta dự đoán khối u lành tính (0). Mọi thứ có vẻ ổn ở đây nhưng bây giờ hãy thay đổi một chút, chúng tôi thêm một số ngoại lệ trong tập dữ liệu của mình, bây giờ dòng phù hợp nhất này sẽ chuyển sang điểm đó. Do đó dòng sẽ giống như sau:
Bạn có thấy vấn đề gì ở đây không? Đường màu xanh lam đại diện cho ngưỡng cũ và đường màu vàng đại diện cho ngưỡng mới, ở đây có thể là 0,2. Để giữ đúng dự đoán của mình, chúng tôi đã phải giảm giá trị ngưỡng của mình. Do đó, chúng ta có thể nói rằng Regression Linear có xu hướng ngoại lệ. Bây giờ ở đây nếu h (x) lớn hơn 0,2 thì chỉ có Regression này mới cho kết quả đúng.
Một vấn đề khác với Regression Linear là các giá trị dự đoán có thể nằm ngoài phạm vi. Chúng ta biết rằng xác suất có thể nằm trong khoảng từ 0 đến 1, nhưng nếu chúng ta sử dụng Regression Linear, xác suất này có thể vượt quá 1 hoặc xuống dưới 0.
Để khắc phục những vấn đề này, chúng tôi sử dụng Logistic Regression, chuyển đổi đường thẳng phù hợp nhất này trong Regression Linear thành đường cong chữ S bằng cách sử dụng hàm sigmoid, hàm này sẽ luôn cung cấp các giá trị từ 0 đến 1. Cách này hoạt động như thế nào và bài toán đằng sau điều này sẽ là gì được đề cập trong phần sau?
Nếu bạn muốn biết sự khác biệt giữa Regression logistic và Regression Linear thì bạn tham khảo bài viết này.
Logistic Function
Chắc hẳn bạn đang tự hỏi làm cách nào mà Regression logistic ép đầu ra của Regression Linear giữa 0 và 1. Nếu bạn chưa đọc bài viết của tôi về Regression Linear thì hãy xem nó để hiểu rõ hơn.
Chà, có một chút toán học đằng sau điều này và nó khá thú vị, tôi tin tưởng.
Hãy bắt đầu bằng cách đề cập đến công thức của hàm logistic:
Công thức Regression logistic
Làm thế nào tương tự nó là Regression quá Linear? Nếu bạn chưa đọc bài viết của tôi về Regression Linear, hãy xem nó để hiểu rõ hơn.
Chúng ta đều biết phương trình của đường phù hợp nhất trong Regression Linear là:
Regression
Giả sử thay vì y, chúng ta sử dụng xác suất (P). Nhưng có một vấn đề ở đây, giá trị của (P) sẽ vượt quá 1 hoặc xuống dưới 0 và chúng ta biết rằng phạm vi của Xác suất là (0-1). Để khắc phục vấn đề này, chúng tôi lấy “tỷ lệ cược” của P:
Bạn có nghĩ rằng chúng tôi đã hoàn thành ở đây? Không chúng ta không phải. Chúng tôi biết rằng tỷ lệ cược luôn có thể dương, có nghĩa là phạm vi sẽ luôn là (0, + ∞). Tỷ lệ cược không là gì khác ngoài tỷ lệ giữa xác suất thành công và xác suất thất bại. Bây giờ câu hỏi đặt ra từ rất nhiều lựa chọn khác để biến đổi điều này tại sao chúng ta chỉ lấy ‘tỷ lệ cược’? Bởi vì tỷ lệ cược có lẽ là cách dễ nhất để làm điều này, thế là xong.
Vấn đề ở đây là phạm vi bị hạn chế và chúng tôi không muốn có phạm vi bị hạn chế bởi vì nếu chúng tôi làm như vậy thì mối tương quan của chúng tôi sẽ giảm. Bằng cách hạn chế phạm vi, chúng tôi thực sự đang giảm số lượng điểm dữ liệu và tất nhiên, nếu chúng tôi giảm điểm dữ liệu, sự tương quan của chúng tôi sẽ giảm. Rất khó để mô hình hóa một biến có phạm vi hạn chế. Để kiểm soát điều này, chúng tôi sử dụng nhật ký tỷ lệ cược có phạm vi từ (-∞, + ∞).
Nếu bạn hiểu những gì tôi đã làm ở đây thì bạn đã làm được 80% phép toán. Bây giờ chúng ta chỉ muốn một hàm của P vì chúng ta muốn dự đoán xác suất phải không? không phải nhật ký của tỷ lệ cược. Để làm như vậy, chúng ta sẽ nhân với số mũ ở cả hai bên và sau đó giải cho P.
Bây giờ chúng ta có chức năng logistic, còn được gọi là hàm sigmoid. Đồ thị của một hàm sigmoid như hình dưới đây. Nó ép một đường thẳng thành một đường cong chữ S.
Chi phí trong Regression logistic
Trong Regression Linear, chúng tôi sử dụng sai số trung bình bình phương là sự khác biệt giữa y_predicted và y_actual và điều này được suy ra từ công cụ ước tính khả năng xảy ra tối đa. Đồ thị của hàm chi phí trong Regression Linear như sau:
Regression Linear
Trong Regression logistic Yi là một hàm phi Linear (Ŷ = 1/1 + e-z). Nếu chúng ta sử dụng điều này trong phương trình MSE ở trên thì nó sẽ cho một đồ thị không lồi với nhiều cực tiểu cục bộ như hình bên
Vấn đề ở đây là hàm chi phí này sẽ cho kết quả với cực tiểu cục bộ, đây là một vấn đề lớn vì khi đó chúng ta sẽ bỏ lỡ cực tiểu toàn cục và lỗi của chúng ta sẽ tăng lên.
Để giải quyết vấn đề này, chúng tôi suy ra một hàm chi phí khác cho Regression logistic được gọi là tổn thất log cũng được suy ra từ phương pháp ước tính khả năng xảy ra tối đa.
Trong phần tiếp theo, chúng ta sẽ nói một chút về công cụ ước tính khả năng xảy ra tối đa và công cụ này được sử dụng để làm gì. Chúng tôi cũng sẽ thử xem phép toán đằng sau hàm mất nhật ký này.
Việc sử dụng Công cụ Maximum Likelihood Estimator là gì?
Mục đích chính của MLE là tìm giá trị của các tham số mà hàm khả năng được tối đa hóa. Hàm khả năng không là gì khác ngoài một pdf chung của các quan sát mẫu của chúng tôi và phân phối chung là phép nhân xác suất có điều kiện để quan sát từng ví dụ đã cho các tham số phân phối. Nói cách khác, chúng tôi cố gắng tìm sao cho kết hợp các ước lượng này vào mô hình cho P (x), thu được một số gần bằng một đối với những người có khối u ác tính và gần bằng 0 đối với những người có khối u lành tính.
Hãy bắt đầu bằng cách xác định hàm khả năng của chúng ta. Bây giờ chúng ta biết rằng các nhãn là nhị phân, có nghĩa là chúng có thể là có / không hoặc đạt / không đạt, v.v. Chúng ta cũng có thể nói rằng chúng ta có hai kết quả thành công và thất bại. Điều này có nghĩa là chúng ta có thể hiểu mỗi nhãn là biến ngẫu nhiên Bernoulli.
Một thử nghiệm ngẫu nhiên có kết quả của hai loại, thành công S và thất bại F, xảy ra với xác suất p và q tương ứng được gọi là thử nghiệm Bernoulli. Nếu đối với thử nghiệm này, một biến ngẫu nhiên X được xác định sao cho nó nhận giá trị 1 khi S xảy ra và 0 nếu F xảy ra, thì X tuân theo Phân phối Bernoulli.
Trong đó P là hàm sigmoid của chúng ta
trong đó σ (θ ^ T * x ^ i) là hàm sigmoid. Bây giờ đối với n quan sát,
Chúng ta cần một giá trị cho theta sẽ tối đa hóa hàm khả năng này. Để làm cho các phép tính của chúng tôi dễ dàng hơn, chúng tôi nhân bản ghi cho cả hai bên. Hàm chúng ta nhận được còn được gọi là hàm khả năng đăng nhập hoặc tổng của xác suất có điều kiện nhật ký
Trong Machine learning, thông thường là giảm thiểu mất mát (lỗi) chức năng thông qua giảm độ dốc, thay vì tối đa hóa một chức năng mục tiêu thông qua đi lên gradient. Nếu chúng ta tối đa hóa chức năng ở trên này thì chúng ta sẽ phải xử lý sự đi lên của gradient để tránh điều này, chúng tôi lấy giá trị âm của nhật ký này để chúng tôi sử dụng gradient descent. Chúng ta sẽ nói nhiều hơn về giảm độ dốc trong phần sau và sau đó bạn sẽ rõ hơn. Ngoài ra, hãy nhớ,
max [log (x)] = min [-log (x)]
Phủ định của hàm này là hàm chi phí của chúng ta và chúng ta muốn gì với hàm chi phí của mình? Rằng nó phải có giá trị tối thiểu. Thực tế phổ biến là giảm thiểu một hàm chi phí cho các bài toán tối ưu hóa; ở đó
quặng, chúng ta có thể đảo ngược hàm để giảm thiểu khả năng log âm (NLL). Vì vậy, trong Regression logistic, hàm chi phí của chúng ta là:
Ở đây y đại diện cho lớp thực tế và log (σ (θ ^ T * x ^ i)) là xác suất của lớp đó.
- p (y) là xác suất của 1.
- 1-p (y) là xác suất bằng 0.
Hãy xem biểu đồ của hàm chi phí sẽ như thế nào khi y = 1 và y = 0
Nếu chúng ta kết hợp cả hai biểu đồ, chúng ta sẽ nhận được một biểu đồ lồi với chỉ 1 điểm cực tiểu cục bộ và bây giờ sẽ dễ dàng sử dụng gradient descent ở đây.
Đường màu đỏ ở đây đại diện cho lớp 1 (y = 1), thuật ngữ bên phải của hàm chi phí sẽ biến mất. Bây giờ nếu xác suất dự đoán gần bằng 1 thì tổn thất của chúng ta sẽ ít hơn và khi xác suất tiếp cận 0, hàm tổn thất của chúng ta đạt đến vô cùng.
Đường màu đen đại diện cho lớp 0 (y = 0), số hạng bên trái sẽ biến mất trong hàm chi phí của chúng ta và nếu xác suất dự đoán gần bằng 0 thì hàm tổn thất của chúng ta sẽ nhỏ hơn nhưng nếu xác suất của chúng ta tiến tới 1 thì hàm tổn thất của chúng ta đạt đến vô cùng.
Hàm chi phí này còn được gọi là tổn thất nhật ký. Nó cũng đảm bảo rằng khi xác suất của câu trả lời đúng là tối đa, thì xác suất của câu trả lời sai được giảm thiểu. Giá trị thấp hơn của hàm chi phí này cao hơn sẽ là độ chính xác.
Tối ưu hóa Gradient Descent
Trong phần này, chúng tôi sẽ cố gắng hiểu cách chúng tôi có thể sử dụng Gradient Descent để tính toán chi phí tối thiểu.
Gradient descent thay đổi giá trị của các trọng số của chúng ta theo cách mà nó luôn hội tụ đến điểm cực tiểu hoặc chúng ta cũng có thể nói rằng, nó nhằm mục đích tìm ra các trọng số tối ưu để giảm thiểu hàm mất mát của mô hình của chúng ta. Nó là một phương pháp lặp lại để tìm điểm cực tiểu của một hàm bằng cách tìm ra độ dốc tại một điểm ngẫu nhiên và sau đó di chuyển theo hướng ngược lại.
Trực giác là nếu bạn đang đi bộ đường dài trong một hẻm núi và cố gắng xuống nhanh nhất xuống dòng sông ở phía dưới, bạn có thể nhìn xung quanh mình 360 độ, tìm hướng mặt đất dốc nhất và đi bộ xuống dốc theo hướng đó .
Lúc đầu gradient descent nhận một giá trị ngẫu nhiên của các tham số từ hàm của chúng ta. Bây giờ chúng ta cần một thuật toán sẽ cho chúng ta biết liệu ở lần lặp tiếp theo, chúng ta nên di chuyển sang trái hay phải để đạt đến điểm tối thiểu. Thuật toán gradient descent tìm độ dốc của hàm mất mát tại điểm cụ thể đó và sau đó trong lần lặp tiếp theo, nó di chuyển theo hướng ngược lại để đạt đến cực tiểu. Vì chúng ta có một đồ thị lồi nên bây giờ chúng ta không cần phải lo lắng về cực tiểu cục bộ. Một đường cong lồi sẽ luôn chỉ có 1 cực tiểu.
Chúng ta có thể tóm tắt thuật toán giảm độ dốc như sau:
Ở đây alpha được gọi là tỷ lệ học tập. Nó xác định kích thước bước ở mỗi lần lặp trong khi tiến tới điểm tối thiểu. Thông thường, giá trị thấp hơn của “alpha” được ưu tiên hơn, bởi vì nếu tốc độ học tập là một con số lớn thì chúng ta có thể bỏ lỡ điểm cực tiểu và tiếp tục dao động trong đường cong lồi
Bây giờ câu hỏi đặt ra là đạo hàm của hàm chi phí này là gì? Chung ta se lam như thê nao? Đừng lo lắng, Trong phần tiếp theo, chúng ta sẽ xem cách chúng ta có thể lấy được hàm chi phí này với các tham số của chúng ta.
Nguồn gốc của Cost Function:
Trước khi tính hàm chi phí, trước tiên chúng ta sẽ tìm một đạo hàm cho hàm sigmoid vì nó sẽ được sử dụng để lấy hàm chi phí.
Bây giờ, chúng ta sẽ suy ra hàm chi phí với sự trợ giúp của quy tắc chuỗi vì nó cho phép chúng ta tính các đạo hàm riêng phức tạp bằng cách chia nhỏ chúng.
Bước 1: Sử dụng quy tắc chuỗi và phá vỡ đạo hàm riêng của khả năng xảy ra log.
Bước 2: Tìm đạo hàm của khả năng xảy ra log w.r.t p
Bước 3: Tìm đạo hàm của ‘p’ w.r.t ‘z’
Bước 4: Tìm dẫn xuất của z w.r.t θ
Bước-5: Đặt tất cả các đạo hàm trong phương trình 1
Do đó, đạo hàm của hàm chi phí của chúng ta là:
Bây giờ vì chúng ta có đạo hàm của hàm chi phí, chúng ta có thể viết thuật toán giảm dần độ dốc của chúng ta dưới dạng:
Nếu độ dốc là âm (độ dốc hướng xuống) thì độ dốc đi xuống của chúng ta sẽ thêm một số giá trị vào giá trị mới của tham số hướng nó về phía điểm nhỏ nhất của đường cong lồi. Trong khi nếu độ dốc dương (độ dốc hướng lên) thì độ dốc đi xuống sẽ trừ đi một số giá trị để hướng nó về điểm cực tiểu.
Regression logistic trong python
Regression logistic là một phân loại có giám sát là các thuật toán machine learning duy nhất trong Python tìm thấy công dụng của nó trong việc ước tính các giá trị rời rạc như 0/1, yes / no và true / false. Điều này dựa trên một tập hợp các biến độc lập nhất định. Chúng tôi sử dụng một hàm logistic để dự đoán xác suất của một sự kiện và điều này cho chúng tôi đầu ra từ 0 đến 1.
Mặc dù nó nói là ‘hồi quy’, nhưng đây thực sự là một thuật toán phân loại. Hồi quy logistic khớp dữ liệu vào một hàm logit và còn được gọi là hồi quy logit. Hãy cùng chúng tôi xem xét ví dụ sau:
import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model xmin,xmax=-7,7 #Test set; straight line with Gaussian noise n_samples=77 np.random.seed(0) x=np.random.normal(size=n_samples) y=(x>0).astype(np.float) x[x>0]*=3 x+=.4*np.random.normal(size=n_samples) x=x[:,np.newaxis] clf=linear_model.LogisticRegression(C=1e4) #Classifier clf.fit(x,y) plt.figure(1,figsize=(3,4)) plt.clf() plt.scatter(x.ravel(),y,color='lavender',zorder=17)
x_test=np.linspace(-7,7,277) def model(x): return 1/(1+np.exp(-x)) loss=model(x_test*clf.coef_+clf.intercept_).ravel() plt.plot(x_test,loss,color='pink',linewidth=2.5)
ols=linear_model.LinearRegression() ols.fit(x,y)
plt.plot(x_test,ols.coef_*x_test+ols.intercept_,linewidth=1) plt.axhline(.4,color='.4') plt.ylabel('y') plt.xlabel('x') plt.xticks(range(-7,7)) plt.yticks([0,0.4,1]) plt.ylim(-.25,1.25) plt.legend(('Logistic Regression','Linear Regression'),loc='lower right',fontsize='small') plt.show()
Kết luận
Tóm lại, trong bài viết này, chúng tôi đã tìm hiểu lý do tại sao Regression Linear không hoạt động trong trường hợp các vấn đề phân loại. Ngoài ra, cách MLE được sử dụng trong Regression logistic và cách hàm chi phí của chúng ta được suy ra. Bài viết này, tôi sẽ giải thích tất cả các diễn giải của Regression logistic. Và làm thế nào chúng tôi có thể kiểm tra độ chính xác của mô hình function của chúng tôi.
Hãy cho tôi biết nếu bạn có bất kỳ thắc mắc nào trong phần bình luận bên dưới.