рдбрд╛рдпрд░реЗрдХреНрдЯрдо рдХреНрд▓рдм рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реАред рднрд╛рдЧ рдПрдХ, рд╕рд╣рдпреЛрдЧреА

рд╣рд░ рджрд┐рди, рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдореЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ - рдХреЗрд╡рд▓ рдореЗрд▓рдХрдореНрдкрд┐рди рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рджрд┐рди рдПрдХ рдмрд┐рд▓рд┐рдпрди рдкрддреНрд░ рднреЗрдЬрддреЗ рд╣реИрдВ ред рдЗрдирдореЗрдВ рд╕реЗ 20.81% рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред


рд╣рд░ рдорд╣реАрдиреЗ, рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓рдЧрднрдЧ 21% рдкрд╛рдардХ рдЗрди рдкрддреНрд░реЛрдВ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВред


рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рддрд░реАрдХрд╛ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПред


рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реНрдХреВрд▓ рдХреА рдЧрдгрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред


рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред


рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рд╕рд╛


рд╕рд╣рдпреЛрдЧреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдорд╛рди рд╡рд╕реНрддреБрдПрдВ рдкрд╕рдВрдж рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд▓реЗрдЦред


"рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?


рддреБрдо рдХреМрди рд╣реЛ


рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд╛рд╕рд┐рд▓реА рдЗрд╡рд╛рди рдпрд╛ SQL рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ PostgreSQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдкрд╕рдВрдж рд╣реИ?


рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ: рд╡рд╛рд╕рд┐рд▓реА, рдЗрд╡рд╛рди, рдЗрдиреНрдирд╛ рдФрд░ рдЕрдиреНрдирд╛ред рд╕рд╛рдЗрдЯ рдореЗрдВ рдкрд╛рдВрдЪ рд▓реЗрдЦ рд╣реИрдВ: рдЕрдиреБрдЪреНрдЫреЗрдж 1, рдЕрдиреБрдЪреНрдЫреЗрдж 2, рдЕрдиреБрдЪреНрдЫреЗрдж 3, рдЕрдиреБрдЪреНрдЫреЗрдж 4 рдФрд░ рдЕрдиреБрдЪреНрдЫреЗрдж 5ред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд▓реЗрдЦ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдкрд░ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдВрдЪ-рдмрд┐рдВрджреБ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд░реЗрдЯрд┐рдВрдЧ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢реВрдиреНрдп рдРрд╕реЗ рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд░реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реАрд▓реА рдХреЛ рд▓реЗрдЦ 1, 3 рдФрд░ 4 рдкрд╕рдВрдж рд╣реИрдВред


рддрд╛рд▓рд┐рдХрд╛ 1


рдЕрдиреБрдЪреНрдЫреЗрдж 1рдзрд╛рд░рд╛ реирдзрд╛рд░рд╛ рейрдзрд╛рд░рд╛ 4рдзрд╛рд░рд╛ 5
рд╡рд╕реАрд▓реА40550
рдЗрд╡рд╛рди00450
рдЗрдиреНрдирд╛42400
рдЕрдиреНрдирд╛55005

рд╕рд╣рдЬ рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рди рд▓реЗрдЦ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рд╕реНрд╡рд╛рдж рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдХрд┐рд╕рдХреЗ рд╣рд┐рдд рд╡реИрд╕рд┐рд▓реА рдХреЗ рд╣рд┐рддреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ?


рд╡рд╛рд╕рд┐рд▓реА рдХреЗ рд╣рд┐рдд рдЗрд╡рд╛рди рдФрд░ рдЗрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдЕрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рдХреА рддрд░рд╣ рдХрдо рд╣реИрдВред рдХреНрдпреЛрдВ - рдпрд╣ рдЖрдЧреЗ рдмрддрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╡реИрд╕рд┐рд▓реА рдФрд░ рдЗрд╡рд╛рди рдпрд╛ рдЗрдиреНрдирд╛ рдФрд░ рдЕрдиреНрдирд╛ рдХреА "рд╕рдорд╛рдирддрд╛" рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдирд╛ рдФрд░ рдорд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдЙрдирдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ - рддреБрд▓рд╕реА рдХрд╛ рд╡рд░реНрдгрди - рдкрд╛рдБрдЪ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рджрд┐рд╢ рд╣реИ: [рек, реж, рел, рел, реж]; рджреВрд╕рд░рд╛ - рдЗрд╡рд╛рди - [0, 0, 4, 5, 0]; рддреАрд╕рд░рд╛ рдЗрдирд╛ рд╣реИ - [4, 2, 4, 0, 0]; рдЪреМрдерд╛ рд╣реИ рдЕрдиреНрдирд╛ - [рел, рел, реж, реж, рел]ред


