Thuật toán phân loại thống kê nào có thể dự đoán đúng / sai cho một chuỗi các đầu vào?


14

Đưa ra một chuỗi các đầu vào, tôi cần xác định xem chuỗi này có thuộc tính mong muốn nhất định hay không. Thuộc tính chỉ có thể đúng hoặc sai, nghĩa là chỉ có hai lớp có thể thuộc về một chuỗi.

Mối quan hệ chính xác giữa chuỗi và tài sản là không rõ ràng, nhưng tôi tin rằng nó rất nhất quán và nên cho vay để phân loại thống kê. Tôi có một số lượng lớn các trường hợp để huấn luyện bộ phân loại trên, mặc dù nó có thể hơi ồn, theo nghĩa là có một xác suất nhỏ rằng một chuỗi được gán sai lớp trong tập huấn luyện này.

Ví dụ dữ liệu đào tạo:

Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...

Nói một cách dễ hiểu, thuộc tính được xác định bởi tập hợp các giá trị trong chuỗi (ví dụ: sự hiện diện của "11" có nghĩa là thuộc tính gần như chắc chắn là sai), cũng như thứ tự của các giá trị (ví dụ: "21 7 5 "Tăng đáng kể cơ hội tài sản là đúng).

Sau khi đào tạo, tôi sẽ có thể cung cấp cho trình phân loại một chuỗi chưa từng thấy trước đó (1 21 7 5 3), và nó sẽ tạo ra sự tự tin rằng tài sản là đúng. Có một thuật toán nổi tiếng để đào tạo một bộ phân loại với loại đầu vào / đầu ra này không?

Tôi đã xem xét bộ phân loại Bayes ngây thơ (không thực sự thích ứng với thực tế là thứ tự có vấn đề, ít nhất là không phá vỡ nghiêm trọng giả định rằng các đầu vào là độc lập). Tôi cũng đã nghiên cứu cách tiếp cận mô hình Markov ẩn, dường như không thể áp dụng được vì chỉ có một đầu ra duy nhất, thay vì một đầu ra cho mỗi đầu vào. Tôi đã bỏ lở những gì?


Bạn có cách nào để đo khoảng cách giữa một cặp trình tự không? Là độ dài chuỗi tối thiểu và / hoặc tối đa được biết đến?
Craig Wright

@CraigWright Không có thước đo khoảng cách áp dụng mà tôi có thể nghĩ ra. Độ dài tối đa theo thứ tự 12 và tối thiểu khoảng 4 có thể được giả định. Ngoài ra, có khoảng 30 giá trị riêng biệt (chúng không phải là tự nhiên không bị ràng buộc; chỉ là một bộ khả năng khá nhỏ)
Roman Starkov

Nhiều biến trả lời của bạn mà bạn đề cập là gì? Tôi đã đọc vấn đề của bạn vì đây là đầu ra nhị phân và có lẽ bạn chỉ cần tạo các biến giả Var1.1, Var1.12, ..., Var12.12
B_Miner