рдЕрдм рдЖрдк "рд╕рдорд╛рдирддрд╛ рдХреЗ рдорд╛рдк" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА "рд╕рдорд╛рдирддрд╛" рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЙрд╢рди рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред



рдмреНрд░рд╣реНрдорд╛рдВрдбреАрдп рджреВрд░реА рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:


1тИТcos theta=1тИТ fracA cdotB||A|| cdot||B||


рдЬрд╣рд╛рдБ рдПрдФрд░ рдм- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░; A cdotB- рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж; ||A||ред ||B||- рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИред


рдХреЛрд╕рд╛рдЗрди рджреВрд░реА рдХрд╛ рдЕрд░реНрде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдпрджрд┐ рджреЛ рд╡реИрдХреНрдЯрд░ рдЬрд╣рд╛рдВ рдПрдФрд░ рдм(рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░) "рд╕рдорд╛рди" рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рдХреЛрдг рдХреЗ рдХреЛрд╕рд╛рдЗрди рдореЗрдВ рдПрдХрддрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЖрджрд░реНрд╢ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ "рд╣рд┐рдд" рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЙрд╢рди рдХреА рджреВрд░реА рд╢реВрдиреНрдп рд╣реЛрдЧреАред


рд╡рд╛рд╕рд┐рд▓реА рдФрд░ рдЗрд╡рд╛рди рдХреЗ рдмреАрдЪ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА:


1тИТcos рдереАрдЯрд╛=1тИТ frac4 cdot0+0 cdot0+5 cdot4+5 cdot5+0 cdot0 sqrt42+02+52+52+02 cdot sqrt02+02+42+52+02=0.1349


рдЗрд╕реА рддрд░рд╣, рд╡реИрд╕рд┐рд▓реА рдФрд░ рдЕрдиреНрдирд╛ рдХреЗ рдмреАрдЪ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА 0.715 рд╣реИред рдпрд╛рдиреА, рд╡рд╛рд╕рд┐рд▓реА рдХреЗ рд╣рд┐рдд рдЗрд╡рд╛рди рдХреЗ рд╣рд┐рддреЛрдВ рдХреА рддрд░рд╣ рдЕрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреИрд╕реЗ рдХрд░реЗрдВ?


рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдиреАрдЪреЗ рд╣рдо рджреЛ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред


рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ


рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЧрдИ рд░реЗрдЯрд┐рдВрдЧ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рдпрд╣ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреМрди рд╕реА рд░реЗрдЯрд┐рдВрдЧреНрд╕ рд▓реЗрдЦ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ рд▓реЗрддреЗ рд╣реИрдВ:


ru,i= frac1N sumuтА▓ inUruтА▓,i


рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ:


  • ru,iрдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд╣реИ рдореИрдВрд╡реЗрдВ рд▓реЗрдЦ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВред
  • ruтА▓,i- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдпреВтА▓рдХреЗ рд▓рд┐рдП рдореИрдВрд╡реЗрдВ рд▓реЗрдЦ
  • рдпреВ- "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ,
  • рдПрди- "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред

рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ


рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд┐рдХрд▓реНрдк рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ: рдЕрдзрд┐рдХ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдВрддрд┐рдо рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдХрдо рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рдХреА рд░реЗрдЯрд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:


ru,i= frac sumuтА▓ inU(1тИТsimil(u,uтА▓))ruтА▓,i sumuтА▓ inU|1тИТрд╕рд┐рдорд┐рд▓(рдпреВ,рдпреВтА▓)|


рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ:


  • ru,iрдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд╣реИ рдореИрдВрд╡реЗрдВ рд▓реЗрдЦ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВред
  • ruтА▓,i- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдпреВтА▓рдХреЗ рд▓рд┐рдП рдореИрдВрд╡реЗрдВ рд▓реЗрдЦ
  • рдпреВ- "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ,
  • рд╕рд┐рдорд┐рд▓(рдпреВ,рдпреВтА▓)- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА (рд╕рдорд╛рдирддрд╛) (рдХреЛрдЬреНрдпрд╛ рджреВрд░реА) рдпреВрдФрд░ рдпреВтА▓ред

рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреИрд╕реЗ рдорд╛рдкреЗрдВ?



рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрд╕ рдореАрдЯреНрд░рд┐рдХ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдЯ рдорд╛рдзреНрдп рд╡рд░реНрдЧ рддреНрд░реБрдЯрд┐ ( рдЖрд░рдПрдордПрд╕рдИ) рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд░реНрдЧрдореВрд▓ рд╣реИред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрдкрд╛рдп рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ:


RMSE= sqrt frac1|D| sumu,i inD( hatru,iтИТru,i)2


рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ


  • рдбреА- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рднреА рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕реЗрдЯ,
  •  рдЯреЛрдкреАru,i- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдпреВрд▓реЗрдЦ рдореИрдВред
  • ru,i- рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдпреВрд▓реЗрдЦ рдореИрдВред

рдЖрджрд░реНрд╢ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЖрд░рдПрдордПрд╕рдИрд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдиреЗ рд╡рд╕реАрд▓реА рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХреАрдВред рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИред


рдЕрдиреБрдЪреНрдЫреЗрдж 1рдзрд╛рд░рд╛ реирдзрд╛рд░рд╛ рейрдзрд╛рд░рд╛ 4рдзрд╛рд░рд╛ 5
рд╡рд╕реАрд▓реА40550
рд╕рд┐рдлрд╛рд░рд┐рд╢рдХрд░реНрддрд╛ рдкреНрд░рдгрд╛рд▓реА рез13522
рдЕрдиреБрд╢рдВрд╕рд╛ рдкреНрд░рдгрд╛рд▓реА реи41530

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛ред рдЧрд┐рдирддреА рдЖрд░рдПрдордПрд╕рдИ:


RMSE(1)= sqrt frac(4тИТ1)2+(0тИТ3)2+(5тИТ5)2+(5тИТ2)2+(0тИТ2))25=$2.48


RMSE(2)= sqrt frac(4тИТ4)2+(0тИТ1)2+(5тИТ5)2+(5тИТ3)2+(0тИТ0))25=1


рджреВрд╕рд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХрд╛рдлреА рдХрдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд▓реЗрдЦ рдФрд░ рд╕рд╛рдЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рд╣реИрдВ: рд▓реЗрдЦ, рдЯреИрдЧ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж, рдЖрджрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реАред


рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред


рддреНрдпрд╛рдЧ

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рддрд░реНрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб "рдорд╛рдереЗ рдореЗрдВ" рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, numpy рдФрд░ pandas рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред


 import pandas as pd import numpy as np import os ratings_df = pd.read_csv('./input/Ratings.csv') print(' :', ratings_df.shape[0]) print(' :', ratings_df[ratings_df['Rate']].shape[0]) unique_user_ids = ratings_df[ratings_df['Rate']]['UserId'].unique() print(' :', len(unique_user_ids)) ratings_df.head() 

рдЖрдЙрдЯрдкреБрдЯ [1]

рдХреБрд▓ рдбреЗрдЯрд╛: 15313
рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реЗрдЯрд┐рдВрдЧ: 15121
рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: 1007


рдИрджDocumentIdрджрд░рдкреНрд░рдпреЛрдХреНрддрд╛-рдЖрдИрдбреА
011рдпрд╣ рд╕рдЪ рд╣реИ5000
12878рдпрд╣ рд╕рдЪ рд╣реИ2441
231512рдпрд╣ рд╕рдЪ рд╣реИ678
341515рдпрд╣ рд╕рдЪ рд╣реИ678
45877рдпрд╣ рд╕рдЪ рд╣реИ5110
...............

1007 рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ 15313 "рд░реЗрдЯрд┐рдВрдЧ" рджреАред рдЗрдирдореЗрдВ рд╕реЗ, 15121 "рдкрд╕рдВрдж"ред