@B_Miner Tôi có thể hiểu nhầm cách HMM hoạt động, nhưng có vẻ như nó hoạt động như sau: Tôi cung cấp cho nó chuỗi đầu vào của tôi (abcde) và nó đưa ra một chuỗi ẩn phù hợp nhất với nó, cụ thể là (a 'b' c 'd' e ' ). Tôi không nghĩ các biến giả sẽ giải quyết điều này; Tôi cần một phân loại đúng / sai cho toàn bộ chuỗi.
Roman Starkov

@romkyns, đó không hoàn toàn là cách HMM hoạt động. HMM là một quá trình xác suất. Cho một chuỗi và HMM M , bạn có thể tính xác suất mà M sẽ xuất ra s (sử dụng lập trình động; thuật toán chuyển tiếp). Ngoài ra, với một tập hợp các chuỗi đào tạo, bạn có thể tìm thấy HMM M có khả năng tạo ra các chuỗi đào tạo đó (sử dụng thuật toán Baum-Welch). Vì vậy, HMM cũng có thể là một cái gì đó để thử ở đây. Sẽ có một số chi tiết để điền vào, mặc dù. sMMsM
DW

Câu trả lời:


9

Bạn có thể thử các cách tiếp cận xác suất tương tự như trình phân loại Bayes ngây thơ nhưng với các giả định yếu hơn. Ví dụ: thay vì đưa ra giả định độc lập mạnh mẽ, hãy đưa ra giả định Markov:

p(xc)=p(x0c)tp(xtxt1,c)

là nhãn lớp của bạn, x là chuỗi của bạn. Bạn cần ước tính hai phân phối có điều kiện, một cho c = 1 và một cho c = 0 .cxc=1c=0

Theo quy tắc của Bayes:

p(c=1x)=p(xc=1)p(c=1)p(xc=1)p(c=1)+p(xc=0)p(c=0).

Mà phân phối để chọn cho phụ thuộc vào các giả định khác mà bạn có thể làm về trình tự và bao nhiêu dữ liệu bạn có sẵn.p(xtxt1,c)

Ví dụ: bạn có thể sử dụng:

p(xtxt1,c)=π(xt,xt1,c)iπ(xi,xt1,c)

Với sự phân bố như thế này, nếu có 21 số khác nhau xảy ra trong dữ liệu của bạn, bạn sẽ phải ước tính thông số π ( x t , x t , c ) cộng với 21 2 = 42 thông số cho p ( x 0c ) cộng với 2 tham số cho p ( c ) .21212=882π(xt,xt,c)212=42p(x0c)2p(c)

Nếu các giả định của mô hình của bạn không được đáp ứng, nó có thể giúp điều chỉnh trực tiếp các tham số liên quan đến hiệu suất phân loại, ví dụ bằng cách giảm thiểu tổn thất log trung bình

1#D(x,c)Dlogp(cx)

sử dụng độ dốc gốc.


(+1) Tôi thích cái này. Tuy nhiên, người ta có thể cần một lượng dữ liệu khủng khiếp để có được ước tính đáng tin cậy cho tất cả p(xt|xt1,c)
steffen

Nếu bạn có thể đưa ra nhiều giả định về các bản phân phối có liên quan, bạn có thể thoát khỏi với các tham số ít hơn nhiều. Nếu, ví dụ, bạn biết rằng là nhị thức và E [ x t | x t - 1 , c ] = x t - 1 , bạn sẽ phải ước tính chỉ có hai thông số, một cho mỗi giá trị của c . Tất nhiên, nếu bạn không thể đưa ra bất kỳ giả định nào và không có đủ dữ liệu, bạn không thể làm được gì nhiều. Không có bữa trưa miễn phí.p(xtxt1,c)E[xtxt1,c]=xt1c
Lucas

6

Tôi sẽ đề nghị bạn xác định một số tính năng và sau đó chọn thuật toán học máy để áp dụng cho các tính năng đó.

Các tính năng: Về cơ bản, mỗi tính năng nên là một thứ có thể được tính toán từ một chuỗi cụ thể và bạn nghĩ rằng nó có liên quan đến việc chuỗi đó có thuộc tính hay không. Dựa trên mô tả của bạn, bạn có thể xem xét các tính năng như sau:

  • ii(7 5 21 3 3)

  • (7 5 21 3 3)7 55 2121 33 3302302

  • "Túi bát quái." Bạn cũng có thể xem xét các bát quái, là một chuỗi ba số liên tiếp từ chuỗi ban đầu. Bạn có thể làm tương tự như trên.

d=30+302+303d

ii

d


Nỗ lực đầu tiên mà tôi thực sự thực hiện là một "túi bát quái" với phân loại bayes ngây thơ. Kết quả rất đáng khích lệ nhưng không tuyệt vời. Tôi nghĩ điều này có thể liên quan đến thực tế là bát quái hoàn toàn không độc lập: nếu tôi có "1 2 3" thì tôi cũng rất có thể có bát quái "2 3 *". Có lẽ tôi nên thử nghiệm với các tính năng chính xác hơn một số.
Roman Starkov

Thử nghiệm nhiều hơn, cả với các bộ tính năng khác nhau và với các thuật toán học tập khác nhau, là một ý tưởng tốt. Ngoài ra, dựa trên mô tả vấn đề của bạn, bạn có thể muốn thêm các tính năng cho sự xuất hiện của từng số riêng lẻ (túi từ, không chỉ túi bát quái): nếu bạn chỉ sử dụng bát quái, bạn sẽ khó học thuật toán học máy hơn sự thật như "chuỗi chứa 11 gần như chắc chắn không có tài sản".
DW

2

Những gì bạn đang làm hiệu quả là kiểm tra giả thuyết trên chuỗi thời gian. HMM sẽ làm việc cho bạn, mặc dù bạn sẽ phải điều chỉnh chúng cho trường hợp cụ thể của bạn.

Thành thật mà nói, nếu bạn không thể viết ra một số mô tả toán học về những gì bạn đang cố gắng phát hiện, bạn sẽ không đi được rất xa. Có lẽ bạn có thể cho chúng tôi biết loại tính năng nào bạn muốn thấy?


1
Học máy đã cho chúng ta thấy rằng chúng ta có thể đi rất xa mà không có bất kỳ ý tưởng nào về những gì cần tìm kiếm.
bayerj

1

Cho độ dài tối đa là 12 trên chuỗi, sau đó một mạng nơ ron có 12 đầu vào và một đầu ra có thể hoạt động, nhưng bạn sẽ phải đệm phần cuối của mỗi chuỗi bằng số 0 hoặc một số giá trị trơ.


1

Bạn đã thử sử dụng mạng Bayes chưa? Đó là điều đầu tiên tôi nghĩ đến khi tôi cần hợp nhất nhiều mẩu dữ liệu (xuất hiện cùng một lúc) để đi đến xác suất của một biến ngẫu nhiên.

Mạng lưới Bayes không dựa vào giả định độc lập mà Bayes ngây thơ làm.

BTW, các mô hình Markov ẩn là một trường hợp đặc biệt của các mạng Bayes.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.