рдбреЗрдЯрд╛ рдореЗрдВ рдЪрд╛рд░ рдХреЙрд▓рдо рд╣реЛрддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ ( рдЖрдЗрдбреА рдХреЙрд▓рдо) рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдЖрдИрдб рдХреЙрд▓рдо), рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЗрдЦ ( рд░реЗрдЯ рдХреЙрд▓рдо), рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( UserId рдХреЙрд▓рдо) рдкрд╕рдВрдж рдЖрдпрд╛ред


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдо рджрд░ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ 1 рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛; -1 - рдЬреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред


 ratings_df['RateInt'] = ratings_df['Rate'].apply(lambda x: 1 if x else -1) ratings_df.head() 

рдЖрдЙрдЯрдкреБрдЯ [2]
рдИрджDocumentIdрджрд░рдкреНрд░рдпреЛрдХреНрддрд╛-рдЖрдИрдбреАRateInt
011рдпрд╣ рд╕рдЪ рд╣реИ50001
12878рдпрд╣ рд╕рдЪ рд╣реИ24411
231512рдпрд╣ рд╕рдЪ рд╣реИ6781
341515рдпрд╣ рд╕рдЪ рд╣реИ6781
45877рдпрд╣ рд╕рдЪ рд╣реИ51101

рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдПрдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред


 from sklearn.model_selection import train_test_split train, test = train_test_split(ratings_df, test_size=0.2) 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдо рдореЗрдВ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред


 def create_matrix(df): ratings_per_user = [] post_ids = df['DocumentId'].unique() for user_id in tqdm_notebook(all_users_ids, ''): row = {'user_id': user_id} ratings = df[df['UserId'] == user_id]['DocumentId'].values for post_id in post_ids: row[str(post_id)] = 1 if post_id in ratings else 0 ratings_per_user.append(row) return pd.DataFrame(ratings_per_user) train_df = create_matrix(train) test_df = create_matrix(test) 

рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╕рдВрджреАрджрд╛ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЙрд╢рди рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ:


 from scipy import spatial def cos_distance(x1, x2): return spatial.distance.cosine(x1, x2) at_least_one_fav_post_users = list(train_valuable_df['user_id'].values) def calculate_distances(df): columns = df.columns[:-1] cp = at_least_one_fav_post_users.copy() data = [] for user_id_1 in tqdm_notebook(at_least_one_fav_post_users, ''): row = {'user_id': user_id_1} for user_id_2 in cp: x1 = df[df['user_id'] == user_id_1][columns].values[0] x2 = df[df['user_id'] == user_id_2][columns].values[0] row[str(user_id_2)] = cos_distance(x1, x2) data.append(row) return pd.DataFrame(data) train_distances = calculate_distances(train_valuable_df) 

рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рд▓реЗрдЦреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рд╡реЗ рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред


рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рджреЛ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рдФрд░ рднрд╛рд░рд┐рдд рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧред


рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛


рд╣рдо рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм 10 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ:


 from tqdm import tqdm_notebook import heapq def rmse(predicted, actual): return ((predicted - actual) ** 2).mean() ** 0.5 def get_similar(id, n): df = train_distances[train_distances['user_id'] == id] d = df.to_dict('records')[0] top_similar_ids = heapq.nsmallest(n+1, d, key=d.get) top_similar = df[top_similar_ids] return top_similar.to_dict('records')[0] def get_predictions(id, n): top_similar_users = get_similar(id, n) top_similar_users_ids = list([int(x) for x in top_similar_users.keys()]) ratings_for_top_similar = train_df[train_df['user_id'].isin(top_similar_users_ids)] predicted_ratings = {} for article_id in train_df.columns[:-1]: predicted_ratings[article_id] = ratings_for_top_similar[article_id].mean() return predicted_ratings rand_n_users = train_distances.sample(50)['user_id'].values err = 0 for u in tqdm_notebook(rand_n_users): pred = get_predictions(u, 10) err += rmse(test_df[test_df['user_id'] == u][list(pred.keys())].values, pd.DataFrame(pred, index=[0]).values) print(err / len(rand_n_users)) 

рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ 0.855 рдХреЗ рдмрд░рд╛рдмрд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред


рдЖрдХрд╕реНрдорд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рд▓реЗрдЦрдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ
рдкреНрд░рддреНрдпрдХреНрд╖ 5.6ред рдирдИ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ0.6364
DIRECTUM 5.6 - рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк0.6364
рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг DIRECTUM 5.5 рдореЗрдВ рд╡рд┐рдХрд╛рд╕0.6364
рдкреНрд░рддреНрдпрдХреНрд╖ DirectumRX рдкрд░рд┐рдЪрдп0.5455
DIRECTUM рдХреА рд╡рд╛рд░реНрд╖рд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рдЕрдм 5.1 рд╣реИ!0.5455
A рд╕реЗ K. DIRECTUM 5.0 рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ0.5455
DIRECTUM рдЬреИрдЬ - рдХрдВрдкрдиреА DIRECTUM рдХрд╛ рдПрдХ рдирдпрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рдорд╛рдзрд╛рди0.5455
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ DIRECTUM рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ?0.5455
рдкреНрд░рддреНрдпрдХреНрд╖ 5.6ред рд╕реБрдкрд░ рдХреЙрд▓рдо рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ0.5455
GitLab ISBL рд╕рд┐рдВрдЯреЗрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ0.5455

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛


рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреА рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ:


 def get_predictions(id, n): similar_users = get_similar(u, 10) prediction = {} user_ids = list(similar_users.keys()) user_similarities = [] for user_id in user_ids: user_similarities.append(similar_users[user_id]) predicted_ratings = {} for article_id in train_df.columns[:-1]: prediction_for_article = 0 numerator = 0 denominator = 0 for user_id in user_ids: rating = train_df[train_df['user_id'] == int(user_id)][article_id].values[0] numerator += rating * (1 - similar_users[user_id]) denominator += np.abs(similar_users[user_id]) predicted_ratings[article_id] = numerator / denominator return predicted_ratings err = 0 for u in tqdm_notebook(rand_n_users): pred = get_predictions(u, 10) err += rmse(test_df[test_df['user_id'] == u][list(pred.keys())].values, pd.DataFrame(pred, index=[0]).values) print(err / len(rand_n_users)) 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ 0.866 рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдереЛрдбрд╝реА рдмрдбрд╝реА рд╣реИред


рдПрдХ рд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рд▓реЗрдЦрдореВрд▓реНрдпрд╛рдВрдХрди
рдкреНрд░рддреНрдпрдХреНрд╖ 5.6ред рдирдИ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ0.3095
DIRECTUM 5.6 - рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк0.3095
рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг DIRECTUM 5.5 рдореЗрдВ рд╡рд┐рдХрд╛рд╕0.3095
рдХрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реЗрд╡рд╛рдПрдБ - рдПрдХ рдкреНрд░рд╢рд╛рд╕рди рдЙрдкрдХрд░рдг0.2833
A рд╕реЗ K. DIRECTUM 5.0 рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ0.2809
DIRECTUM рдХреА рд╡рд╛рд░реНрд╖рд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рдЕрдм 5.1 рд╣реИ!0.2784
рдкреНрд░рддреНрдпрдХреНрд╖ DirectumRX рдкрд░рд┐рдЪрдп0.2778
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ DIRECTUM рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ?0.2778
рдкреНрд░рддреНрдпрдХреНрд╖ 5.6ред рд╕реБрдкрд░ рдХреЙрд▓рдо рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ0.2758
рдкреНрд░рддреНрдпрдХреНрд╖ рдПрд░рд┐рдпреЛ - рдПрдХ рдирдпрд╛ рдмреБрджреНрдзрд┐рдорд╛рди рд╕рдорд╛рдзрд╛рди0.2732

рдкрд░рд┐рдгрд╛рдо рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рдорд╛рд╣ рдирдП рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рдорд╛рдЪрд╛рд░рдкрддреНрд░рд┐рдХрд╛рдПрдБ рдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ "рдЖрдк рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред"


рд╕рд╛рд░рд╛рдВрд╢


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреИрд╕реЗ рд╕рд╣рдпреЛрдЧ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдИ рдЬрд╛рдПред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рд╣реИ - рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИрдВ рдХрд┐ рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдмреНрд▓реЙрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрддреНрдкрд╛рджреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдиреБрдХрд╕рд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд┐рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗ рдорд┐рд▓рд╛рди) рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
  • рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ рдХреА рд╕рдорд╕реНрдпрд╛ - рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИрдВ)
  • рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЦреБрдж рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред

Source: https://habr.com/ru/post/hi463609/


All Articles